<?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>4624</bug_id>
          
          <creation_ts>2005-08-24 10:45:43 -0700</creation_ts>
          <short_desc>WebCore needs autogenerated Obj-C DOM bindings</short_desc>
          <delta_ts>2006-08-28 05:58:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>4249</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>sam</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>17341</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-08-24 10:45:43 -0700</bug_when>
    <thetext>WebCore+SVG needs autogenerated Obj-C DOM bindings

Now that http://bugzilla.opendarwin.org/show_bug.cgi?id=4441 is about to land, and includes the first 
edition of c++ and javascript autobindings support, it&apos;s now time for one of us to step up to the plate 
and create the first ever Obj-C SVG DOM Bindings.  This really should be a pretty simple task.  Take a 
look at:

kdom/bindings/IDLCodeGeneratorCpp.pm
and
kdom/bindings/IDLCodeGeneratorJS.pm

to see how the other bindings are being generated.  Obj-C should look a lot like c++.  For multiple 
inheritance, I would suggest you check out Java SVG DOM bindings built for other SVG engines like 
Batik:
http://xml.apache.org/batik/javadoc/org/apache/batik/dom/svg/SVGOMFECompositeElement.html

replacing &quot;interfaces&quot; with &quot;catagories&quot; or protocols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18182</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-01 03:20:28 -0700</bug_when>
    <thetext>Tobias said he would take a stab at this one. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>40662</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-04-28 05:40:29 -0700</bug_when>
    <thetext>Making this a more generic bug, as this now affects more than just SVG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52413</commentid>
    <comment_count>3</comment_count>
      <attachid>10007</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-12 12:07:55 -0700</bug_when>
    <thetext>Created attachment 10007
first 22 autogen&apos;ed objective-c bindings patch

I&apos;m attaching a work in progress, but it does compile and work.  It removes 22 of the Objective-C DOMHTML interfaces and instead auto-generates them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52506</commentid>
    <comment_count>4</comment_count>
      <attachid>10007</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-08-13 21:40:05 -0700</bug_when>
    <thetext>Comment on attachment 10007
first 22 autogen&apos;ed objective-c bindings patch

I know you&apos;re not quite asking for a review here yet, but here are my thoughts.

1.  OMG YES!!!
2.  Files you touched need your copyright.
3.  We will need to see at least one of the generated files in order to properly review this.
4.  +    # FIXME: Check dates to see if we need to re-generate anything ( and possibly other comments) can just be removed.  (In this case make takes care of that aspect.)
5. GetNativeType and AddIncludesForType shoudl probably be shared between generators.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52769</commentid>
    <comment_count>5</comment_count>
      <attachid>10070</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-16 12:32:57 -0700</bug_when>
    <thetext>Created attachment 10070
patch v2

Quite a bit more, still no changelog as I don&apos;t think it is quite ready for prime time.  If anyone thinks it is getting too big and I should start committing it in chunks, please comment.  I have fixed some of Erik&apos;s issues but no all yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52770</commentid>
    <comment_count>6</comment_count>
      <attachid>10072</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-16 12:34:04 -0700</bug_when>
    <thetext>Created attachment 10072
sample generated header</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52771</commentid>
    <comment_count>7</comment_count>
      <attachid>10073</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-16 12:34:37 -0700</bug_when>
    <thetext>Created attachment 10073
sample generated source file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52772</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-16 12:35:20 -0700</bug_when>
    <thetext>Crap, I meant to say Eric, not Erik.  Sorry Eric!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53009</commentid>
    <comment_count>9</comment_count>
      <attachid>10153</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-21 13:23:30 -0700</bug_when>
    <thetext>Created attachment 10153
patch v3

A new version of the patch.  It&apos;s getting close to being fully review ready.  It now has all of DOMCore.h and DOMHTML.h split out of their original files and either auto generated or in cases where that is not possible yet, just split by class name into new files.  Three classes of DOMCSS.h are also done in this way.  Before I put a patch up for review I have to correct an error I made.  Namely, when splitting the files by class name (those that cannot yet be auto-generated), I did not svn cp the original file to keep the history.  This is something I can easily fix, but it is not done yet.  

There a few reasons why some of the files have been split out instead of auto generated.  One reason is that no IDL file exists yet for the class, and I have not yet added it.  Another issue has been that IDL file that exists, differs from what the Objective C binding is expecting.  This happens mostly in files that are being used by the JS bindings, but not completely. (see the HTMLElement.idl file for an example).  I have not yet worked out a way to add the missing methods to the IDL&apos;s without breaking the existing JS bindings. 

Comments welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53045</commentid>
    <comment_count>10</comment_count>
      <attachid>10161</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-21 20:28:58 -0700</bug_when>
    <thetext>Created attachment 10161
patch with just DOMCore changes

This new patch contains only the auto-generation of the DOMCore bindings.  It should be much more manageable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53046</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-21 20:31:17 -0700</bug_when>
    <thetext>hehe, well the patch with just the DOMCore changes should of been much smaller, but due to the way svn cp works, it seems to be a lot bigger (though most of it is the same).  </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53066</commentid>
    <comment_count>12</comment_count>
      <attachid>10161</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-22 10:32:35 -0700</bug_when>
    <thetext>Comment on attachment 10161
patch with just DOMCore changes

Better version forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53226</commentid>
    <comment_count>13</comment_count>
      <attachid>10185</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-23 16:52:20 -0700</bug_when>
    <thetext>Created attachment 10185
patch with just DOMCore changes (now with more autogeneration and smaller size!!!)

Well, this is about as small as it&apos;s going to get.  I am now auto-generating all but DOMNode and DOMObject for DOMCore, which has greatly reduced the size.  The remain bloat is caused by the files DOMCore.h and DOM.mm being svn cp&apos;ed to make the the files for DOMNode and DOMObject.  There is also quite a bit from the Xcode project file changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53387</commentid>
    <comment_count>14</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-08-24 16:58:34 -0700</bug_when>
    <thetext>This is looking good!

Come comments:

+    # - Add protection against unsupported modules
+    push(@headerContentHeader, &quot;\n#if ${conditional}_SUPPORT\n&quot;) if $conditional;

We don&apos;t want to add these XXX_SUPPORT checks to the ObjC headers, since these are puclic.

On the note about public headers, we need to make sure the generated API is compatiable with the previous API. This also includes keeping the previous header names. Those old headers can either contain the @interfaces or include other new headers that have one class per header. Developers include specific DOM headers and we need to maintain that build compatibility. We might need a better way to get these headers copied into WebKit, one shell script per header in the WebKit project does not scale well if we will have more DOM headers.

+            if ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;ObjCPrivate&quot;}) {
+                # FIXME: for now, just skip methods not approved for API yet
+                next;
+            }

We really need to generate private headers for the non-public stuff. A lot of this API is private but still used inside Apple/Safari (if it was private before autogeneration).

The $headerTemplate needs changed to match the header used in the current public headers. The current $headerTemplate can used for .m files. 

Some of the methods you labeled as ObjCPrivate are public now, make sure you sync with the TOT public headers. Such as offsetTop and friends.


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53388</commentid>
    <comment_count>15</comment_count>
      <attachid>10185</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-08-24 16:59:18 -0700</bug_when>
    <thetext>Comment on attachment 10185
patch with just DOMCore changes (now with more autogeneration and smaller size!!!)

r- based on my earlier comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53775</commentid>
    <comment_count>16</comment_count>
      <attachid>10240</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-26 09:37:01 -0700</bug_when>
    <thetext>Created attachment 10240
better patch of DOMCore changes (ZOMG, it&apos;s even smaller)

Addresses some of Tim&apos;s comments.  I&apos;ve not svn cp&apos;ed for this one to make reviewing easier, but when it is committed, it should have the histories included for DOMNode and DOMObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53779</commentid>
    <comment_count>17</comment_count>
      <attachid>10242</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-26 11:46:35 -0700</bug_when>
    <thetext>Created attachment 10242
the generated files for DOMCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53780</commentid>
    <comment_count>18</comment_count>
      <attachid>10240</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-08-26 11:55:45 -0700</bug_when>
    <thetext>Comment on attachment 10240
better patch of DOMCore changes (ZOMG, it&apos;s even smaller)

Gret work!

Some more comments:

DOMCSS.h:
+// Interface that used to be in this file:
+//
+
+// Now included in DOMElement.h
+//@interface DOMElement (DOMElementCSSInlineStyle)
+//- (DOMCSSStyleDeclaration *)style;
+//@end
+
+// Now included in DOMDocument.h
...

We can remove this, since we include the right headers we don&apos;t need to tell people where the interfaces moved. Same applies to DOMEvents.h, DOMExtensions.h, DOMRange.h, DOMStylesheets.h, DOMViews.h, DOMXPath.h.

DOMCSS.h:
+// FIXME: this should go into DOMDocument.h
+// REASON: not in IDL yet.

This is a public header, we can&apos;t have a FIXME in there. Same applies to DOMEvents.h, DOMExtensions.h and DOMTraversal.h.

+             or $type eq &quot;AtomicString&quot;) {

AtomicString should not be exposed in ObjC, they should be converted to NSString.

+    # Default, assume objective-c type is a pointer with the same type name as
+    # idl type prefixed with &quot;DOM&quot;.
+    return &quot;DOM$type *&quot;;

Shouldn&apos;t this use GetClassName() to special case DOMImplementation?

+            # Only generate &apos;dealloc&apos; and &apos;finalize&apos; methods for subclasses of DOMObject.

Comment should say &quot;...for direct subclasses of DOMObject.&quot; or &quot;immediate subclasses&quot;

offsetTop and friends are still ObjCPrivate.

DOMElementExtensionsFIX should be removed or changed.  

Very close to an r+ from me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53781</commentid>
    <comment_count>19</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-08-26 12:01:43 -0700</bug_when>
    <thetext>Looking at the generated headers:

// Functions

Should that comment say //Methods

Or remove the comments?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53782</commentid>
    <comment_count>20</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-08-26 12:11:24 -0700</bug_when>
    <thetext>Looking at the generated method names I see there is no whitespace added before the :.

- (NSString *)getAttributeNS:(NSString *)namespaceURI:(NSString *)localName;
- (void)setAttributeNS:(NSString *)namespaceURI:(NSString *)qualifiedName:(NSString *)value;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53820</commentid>
    <comment_count>21</comment_count>
      <attachid>10245</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-26 16:31:21 -0700</bug_when>
    <thetext>Created attachment 10245
DOMCore autogen (addressing more of Tim&apos;s comments)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53822</commentid>
    <comment_count>22</comment_count>
      <attachid>10245</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-08-26 17:27:01 -0700</bug_when>
    <thetext>Comment on attachment 10245
DOMCore autogen (addressing more of Tim&apos;s comments)

This is great!

Some formatting issues, other than that r=me.

-        attribute long scrollLeft;
+                 attribute [ObjCCatagory=DOMElementExtensions] long scrollLeft;
 
-        attribute long scrollTop;
+                 attribute [ObjCCatagory=DOMElementExtensions] long scrollTop;

These have some extra whitespace compared to the others.

Check your scripts for tabs, I see a few in there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53959</commentid>
    <comment_count>23</comment_count>
      <attachid>10261</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-27 19:19:02 -0700</bug_when>
    <thetext>Created attachment 10261
patch addressing more of Tim&apos;s comments as well as comments from IRC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53969</commentid>
    <comment_count>24</comment_count>
      <attachid>10261</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-08-27 20:16:39 -0700</bug_when>
    <thetext>Comment on attachment 10261
patch addressing more of Tim&apos;s comments as well as comments from IRC

This looks good! Builds and works on my machine. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>54026</commentid>
    <comment_count>25</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-28 05:58:11 -0700</bug_when>
    <thetext>Landed in r16068.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10007</attachid>
            <date>2006-08-12 12:07:55 -0700</date>
            <delta_ts>2006-08-16 12:32:57 -0700</delta_ts>
            <desc>first 22 autogen&apos;ed objective-c bindings patch</desc>
            <filename>autoObjC.diff</filename>
            <type>text/plain</type>
            <size>66357</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDE1ODI4KQorKysgV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiBWUEFUSCA9IFwK
ICAgICAkKFdlYkNvcmUpIFwKICAgICAkKFdlYkNvcmUpL2JpbmRpbmdzL2pzIFwKKyAgICAkKFdl
YkNvcmUpL2JpbmRpbmdzL29iamMgXAogICAgICQoV2ViQ29yZSkvY3NzIFwKICAgICAkKFdlYkNv
cmUpL2RvbSBcCiAgICAgJChXZWJDb3JlKS9odG1sIFwKQEAgLTQ0LDYgKzQ1LDI4IEBAIGFsbCA6
IFwKICAgICBDaGFyc2V0RGF0YS5jcHAgXAogICAgIENvbG9yRGF0YS5jIFwKICAgICBEb2NUeXBl
U3RyaW5ncy5jcHAgXAorICAgIERPTUhUTUxCYXNlRWxlbWVudC5oIFwKKyAgICBET01IVE1MRGl2
RWxlbWVudC5oIFwKKyAgICBET01IVE1MRm9udEVsZW1lbnQuaCBcCisgICAgRE9NSFRNTEhSRWxl
bWVudC5oIFwKKyAgICBET01IVE1MSGVhZEVsZW1lbnQuaCBcCisgICAgRE9NSFRNTEhlYWRpbmdF
bGVtZW50LmggXAorICAgIERPTUhUTUxIdG1sRWxlbWVudC5oIFwKKyAgICBET01IVE1MTElFbGVt
ZW50LmggXAorICAgIERPTUhUTUxNZW51RWxlbWVudC5oIFwKKyAgICBET01IVE1MTWV0YUVsZW1l
bnQuaCBcCisgICAgRE9NSFRNTE1vZEVsZW1lbnQuaCBcCisgICAgRE9NSFRNTE9MaXN0RWxlbWVu
dC5oIFwKKyAgICBET01IVE1MT3B0R3JvdXBFbGVtZW50LmggXAorICAgIERPTUhUTUxQYXJhZ3Jh
cGhFbGVtZW50LmggXAorICAgIERPTUhUTUxQYXJhbUVsZW1lbnQuaCBcCisgICAgRE9NSFRNTFF1
b3RlRWxlbWVudC5oIFwKKyAgICBET01IVE1MVGl0bGVFbGVtZW50LmggXAorICAgIERPTUhUTUxV
TGlzdEVsZW1lbnQuaCBcCisgICAgRE9NSFRNTERMaXN0RWxlbWVudC5oIFwKKyAgICBET01IVE1M
RGlyZWN0b3J5RWxlbWVudC5oIFwKKyAgICBET01IVE1MQlJFbGVtZW50LmggXAorICAgIERPTUhU
TUxCYXNlRm9udEVsZW1lbnQuaCBcCiAgICAgSFRNTEVudGl0eU5hbWVzLmMgXAogICAgIEpTQXR0
ci5oIFwKICAgICBKU0NTU1ByaW1pdGl2ZVZhbHVlLmggXApAQCAtMjg0LDYgKzMwNywxOSBAQCBr
c3ZnY3NzdmFsdWVzLmggOgogCiBlbmRpZgogCisjIG5ldy1zdHlsZSBPYmplY3RpdmUtQyBiaW5k
aW5ncworCitPQkpDX0JJTkRJTkdTX1NDUklQVFMgPSBcCisgICAgYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yLnBtIFwKKyAgICBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpD
LnBtIFwKKyAgICBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbSBcCisgICAgYmluZGluZ3Mv
c2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0gXAorICAgIGJpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUt
YmluZGluZ3MucGwgXAorIworCitET00lLmggOiAlLmlkbCAkKE9CSkNfQklORElOR1NfU0NSSVBU
UykKKwlwZXJsIC1JJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQoV2ViQ29yZSkvYmluZGlu
Z3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCAtLWRlZmluZXMgIiQoRkVBVFVSRV9ERUZJ
TkVTKSIgLS1nZW5lcmF0b3IgT2JqQyAtLWluY2x1ZGUgZG9tIC0taW5jbHVkZSBodG1sIC0taW5j
bHVkZSB4cGF0aCAtLWluY2x1ZGUga3N2ZzIvc3ZnIC0tb3V0cHV0ZGlyICAuICQ8CisKICMgbmV3
LXN0eWxlIEphdmFTY3JpcHQgYmluZGluZ3MKIAogSlNfQklORElOR1NfU0NSSVBUUyA9IFwKSW5k
ZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
NTgyOCkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNTAsOCArMzUwLDUyIEBACiAJCTg1NEZFNzM3MEEyMjk3QkUwMDU4RDdB
RCAvKiBUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg1NEZFNzJEMEEyMjk3QkUwMDU4RDdBRCAvKiBUcmF2ZXJzYWwuaCAqLzsgfTsKIAkJ
ODU0RkU3MzgwQTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU0RkU3MkUwQTIyOTdCRTAwNThEN0FE
IC8qIFRyZWVXYWxrZXIuY3BwICovOyB9OwogCQk4NTRGRTczOTBBMjI5N0JFMDA1OEQ3QUQgLyog
VHJlZVdhbGtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODU0RkU3MkYwQTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuaCAqLzsgfTsKKwkJODU2
NzJBMkIwQThENERGNDAwQjI0MUU1IC8qIERPTUhUTUxNZXRhRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJBMjkwQThENERGNDAwQjI0
MUU1IC8qIERPTUhUTUxNZXRhRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTg1NjcyQTJDMEE4RDRERjQwMEIyNDFFNSAvKiBET01IVE1M
TWV0YUVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NTY3MkEyQTBBOEQ0REY0MDBCMjQxRTUgLyogRE9NSFRNTE1ldGFFbGVtZW50Lm1tICov
OyB9OworCQk4NTY3MkEzRDBBOEQ0RTNDMDBCMjQxRTUgLyogRE9NSFRNTEJhc2VFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTY3MkEzQjBB
OEQ0RTNDMDBCMjQxRTUgLyogRE9NSFRNTEJhc2VFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODU2NzJBM0UwQThENEUzQzAwQjI0MUU1
IC8qIERPTUhUTUxCYXNlRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg1NjcyQTNDMEE4RDRFM0MwMEIyNDFFNSAvKiBET01IVE1MQmFzZUVs
ZW1lbnQubW0gKi87IH07CisJCTg1NjcyQTk4MEE4RDUxMjIwMEIyNDFFNSAvKiBET01IVE1MVUxp
c3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NTY3MkE5NjBBOEQ1MTIyMDBCMjQxRTUgLyogRE9NSFRNTFVMaXN0RWxlbWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1NjcyQTk5MEE4
RDUxMjIwMEIyNDFFNSAvKiBET01IVE1MVUxpc3RFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJBOTcwQThENTEyMjAwQjI0MUU1IC8q
IERPTUhUTUxVTGlzdEVsZW1lbnQubW0gKi87IH07CisJCTg1NjcyQUEwMEE4RDUxRDQwMEIyNDFF
NSAvKiBET01IVE1MUXVvdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NTY3MkE5RTBBOEQ1MUQ0MDBCMjQxRTUgLyogRE9NSFRNTFF1b3Rl
RWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTg1NjcyQUExMEE4RDUxRDQwMEIyNDFFNSAvKiBET01IVE1MUXVvdGVFbGVtZW50Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJBOUYwQThE
NTFENDAwQjI0MUU1IC8qIERPTUhUTUxRdW90ZUVsZW1lbnQubW0gKi87IH07CisJCTg1NjcyQUQ5
MEE4RDUyRjEwMEIyNDFFNSAvKiBET01IVE1MUGFyYW1FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTY3MkFENzBBOEQ1MkYxMDBCMjQxRTUg
LyogRE9NSFRNTFBhcmFtRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTg1NjcyQURBMEE4RDUyRjEwMEIyNDFFNSAvKiBET01IVE1MUGFy
YW1FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODU2NzJBRDgwQThENTJGMTAwQjI0MUU1IC8qIERPTUhUTUxQYXJhbUVsZW1lbnQubW0gKi87
IH07CisJCTg1NjcyQUY0MEE4RDUzODEwMEIyNDFFNSAvKiBET01IVE1MUGFyYWdyYXBoRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJB
RjIwQThENTM4MTAwQjI0MUU1IC8qIERPTUhUTUxQYXJhZ3JhcGhFbGVtZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODU2NzJBRjUwQThENTM4
MTAwQjI0MUU1IC8qIERPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJBRjMwQThENTM4MTAwQjI0MUU1IC8q
IERPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lm1tICovOyB9OworCQk4NTY3MkIwQTBBOEQ1M0UwMDBC
MjQxRTUgLyogRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJCMDgwQThENTNFMDAwQjI0MUU1IC8qIERPTUhU
TUxPcHRHcm91cEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk4NTY3MkIwQjBBOEQ1M0UwMDBCMjQxRTUgLyogRE9NSFRNTE9wdEdyb3Vw
RWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg1NjcyQjA5MEE4RDUzRTAwMEIyNDFFNSAvKiBET01IVE1MT3B0R3JvdXBFbGVtZW50Lm1tICov
OyB9OworCQk4NTY3MkIyNTBBOEQ1NEIzMDBCMjQxRTUgLyogRE9NSFRNTE9MaXN0RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJCMjMw
QThENTRCMzAwQjI0MUU1IC8qIERPTUhUTUxPTGlzdEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTY3MkIyNjBBOEQ1NEIzMDBCMjQx
RTUgLyogRE9NSFRNTE9MaXN0RWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg1NjcyQjI0MEE4RDU0QjMwMEIyNDFFNSAvKiBET01IVE1MT0xp
c3RFbGVtZW50Lm1tICovOyB9OworCQk4NTY3MkIyQjBBOEQ1NTAzMDBCMjQxRTUgLyogRE9NSFRN
TE1lbnVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NTY3MkIyOTBBOEQ1NTAzMDBCMjQxRTUgLyogRE9NSFRNTE1lbnVFbGVtZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODU2NzJCMkMw
QThENTUwMzAwQjI0MUU1IC8qIERPTUhUTUxNZW51RWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NjcyQjJBMEE4RDU1MDMwMEIyNDFFNSAv
KiBET01IVE1MTWVudUVsZW1lbnQubW0gKi87IH07CisJCTg1NjcyQjc3MEE4RDU2RjgwMEIyNDFF
NSAvKiBET01IVE1MTElFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NTY3MkI3NTBBOEQ1NkY4MDBCMjQxRTUgLyogRE9NSFRNTExJRWxlbWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1
NjcyQjc4MEE4RDU2RjgwMEIyNDFFNSAvKiBET01IVE1MTElFbGVtZW50Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJCNzYwQThENTZGODAwQjI0
MUU1IC8qIERPTUhUTUxMSUVsZW1lbnQubW0gKi87IH07CisJCTg1NjcyQjg0MEE4RDU3OTEwMEIy
NDFFNSAvKiBET01IVE1MSFJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NTY3MkI4MjBBOEQ1NzkxMDBCMjQxRTUgLyogRE9NSFRNTEhSRWxl
bWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTg1NjcyQjg1MEE4RDU3OTEwMEIyNDFFNSAvKiBET01IVE1MSFJFbGVtZW50Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJCODMwQThENTc5MTAw
QjI0MUU1IC8qIERPTUhUTUxIUkVsZW1lbnQubW0gKi87IH07CisJCTg1NjcyQjkyMEE4RDU3RjUw
MEIyNDFFNSAvKiBET01IVE1MSGVhZGluZ0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NjcyQjkwMEE4RDU3RjUwMEIyNDFFNSAvKiBET01I
VE1MSGVhZGluZ0VsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk4NTY3MkI5MzBBOEQ1N0Y1MDBCMjQxRTUgLyogRE9NSFRNTEhlYWRpbmdF
bGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODU2NzJCOTEwQThENTdGNTAwQjI0MUU1IC8qIERPTUhUTUxIZWFkaW5nRWxlbWVudC5tbSAqLzsg
fTsKKwkJODU2NzJCOUUwQThENTg3RjAwQjI0MUU1IC8qIERPTUhUTUxGb250RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJCOUMwQThE
NTg3RjAwQjI0MUU1IC8qIERPTUhUTUxGb250RWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1NjcyQjlGMEE4RDU4N0YwMEIyNDFFNSAv
KiBET01IVE1MRm9udEVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NTY3MkI5RDBBOEQ1ODdGMDBCMjQxRTUgLyogRE9NSFRNTEZvbnRFbGVt
ZW50Lm1tICovOyB9OworCQk4NTY3MkJCMTBBOEQ1OTVEMDBCMjQxRTUgLyogRE9NSFRNTERMaXN0
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODU2NzJCQUYwQThENTk1RDAwQjI0MUU1IC8qIERPTUhUTUxETGlzdEVsZW1lbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTY3MkJCMjBBOEQ1
OTVEMDBCMjQxRTUgLyogRE9NSFRNTERMaXN0RWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NjcyQkIwMEE4RDU5NUQwMEIyNDFFNSAvKiBE
T01IVE1MRExpc3RFbGVtZW50Lm1tICovOyB9OworCQk4NTlCN0ZDMjBBOEQyOEYyMDBBNUYxRUEg
LyogRE9NSFRNTEhlYWRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NTlCN0Y4MDBBOENGRjM3MDBBNUYxRUEgLyogRE9NSFRNTEhlYWRFbGVt
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
ODU5QjdGQzMwQThEMjhGMjAwQTVGMUVBIC8qIERPTUhUTUxIZWFkRWxlbWVudC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1OUI3RjgxMEE4Q0ZGMzcw
MEE1RjFFQSAvKiBET01IVE1MSGVhZEVsZW1lbnQubW0gKi87IH07CisJCTg1OUI3RkM0MEE4RDI4
RjIwMEE1RjFFQSAvKiBET01IVE1MSHRtbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1OUI3RjgyMEE4Q0ZGMzcwMEE1RjFFQSAvKiBET01I
VE1MSHRtbEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk4NTlCN0ZDNTBBOEQyOEYyMDBBNUYxRUEgLyogRE9NSFRNTEh0bWxFbGVtZW50
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU5QjdG
ODMwQThDRkYzNzAwQTVGMUVBIC8qIERPTUhUTUxIdG1sRWxlbWVudC5tbSAqLzsgfTsKKwkJODU5
QjdGQ0EwQThEMjhGODAwQTVGMUVBIC8qIERPTUhUTUxNb2RFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUQzMzE4MzBBOENFRENDMDA1OTI1
QTAgLyogRE9NSFRNTE1vZEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk4NTlCN0ZDQjBBOEQyOEY4MDBBNUYxRUEgLyogRE9NSFRNTE1v
ZEVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NUQzMzE4NDBBOENFRENDMDA1OTI1QTAgLyogRE9NSFRNTE1vZEVsZW1lbnQubW0gKi87IH07
CisJCTg1OUI4MDM3MEE4RDMxQTYwMEE1RjFFQSAvKiBET01IVE1MVGl0bGVFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTlCODAzNTBBOEQz
MUE2MDBBNUYxRUEgLyogRE9NSFRNTFRpdGxlRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1OUI4MDM4MEE4RDMxQTYwMEE1RjFFQSAv
KiBET01IVE1MVGl0bGVFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODU5QjgwMzYwQThEMzFBNjAwQTVGMUVBIC8qIERPTUhUTUxUaXRsZUVs
ZW1lbnQubW0gKi87IH07CisJCTg1QTVDOEMyMEE4RDVEOEIwMEEzQ0Y5MCAvKiBET01IVE1MQmFz
ZUZvbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NUE1QzhDMDBBOEQ1RDhCMDBBM0NGOTAgLyogRE9NSFRNTEJhc2VGb250RWxlbWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1QTVD
OEMzMEE4RDVEOEIwMEEzQ0Y5MCAvKiBET01IVE1MQmFzZUZvbnRFbGVtZW50Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVBNUM4QzEwQThENUQ4QjAw
QTNDRjkwIC8qIERPTUhUTUxCYXNlRm9udEVsZW1lbnQubW0gKi87IH07CisJCTg1QTVDOENBMEE4
RDVEQjkwMEEzQ0Y5MCAvKiBET01IVE1MRGlyZWN0b3J5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVBNUM4QzgwQThENURCODAwQTNDRjkw
IC8qIERPTUhUTUxEaXJlY3RvcnlFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVBNUM4Q0IwQThENURCOTAwQTNDRjkwIC8qIERPTUhU
TUxEaXJlY3RvcnlFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODVBNUM4QzkwQThENURCOTAwQTNDRjkwIC8qIERPTUhUTUxEaXJlY3RvcnlF
bGVtZW50Lm1tICovOyB9OworCQk4NUE1QzhEMDBBOEQ1REU1MDBBM0NGOTAgLyogRE9NSFRNTEJS
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODVBNUM4Q0UwQThENURFNTAwQTNDRjkwIC8qIERPTUhUTUxCUkVsZW1lbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NUE1QzhEMTBBOEQ1REU1
MDBBM0NGOTAgLyogRE9NSFRNTEJSRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QTVDOENGMEE4RDVERTUwMEEzQ0Y5MCAvKiBET01IVE1M
QlJFbGVtZW50Lm1tICovOyB9OwogCQk4NUVDOUFGQTBBNzFBMkM2MDBFRUVBRUQgLyogRm9udERh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RUM5
QUY4MEE3MUEyQzYwMEVFRUFFRCAvKiBGb250RGF0YS5oICovOyB9OwogCQk4NUVDOUFGQjBBNzFB
MkM2MDBFRUVBRUQgLyogTGFuZ3VhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg1RUM5QUY5MEE3MUEyQzYwMEVFRUFFRCAvKiBMYW5ndWFnZS5oICov
OyB9OworCQk4NUY5MkFFODBBOEJDNzdCMDA3OEY5RDQgLyogRE9NSFRNTERpdkVsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RjkyQUU2MEE4
QkM3N0IwMDc4RjlENCAvKiBET01IVE1MRGl2RWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1RjkyQUU5MEE4QkM3N0IwMDc4RjlENCAv
KiBET01IVE1MRGl2RWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg1RjkyQUU3MEE4QkM3N0IwMDc4RjlENCAvKiBET01IVE1MRGl2RWxlbWVu
dC5tbSAqLzsgfTsKIAkJOTMwMzJDQzgwOUFFQzM0MzAwRjgyQTE4IC8qIFBhdGhDRy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzAzMkNDNzA5QUVD
MzQzMDBGODJBMTggLyogUGF0aENHLmNwcCAqLzsgfTsKIAkJOTMwMzJDQ0EwOUFFQzM0QjAwRjgy
QTE4IC8qIFBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzMDMyQ0M5MDlBRUMzNEIwMEY4MkExOCAvKiBQYXRoLmggKi87IH07CiAJCTkzMDVCMjRE
MDk4RjFCNkIwMEMyODg1NSAvKiBUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTMwNUIyNEMwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggKi87
IH07CkBAIC0xNDIxLDcgKzE0NjUsNyBAQAogCQlCQzFBMzdCNTA5N0M3MTVGMDAxOUYzRDggLyog
RE9NRXh0ZW5zaW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMxQTM3OUYwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTUV4dGVuc2lvbnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzFBMzdCNjA5N0M3
MTVGMDAxOUYzRDggLyogRE9NSFRNTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkMxQTM3QTAwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTUhUTUwuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzFBMzdCNzA5
N0M3MTVGMDAxOUYzRDggLyogRE9NSFRNTC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDMUEzN0ExMDk3QzcxNUYwMDE5RjNEOCAvKiBET01IVE1MLm1t
ICovOyB9OwotCQlCQzFBMzdCODA5N0M3MTVGMDAxOUYzRDggLyogRE9NSFRNTEludGVybmFsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzFBMzdBMjA5
N0M3MTVGMDAxOUYzRDggLyogRE9NSFRNTEludGVybmFsLmggKi87IH07CisJCUJDMUEzN0I4MDk3
QzcxNUYwMDE5RjNEOCAvKiBET01IVE1MSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMUEzN0EyMDk3QzcxNUYwMDE5RjNEOCAvKiBET01I
VE1MSW50ZXJuYWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQlC
QzFBMzdCOTA5N0M3MTVGMDAxOUYzRDggLyogRE9NSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMUEzN0EzMDk3QzcxNUYwMDE5RjNEOCAv
KiBET01JbnRlcm5hbC5oICovOyB9OwogCQlCQzFBMzdCQTA5N0M3MTVGMDAxOUYzRDggLyogRE9N
SW50ZXJuYWwubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzFBMzdBNDA5N0M3MTVGMDAxOUYzRDggLyogRE9NSW50ZXJuYWwubW0gKi87IH07CiAJCUJD
MUEzN0JCMDk3QzcxNUYwMDE5RjNEOCAvKiBET01Qcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzFBMzdBNTA5N0M3MTVGMDAxOUYzRDggLyog
RE9NUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0yMDQyLDggKzIwODYsNTMgQEAKIAkJODU0RkU3MkQwQTIyOTdCRTAwNThEN0FEIC8q
IFRyYXZlcnNhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhdmVyc2Fs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1NEZFNzJFMEEyMjk3QkUwMDU4RDdB
RCAvKiBUcmVlV2Fsa2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUcmVlV2Fsa2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODU0RkU3MkYw
QTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRyZWVXYWxrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2
NzJBMjkwQThENERGNDAwQjI0MUU1IC8qIERPTUhUTUxNZXRhRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSFRNTE1ldGFFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg1NjcyQTJBMEE4RDRERjQwMEIyNDFFNSAvKiBET01IVE1MTWV0
YUVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9N
SFRNTE1ldGFFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTY3MkEz
QjBBOEQ0RTNDMDBCMjQxRTUgLyogRE9NSFRNTEJhc2VFbGVtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MQmFzZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODU2NzJBM0MwQThENEUzQzAwQjI0MUU1IC8qIERPTUhUTUxCYXNlRWxl
bWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1M
QmFzZUVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1NjcyQTk2MEE4
RDUxMjIwMEIyNDFFNSAvKiBET01IVE1MVUxpc3RFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01IVE1MVUxpc3RFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg1NjcyQTk3MEE4RDUxMjIwMEIyNDFFNSAvKiBET01IVE1MVUxpc3RFbGVt
ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxV
TGlzdEVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1NjcyQTlFMEE4
RDUxRDQwMEIyNDFFNSAvKiBET01IVE1MUXVvdGVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01IVE1MUXVvdGVFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg1NjcyQTlGMEE4RDUxRDQwMEIyNDFFNSAvKiBET01IVE1MUXVvdGVFbGVt
ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxR
dW90ZUVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1NjcyQUQ3MEE4
RDUyRjEwMEIyNDFFNSAvKiBET01IVE1MUGFyYW1FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01IVE1MUGFyYW1FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg1NjcyQUQ4MEE4RDUyRjEwMEIyNDFFNSAvKiBET01IVE1MUGFyYW1FbGVt
ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxQ
YXJhbUVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1NjcyQUYyMEE4
RDUzODEwMEIyNDFFNSAvKiBET01IVE1MUGFyYWdyYXBoRWxlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2NzJBRjMwQThENTM4MTAwQjI0MUU1IC8qIERPTUhUTUxQ
YXJhZ3JhcGhFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IERPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NTY3MkIwODBBOEQ1M0UwMDBCMjQxRTUgLyogRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSFRNTE9wdEdyb3VwRWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTY3MkIwOTBBOEQ1M0UwMDBCMjQx
RTUgLyogRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBET01IVE1MT3B0R3JvdXBFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NTY3MkIyMzBBOEQ1NEIzMDBCMjQxRTUgLyogRE9NSFRNTE9MaXN0
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSFRNTE9MaXN0
RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTY3MkIyNDBBOEQ1NEIz
MDBCMjQxRTUgLyogRE9NSFRNTE9MaXN0RWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MT0xpc3RFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NTY3MkIyOTBBOEQ1NTAzMDBCMjQxRTUgLyogRE9NSFRNTE1lbnVF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MTWVudUVs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2NzJCMkEwQThENTUwMzAw
QjI0MUU1IC8qIERPTUhUTUxNZW51RWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBET01IVE1MTWVudUVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg1NjcyQjc1MEE4RDU2RjgwMEIyNDFFNSAvKiBET01IVE1MTElFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MTElFbGVtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1NjcyQjc2MEE4RDU2RjgwMEIyNDFFNSAv
KiBET01IVE1MTElFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IERPTUhUTUxMSUVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg1NjcyQjgyMEE4RDU3OTEwMEIyNDFFNSAvKiBET01IVE1MSFJFbGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MSFJFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg1NjcyQjgzMEE4RDU3OTEwMEIyNDFFNSAvKiBET01IVE1MSFJF
bGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhU
TUxIUkVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1NjcyQjkwMEE4
RDU3RjUwMEIyNDFFNSAvKiBET01IVE1MSGVhZGluZ0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxIZWFkaW5nRWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NTY3MkI5MTBBOEQ1N0Y1MDBCMjQxRTUgLyogRE9NSFRNTEhlYWRp
bmdFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERP
TUhUTUxIZWFkaW5nRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2
NzJCOUMwQThENTg3RjAwQjI0MUU1IC8qIERPTUhUTUxGb250RWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSFRNTEZvbnRFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg1NjcyQjlEMEE4RDU4N0YwMEIyNDFFNSAvKiBET01IVE1MRm9u
dEVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9N
SFRNTEZvbnRFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTY3MkJB
RjBBOEQ1OTVEMDBCMjQxRTUgLyogRE9NSFRNTERMaXN0RWxlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSFRNTERMaXN0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NTY3MkJCMDBBOEQ1OTVEMDBCMjQxRTUgLyogRE9NSFRNTERMaXN0
RWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01I
VE1MRExpc3RFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTlCN0Y4
MDBBOENGRjM3MDBBNUYxRUEgLyogRE9NSFRNTEhlYWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MSGVhZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODU5QjdGODEwQThDRkYzNzAwQTVGMUVBIC8qIERPTUhUTUxIZWFkRWxl
bWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1M
SGVhZEVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1OUI3RjgyMEE4
Q0ZGMzcwMEE1RjFFQSAvKiBET01IVE1MSHRtbEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTUhUTUxIdG1sRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4NTlCN0Y4MzBBOENGRjM3MDBBNUYxRUEgLyogRE9NSFRNTEh0bWxFbGVtZW50
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxIdG1s
RWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU5QjdGQjkwQThEMjg4
ODAwQTVGMUVBIC8qIENvZGVHZW5lcmF0b3JPYmpDLnBtICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0
LnBlcmw7IG5hbWUgPSBDb2RlR2VuZXJhdG9yT2JqQy5wbTsgcGF0aCA9IGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvck9iakMucG07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJ
ODU5QjgwMzUwQThEMzFBNjAwQTVGMUVBIC8qIERPTUhUTUxUaXRsZUVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxUaXRsZUVsZW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU5QjgwMzYwQThEMzFBNjAwQTVGMUVBIC8qIERPTUhU
TUxUaXRsZUVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRE9NSFRNTFRpdGxlRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODVBNUM4QzAwQThENUQ4QjAwQTNDRjkwIC8qIERPTUhUTUxCYXNlRm9udEVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxCYXNlRm9udEVsZW1lbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVBNUM4QzEwQThENUQ4QjAwQTNDRjkwIC8q
IERPTUhUTUxCYXNlRm9udEVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gRE9NSFRNTEJhc2VGb250RWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODVBNUM4QzgwQThENURCODAwQTNDRjkwIC8qIERPTUhUTUxEaXJlY3RvcnlF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MRGlyZWN0
b3J5RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUE1QzhDOTBBOEQ1
REI5MDBBM0NGOTAgLyogRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QTVDOENFMEE4RDVERTUwMEEzQ0Y5MCAvKiBE
T01IVE1MQlJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01I
VE1MQlJFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QTVDOENGMEE4
RDVERTUwMEEzQ0Y5MCAvKiBET01IVE1MQlJFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxCUkVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg1RDMzMTgzMEE4Q0VEQ0MwMDU5MjVBMCAvKiBET01IVE1MTW9kRWxl
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSFRNTE1vZEVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVEMzMxODQwQThDRURDQzAwNTky
NUEwIC8qIERPTUhUTUxNb2RFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IERPTUhUTUxNb2RFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4NUVDOUFGODBBNzFBMkM2MDBFRUVBRUQgLyogRm9udERhdGEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg1RUM5QUY5MEE3MUEyQzYwMEVFRUFFRCAvKiBMYW5ndWFnZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGFuZ3VhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODVGOTJBRTYwQThCQzc3QjAwNzhGOUQ0IC8qIERPTUhUTUxEaXZFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MRGl2RWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUY5MkFFNzBBOEJDNzdCMDA3OEY5RDQg
LyogRE9NSFRNTERpdkVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRE9NSFRNTERpdkVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzMDMyQ0M3MDlBRUMzNDMwMEY4MkExOCAvKiBQYXRoQ0cuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGF0aENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTMwMzJDQzkwOUFFQzM0QjAwRjgyQTE4IC8qIFBhdGguaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5MzA1QjI0QzA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQw
MTcsNiArNDEwNiw1OCBAQAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CiAJCX07CisJCTg1QjIzMjI2MEE4QkYzQTEwMEZERjQ3QiAvKiBEZXJpdmVkIFNvdXJjZXMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTg1QTVDOENF
MEE4RDVERTUwMEEzQ0Y5MCAvKiBET01IVE1MQlJFbGVtZW50LmggKi8sCisJCQkJODVBNUM4Q0Yw
QThENURFNTAwQTNDRjkwIC8qIERPTUhUTUxCUkVsZW1lbnQubW0gKi8sCisJCQkJODVBNUM4Qzgw
QThENURCODAwQTNDRjkwIC8qIERPTUhUTUxEaXJlY3RvcnlFbGVtZW50LmggKi8sCisJCQkJODVB
NUM4QzkwQThENURCOTAwQTNDRjkwIC8qIERPTUhUTUxEaXJlY3RvcnlFbGVtZW50Lm1tICovLAor
CQkJCTg1QTVDOEMwMEE4RDVEOEIwMEEzQ0Y5MCAvKiBET01IVE1MQmFzZUZvbnRFbGVtZW50Lmgg
Ki8sCisJCQkJODVBNUM4QzEwQThENUQ4QjAwQTNDRjkwIC8qIERPTUhUTUxCYXNlRm9udEVsZW1l
bnQubW0gKi8sCisJCQkJODU2NzJCQUYwQThENTk1RDAwQjI0MUU1IC8qIERPTUhUTUxETGlzdEVs
ZW1lbnQuaCAqLywKKwkJCQk4NTY3MkJCMDBBOEQ1OTVEMDBCMjQxRTUgLyogRE9NSFRNTERMaXN0
RWxlbWVudC5tbSAqLywKKwkJCQk4NTY3MkI5QzBBOEQ1ODdGMDBCMjQxRTUgLyogRE9NSFRNTEZv
bnRFbGVtZW50LmggKi8sCisJCQkJODU2NzJCOUQwQThENTg3RjAwQjI0MUU1IC8qIERPTUhUTUxG
b250RWxlbWVudC5tbSAqLywKKwkJCQk4NTY3MkI5MDBBOEQ1N0Y1MDBCMjQxRTUgLyogRE9NSFRN
TEhlYWRpbmdFbGVtZW50LmggKi8sCisJCQkJODU2NzJCOTEwQThENTdGNTAwQjI0MUU1IC8qIERP
TUhUTUxIZWFkaW5nRWxlbWVudC5tbSAqLywKKwkJCQk4NTY3MkI4MjBBOEQ1NzkxMDBCMjQxRTUg
LyogRE9NSFRNTEhSRWxlbWVudC5oICovLAorCQkJCTg1NjcyQjgzMEE4RDU3OTEwMEIyNDFFNSAv
KiBET01IVE1MSFJFbGVtZW50Lm1tICovLAorCQkJCTg1NjcyQjc1MEE4RDU2RjgwMEIyNDFFNSAv
KiBET01IVE1MTElFbGVtZW50LmggKi8sCisJCQkJODU2NzJCNzYwQThENTZGODAwQjI0MUU1IC8q
IERPTUhUTUxMSUVsZW1lbnQubW0gKi8sCisJCQkJODU2NzJCMjkwQThENTUwMzAwQjI0MUU1IC8q
IERPTUhUTUxNZW51RWxlbWVudC5oICovLAorCQkJCTg1NjcyQjJBMEE4RDU1MDMwMEIyNDFFNSAv
KiBET01IVE1MTWVudUVsZW1lbnQubW0gKi8sCisJCQkJODU2NzJCMjMwQThENTRCMzAwQjI0MUU1
IC8qIERPTUhUTUxPTGlzdEVsZW1lbnQuaCAqLywKKwkJCQk4NTY3MkIyNDBBOEQ1NEIzMDBCMjQx
RTUgLyogRE9NSFRNTE9MaXN0RWxlbWVudC5tbSAqLywKKwkJCQk4NTY3MkIwODBBOEQ1M0UwMDBC
MjQxRTUgLyogRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5oICovLAorCQkJCTg1NjcyQjA5MEE4RDUz
RTAwMEIyNDFFNSAvKiBET01IVE1MT3B0R3JvdXBFbGVtZW50Lm1tICovLAorCQkJCTg1NjcyQUYy
MEE4RDUzODEwMEIyNDFFNSAvKiBET01IVE1MUGFyYWdyYXBoRWxlbWVudC5oICovLAorCQkJCTg1
NjcyQUYzMEE4RDUzODEwMEIyNDFFNSAvKiBET01IVE1MUGFyYWdyYXBoRWxlbWVudC5tbSAqLywK
KwkJCQk4NTY3MkFENzBBOEQ1MkYxMDBCMjQxRTUgLyogRE9NSFRNTFBhcmFtRWxlbWVudC5oICov
LAorCQkJCTg1NjcyQUQ4MEE4RDUyRjEwMEIyNDFFNSAvKiBET01IVE1MUGFyYW1FbGVtZW50Lm1t
ICovLAorCQkJCTg1NjcyQTlFMEE4RDUxRDQwMEIyNDFFNSAvKiBET01IVE1MUXVvdGVFbGVtZW50
LmggKi8sCisJCQkJODU2NzJBOUYwQThENTFENDAwQjI0MUU1IC8qIERPTUhUTUxRdW90ZUVsZW1l
bnQubW0gKi8sCisJCQkJODU2NzJBOTYwQThENTEyMjAwQjI0MUU1IC8qIERPTUhUTUxVTGlzdEVs
ZW1lbnQuaCAqLywKKwkJCQk4NTY3MkE5NzBBOEQ1MTIyMDBCMjQxRTUgLyogRE9NSFRNTFVMaXN0
RWxlbWVudC5tbSAqLywKKwkJCQk4NTY3MkEzQjBBOEQ0RTNDMDBCMjQxRTUgLyogRE9NSFRNTEJh
c2VFbGVtZW50LmggKi8sCisJCQkJODU2NzJBM0MwQThENEUzQzAwQjI0MUU1IC8qIERPTUhUTUxC
YXNlRWxlbWVudC5tbSAqLywKKwkJCQk4NTY3MkEyOTBBOEQ0REY0MDBCMjQxRTUgLyogRE9NSFRN
TE1ldGFFbGVtZW50LmggKi8sCisJCQkJODU2NzJBMkEwQThENERGNDAwQjI0MUU1IC8qIERPTUhU
TUxNZXRhRWxlbWVudC5tbSAqLywKKwkJCQk4NTlCODAzNTBBOEQzMUE2MDBBNUYxRUEgLyogRE9N
SFRNTFRpdGxlRWxlbWVudC5oICovLAorCQkJCTg1OUI4MDM2MEE4RDMxQTYwMEE1RjFFQSAvKiBE
T01IVE1MVGl0bGVFbGVtZW50Lm1tICovLAorCQkJCTg1OUI3RjgwMEE4Q0ZGMzcwMEE1RjFFQSAv
KiBET01IVE1MSGVhZEVsZW1lbnQuaCAqLywKKwkJCQk4NTlCN0Y4MTBBOENGRjM3MDBBNUYxRUEg
LyogRE9NSFRNTEhlYWRFbGVtZW50Lm1tICovLAorCQkJCTg1OUI3RjgyMEE4Q0ZGMzcwMEE1RjFF
QSAvKiBET01IVE1MSHRtbEVsZW1lbnQuaCAqLywKKwkJCQk4NTlCN0Y4MzBBOENGRjM3MDBBNUYx
RUEgLyogRE9NSFRNTEh0bWxFbGVtZW50Lm1tICovLAorCQkJCTg1RjkyQUU2MEE4QkM3N0IwMDc4
RjlENCAvKiBET01IVE1MRGl2RWxlbWVudC5oICovLAorCQkJCTg1RjkyQUU3MEE4QkM3N0IwMDc4
RjlENCAvKiBET01IVE1MRGl2RWxlbWVudC5tbSAqLywKKwkJCQk4NUQzMzE4MzBBOENFRENDMDA1
OTI1QTAgLyogRE9NSFRNTE1vZEVsZW1lbnQuaCAqLywKKwkJCQk4NUQzMzE4NDBBOENFRENDMDA1
OTI1QTAgLyogRE9NSFRNTE1vZEVsZW1lbnQubW0gKi8sCisJCQkpOworCQkJbmFtZSA9ICJEZXJp
dmVkIFNvdXJjZXMiOworCQkJcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmU7CisJCQlzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOworCQl9OwogCQk5MzAzMkNDQzA5QUVDMzYyMDBG
ODJBMTggLyogY2cgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApA
QCAtNTAwOSw5ICs1MTUwLDggQEAKIAkJQkMxQTM3OTQwOTdDNkZDNDAwMTlGM0Q4IC8qIG9iamMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTFDQUYzNDdF
MEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCAqLywKLQkJCQkxQ0FGMzQ3RjBB
NkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tICovLAotCQkJCTFDQUYzNDgwMEE2
QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3RQcml2YXRlLmggKi8sCisJCQkJODVCMjMy
MjYwQThCRjNBMTAwRkRGNDdCIC8qIERlcml2ZWQgU291cmNlcyAqLywKKwkJCQk4NTlCN0ZCOTBB
OEQyODg4MDBBNUYxRUEgLyogQ29kZUdlbmVyYXRvck9iakMucG0gKi8sCiAJCQkJQkMxQTM3OTcw
OTdDNzE1RjAwMTlGM0Q4IC8qIERPTS5oICovLAogCQkJCUJDMUEzNzk4MDk3QzcxNUYwMDE5RjNE
OCAvKiBET00ubW0gKi8sCiAJCQkJQkMxQTM3OTkwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTUNvcmUu
aCAqLywKQEAgLTUwNDEsNiArNTE4MSw5IEBACiAJCQkJMUExRDEzN0UwQTUzMjU1MjAwNjRCRjVG
IC8qIERPTVhQYXRoLmggKi8sCiAJCQkJMUExRDEzN0YwQTUzMjU1MjAwNjRCRjVGIC8qIERPTVhQ
YXRoLm1tICovLAogCQkJCTFBMUQxM0M5MEE1MzI5MDkwMDY0QkY1RiAvKiBET01YUGF0aEludGVy
bmFsLmggKi8sCisJCQkJMUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVj
dC5oICovLAorCQkJCTFDQUYzNDdGMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3Qu
bW0gKi8sCisJCQkJMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdFBy
aXZhdGUuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gb2JqYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC02NDExLDYgKzY1NTQsMjggQEAKIAkJCQlCQ0FBOTBBMDBBN0VCMDNBMDA4QjEy
MjkgLyogUGxhdGZvcm1TY3JvbGxCYXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RUM5QUZBMEE3
MUEyQzYwMEVFRUFFRCAvKiBGb250RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFQzlBRkIw
QTcxQTJDNjAwRUVFQUVEIC8qIExhbmd1YWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUY5MkFF
ODBBOEJDNzdCMDA3OEY5RDQgLyogRE9NSFRNTERpdkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTg1OUI3RkMyMEE4RDI4RjIwMEE1RjFFQSAvKiBET01IVE1MSGVhZEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTg1OUI3RkM0MEE4RDI4RjIwMEE1RjFFQSAvKiBET01IVE1MSHRtbEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1OUI3RkNBMEE4RDI4RjgwMEE1RjFFQSAvKiBE
T01IVE1MTW9kRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU5QjgwMzcwQThEMzFBNjAw
QTVGMUVBIC8qIERPTUhUTUxUaXRsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1Njcy
QTJCMEE4RDRERjQwMEIyNDFFNSAvKiBET01IVE1MTWV0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTg1NjcyQTNEMEE4RDRFM0MwMEIyNDFFNSAvKiBET01IVE1MQmFzZUVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTg1NjcyQTk4MEE4RDUxMjIwMEIyNDFFNSAvKiBET01IVE1MVUxp
c3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTY3MkFBMDBBOEQ1MUQ0MDBCMjQxRTUg
LyogRE9NSFRNTFF1b3RlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU2NzJBRDkwQThE
NTJGMTAwQjI0MUU1IC8qIERPTUhUTUxQYXJhbUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTg1NjcyQUY0MEE4RDUzODEwMEIyNDFFNSAvKiBET01IVE1MUGFyYWdyYXBoRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJODU2NzJCMEEwQThENTNFMDAwQjI0MUU1IC8qIERPTUhUTUxPcHRH
cm91cEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1NjcyQjI1MEE4RDU0QjMwMEIyNDFF
NSAvKiBET01IVE1MT0xpc3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTY3MkIyQjBB
OEQ1NTAzMDBCMjQxRTUgLyogRE9NSFRNTE1lbnVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4NTY3MkI3NzBBOEQ1NkY4MDBCMjQxRTUgLyogRE9NSFRNTExJRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJODU2NzJCODQwQThENTc5MTAwQjI0MUU1IC8qIERPTUhUTUxIUkVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTg1NjcyQjkyMEE4RDU3RjUwMEIyNDFFNSAvKiBET01IVE1M
SGVhZGluZ0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1NjcyQjlFMEE4RDU4N0YwMEIy
NDFFNSAvKiBET01IVE1MRm9udEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1NjcyQkIx
MEE4RDU5NUQwMEIyNDFFNSAvKiBET01IVE1MRExpc3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQk4NUE1QzhDMjBBOEQ1RDhCMDBBM0NGOTAgLyogRE9NSFRNTEJhc2VGb250RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJODVBNUM4Q0EwQThENURCOTAwQTNDRjkwIC8qIERPTUhUTUxE
aXJlY3RvcnlFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUE1QzhEMDBBOEQ1REU1MDBB
M0NGOTAgLyogRE9NSFRNTEJSRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC02NDQ0LDcgKzY2
MDksNiBAQAogCQkwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi8g
PSB7CiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0
OUMyODQzMDg5MDJCMTEwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WFByb2plY3QgIldlYkNvcmUiICovOwotCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUg
Mi40IjsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0g
KAogCQkJCUVuZ2xpc2gsCkBAIC02NDU4LDggKzY2MjIsNiBAQAogCQkJbWFpbkdyb3VwID0gMDg2
N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYktpdCAqLzsKIAkJCXByb2R1Y3RSZWZHcm91cCA9
IDAzNDc2OERGRkYzOEE1MDQxMURCOUM4QiAvKiBQcm9kdWN0cyAqLzsKIAkJCXByb2plY3REaXJQ
YXRoID0gIiI7Ci0JCQlwcm9qZWN0Um9vdCA9ICIiOwotCQkJc2hvdWxkQ2hlY2tDb21wYXRpYmls
aXR5ID0gMTsKIAkJCXRhcmdldHMgPSAoCiAJCQkJOTNGMTk4QTUwODI0NUU1OTAwMUU5QUJDIC8q
IFdlYkNvcmUgKi8sCiAJCQkJREQwNDFGQkUwOUQ5RERCRTAwMTBBRjJBIC8qIERlcml2ZWQgU291
cmNlcyAqLywKQEAgLTcyODMsNiArNzQ0NSwyOCBAQAogCQkJCUJDQUE5MEMzMEE3RUJBNjAwMDhC
MTIyOSAvKiBTY3JvbGxCYXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNCMEZEOEEwQTc1OUJF
RDAwODBBRDQ0IC8qIFN0cmluZ0ltcGxNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0IwRkQ4
QjBBNzU5QkVEMDA4MEFENDQgLyogU3RyaW5nTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODVG
OTJBRTkwQThCQzc3QjAwNzhGOUQ0IC8qIERPTUhUTUxEaXZFbGVtZW50Lm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJODU5QjdGQzMwQThEMjhGMjAwQTVGMUVBIC8qIERPTUhUTUxIZWFkRWxlbWVudC5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTg1OUI3RkM1MEE4RDI4RjIwMEE1RjFFQSAvKiBET01IVE1M
SHRtbEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTlCN0ZDQjBBOEQyOEY4MDBBNUYx
RUEgLyogRE9NSFRNTE1vZEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTlCODAzODBB
OEQzMUE2MDBBNUYxRUEgLyogRE9NSFRNTFRpdGxlRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTg1NjcyQTJDMEE4RDRERjQwMEIyNDFFNSAvKiBET01IVE1MTWV0YUVsZW1lbnQubW0gaW4g
U291cmNlcyAqLywKKwkJCQk4NTY3MkEzRTBBOEQ0RTNDMDBCMjQxRTUgLyogRE9NSFRNTEJhc2VF
bGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODU2NzJBOTkwQThENTEyMjAwQjI0MUU1IC8q
IERPTUhUTUxVTGlzdEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTY3MkFBMTBBOEQ1
MUQ0MDBCMjQxRTUgLyogRE9NSFRNTFF1b3RlRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTg1NjcyQURBMEE4RDUyRjEwMEIyNDFFNSAvKiBET01IVE1MUGFyYW1FbGVtZW50Lm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJODU2NzJBRjUwQThENTM4MTAwQjI0MUU1IC8qIERPTUhUTUxQYXJhZ3Jh
cGhFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODU2NzJCMEIwQThENTNFMDAwQjI0MUU1
IC8qIERPTUhUTUxPcHRHcm91cEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTY3MkIy
NjBBOEQ1NEIzMDBCMjQxRTUgLyogRE9NSFRNTE9MaXN0RWxlbWVudC5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTg1NjcyQjJDMEE4RDU1MDMwMEIyNDFFNSAvKiBET01IVE1MTWVudUVsZW1lbnQubW0g
aW4gU291cmNlcyAqLywKKwkJCQk4NTY3MkI3ODBBOEQ1NkY4MDBCMjQxRTUgLyogRE9NSFRNTExJ
RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1NjcyQjg1MEE4RDU3OTEwMEIyNDFFNSAv
KiBET01IVE1MSFJFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODU2NzJCOTMwQThENTdG
NTAwQjI0MUU1IC8qIERPTUhUTUxIZWFkaW5nRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTg1NjcyQjlGMEE4RDU4N0YwMEIyNDFFNSAvKiBET01IVE1MRm9udEVsZW1lbnQubW0gaW4gU291
cmNlcyAqLywKKwkJCQk4NTY3MkJCMjBBOEQ1OTVEMDBCMjQxRTUgLyogRE9NSFRNTERMaXN0RWxl
bWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1QTVDOEMzMEE4RDVEOEIwMEEzQ0Y5MCAvKiBE
T01IVE1MQmFzZUZvbnRFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODVBNUM4Q0IwQThE
NURCOTAwQTNDRjkwIC8qIERPTUhUTUxEaXJlY3RvcnlFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJODVBNUM4RDEwQThENURFNTAwQTNDRjkwIC8qIERPTUhUTUxCUkVsZW1lbnQubW0gaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQkocmV2aXNpb24gMTU4MjgpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCwz
MSBAQAogI2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKICNpbXBvcnQgIlRyZWVXYWxrZXIuaCIKICNp
bXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKKworLy8gR2VuZXJhdGVkIE9iamVjdGl2
ZS1DIEJpbmRpbmdzCisjaW1wb3J0ICJET01IVE1MQmFzZUVsZW1lbnQuaCIKKyNpbXBvcnQgIkRP
TUhUTUxEaXZFbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1MSGVhZEVsZW1lbnQuaCIKKyNpbXBv
cnQgIkRPTUhUTUxIdG1sRWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTE1ldGFFbGVtZW50Lmgi
CisjaW1wb3J0ICJET01IVE1MTW9kRWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTE9wdEdyb3Vw
RWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQuaCIKKyNpbXBvcnQg
IkRPTUhUTUxQYXJhbUVsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxRdW90ZUVsZW1lbnQuaCIK
KyNpbXBvcnQgIkRPTUhUTUxUaXRsZUVsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxVTGlzdEVs
ZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxPTGlzdEVsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhU
TUxNZW51RWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTExJRWxlbWVudC5oIgorI2ltcG9ydCAi
RE9NSFRNTEhSRWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTEhlYWRpbmdFbGVtZW50LmgiCisj
aW1wb3J0ICJET01IVE1MRm9udEVsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxETGlzdEVsZW1l
bnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxEaXJlY3RvcnlFbGVtZW50LmgiCisjaW1wb3J0ICJET01I
VE1MQlJFbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1MQmFzZUZvbnRFbGVtZW50LmgiCisKICNp
bXBvcnQgPG9iamMvb2JqYy1jbGFzcy5oPgogCiB1c2luZyBXZWJDb3JlOjpBdG9taWNTdHJpbmc7
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLmgJKHJldmlzaW9uIDE1ODI4KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwuaAkod29ya2luZyBjb3B5KQpAQCAtNzksMTYgKzc5LDYg
QEAKIC0gKHZvaWQpc2V0Q2xhc3NOYW1lOihOU1N0cmluZyAqKWNsYXNzTmFtZTsKIEBlbmQKIAot
QGludGVyZmFjZSBET01IVE1MSHRtbEVsZW1lbnQgOiBET01IVE1MRWxlbWVudAotLSAoTlNTdHJp
bmcgKil2ZXJzaW9uOwotLSAodm9pZClzZXRWZXJzaW9uOihOU1N0cmluZyAqKXZlcnNpb247Ci1A
ZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTEhlYWRFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0g
KE5TU3RyaW5nICopcHJvZmlsZTsKLS0gKHZvaWQpc2V0UHJvZmlsZTooTlNTdHJpbmcgKilwcm9m
aWxlOwotQGVuZAotCiBAaW50ZXJmYWNlIERPTUhUTUxMaW5rRWxlbWVudCA6IERPTUhUTUxFbGVt
ZW50CiAtIChCT09MKWRpc2FibGVkOwogLSAodm9pZClzZXREaXNhYmxlZDooQk9PTClkaXNhYmxl
ZDsKQEAgLTExMCwyOSArMTAwLDYgQEAKIC0gKHZvaWQpc2V0VHlwZTooTlNTdHJpbmcgKil0eXBl
OwogQGVuZAogCi1AaW50ZXJmYWNlIERPTUhUTUxUaXRsZUVsZW1lbnQgOiBET01IVE1MRWxlbWVu
dAotLSAoTlNTdHJpbmcgKil0ZXh0OwotLSAodm9pZClzZXRUZXh0OihOU1N0cmluZyAqKXRleHQ7
Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTE1ldGFFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQK
LS0gKE5TU3RyaW5nICopY29udGVudDsKLS0gKHZvaWQpc2V0Q29udGVudDooTlNTdHJpbmcgKilj
b250ZW50OwotLSAoTlNTdHJpbmcgKilodHRwRXF1aXY7Ci0tICh2b2lkKXNldEh0dHBFcXVpdjoo
TlNTdHJpbmcgKilodHRwRXF1aXY7Ci0tIChOU1N0cmluZyAqKW5hbWU7Ci0tICh2b2lkKXNldE5h
bWU6KE5TU3RyaW5nICopbmFtZTsKLS0gKE5TU3RyaW5nICopc2NoZW1lOwotLSAodm9pZClzZXRT
Y2hlbWU6KE5TU3RyaW5nICopc2NoZW1lOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxCYXNl
RWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChOU1N0cmluZyAqKWhyZWY7Ci0tICh2b2lkKXNl
dEhyZWY6KE5TU3RyaW5nICopaHJlZjsKLS0gKE5TU3RyaW5nICopdGFyZ2V0OwotLSAodm9pZClz
ZXRUYXJnZXQ6KE5TU3RyaW5nICopdGFyZ2V0OwotQGVuZAotCiBAaW50ZXJmYWNlIERPTUhUTUxJ
c0luZGV4RWxlbWVudCA6IERPTUhUTUxFbGVtZW50CiAtIChET01IVE1MRm9ybUVsZW1lbnQgKilm
b3JtOwogLSAoTlNTdHJpbmcgKilwcm9tcHQ7CkBAIC0yMDcsMTMgKzE3NCw2IEBACiAtICh2b2lk
KWZvY3VzOwogQGVuZAogCi1AaW50ZXJmYWNlIERPTUhUTUxPcHRHcm91cEVsZW1lbnQgOiBET01I
VE1MRWxlbWVudAotLSAoQk9PTClkaXNhYmxlZDsKLS0gKHZvaWQpc2V0RGlzYWJsZWQ6KEJPT0wp
ZGlzYWJsZWQ7Ci0tIChOU1N0cmluZyAqKWxhYmVsOwotLSAodm9pZClzZXRMYWJlbDooTlNTdHJp
bmcgKilsYWJlbDsKLUBlbmQKLQogQGludGVyZmFjZSBET01IVE1MT3B0aW9uRWxlbWVudCA6IERP
TUhUTUxFbGVtZW50CiAtIChET01IVE1MRm9ybUVsZW1lbnQgKilmb3JtOwogLSAoQk9PTClkZWZh
dWx0U2VsZWN0ZWQ7CkBAIC0zMzMsMTEwICsyOTMsMTEgQEAKIC0gKHZvaWQpc2V0QWxpZ246KE5T
U3RyaW5nICopYWxpZ247CiBAZW5kCiAKLUBpbnRlcmZhY2UgRE9NSFRNTFVMaXN0RWxlbWVudCA6
IERPTUhUTUxFbGVtZW50Ci0tIChCT09MKWNvbXBhY3Q7Ci0tICh2b2lkKXNldENvbXBhY3Q6KEJP
T0wpY29tcGFjdDsKLS0gKE5TU3RyaW5nICopdHlwZTsKLS0gKHZvaWQpc2V0VHlwZTooTlNTdHJp
bmcgKil0eXBlOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxPTGlzdEVsZW1lbnQgOiBET01I
VE1MRWxlbWVudAotLSAoQk9PTCljb21wYWN0OwotLSAodm9pZClzZXRDb21wYWN0OihCT09MKWNv
bXBhY3Q7Ci0tIChpbnQpc3RhcnQ7Ci0tICh2b2lkKXNldFN0YXJ0OihpbnQpc3RhcnQ7Ci0tIChO
U1N0cmluZyAqKXR5cGU7Ci0tICh2b2lkKXNldFR5cGU6KE5TU3RyaW5nICopdHlwZTsKLUBlbmQK
LQotQGludGVyZmFjZSBET01IVE1MRExpc3RFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKEJP
T0wpY29tcGFjdDsKLS0gKHZvaWQpc2V0Q29tcGFjdDooQk9PTCljb21wYWN0OwotQGVuZAotCi1A
aW50ZXJmYWNlIERPTUhUTUxEaXJlY3RvcnlFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKEJP
T0wpY29tcGFjdDsKLS0gKHZvaWQpc2V0Q29tcGFjdDooQk9PTCljb21wYWN0OwotQGVuZAotCi1A
aW50ZXJmYWNlIERPTUhUTUxNZW51RWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChCT09MKWNv
bXBhY3Q7Ci0tICh2b2lkKXNldENvbXBhY3Q6KEJPT0wpY29tcGFjdDsKLUBlbmQKLQotQGludGVy
ZmFjZSBET01IVE1MTElFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKE5TU3RyaW5nICopdHlw
ZTsKLS0gKHZvaWQpc2V0VHlwZTooTlNTdHJpbmcgKil0eXBlOwotLSAoaW50KXZhbHVlOwotLSAo
dm9pZClzZXRWYWx1ZTooaW50KXZhbHVlOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxEaXZF
bGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKE5TU3RyaW5nICopYWxpZ247Ci0tICh2b2lkKXNl
dEFsaWduOihOU1N0cmluZyAqKWFsaWduOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxQYXJh
Z3JhcGhFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKE5TU3RyaW5nICopYWxpZ247Ci0tICh2
b2lkKXNldEFsaWduOihOU1N0cmluZyAqKWFsaWduOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhU
TUxIZWFkaW5nRWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChOU1N0cmluZyAqKWFsaWduOwot
LSAodm9pZClzZXRBbGlnbjooTlNTdHJpbmcgKilhbGlnbjsKLUBlbmQKLQotQGludGVyZmFjZSBE
T01IVE1MUXVvdGVFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKE5TU3RyaW5nICopY2l0ZTsK
LS0gKHZvaWQpc2V0Q2l0ZTooTlNTdHJpbmcgKiljaXRlOwotQGVuZAotCiBAaW50ZXJmYWNlIERP
TUhUTUxQcmVFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKIC0gKGludCl3aWR0aDsKIC0gKHZvaWQp
c2V0V2lkdGg6KGludCl3aWR0aDsKIEBlbmQKIAotQGludGVyZmFjZSBET01IVE1MQlJFbGVtZW50
IDogRE9NSFRNTEVsZW1lbnQKLS0gKE5TU3RyaW5nICopY2xlYXI7Ci0tICh2b2lkKXNldENsZWFy
OihOU1N0cmluZyAqKWNsZWFyOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxCYXNlRm9udEVs
ZW1lbnQgOiBET01IVE1MRWxlbWVudAotLSAoTlNTdHJpbmcgKiljb2xvcjsKLS0gKHZvaWQpc2V0
Q29sb3I6KE5TU3RyaW5nICopY29sb3I7Ci0tIChOU1N0cmluZyAqKWZhY2U7Ci0tICh2b2lkKXNl
dEZhY2U6KE5TU3RyaW5nICopZmFjZTsKLS0gKE5TU3RyaW5nICopc2l6ZTsKLS0gKHZvaWQpc2V0
U2l6ZTooTlNTdHJpbmcgKilzaXplOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxGb250RWxl
bWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChOU1N0cmluZyAqKWNvbG9yOwotLSAodm9pZClzZXRD
b2xvcjooTlNTdHJpbmcgKiljb2xvcjsKLS0gKE5TU3RyaW5nICopZmFjZTsKLS0gKHZvaWQpc2V0
RmFjZTooTlNTdHJpbmcgKilmYWNlOwotLSAoTlNTdHJpbmcgKilzaXplOwotLSAodm9pZClzZXRT
aXplOihOU1N0cmluZyAqKXNpemU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTEhSRWxlbWVu
dCA6IERPTUhUTUxFbGVtZW50Ci0tIChOU1N0cmluZyAqKWFsaWduOwotLSAodm9pZClzZXRBbGln
bjooTlNTdHJpbmcgKilhbGlnbjsKLS0gKEJPT0wpbm9TaGFkZTsKLS0gKHZvaWQpc2V0Tm9TaGFk
ZTooQk9PTClub1NoYWRlOwotLSAoTlNTdHJpbmcgKilzaXplOwotLSAodm9pZClzZXRTaXplOihO
U1N0cmluZyAqKXNpemU7Ci0tIChOU1N0cmluZyAqKXdpZHRoOwotLSAodm9pZClzZXRXaWR0aDoo
TlNTdHJpbmcgKil3aWR0aDsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MTW9kRWxlbWVudCA6
IERPTUhUTUxFbGVtZW50Ci0tIChOU1N0cmluZyAqKWNpdGU7Ci0tICh2b2lkKXNldENpdGU6KE5T
U3RyaW5nICopY2l0ZTsKLS0gKE5TU3RyaW5nICopZGF0ZVRpbWU7Ci0tICh2b2lkKXNldERhdGVU
aW1lOihOU1N0cmluZyAqKWRhdGVUaW1lOwotQGVuZAotCiBAaW50ZXJmYWNlIERPTUhUTUxBbmNo
b3JFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKIC0gKE5TU3RyaW5nICopYWNjZXNzS2V5OwogLSAo
dm9pZClzZXRBY2Nlc3NLZXk6KE5TU3RyaW5nICopYWNjZXNzS2V5OwpAQCAtNTMyLDE3ICszOTMs
NiBAQAogLSAoRE9NRG9jdW1lbnQgKiljb250ZW50RG9jdW1lbnQ7CiBAZW5kCiAKLUBpbnRlcmZh
Y2UgRE9NSFRNTFBhcmFtRWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChOU1N0cmluZyAqKW5h
bWU7Ci0tICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZTsKLS0gKE5TU3RyaW5nICopdHlw
ZTsKLS0gKHZvaWQpc2V0VHlwZTooTlNTdHJpbmcgKil0eXBlOwotLSAoTlNTdHJpbmcgKil2YWx1
ZTsKLS0gKHZvaWQpc2V0VmFsdWU6KE5TU3RyaW5nICopdmFsdWU7Ci0tIChOU1N0cmluZyAqKXZh
bHVlVHlwZTsKLS0gKHZvaWQpc2V0VmFsdWVUeXBlOihOU1N0cmluZyAqKXZhbHVlVHlwZTsKLUBl
bmQKLQogQGludGVyZmFjZSBET01IVE1MQXBwbGV0RWxlbWVudCA6IERPTUhUTUxFbGVtZW50CiAt
IChOU1N0cmluZyAqKWFsaWduOwogLSAodm9pZClzZXRBbGlnbjooTlNTdHJpbmcgKilhbGlnbjsK
QEAgLTczMiw2ICs1ODIsNyBAQAogLSAodm9pZClzZXRXaWR0aDooTlNTdHJpbmcgKil3aWR0aDsK
IEBlbmQKIAorLy8gRklYTUU6IEhUTUxGcmFtZVNldEVsZW1lbnQgaGFzIG5vIElETCBmaWxlIGZv
ciBpdCwgc28gYXMgb2YgeWV0IGNhbid0IGJlIGF1dG9nZW5lcmF0ZWQuCiBAaW50ZXJmYWNlIERP
TUhUTUxGcmFtZVNldEVsZW1lbnQgOiBET01IVE1MRWxlbWVudAogLSAoTlNTdHJpbmcgKiljb2xz
OwogLSAodm9pZClzZXRDb2xzOihOU1N0cmluZyAqKWNvbHM7CkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NSFRNTC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NSFRNTC5tbQkocmV2aXNpb24gMTU4MjgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
SFRNTC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsNDMgKzM1LDI1IEBACiAjaW1wb3J0ICJGcmFt
ZVZpZXcuaCIKICNpbXBvcnQgIkhUTUxBcHBsZXRFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MQXJl
YUVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxCUkVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxCYXNl
RWxlbWVudC5oIgotI2ltcG9ydCAiSFRNTEJhc2VGb250RWxlbWVudC5oIgogI2ltcG9ydCAiSFRN
TEJvZHlFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MQnV0dG9uRWxlbWVudC5oIgotI2ltcG9ydCAi
SFRNTERMaXN0RWxlbWVudC5oIgotI2ltcG9ydCAiSFRNTERpcmVjdG9yeUVsZW1lbnQuaCIKLSNp
bXBvcnQgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MRG9jdW1lbnQuaCIKICNpbXBv
cnQgIkhUTUxFbWJlZEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIK
LSNpbXBvcnQgIkhUTUxGb250RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTEZvcm1Db2xsZWN0aW9u
LmgiCiAjaW1wb3J0ICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxGcmFtZVNldEVs
ZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxIUkVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxIZWFkRWxl
bWVudC5oIgotI2ltcG9ydCAiSFRNTEhlYWRpbmdFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MSHRt
bEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxJRnJhbWVFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1M
SW1hZ2VFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MSXNJbmRleEVsZW1lbnQuaCIKLSNpbXBvcnQg
IkhUTUxMSUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxMYWJlbEVsZW1lbnQuaCIKICNpbXBvcnQg
IkhUTUxMZWdlbmRFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MTGlua0VsZW1lbnQuaCIKICNpbXBv
cnQgIkhUTUxNYXBFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MTWVudUVsZW1lbnQuaCIKLSNpbXBv
cnQgIkhUTUxNZXRhRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE5hbWVzLmgiCi0jaW1wb3J0ICJI
VE1MT0xpc3RFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MT2JqZWN0RWxlbWVudC5oIgotI2ltcG9y
dCAiSFRNTE9wdEdyb3VwRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE9wdGlvbkVsZW1lbnQuaCIK
ICNpbXBvcnQgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgotI2ltcG9ydCAiSFRNTFBhcmFncmFw
aEVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxQYXJhbUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxQ
cmVFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MU2NyaXB0RWxlbWVudC5oIgogI2ltcG9ydCAiSFRN
TFNlbGVjdEVsZW1lbnQuaCIKQEAgLTg0LDcgKzY2LDYgQEAKICNpbXBvcnQgIkhUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW1wb3J0
ICJIVE1MVGl0bGVFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MVUxpc3RFbGVtZW50LmgiCiAjaW1w
b3J0ICJLVVJMLmgiCiAjaW1wb3J0ICJOYW1lTm9kZUxpc3QuaCIKICNpbXBvcnQgIlJhbmdlLmgi
CkBAIC02MjcsNDQgKzYwOCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEBlbmQK
IAotQGltcGxlbWVudGF0aW9uIERPTUhUTUxIdG1sRWxlbWVudAotCi0tIChIVE1MSHRtbEVsZW1l
bnQgKilfSFRNTEh0bWxFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxIdG1s
RWxlbWVudCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcg
Kil2ZXJzaW9uCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9IVE1MSHRtbEVsZW1lbnRdLT52ZXJzaW9u
KCk7Ci19Ci0KLS0gKHZvaWQpc2V0VmVyc2lvbjooTlNTdHJpbmcgKil2ZXJzaW9uCi17Ci0gICAg
W3NlbGYgX0hUTUxIdG1sRWxlbWVudF0tPnNldFZlcnNpb24odmVyc2lvbik7Ci19Ci0KLUBlbmQK
LQotQGltcGxlbWVudGF0aW9uIERPTUhUTUxIZWFkRWxlbWVudAotCi0tIChIVE1MSGVhZEVsZW1l
bnQgKilfaGVhZEVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEhlYWRFbGVt
ZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChOU1N0cmluZyAqKXBy
b2ZpbGUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2hlYWRFbGVtZW50XS0+cHJvZmlsZSgpOwotfQot
Ci0tICh2b2lkKXNldFByb2ZpbGU6KE5TU3RyaW5nICopcHJvZmlsZQotewotICAgIFtzZWxmIF9o
ZWFkRWxlbWVudF0tPnNldFByb2ZpbGUocHJvZmlsZSk7Ci19Ci0KLUBlbmQKLQogQGltcGxlbWVu
dGF0aW9uIERPTUhUTUxMaW5rRWxlbWVudAogCiAtIChIVE1MTGlua0VsZW1lbnQgKilfbGlua0Vs
ZW1lbnQKQEAgLTc2OSwxMDMgKzcxMiw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
IEBlbmQKIAotQGltcGxlbWVudGF0aW9uIERPTUhUTUxUaXRsZUVsZW1lbnQKLQotLSAoSFRNTFRp
dGxlRWxlbWVudCAqKV90aXRsZUVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRN
TFRpdGxlRWxlbWVudCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNT
dHJpbmcgKil0ZXh0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF90aXRsZUVsZW1lbnRdLT5nZXRBdHRy
aWJ1dGUodGV4dEF0dHIpOwotfQotCi0tICh2b2lkKXNldFRleHQ6KE5TU3RyaW5nICopdGV4dAot
ewotICAgIFtzZWxmIF90aXRsZUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUodGV4dEF0dHIsIHRleHQp
OwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MTWV0YUVsZW1lbnQKLQotLSAo
SFRNTE1ldGFFbGVtZW50ICopX21ldGFFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PEhUTUxNZXRhRWxlbWVudCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAo
TlNTdHJpbmcgKiljb250ZW50Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9tZXRhRWxlbWVudF0tPmdl
dEF0dHJpYnV0ZShjb250ZW50QXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0Q29udGVudDooTlNTdHJp
bmcgKiljb250ZW50Ci17Ci0gICAgW3NlbGYgX21ldGFFbGVtZW50XS0+c2V0QXR0cmlidXRlKGNv
bnRlbnRBdHRyLCBjb250ZW50KTsKLX0KLQotLSAoTlNTdHJpbmcgKilodHRwRXF1aXYKLXsKLSAg
ICByZXR1cm4gW3NlbGYgX21ldGFFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGh0dHBfZXF1aXZBdHRy
KTsKLX0KLQotLSAodm9pZClzZXRIdHRwRXF1aXY6KE5TU3RyaW5nICopaHR0cEVxdWl2Ci17Ci0g
ICAgW3NlbGYgX21ldGFFbGVtZW50XS0+c2V0QXR0cmlidXRlKGh0dHBfZXF1aXZBdHRyLCBodHRw
RXF1aXYpOwotfQotCi0tIChOU1N0cmluZyAqKW5hbWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX21l
dGFFbGVtZW50XS0+Z2V0QXR0cmlidXRlKG5hbWVBdHRyKTsKLX0KLQotLSAodm9pZClzZXROYW1l
OihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBbc2VsZiBfbWV0YUVsZW1lbnRdLT5zZXRBdHRyaWJ1
dGUobmFtZUF0dHIsIG5hbWUpOwotfQotCi0tIChOU1N0cmluZyAqKXNjaGVtZQotewotICAgIHJl
dHVybiBbc2VsZiBfbWV0YUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoc2NoZW1lQXR0cik7Ci19Ci0K
LS0gKHZvaWQpc2V0U2NoZW1lOihOU1N0cmluZyAqKXNjaGVtZQotewotICAgIFtzZWxmIF9tZXRh
RWxlbWVudF0tPnNldEF0dHJpYnV0ZShzY2hlbWVBdHRyLCBzY2hlbWUpOwotfQotCi1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBET01IVE1MQmFzZUVsZW1lbnQKLQotLSAoSFRNTEJhc2VFbGVtZW50
ICopX2Jhc2VFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxCYXNlRWxlbWVu
dCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKilocmVm
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9iYXNlRWxlbWVudF0tPmhyZWYoKTsKLX0KLQotLSAodm9p
ZClzZXRIcmVmOihOU1N0cmluZyAqKWhyZWYKLXsKLSAgICBbc2VsZiBfYmFzZUVsZW1lbnRdLT5z
ZXRBdHRyaWJ1dGUoaHJlZkF0dHIsIGhyZWYpOwotfQotCi0tIChOU1N0cmluZyAqKXRhcmdldAot
ewotICAgIHJldHVybiBbc2VsZiBfYmFzZUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUodGFyZ2V0QXR0
cik7Ci19Ci0KLS0gKHZvaWQpc2V0VGFyZ2V0OihOU1N0cmluZyAqKXRhcmdldAotewotICAgIFtz
ZWxmIF9iYXNlRWxlbWVudF0tPnNldEF0dHJpYnV0ZShzY2hlbWVBdHRyLCB0YXJnZXQpOwotfQot
Ci1AZW5kCi0KIEBpbXBsZW1lbnRhdGlvbiBET01IVE1MU3R5bGVFbGVtZW50CiAKIC0gKEhUTUxT
dHlsZUVsZW1lbnQgKilfc3R5bGVFbGVtZW50CkBAIC0xMjI2LDM1ICsxMDcyLDYgQEAgdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gRE9NSFRNTE9w
dEdyb3VwRWxlbWVudAotCi0tIChIVE1MT3B0R3JvdXBFbGVtZW50ICopX29wdEdyb3VwRWxlbWVu
dAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50Kj4oRE9NX2Nh
c3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChCT09MKWRpc2FibGVkCi17Ci0gICAgcmV0
dXJuIFtzZWxmIF9vcHRHcm91cEVsZW1lbnRdLT5kaXNhYmxlZCgpOwotfQotCi0tICh2b2lkKXNl
dERpc2FibGVkOihCT09MKWRpc2FibGVkCi17Ci0gICAgW3NlbGYgX29wdEdyb3VwRWxlbWVudF0t
PnNldERpc2FibGVkKGRpc2FibGVkKTsKLX0KLQotLSAoTlNTdHJpbmcgKilsYWJlbAotewotICAg
IHJldHVybiBbc2VsZiBfb3B0R3JvdXBFbGVtZW50XS0+bGFiZWwoKTsKLX0KLQotLSAodm9pZClz
ZXRMYWJlbDooTlNTdHJpbmcgKilsYWJlbAotewotICAgIFtzZWxmIF9vcHRHcm91cEVsZW1lbnRd
LT5zZXRMYWJlbChsYWJlbCk7Ci19Ci0KLUBlbmQKLQogQGltcGxlbWVudGF0aW9uIERPTUhUTUxP
cHRpb25FbGVtZW50CiAKIC0gKEhUTUxPcHRpb25FbGVtZW50ICopX29wdGlvbkVsZW1lbnQKQEAg
LTE4MjksMjM2ICsxNjQ2LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogQGVuZAog
Ci1AaW1wbGVtZW50YXRpb24gRE9NSFRNTFVMaXN0RWxlbWVudAotCi0tIChIVE1MVUxpc3RFbGVt
ZW50ICopX3VMaXN0RWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MVUxpc3RF
bGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChCT09MKWNvbXBh
Y3QKLXsKLSAgICByZXR1cm4gW3NlbGYgX3VMaXN0RWxlbWVudF0tPmdldEF0dHJpYnV0ZShjb21w
YWN0QXR0cikuaXNOdWxsKCk7Ci19Ci0KLS0gKHZvaWQpc2V0Q29tcGFjdDooQk9PTCljb21wYWN0
Ci17Ci0gICAgW3NlbGYgX3VMaXN0RWxlbWVudF0tPnNldEF0dHJpYnV0ZShjb21wYWN0QXR0ciwg
Y29tcGFjdCA/ICIiIDogMCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopdHlwZQotewotICAgIHJldHVy
biBbc2VsZiBfdUxpc3RFbGVtZW50XS0+Z2V0QXR0cmlidXRlKHR5cGVBdHRyKTsKLX0KLQotLSAo
dm9pZClzZXRUeXBlOihOU1N0cmluZyAqKXR5cGUKLXsKLSAgICBbc2VsZiBfdUxpc3RFbGVtZW50
XS0+c2V0QXR0cmlidXRlKHR5cGVBdHRyLCB0eXBlKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gRE9NSFRNTE9MaXN0RWxlbWVudAotCi0tIChIVE1MT0xpc3RFbGVtZW50ICopX29MaXN0
RWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MT0xpc3RFbGVtZW50Kj4oRE9N
X2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChCT09MKWNvbXBhY3QKLXsKLSAgICBy
ZXR1cm4gW3NlbGYgX29MaXN0RWxlbWVudF0tPmNvbXBhY3QoKTsKLX0KLQotLSAodm9pZClzZXRD
b21wYWN0OihCT09MKWNvbXBhY3QKLXsKLSAgICBbc2VsZiBfb0xpc3RFbGVtZW50XS0+c2V0Q29t
cGFjdChjb21wYWN0KTsKLX0KLQotLSAoaW50KXN0YXJ0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9v
TGlzdEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoc3RhcnRBdHRyKS50b0ludCgpOwotfQotCi0tICh2
b2lkKXNldFN0YXJ0OihpbnQpc3RhcnQKLXsKLSAgICBbc2VsZiBfb0xpc3RFbGVtZW50XS0+c2V0
QXR0cmlidXRlKHN0YXJ0QXR0ciwgU3RyaW5nOjpudW1iZXIoc3RhcnQpKTsKLX0KLQotLSAoTlNT
dHJpbmcgKil0eXBlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9vTGlzdEVsZW1lbnRdLT5nZXRBdHRy
aWJ1dGUodHlwZUF0dHIpOwotfQotCi0tICh2b2lkKXNldFR5cGU6KE5TU3RyaW5nICopdHlwZQot
ewotICAgIFtzZWxmIF9vTGlzdEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUodHlwZUF0dHIsIHR5cGUp
OwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MRExpc3RFbGVtZW50Ci0KLS0g
KEhUTUxETGlzdEVsZW1lbnQgKilfZExpc3RFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PEhUTUxETGlzdEVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19Ci0K
LS0gKEJPT0wpY29tcGFjdAotewotICAgIHJldHVybiBbc2VsZiBfZExpc3RFbGVtZW50XS0+Z2V0
QXR0cmlidXRlKGNvbXBhY3RBdHRyKS5pc051bGwoKTsKLX0KLQotLSAodm9pZClzZXRDb21wYWN0
OihCT09MKWNvbXBhY3QKLXsKLSAgICBbc2VsZiBfZExpc3RFbGVtZW50XS0+c2V0QXR0cmlidXRl
KGNvbXBhY3RBdHRyLCBjb21wYWN0ID8gIiIgOiAwKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQKLQotLSAoSFRNTERpcmVjdG9yeUVsZW1lbnQg
KilfZGlyZWN0b3J5TGlzdEVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTERp
cmVjdG9yeUVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKEJP
T0wpY29tcGFjdAotewotICAgIHJldHVybiBbc2VsZiBfZGlyZWN0b3J5TGlzdEVsZW1lbnRdLT5n
ZXRBdHRyaWJ1dGUoY29tcGFjdEF0dHIpLmlzTnVsbCgpOwotfQotCi0tICh2b2lkKXNldENvbXBh
Y3Q6KEJPT0wpY29tcGFjdAotewotICAgIFtzZWxmIF9kaXJlY3RvcnlMaXN0RWxlbWVudF0tPnNl
dEF0dHJpYnV0ZShjb21wYWN0QXR0ciwgY29tcGFjdCA/ICIiIDogMCk7Ci19Ci0KLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIERPTUhUTUxNZW51RWxlbWVudAotCi0tIChIVE1MTWVudUVsZW1lbnQg
KilfbWVudUxpc3RFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxNZW51RWxl
bWVudCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoQk9PTCljb21wYWN0
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9tZW51TGlzdEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoY29t
cGFjdEF0dHIpLmlzTnVsbCgpOwotfQotCi0tICh2b2lkKXNldENvbXBhY3Q6KEJPT0wpY29tcGFj
dAotewotICAgIFtzZWxmIF9tZW51TGlzdEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoY29tcGFjdEF0
dHIsIGNvbXBhY3QgPyAiIiA6IDApOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01I
VE1MTElFbGVtZW50Ci0KLS0gKEhUTUxMSUVsZW1lbnQgKilfbGlFbGVtZW50Ci17Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PEhUTUxMSUVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFs
KSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopdHlwZQotewotICAgIHJldHVybiBbc2VsZiBfbGlFbGVt
ZW50XS0+dHlwZSgpOwotfQotCi0tICh2b2lkKXNldFR5cGU6KE5TU3RyaW5nICopdHlwZQotewot
ICAgIFtzZWxmIF9saUVsZW1lbnRdLT5zZXRUeXBlKHR5cGUpOwotfQotCi0tIChpbnQpdmFsdWUK
LXsKLSAgICByZXR1cm4gW3NlbGYgX2xpRWxlbWVudF0tPnZhbHVlKCk7Ci19Ci0KLS0gKHZvaWQp
c2V0VmFsdWU6KGludCl2YWx1ZQotewotICAgIFtzZWxmIF9saUVsZW1lbnRdLT5zZXRWYWx1ZSh2
YWx1ZSk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUhUTUxRdW90ZUVsZW1lbnQK
LQotLSAoSFRNTEVsZW1lbnQgKilfcXVvdGVFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PEhUTUxFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChO
U1N0cmluZyAqKWNpdGUKLXsKLSAgICByZXR1cm4gW3NlbGYgX3F1b3RlRWxlbWVudF0tPmdldEF0
dHJpYnV0ZShjaXRlQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0Q2l0ZTooTlNTdHJpbmcgKiljaXRl
Ci17Ci0gICAgW3NlbGYgX3F1b3RlRWxlbWVudF0tPnNldEF0dHJpYnV0ZShjaXRlQXR0ciwgY2l0
ZSk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUhUTUxEaXZFbGVtZW50Ci0KLS0g
KEhUTUxEaXZFbGVtZW50ICopX2RpdkVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SFRNTERpdkVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5T
U3RyaW5nICopYWxpZ24KLXsKLSAgICByZXR1cm4gW3NlbGYgX2RpdkVsZW1lbnRdLT5nZXRBdHRy
aWJ1dGUoYWxpZ25BdHRyKTsKLX0KLQotLSAodm9pZClzZXRBbGlnbjooTlNTdHJpbmcgKilhbGln
bgotewotICAgIFtzZWxmIF9kaXZFbGVtZW50XS0+c2V0QXR0cmlidXRlKGFsaWduQXR0ciwgYWxp
Z24pOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MUGFyYWdyYXBoRWxlbWVu
dAotCi0tIChIVE1MUGFyYWdyYXBoRWxlbWVudCAqKV9wYXJhZ3JhcGhFbGVtZW50Ci17Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PEhUTUxQYXJhZ3JhcGhFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+
KF9pbnRlcm5hbCkpOwotfQotCi0tIChOU1N0cmluZyAqKWFsaWduCi17Ci0gICAgcmV0dXJuIFtz
ZWxmIF9wYXJhZ3JhcGhFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGFsaWduQXR0cik7Ci19Ci0KLS0g
KHZvaWQpc2V0QWxpZ246KE5TU3RyaW5nICopYWxpZ24KLXsKLSAgICBbc2VsZiBfcGFyYWdyYXBo
RWxlbWVudF0tPnNldEF0dHJpYnV0ZShhbGlnbkF0dHIsIGFsaWduKTsKLX0KLQotQGVuZAotCi1A
aW1wbGVtZW50YXRpb24gRE9NSFRNTEhlYWRpbmdFbGVtZW50Ci0KLS0gKEhUTUxIZWFkaW5nRWxl
bWVudCAqKV9oZWFkaW5nRWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MSGVh
ZGluZ0VsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3Ry
aW5nICopYWxpZ24KLXsKLSAgICByZXR1cm4gW3NlbGYgX2hlYWRpbmdFbGVtZW50XS0+Z2V0QXR0
cmlidXRlKGFsaWduQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0QWxpZ246KE5TU3RyaW5nICopYWxp
Z24KLXsKLSAgICBbc2VsZiBfaGVhZGluZ0VsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoYWxpZ25BdHRy
LCBhbGlnbik7Ci19Ci0KLUBlbmQKLQogQGltcGxlbWVudGF0aW9uIERPTUhUTUxQcmVFbGVtZW50
CiAKIC0gKEhUTUxQcmVFbGVtZW50ICopX3ByZUVsZW1lbnQKQEAgLTIwNzgsMTgxICsxNjY1LDYg
QEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogQGVuZAogCi1AaW1wbGVtZW50YXRpb24g
RE9NSFRNTEJSRWxlbWVudAotCi0tIChIVE1MQlJFbGVtZW50ICopX0JSRWxlbWVudAotewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MQlJFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRl
cm5hbCkpOwotfQotCi0tIChOU1N0cmluZyAqKWNsZWFyCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9C
UkVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoY2xlYXJBdHRyKTsKLX0KLQotLSAodm9pZClzZXRDbGVh
cjooTlNTdHJpbmcgKiljbGVhcgotewotICAgIFtzZWxmIF9CUkVsZW1lbnRdLT5zZXRBdHRyaWJ1
dGUoY2xlYXJBdHRyLCBjbGVhcik7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUhU
TUxCYXNlRm9udEVsZW1lbnQKLQotLSAoSFRNTEJhc2VGb250RWxlbWVudCAqKV9iYXNlRm9udEVs
ZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEJhc2VGb250RWxlbWVudCo+KERP
TV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKiljb2xvcgotewot
ICAgIHJldHVybiBbc2VsZiBfYmFzZUZvbnRFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGNvbG9yQXR0
cik7Ci19Ci0KLS0gKHZvaWQpc2V0Q29sb3I6KE5TU3RyaW5nICopY29sb3IKLXsKLSAgICBbc2Vs
ZiBfYmFzZUZvbnRFbGVtZW50XS0+c2V0QXR0cmlidXRlKGNvbG9yQXR0ciwgY29sb3IpOwotfQot
Ci0tIChOU1N0cmluZyAqKWZhY2UKLXsKLSAgICByZXR1cm4gW3NlbGYgX2Jhc2VGb250RWxlbWVu
dF0tPmdldEF0dHJpYnV0ZShmYWNlQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0RmFjZTooTlNTdHJp
bmcgKilmYWNlCi17Ci0gICAgW3NlbGYgX2Jhc2VGb250RWxlbWVudF0tPnNldEF0dHJpYnV0ZShm
YWNlQXR0ciwgZmFjZSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopc2l6ZQotewotICAgIHJldHVybiBb
c2VsZiBfYmFzZUZvbnRFbGVtZW50XS0+Z2V0QXR0cmlidXRlKHNpemVBdHRyKTsKLX0KLQotLSAo
dm9pZClzZXRTaXplOihOU1N0cmluZyAqKXNpemUKLXsKLSAgICBbc2VsZiBfYmFzZUZvbnRFbGVt
ZW50XS0+c2V0QXR0cmlidXRlKHNpemVBdHRyLCBzaXplKTsKLX0KLQotQGVuZAotCi1AaW1wbGVt
ZW50YXRpb24gRE9NSFRNTEZvbnRFbGVtZW50Ci0KLS0gKEhUTUxGb250RWxlbWVudCAqKV9mb250
RWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRm9udEVsZW1lbnQqPihET01f
Y2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopY29sb3IKLXsKLSAg
ICByZXR1cm4gW3NlbGYgX2ZvbnRFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGNvbG9yQXR0cik7Ci19
Ci0KLS0gKHZvaWQpc2V0Q29sb3I6KE5TU3RyaW5nICopY29sb3IKLXsKLSAgICBbc2VsZiBfZm9u
dEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoY29sb3JBdHRyLCBjb2xvcik7Ci19Ci0KLS0gKE5TU3Ry
aW5nICopZmFjZQotewotICAgIHJldHVybiBbc2VsZiBfZm9udEVsZW1lbnRdLT5nZXRBdHRyaWJ1
dGUoZmFjZUF0dHIpOwotfQotCi0tICh2b2lkKXNldEZhY2U6KE5TU3RyaW5nICopZmFjZQotewot
ICAgIFtzZWxmIF9mb250RWxlbWVudF0tPnNldEF0dHJpYnV0ZShmYWNlQXR0ciwgZmFjZSk7Ci19
Ci0KLS0gKE5TU3RyaW5nICopc2l6ZQotewotICAgIHJldHVybiBbc2VsZiBfZm9udEVsZW1lbnRd
LT5nZXRBdHRyaWJ1dGUoc2l6ZUF0dHIpOwotfQotCi0tICh2b2lkKXNldFNpemU6KE5TU3RyaW5n
ICopc2l6ZQotewotICAgIFtzZWxmIF9mb250RWxlbWVudF0tPnNldEF0dHJpYnV0ZShzaXplQXR0
ciwgc2l6ZSk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUhUTUxIUkVsZW1lbnQK
LQotLSAoSFRNTEhSRWxlbWVudCAqKV9IUkVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SFRNTEhSRWxlbWVudCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAo
TlNTdHJpbmcgKilhbGlnbgotewotICAgIHJldHVybiBbc2VsZiBfSFJFbGVtZW50XS0+Z2V0QXR0
cmlidXRlKGFsaWduQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0QWxpZ246KE5TU3RyaW5nICopYWxp
Z24KLXsKLSAgICBbc2VsZiBfSFJFbGVtZW50XS0+c2V0QXR0cmlidXRlKGFsaWduQXR0ciwgYWxp
Z24pOwotfQotCi0tIChCT09MKW5vU2hhZGUKLXsKLSAgICByZXR1cm4gW3NlbGYgX0hSRWxlbWVu
dF0tPmdldEF0dHJpYnV0ZShub3NoYWRlQXR0cikuaXNOdWxsKCk7Ci19Ci0KLS0gKHZvaWQpc2V0
Tm9TaGFkZTooQk9PTClub1NoYWRlCi17Ci0gICAgW3NlbGYgX0hSRWxlbWVudF0tPnNldEF0dHJp
YnV0ZShub3NoYWRlQXR0ciwgbm9TaGFkZSA/ICIiIDogMCk7Ci19Ci0KLS0gKE5TU3RyaW5nICop
c2l6ZQotewotICAgIHJldHVybiBbc2VsZiBfSFJFbGVtZW50XS0+Z2V0QXR0cmlidXRlKHNpemVB
dHRyKTsKLX0KLQotLSAodm9pZClzZXRTaXplOihOU1N0cmluZyAqKXNpemUKLXsKLSAgICBbc2Vs
ZiBfSFJFbGVtZW50XS0+c2V0QXR0cmlidXRlKHNpemVBdHRyLCBzaXplKTsKLX0KLQotLSAoTlNT
dHJpbmcgKil3aWR0aAotewotICAgIHJldHVybiBbc2VsZiBfSFJFbGVtZW50XS0+Z2V0QXR0cmli
dXRlKHdpZHRoQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0V2lkdGg6KE5TU3RyaW5nICopd2lkdGgK
LXsKLSAgICBbc2VsZiBfSFJFbGVtZW50XS0+c2V0QXR0cmlidXRlKHdpZHRoQXR0ciwgd2lkdGgp
OwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MTW9kRWxlbWVudAotCi0tIChI
VE1MRWxlbWVudCAqKV9tb2RFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxF
bGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChOU1N0cmluZyAq
KWNpdGUKLXsKLSAgICByZXR1cm4gW3NlbGYgX21vZEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoY2l0
ZUF0dHIpOwotfQotCi0tICh2b2lkKXNldENpdGU6KE5TU3RyaW5nICopY2l0ZQotewotICAgIFtz
ZWxmIF9tb2RFbGVtZW50XS0+c2V0QXR0cmlidXRlKGNpdGVBdHRyLCBjaXRlKTsKLX0KLQotLSAo
TlNTdHJpbmcgKilkYXRlVGltZQotewotICAgIHJldHVybiBbc2VsZiBfbW9kRWxlbWVudF0tPmdl
dEF0dHJpYnV0ZShkYXRldGltZUF0dHIpOwotfQotCi0tICh2b2lkKXNldERhdGVUaW1lOihOU1N0
cmluZyAqKWRhdGVUaW1lCi17Ci0gICAgW3NlbGYgX21vZEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUo
ZGF0ZXRpbWVBdHRyLCBkYXRlVGltZSk7Ci19Ci0KLUBlbmQKLQogQGltcGxlbWVudGF0aW9uIERP
TUhUTUxBbmNob3JFbGVtZW50CiAKIC0gKEhUTUxBbmNob3JFbGVtZW50ICopX2FuY2hvckVsZW1l
bnQKQEAgLTI3MzYsNTUgKzIxNDgsNiBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBA
ZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MUGFyYW1FbGVtZW50Ci0KLS0gKEhUTUxQYXJh
bUVsZW1lbnQgKilfcGFyYW1FbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxQ
YXJhbUVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3Ry
aW5nICopbmFtZQotewotICAgIHJldHVybiBbc2VsZiBfcGFyYW1FbGVtZW50XS0+Z2V0QXR0cmli
dXRlKG5hbWVBdHRyKTsKLX0KLQotLSAodm9pZClzZXROYW1lOihOU1N0cmluZyAqKW5hbWUKLXsK
LSAgICBbc2VsZiBfcGFyYW1FbGVtZW50XS0+c2V0QXR0cmlidXRlKG5hbWVBdHRyLCBuYW1lKTsK
LX0KLQotLSAoTlNTdHJpbmcgKil0eXBlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9wYXJhbUVsZW1l
bnRdLT5nZXRBdHRyaWJ1dGUodHlwZUF0dHIpOwotfQotCi0tICh2b2lkKXNldFR5cGU6KE5TU3Ry
aW5nICopdHlwZQotewotICAgIFtzZWxmIF9wYXJhbUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUodHlw
ZUF0dHIsIHR5cGUpOwotfQotCi0tIChOU1N0cmluZyAqKXZhbHVlCi17Ci0gICAgcmV0dXJuIFtz
ZWxmIF9wYXJhbUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUodmFsdWVBdHRyKTsKLX0KLQotLSAodm9p
ZClzZXRWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZQotewotICAgIFtzZWxmIF9wYXJhbUVsZW1lbnRd
LT5zZXRBdHRyaWJ1dGUodmFsdWVBdHRyLCB2YWx1ZSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopdmFs
dWVUeXBlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9wYXJhbUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUo
dmFsdWV0eXBlQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0VmFsdWVUeXBlOihOU1N0cmluZyAqKXZh
bHVlVHlwZQotewotICAgIFtzZWxmIF9wYXJhbUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUodmFsdWV0
eXBlQXR0ciwgdmFsdWVUeXBlKTsKLX0KLQotQGVuZAotCiBAaW1wbGVtZW50YXRpb24gRE9NSFRN
TEFwcGxldEVsZW1lbnQKIAogLSAoSFRNTEFwcGxldEVsZW1lbnQgKilfYXBwbGV0RWxlbWVudApJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0JKHJldmlzaW9u
IDE1ODI4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0JKHdv
cmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDYgQEAgc3ViIFByb2Nlc3NEb2N1bWVudAogICAkdXNl
RG9jdW1lbnQgPSBzaGlmdDsKICAgCiAgIG15ICRpZmFjZU5hbWUgPSAkdXNlR2VuZXJhdG9yOwot
ICAkaWZhY2VOYW1lID1+IHMvXGIoXHcpL1xVJDEvZzsgIyBNYWtlIGZpcnN0IGxldHRlciBvZiBl
YWNoIHdvcmQgdXBwZXJjYXNlCiAgICRpZmFjZU5hbWUgPSAiQ29kZUdlbmVyYXRvciRpZmFjZU5h
bWUiOwogCiAgICMgRHluYW1pY2FsbHkgbG9hZCBleHRlcm5hbCBjb2RlIGdlbmVyYXRpb24gcGVy
bCBtb2R1bGUuLi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
T2JqQy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvck9iakMucG0JKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvck9iakMucG0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzg1IEBACisjIAorIyBL
RE9NIElETCBwYXJzZXIKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDA1IE5pa29sYXMgWmltbWVybWFu
biA8d2lsZGZveEBrZGUub3JnPgorIyBDb3B5cmlnaHQgKEMpIDIwMDYgQW5kZXJzIENhcmxzc29u
IDxhbmRlcnNjYUBtYWMuY29tPiAKKyMgQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVy
LCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAorIyAKKyMg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIyAKKyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisjIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorIyAKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisjIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyMgQm9z
dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisjCisKK3BhY2thZ2UgQ29kZUdlbmVyYXRvck9iakM7
CisKK3VzZSBGaWxlOjpzdGF0OworCitteSAkbW9kdWxlID0gIiI7CitteSAkb3V0cHV0RGlyID0g
IiI7CitteSAlaW1wbEluY2x1ZGVzID0gKCk7CisKKyMgRGVmYXVsdCB0ZW1wbGF0ZQorbXkgJGhl
YWRlclRlbXBsYXRlID0gPDwgIkVPRiI7CisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3Vp
dGUgMzMwLAorICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKi8KK0VPRgorCisjIERl
ZmF1bHQgY29uc3RydWN0b3IKK3N1YiBuZXcKK3sKKyAgICBteSAkb2JqZWN0ID0gc2hpZnQ7Cisg
ICAgbXkgJHJlZmVyZW5jZSA9IHsgfTsKKyAgICAKKyAgICAkY29kZUdlbmVyYXRvciA9IHNoaWZ0
OworICAgICRvdXRwdXREaXIgPSBzaGlmdDsKKyAgICAKKyAgICBibGVzcygkcmVmZXJlbmNlLCAk
b2JqZWN0KTsKKyAgICByZXR1cm4gJHJlZmVyZW5jZTsKK30KKworc3ViIGZpbmlzaAoreworICAg
IG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICAKKyAgICAjIENvbW1pdCBjaGFuZ2VzIQorICAgICRv
YmplY3QtPldyaXRlRGF0YSgpOworfQorCisjIFBhcmFtczogJ2RvbUNsYXNzJyBzdHJ1Y3QKK3N1
YiBHZW5lcmF0ZUludGVyZmFjZQoreworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBteSAk
ZGF0YU5vZGUgPSBzaGlmdDsKKworICAgICMgRklYTUU6IENoZWNrIGRhdGVzIHRvIHNlZSBpZiB3
ZSBuZWVkIHRvIHJlLWdlbmVyYXRlIGFueXRoaW5nCisKKyAgICAjIFN0YXJ0IGFjdHVhbCBnZW5l
cmF0aW9uLi4KKyAgICAkb2JqZWN0LT5HZW5lcmF0ZUhlYWRlcigkZGF0YU5vZGUpOworICAgICRv
YmplY3QtPkdlbmVyYXRlSW1wbGVtZW50YXRpb24oJGRhdGFOb2RlKTsKKworICAgIG15ICRuYW1l
ID0gJGRhdGFOb2RlLT5uYW1lOworCisgICAgIyBPcGVuIGZpbGVzIGZvciB3cml0aW5nLi4uCisg
ICAgbXkgJGhlYWRlckZpbGVOYW1lID0gIiRvdXRwdXREaXIvRE9NJG5hbWUuaCI7CisgICAgbXkg
JGltcGxGaWxlTmFtZSA9ICIkb3V0cHV0RGlyL0RPTSRuYW1lLm1tIjsKKworICAgIG9wZW4oJElN
UEwsICI+JGltcGxGaWxlTmFtZSIpIG9yIGRpZSAiQ291bGRuJ3Qgb3BlbiBmaWxlICRpbXBsRmls
ZU5hbWUiOworICAgIG9wZW4oJEhFQURFUiwgIj4kaGVhZGVyRmlsZU5hbWUiKSBvciBkaWUgIkNv
dWxkbid0IG9wZW4gZmlsZSAkaGVhZGVyRmlsZU5hbWUiOworfQorCisjIFBhcmFtczogJ2lkbERv
Y3VtZW50JyBzdHJ1Y3QKK3N1YiBHZW5lcmF0ZU1vZHVsZQoreworICAgIG15ICRvYmplY3QgPSBz
aGlmdDsKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsgIAorICAgIAorICAgICRtb2R1bGUgPSAk
ZGF0YU5vZGUtPm1vZHVsZTsgICAgCit9CisKK3N1YiBHZXRQYXJlbnRDbGFzc05hbWUKK3sKKyAg
ICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKworICAgICMgaWYgKEB7JGRhdGFOb2RlLT5wYXJlbnRz
fSBlcSAwKQorICAgICMgICAgIHJldHVybiAiRE9NT2JqZWN0IjsKKworICAgIHJldHVybiAkY29k
ZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoJGRhdGFOb2RlLT5wYXJlbnRzKDApKTsKK30KKworc3Vi
IEdldE5hdGl2ZVR5cGUKK3sKKyAgICBteSAkdHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1v
ZHVsZShzaGlmdCk7CisgICAgCisgICAgaWYgKCR0eXBlIGVxICJib29sZWFuIikgeworICAgICAg
ICByZXR1cm4gIkJPT0wiOworICAgIH0gZWxzaWYgKCR0eXBlIGVxICJ1bnNpZ25lZCBsb25nIikg
eworICAgICAgICByZXR1cm4gInVuc2lnbmVkIjsKKyAgICB9IGVsc2lmICgkdHlwZSBlcSAibG9u
ZyIpIHsKKyAgICAgICAgcmV0dXJuICJpbnQiOworICAgIH0gZWxzaWYgKCR0eXBlIGVxICJET01T
dHJpbmciKSB7CisgICAgICAgIHJldHVybiAiTlNTdHJpbmcgKiI7CisgICAgfSBlbHNpZiAoJHR5
cGUgZXEgIk5vZGVGaWx0ZXIiKSB7CisgICAgICAgIHJldHVybiAiUGFzc1JlZlB0cjwke3R5cGV9
PiI7CisgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkNvbXBhcmVIb3ciKSB7CisgICAgICAgIHJldHVy
biAiUmFuZ2U6OkNvbXBhcmVIb3ciOworICAgIH0gZWxzaWYgKCR0eXBlIGVxICJFdmVudFRhcmdl
dCIpIHsKKyAgICAgICAgcmV0dXJuICJFdmVudFRhcmdldE5vZGUqIjsKKyAgICB9IGVsc2lmICgk
dHlwZSBlcSAiU1ZHUmVjdCIpIHsKKyAgICAgICAgcmV0dXJuICJGbG9hdFJlY3QiOworICAgIH0g
ZWxzaWYgKCR0eXBlIGVxICJTVkdQb2ludCIpIHsKKyAgICAgICAgcmV0dXJuICJGbG9hdFBvaW50
IjsKKyAgICB9IGVsc2lmICgkdHlwZSBlcSAidW5zaWduZWQgc2hvcnQiIAorICAgICAgICAgICAg
IG9yICR0eXBlIGVxICJmbG9hdCIKKyAgICAgICAgICAgICBvciAkdHlwZSBlcSAiQXRvbWljU3Ry
aW5nIikgeworICAgICAgICByZXR1cm4gJHR5cGU7CisgICAgfQorICAgIAorICAgICMgRGVmYXVs
dCwgYXNzdW1lIG5hdGl2ZSB0eXBlIGlzIGEgcG9pbnRlciB3aXRoIHNhbWUgdHlwZSBuYW1lIGFz
IGlkbCB0eXBlCisgICAgcmV0dXJuICIke3R5cGV9KiI7Cit9CisKKworc3ViIEFkZEluY2x1ZGVz
Rm9yVHlwZQoreworICAgIG15ICR0eXBlID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKHNo
aWZ0KTsKKyAgICAKKyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzUHJpbWl0aXZlVHlwZSgkdHlw
ZSkKKyAgICAgICAgICAgIG9yICR0eXBlIGVxICJET01TdHJpbmciCisgICAgICAgICAgICBvciAk
dHlwZSBlcSAiRE9NT2JqZWN0IgorICAgICAgICAgICAgb3IgJHR5cGUgZXEgIlJHQkNvbG9yIgor
ICAgICAgICAgICAgb3IgJHR5cGUgZXEgIlJlY3QiKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICAjIGRlZmF1bHQsIGluY2x1ZGUgdGhlIHNhbWUgbmFtZWQgZmlsZQorICAgICRpbXBs
SW5jbHVkZXN7IiR7dHlwZX0uaCJ9ID0gMTsKKworICAgICMgYWRkaXRpb25hbCBpbmNsdWRlcyAo
dGhpbmdzIG5lZWRlZCB0byBjb21waWxlIHRoZSBiaW5kaW5ncyBidXQgbm90IHRoZSBoZWFkZXIp
CisKKyAgICBpZiAoJHR5cGUgZXEgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCIpIHsKKyAgICAg
ICAgJGltcGxJbmNsdWRlc3siQ2FudmFzR3JhZGllbnQuaCJ9ID0gMTsKKyAgICAgICAgJGltcGxJ
bmNsdWRlc3siQ2FudmFzUGF0dGVybi5oIn0gPSAxOworICAgICAgICAkaW1wbEluY2x1ZGVzeyJD
YW52YXNTdHlsZS5oIn0gPSAxOworICAgIH0KKworICAgIGlmICgkdHlwZSBlcSAiQ2FudmFzR3Jh
ZGllbnQiIG9yICR0eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7CisgICAgICAgICRpbXBsSW5j
bHVkZXN7IlBsYXRmb3JtU3RyaW5nLmgifSA9IDE7CisgICAgfQorfQorCitzdWIgR2VuZXJhdGVI
ZWFkZXIKK3sKKyAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJGRhdGFOb2RlID0gc2hp
ZnQ7CisKKyAgICAjIE1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IGhhdmUgbW9yZSB0aGFuIG9uZSBw
YXJlbnQuCisgICAgaWYgKEB7JGRhdGFOb2RlLT5wYXJlbnRzfSA+IDEpIHsKKyAgICAgICAgZGll
ICJBIGNsYXNzIGNhbid0IGhhdmUgbW9yZSB0aGFuIG9uZSBwYXJlbnQuIjsKKyAgICB9CisKKyAg
ICBteSAkaW50ZXJmYWNlTmFtZSA9ICRkYXRhTm9kZS0+bmFtZTsKKyAgICBteSAkY2xhc3NOYW1l
ID0gIkRPTSRpbnRlcmZhY2VOYW1lIjsKKyAgICBteSAkcGFyZW50Q2xhc3NOYW1lID0gIkRPTSIg
LiBHZXRQYXJlbnRDbGFzc05hbWUoJGRhdGFOb2RlKTsKKyAgICBteSAkY29uZGl0aW9uYWwgPSAk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9OworCisKKyAgICAj
IC0gQWRkIGRlZmF1bHQgaGVhZGVyIHRlbXBsYXRlCisgICAgQGhlYWRlckNvbnRlbnQgPSBzcGxp
dCgiXHIiLCAkaGVhZGVyVGVtcGxhdGUpOworICAgIAorICAgICMgLSBBZGQgcHJvdGVjdGlvbiBh
Z2FpbnN0IHVuc3VwcG9ydGVkIG1vZHVsZXMKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4j
aWYgJHtjb25kaXRpb25hbH1fU1VQUE9SVFxuIikgaWYgJGNvbmRpdGlvbmFsOworCisKKyAgICAj
IC0gSU5DTFVERVMgLQorCisgICAgIyBGSVhNRTogdGVtcG9yYXJ5IHRvIG1ha2Ugc3VyZSB0aGlu
Z3Mgd29yayBhdCBmaXJzdC4KKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4vLyBpbmNsdWRl
IHRoZXNlIHR3byBmaWxlcyBmb3IgdGVtcG9yYXJ5IGxlZ2FjeSBoZWxwLlxuIik7CisgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiNpbXBvcnQgXCJET01Db3JlLmhcIlxuIik7CisgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiNpbXBvcnQgXCJET01IVE1MLmhcIlxuXG4iKTsKKworICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIvLyNpbXBvcnQgXCIkcGFyZW50Q2xhc3NOYW1lLmhcIiAvLyBwYXJl
bnQgY2xhc3NcblxuIik7CisKKworICAgICMgLSBCZWdpbiBAaW50ZXJmYWNlIAorICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICJcQGludGVyZmFjZSAkY2xhc3NOYW1lIDogJHBhcmVudENsYXNzTmFt
ZVxuIik7CisKKyAgICBteSAkbnVtQXR0cmlidXRlcyA9IEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVz
fTsKKyAgICBteSAkbnVtRnVuY3Rpb25zID0gQHskZGF0YU5vZGUtPmZ1bmN0aW9uc307CisgICAg
bXkgJG51bUNvbnN0YW50cyA9IEB7JGRhdGFOb2RlLT5jb25zdGFudHN9OworCisgICAgIyAtIEFk
ZCBhdHRyaWJ1dGUgZ2V0dGVycy9zZXR0ZXJzLgorICAgIGlmICgkbnVtQXR0cmlidXRlcyA+IDAp
IHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuLy8gQXR0cmlidXRlc1xuIik7Cisg
ICAgICAgIAorICAgICAgICBmb3JlYWNoIChAeyRkYXRhTm9kZS0+YXR0cmlidXRlc30pIHsKKyAg
ICAgICAgICAgIG15ICRhdHRyaWJ1dGUgPSAkXzsKKworICAgICAgICAgICAgbXkgJGF0dHJpYnV0
ZU5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgICAgICBteSAkYXR0
cmlidXRlVHlwZSA9IEdldE5hdGl2ZVR5cGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsK
KyAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVJc1JlYWRvbmx5ID0gKCRhdHRyaWJ1dGUtPnR5cGUg
PX4gL15yZWFkb25seS8pOworICAgICAgICAgICAgCisgICAgICAgICAgICAjIC0gR0VUVEVSCisg
ICAgICAgICAgICBteSAkZ2V0dGVyID0gIi0gKCIgLiAkYXR0cmlidXRlVHlwZSAuICIpIiAuICRh
dHRyaWJ1dGVOYW1lIC4gIjtcbiI7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAk
Z2V0dGVyKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgIyAtIFNFVFRFUgorICAgICAgICAg
ICAgaWYgKCEkYXR0cmlidXRlSXNSZWFkb25seSkgeworICAgICAgICAgICAgICAgIG15ICRzZXR0
ZXIgPSAiLSAodm9pZClzZXQiIC4gdWNmaXJzdCgkYXR0cmlidXRlTmFtZSkgLiAiOigiIC4gJGF0
dHJpYnV0ZVR5cGUgLiAiKSIgLiAkYXR0cmlidXRlTmFtZSAuICI7XG4iOworICAgICAgICAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICRzZXR0ZXIpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorICAgIAorICAgICMgLSBBZGQgRnVuY3Rpb25zLgorICAgIGlmICgkbnVtRnVu
Y3Rpb25zID4gMCkgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4vLyBGdW5jdGlv
bnNcbiIpOworICAgICAgICAKKyAgICAgICAgZm9yZWFjaCAoQHskZGF0YU5vZGUtPmZ1bmN0aW9u
c30pIHsKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbiA9ICRfOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7Cisg
ICAgICAgICAgICBteSAkcmV0dXJuVHlwZSA9IEdldE5hdGl2ZVR5cGUoJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPnR5cGUpOworICAgICAgICAgICAgbXkgJG51bWJlck9mUGFyYW1ldGVycyA9IEB7JGZ1
bmN0aW9uLT5wYXJhbWV0ZXJzfTsKKworICAgICAgICAgICAgbXkgJG91dHB1dCA9ICItICgkcmV0
dXJuVHlwZSkkZnVuY3Rpb25OYW1lIjsKKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtIChA
eyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKKyAgICAgICAgICAgICAgICBteSAkcGFyYW1OYW1l
ID0gJHBhcmFtLT5uYW1lOworICAgICAgICAgICAgICAgIG15ICRwYXJhbVR5cGUgPSBHZXROYXRp
dmVUeXBlKCRwYXJhbS0+dHlwZSk7CisKKyAgICAgICAgICAgICAgICAkb3V0cHV0IC49ICI6KCRw
YXJhbVR5cGUpJHBhcmFtTmFtZSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkb3V0cHV0
IC49ICI7XG4iOworCisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAkb3V0cHV0KTsK
KyAgICAgICAgfQorICAgIH0KKworICAgICMgLSBFbmQgQGludGVyZmFjZSAKKyAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiXG5cQGVuZFxuIik7CisKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
XG4jZW5kaWYgLy8gJHtjb25kaXRpb25hbH1fU1VQUE9SVFxuIikgaWYgJGNvbmRpdGlvbmFsOwor
Cit9CisKK3N1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCit7CisgICAgbXkgJG9iamVjdCA9IHNo
aWZ0OworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworCisgICAgbXkgJGludGVyZmFjZU5hbWUg
PSAkZGF0YU5vZGUtPm5hbWU7CisgICAgbXkgJGNsYXNzTmFtZSA9ICJET00kaW50ZXJmYWNlTmFt
ZSI7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSAkaW50ZXJmYWNlTmFtZTsKKworICAgIG15ICRw
YXJlbnRDbGFzc05hbWUgPSBHZXRQYXJlbnRDbGFzc05hbWUoJGRhdGFOb2RlKTsKKyAgICBteSAk
Y29uZGl0aW9uYWwgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25h
bCJ9OworICAKKyAgICAKKyAgICAjIC0gQWRkIGRlZmF1bHQgaGVhZGVyIHRlbXBsYXRlLgorICAg
IEBpbXBsQ29udGVudEhlYWRlciA9IHNwbGl0KCJcciIsICRoZWFkZXJUZW1wbGF0ZSk7CisKKyAg
ICAjIC0gQWRkIHByb3RlY3Rpb24gYWdhaW5zdCB1bnN1cHBvcnRlZCBtb2R1bGVzLgorICAgIHB1
c2goQGltcGxDb250ZW50SGVhZGVyLCAiI2lmZGVmICR7Y29uZGl0aW9uYWx9X1NVUFBPUlRcblxu
IikgaWYgJGNvbmRpdGlvbmFsOworCisgICAgIyAtIElOQ0xVREVTIC0KKyAgICBwdXNoKEBpbXBs
Q29udGVudEhlYWRlciwgIiNpbXBvcnQgXCJjb25maWcuaFwiXG4iKTsKKyAgICBwdXNoKEBpbXBs
Q29udGVudEhlYWRlciwgIiNpbXBvcnQgXCIkY2xhc3NOYW1lLmhcIlxuXG4iKTsKKworICAgICMg
TkVFREVEIGZvciBET01fQ0FTVAorICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAiI2ltcG9y
dCBcIkRPTUludGVybmFsLmhcIiAvLyBuZWVkZWQgZm9yIERPTV9jYXN0PD5cbiIpOworCisgICAg
IyBpbmNsdWRlIEltcGxlbWVudGF0aW9uIGNsYXNzCisgICAgcHVzaChAaW1wbENvbnRlbnRIZWFk
ZXIsICIjaW1wb3J0IFwiJGludGVyZmFjZU5hbWUuaFwiIC8vIGltcGxlbWVudGF0aW9uIGNsYXNz
XG5cbiIpOworCisgICAgQGltcGxDb250ZW50ID0gKCk7CisgICAgCisgICAgIyBBZGQgbmVlZGVk
IG5hbWVzcGFjZXMKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgInVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlO1xuXG4iKTsKKyAgICAKKyAgICAjIFNUQVJUIGltcGxlbWVudGF0aW9uCisgICAgcHVzaChA
aW1wbENvbnRlbnQsICJcQGltcGxlbWVudGF0aW9uICRjbGFzc05hbWVcblxuIik7CisgICAgCisg
ICAgIyBBREQgSU5URVJOQUwgQ0FTVElORyBNRVRIT0QKKyAgICBwdXNoKEBpbXBsQ29udGVudCwg
Ii0gKCRpbnRlcmZhY2VOYW1lICopXyRpbnRlcmZhY2VOYW1lXG4iKTsKKyAgICBwdXNoKEBpbXBs
Q29udGVudCwgIntcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBzdGF0
aWNfY2FzdDwkaW50ZXJmYWNlTmFtZSo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTtcbiIp
OworICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICAKKyAgICAKKyAgICAjIC0g
QXR0cmlidXRlcworICAgIG15ICRudW1BdHRyaWJ1dGVzID0gQHskZGF0YU5vZGUtPmF0dHJpYnV0
ZXN9OworICAgIGlmICgkbnVtQXR0cmlidXRlcyA+IDApIHsgICAgICAgIAorICAgICAgICBmb3Jl
YWNoIChAeyRkYXRhTm9kZS0+YXR0cmlidXRlc30pIHsKKyAgICAgICAgICAgIG15ICRhdHRyaWJ1
dGUgPSAkXzsKKworICAgICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+dHlwZSk7CisKKyAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVOYW1lID0gJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZVR5cGUgPSBH
ZXROYXRpdmVUeXBlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAgICAgICBt
eSAkYXR0cmlidXRlSXNSZWFkb25seSA9ICgkYXR0cmlidXRlLT50eXBlID1+IC9ecmVhZG9ubHkv
KTsKKworICAgICAgICAgICAgIyAtIEdFVFRFUgorICAgICAgICAgICAgbXkgJGdldHRlclNpZyA9
ICItICgkYXR0cmlidXRlVHlwZSkkYXR0cmlidXRlTmFtZVxuIjsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAkZ2V0dGVyU2lnKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAie1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gW3Nl
bGYgXyRpbnRlcmZhY2VOYW1lXS0+JGF0dHJpYnV0ZU5hbWUoKTtcbiIpOworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworCisgICAgICAgICAgICAjIC0gU0VUVEVSCisg
ICAgICAgICAgICBpZiAoISRhdHRyaWJ1dGVJc1JlYWRvbmx5KSB7CisgICAgICAgICAgICAgICAg
bXkgJHNldHRlck5hbWUgPSAic2V0IiAuIHVjZmlyc3QoJGF0dHJpYnV0ZU5hbWUpOworICAgICAg
ICAgICAgICAgIG15ICRzZXR0ZXJTaWcgPSAiLSAodm9pZCkkc2V0dGVyTmFtZTooJGF0dHJpYnV0
ZVR5cGUpJGF0dHJpYnV0ZU5hbWVcbiI7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICRzZXR0ZXJTaWcpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgW3NlbGYgXyRpbnRl
cmZhY2VOYW1lXS0+JHNldHRlck5hbWUoJGF0dHJpYnV0ZU5hbWUpO1xuIik7CisgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgIyBFTkQgaW1wbGVtZW50YXRpb24KKyAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIlxAZW5kXG4iKTsKKyAgICAKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2VuZGlm
IC8vICR7Y29uZGl0aW9uYWx9X1NVUFBPUlRcbiIpIGlmICRjb25kaXRpb25hbDsKK30KKworIyBJ
bnRlcm5hbCBoZWxwZXIKK3N1YiBXcml0ZURhdGEKK3sKKyAgICBpZiAoZGVmaW5lZCgkSU1QTCkp
IHsKKyAgICAgICAgIyBXcml0ZSBjb250ZW50IHRvIGZpbGUuCisgICAgICAgIHByaW50ICRJTVBM
IEBpbXBsQ29udGVudEhlYWRlcjsKKyAgICAgICAgCisgICAgICAgIGZvcmVhY2ggbXkgJGltcGxJ
bmNsdWRlIChzb3J0IGtleXMoJWltcGxJbmNsdWRlcykpIHsKKyAgICAgICAgICAgIHByaW50ICRJ
TVBMICIjaW1wb3J0IFwiJGltcGxJbmNsdWRlXCJcbiI7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIHByaW50ICRJTVBMIEBpbXBsQ29udGVudDsKKyAgICAgICAgY2xvc2UoJElNUEwpOwor
ICAgICAgICB1bmRlZigkSU1QTCk7CisgICAgICAgIAorICAgICAgICBAaW1wbEhlYWRlckNvbnRl
bnQgPSAiIjsKKyAgICAgICAgQGltcGxDb250ZW50ID0gIiI7ICAgIAorICAgICAgICAlaW1wbElu
Y2x1ZGVzID0gKCk7CisgICAgfQorICAgICAgICAKKyAgICBpZiAoZGVmaW5lZCgkSEVBREVSKSkg
eworICAgICAgICAjIFdyaXRlIGNvbnRlbnQgdG8gZmlsZS4KKyAgICAgICAgcHJpbnQgJEhFQURF
UiBAaGVhZGVyQ29udGVudDsKKyAgICAgICAgY2xvc2UoJEhFQURFUik7CisgICAgICAgIHVuZGVm
KCRIRUFERVIpOworICAgICAgICAKKyAgICAgICAgQGhlYWRlckNvbnRlbnQgPSAiIjsKKyAgICB9
Cit9CisKKzE7CkluZGV4OiBXZWJLaXQvRE9NL1dlYkRPTU9wZXJhdGlvbnMubQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvRE9NL1dlYkRPTU9wZXJhdGlvbnMubQkocmV2aXNpb24gMTU4MjgpCisrKyBX
ZWJLaXQvRE9NL1dlYkRPTU9wZXJhdGlvbnMubQkod29ya2luZyBjb3B5KQpAQCAtMjgsMTQgKzI4
LDE1IEBACiAKICNpbXBvcnQgPFdlYktpdC9XZWJET01PcGVyYXRpb25zUHJpdmF0ZS5oPgogCisj
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDxXZWJLaXQvRE9N
RXh0ZW5zaW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0L0RPTUhUTUwuaD4KLSNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0Fzc2VydGlvbnMuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZUJyaWRnZS5o
PgorI2ltcG9ydCA8V2ViS2l0L0RPTUhUTUxQYXJhbUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYktp
dC9XZWJBcmNoaXZlci5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkRhdGFTb3VyY2VQcml2YXRlLmg+
CisjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWVCcmlkZ2UuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJG
cmFtZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXROU1N0cmluZ0V4dHJhcy5oPgot
I2ltcG9ydCA8V2ViS2l0L1dlYkFyY2hpdmVyLmg+CiAKIAogQGltcGxlbWVudGF0aW9uIERPTU5v
ZGUgKFdlYkRPTU5vZGVPcGVyYXRpb25zKQpJbmRleDogV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU4MjgpCisrKyBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyMzEsNiArMTIzMSw3IEBACiAJ
CQkJOTNBRjUyQTUwODI1NEQ4NzAwNUQwMTU2IC8qIERPTUV2ZW50cy5oICovLAogCQkJCTkzQUY1
MkEzMDgyNTREODEwMDVEMDE1NiAvKiBET01FeHRlbnNpb25zLmggKi8sCiAJCQkJOTNBRjUyQTEw
ODI1NEQ3RDAwNUQwMTU2IC8qIERPTUhUTUwuaCAqLywKKwkJCQk4NTRGMTIxMjBBOEU0M0I3MDAw
OTQwQjUgLyogRE9NSFRNTFBhcmFtRWxlbWVudC5oICovLAogCQkJCTkzQUY1MjlGMDgyNTREN0Ew
MDVEMDE1NiAvKiBET01Qcml2YXRlLmggKi8sCiAJCQkJOTNBRjUyOUQwODI1NEQ3NjAwNUQwMTU2
IC8qIERPTVJhbmdlLmggKi8sCiAJCQkJOTNBRjUyOUIwODI1NEQ2MjAwNUQwMTU2IC8qIERPTVN0
eWxlc2hlZXRzLmggKi8sCkBAIC0xMzE4LDYgKzEzMTksMjIgQEAKIAkJCXNoZWxsUGF0aCA9IC9i
aW4vc2g7CiAJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQ
VUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIk
V0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTVhQYXRoLmhcIiA+IFwiJFRBUkdFVF9CVUlM
RF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTVhQYXRoLmhcIiI7CiAJCX07CisJ
CTg1NEYxMjEyMEE4RTQzQjcwMDA5NDBCNSAvKiBET01IVE1MUGFyYW1FbGVtZW50LmggKi8gPSB7
CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJ
CQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTUhUTUxQYXJhbUVsZW1lbnQuaCIs
CisJCQkpOworCQkJbmFtZSA9IERPTUhUTUxQYXJhbUVsZW1lbnQuaDsKKwkJCW91dHB1dFBhdGhz
ID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BB
VEgpL0RPTUhUTUxQYXJhbUVsZW1lbnQuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxT
Y3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9M
REVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9I
RUFERVJTX0RJUi9ET01IVE1MUGFyYW1FbGVtZW50LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIv
JFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTUhUTUxQYXJhbUVsZW1lbnQuaFwiIjsKKwkJ
fTsKIAkJOTMzOTMyM0UwODI1QTY0MjAwQUFEQTZCIC8qIG5wcnVudGltZS5oICovID0gewogCQkJ
aXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10070</attachid>
            <date>2006-08-16 12:32:57 -0700</date>
            <delta_ts>2006-08-21 13:23:30 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>auto4.diff</filename>
            <type>text/plain</type>
            <size>265461</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDE1ODI4KQorKysgV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQg
KEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29w
eXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPiAKICMK
ICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjgsNyBAQAogVlBBVEggPSBcCiAg
ICAgJChXZWJDb3JlKSBcCiAgICAgJChXZWJDb3JlKS9iaW5kaW5ncy9qcyBcCisgICAgJChXZWJD
b3JlKS9iaW5kaW5ncy9vYmpjIFwKICAgICAkKFdlYkNvcmUpL2NzcyBcCiAgICAgJChXZWJDb3Jl
KS9kb20gXAogICAgICQoV2ViQ29yZSkvaHRtbCBcCkBAIC00NCw2ICs0NiwyOCBAQCBhbGwgOiBc
CiAgICAgQ2hhcnNldERhdGEuY3BwIFwKICAgICBDb2xvckRhdGEuYyBcCiAgICAgRG9jVHlwZVN0
cmluZ3MuY3BwIFwKKyAgICBET01IVE1MQlJFbGVtZW50LmggXAorICAgIERPTUhUTUxCYXNlRWxl
bWVudC5oIFwKKyAgICBET01IVE1MQmFzZUZvbnRFbGVtZW50LmggXAorICAgIERPTUhUTUxETGlz
dEVsZW1lbnQuaCBcCisgICAgRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQuaCBcCisgICAgRE9NSFRN
TERpdkVsZW1lbnQuaCBcCisgICAgRE9NSFRNTEZvbnRFbGVtZW50LmggXAorICAgIERPTUhUTUxI
UkVsZW1lbnQuaCBcCisgICAgRE9NSFRNTEhlYWRFbGVtZW50LmggXAorICAgIERPTUhUTUxIZWFk
aW5nRWxlbWVudC5oIFwKKyAgICBET01IVE1MSHRtbEVsZW1lbnQuaCBcCisgICAgRE9NSFRNTExJ
RWxlbWVudC5oIFwKKyAgICBET01IVE1MTWVudUVsZW1lbnQuaCBcCisgICAgRE9NSFRNTE1ldGFF
bGVtZW50LmggXAorICAgIERPTUhUTUxNb2RFbGVtZW50LmggXAorICAgIERPTUhUTUxPTGlzdEVs
ZW1lbnQuaCBcCisgICAgRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5oIFwKKyAgICBET01IVE1MUGFy
YWdyYXBoRWxlbWVudC5oIFwKKyAgICBET01IVE1MUGFyYW1FbGVtZW50LmggXAorICAgIERPTUhU
TUxRdW90ZUVsZW1lbnQuaCBcCisgICAgRE9NSFRNTFRpdGxlRWxlbWVudC5oIFwKKyAgICBET01I
VE1MVUxpc3RFbGVtZW50LmggXAogICAgIEhUTUxFbnRpdHlOYW1lcy5jIFwKICAgICBKU0F0dHIu
aCBcCiAgICAgSlNDU1NQcmltaXRpdmVWYWx1ZS5oIFwKQEAgLTI4NCw2ICszMDgsMTkgQEAga3N2
Z2Nzc3ZhbHVlcy5oIDoKIAogZW5kaWYKIAorIyBuZXctc3R5bGUgT2JqZWN0aXZlLUMgYmluZGlu
Z3MKKworT0JKQ19CSU5ESU5HU19TQ1JJUFRTID0gXAorICAgIGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvci5wbSBcCisgICAgYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5w
bSBcCisgICAgYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0gXAorICAgIGJpbmRpbmdzL3Nj
cmlwdHMvSURMU3RydWN0dXJlLnBtIFwKKyAgICBiaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJp
bmRpbmdzLnBsIFwKKyMKKworRE9NJS5oIDogJS5pZGwgJChPQkpDX0JJTkRJTkdTX1NDUklQVFMp
CisJcGVybCAtSSQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkKFdlYkNvcmUpL2JpbmRpbmdz
L3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgLS1kZWZpbmVzICIkKEZFQVRVUkVfREVGSU5F
UykiIC0tZ2VuZXJhdG9yIE9iakMgLS1pbmNsdWRlIGRvbSAtLWluY2x1ZGUgaHRtbCAtLWluY2x1
ZGUgeHBhdGggLS1pbmNsdWRlIGtzdmcyL3N2ZyAtLW91dHB1dGRpciAgLiAkPAorCiAjIG5ldy1z
dHlsZSBKYXZhU2NyaXB0IGJpbmRpbmdzCiAKIEpTX0JJTkRJTkdTX1NDUklQVFMgPSBcCkluZGV4
OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU4
MjgpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMjA4LDcgKzIwOCw3IEBACiAJCTY1NTBCNjlGMDk5REYwMjcwMDkwRDc4MSAv
KiBDaGFyYWN0ZXJEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1NTBCNjk1MDk5REYwMjcwMDkwRDc4MSAvKiBDaGFyYWN0ZXJEYXRhLmNwcCAq
LzsgfTsKIAkJNjU1MEI2QTAwOTlERjAyNzAwOTBENzgxIC8qIENoYXJhY3RlckRhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NTBCNjk2MDk5REYw
MjcwMDkwRDc4MSAvKiBDaGFyYWN0ZXJEYXRhLmggKi87IH07CiAJCTY1NTBCNkExMDk5REYwMjcw
MDkwRDc4MSAvKiBDb21tZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1NTBCNjk3MDk5REYwMjcwMDkwRDc4MSAvKiBDb21tZW50LmNwcCAqLzsg
fTsKLQkJNjU1MEI2QTIwOTlERjAyNzAwOTBENzgxIC8qIENvbW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NTBCNjk4MDk5REYwMjcwMDkwRDc4
MSAvKiBDb21tZW50LmggKi87IH07CisJCTY1NTBCNkEyMDk5REYwMjcwMDkwRDc4MSAvKiBDb21t
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTUw
QjY5ODA5OURGMDI3MDA5MEQ3ODEgLyogQ29tbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1NTBCNkEzMDk5REYwMjcwMDkwRDc4MSAvKiBF
ZGl0aW5nVGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NTUwQjY5OTA5OURGMDI3MDA5MEQ3ODEgLyogRWRpdGluZ1RleHQuY3BwICovOyB9Owog
CQk2NTUwQjZBNDA5OURGMDI3MDA5MEQ3ODEgLyogRWRpdGluZ1RleHQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NTBCNjlBMDk5REYwMjcwMDkwRDc4
MSAvKiBFZGl0aW5nVGV4dC5oICovOyB9OwogCQk2NTUwQjZBNTA5OURGMDI3MDA5MEQ3ODEgLyog
VGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NTUwQjY5QjA5OURGMDI3MDA5MEQ3ODEgLyogVGV4dC5jcHAgKi87IH07CkBAIC0zNDAsNiArMzQw
LDI0IEBACiAJCTg1MDMxQjUxMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVlbEV2ZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTAzMUIzQjBBNDRFRkM3
MDBGOTkyRTAgLyogV2hlZWxFdmVudC5oICovOyB9OwogCQk4NTIxN0UwMjBBNUVDRDQ3MDBEQjhE
MDAgLyogWFNMSW1wb3J0UnVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NTIxN0UwMDBBNUVDRDQ3MDBEQjhEMDAgLyogWFNMSW1wb3J0UnVsZS5j
cHAgKi87IH07CiAJCTg1MjE3RTAzMEE1RUNENDcwMERCOEQwMCAvKiBYU0xJbXBvcnRSdWxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTIxN0UwMTBB
NUVDRDQ3MDBEQjhEMDAgLyogWFNMSW1wb3J0UnVsZS5oICovOyB9OworCQk4NTI2RDVGMTBBOEZE
QjJFMDA5MjM0QjEgLyogRE9NVGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODUyNkQ1RUYwQThGREIyRDAwOTIzNEIxIC8qIERPTVRleHQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTI2RDVGMjBB
OEZEQjJFMDA5MjM0QjEgLyogRE9NVGV4dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg1MjZENUYwMEE4RkRCMkUwMDkyMzRCMSAvKiBET01UZXh0Lm1t
ICovOyB9OworCQk4NTI2RDY1RTBBOEZFNTVBMDA5MjM0QjEgLyogRE9NQ2hhcmFjdGVyRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUyNkQ2NUMw
QThGRTU1QTAwOTIzNEIxIC8qIERPTUNoYXJhY3RlckRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTI2RDY1RjBBOEZFNTVBMDA5MjM0QjEg
LyogRE9NQ2hhcmFjdGVyRGF0YS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg1MjZENjVEMEE4RkU1NUEwMDkyMzRCMSAvKiBET01DaGFyYWN0ZXJEYXRh
Lm1tICovOyB9OworCQk4NTI2RDZFRTBBOEZFREU4MDA5MjM0QjEgLyogRE9NQXR0ci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUyNkQ2RUMwQThGRURF
ODAwOTIzNEIxIC8qIERPTUF0dHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk4NTI2RDZFRjBBOEZFREU4MDA5MjM0QjEgLyogRE9NQXR0ci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MjZENkVEMEE4
RkVERTgwMDkyMzRCMSAvKiBET01BdHRyLm1tICovOyB9OworCQk4NTI2RDc2NDBBOEZGMzkyMDA5
MjM0QjEgLyogRE9NTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NTI2RDc2MjBBOEZGMzkyMDA5MjM0QjEgLyogRE9NTmFtZWROb2Rl
TWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
ODUyNkQ3NjUwQThGRjM5MjAwOTIzNEIxIC8qIERPTU5hbWVkTm9kZU1hcC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MjZENzYzMEE4RkYzOTIwMDky
MzRCMSAvKiBET01OYW1lZE5vZGVNYXAubW0gKi87IH07CisJCTg1MzEyMDBBMEE4Rjk5RTAwMDUx
MjVDOSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MzEyMDA4MEE4Rjk5RTAwMDUxMjVDOSAvKiBET01Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk4NTMxMjAwQjBBOEY5OUUwMDA1MTI1QzkgLyogRE9NUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODUzMTIwMDkwQThGOTlFMDAwNTEyNUM5IC8qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlv
bi5tbSAqLzsgfTsKKwkJODUzOUI1MDgwQTkwM0Q0NTAwMzY2QzJEIC8qIERPTURPTUltcGxlbWVu
dGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NTM5QjUwNjBBOTAzRDQ1MDAzNjZDMkQgLyogRE9NRE9NSW1wbGVtZW50YXRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTM5QjUwOTBBOTAz
RDQ1MDAzNjZDMkQgLyogRE9NRE9NSW1wbGVtZW50YXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTM5QjUwNzBBOTAzRDQ1MDAzNjZDMkQgLyog
RE9NRE9NSW1wbGVtZW50YXRpb24ubW0gKi87IH07CisJCTg1NEYxMkFBMEE4RUJCRkQwMDA5NDBC
NSAvKiBET01Ob3RhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODU0RjEyQTgwQThFQkJGRDAwMDk0MEI1IC8qIERPTU5vdGF0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODU0RjEyQUIwQThF
QkJGRDAwMDk0MEI1IC8qIERPTU5vdGF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODU0RjEyQTkwQThFQkJGRDAwMDk0MEI1IC8qIERPTU5vdGF0
aW9uLm1tICovOyB9OworCQk4NTRGMTJGNjBBOEVDMTAxMDAwOTQwQjUgLyogRE9NRW50aXR5UmVm
ZXJlbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NTRGMTJGNDBBOEVDMTAxMDAwOTQwQjUgLyogRE9NRW50aXR5UmVmZXJlbmNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODU0RjEyRjcwQThFQzEw
MTAwMDk0MEI1IC8qIERPTUVudGl0eVJlZmVyZW5jZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NEYxMkY1MEE4RUMxMDEwMDA5NDBCNSAvKiBET01F
bnRpdHlSZWZlcmVuY2UubW0gKi87IH07CisJCTg1NEYxMzFDMEE4RUMyNDcwMDA5NDBCNSAvKiBE
T01FbnRpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg1NEYxMzFBMEE4RUMyNDcwMDA5NDBCNSAvKiBET01FbnRpdHkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTRGMTMxRDBBOEVDMjQ3MDAwOTQw
QjUgLyogRE9NRW50aXR5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODU0RjEzMUIwQThFQzI0NzAwMDk0MEI1IC8qIERPTUVudGl0eS5tbSAqLzsgfTsK
IAkJODU0RkU3MzAwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU0RkU3MjYwQTIyOTdCRTAwNThE
N0FEIC8qIE5vZGVGaWx0ZXIuY3BwICovOyB9OwogCQk4NTRGRTczMTBBMjI5N0JFMDA1OEQ3QUQg
LyogTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODU0RkU3MjcwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0ZXIuaCAqLzsgfTsKIAkJ
ODU0RkU3MzIwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0ZXJDb25kaXRpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU0RkU3MjgwQTIyOTdC
RTAwNThEN0FEIC8qIE5vZGVGaWx0ZXJDb25kaXRpb24uY3BwICovOyB9OwpAQCAtMzUwLDggKzM2
OCw3MiBAQAogCQk4NTRGRTczNzBBMjI5N0JFMDA1OEQ3QUQgLyogVHJhdmVyc2FsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTRGRTcyRDBBMjI5N0JF
MDA1OEQ3QUQgLyogVHJhdmVyc2FsLmggKi87IH07CiAJCTg1NEZFNzM4MEEyMjk3QkUwMDU4RDdB
RCAvKiBUcmVlV2Fsa2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg1NEZFNzJFMEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmNwcCAqLzsg
fTsKIAkJODU0RkU3MzkwQTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NEZFNzJGMEEyMjk3QkUwMDU4
RDdBRCAvKiBUcmVlV2Fsa2VyLmggKi87IH07CisJCTg1NjcyQTJCMEE4RDRERjQwMEIyNDFFNSAv
KiBET01IVE1MTWV0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg1NjcyQTI5MEE4RDRERjQwMEIyNDFFNSAvKiBET01IVE1MTWV0YUVsZW1l
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4
NTY3MkEyQzBBOEQ0REY0MDBCMjQxRTUgLyogRE9NSFRNTE1ldGFFbGVtZW50Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJBMkEwQThENERGNDAw
QjI0MUU1IC8qIERPTUhUTUxNZXRhRWxlbWVudC5tbSAqLzsgfTsKKwkJODU2NzJBM0QwQThENEUz
QzAwQjI0MUU1IC8qIERPTUhUTUxCYXNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJBM0IwQThENEUzQzAwQjI0MUU1IC8qIERPTUhU
TUxCYXNlRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTg1NjcyQTNFMEE4RDRFM0MwMEIyNDFFNSAvKiBET01IVE1MQmFzZUVsZW1lbnQu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTY3MkEz
QzBBOEQ0RTNDMDBCMjQxRTUgLyogRE9NSFRNTEJhc2VFbGVtZW50Lm1tICovOyB9OworCQk4NTY3
MkE5ODBBOEQ1MTIyMDBCMjQxRTUgLyogRE9NSFRNTFVMaXN0RWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJBOTYwQThENTEyMjAwQjI0
MUU1IC8qIERPTUhUTUxVTGlzdEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk4NTY3MkE5OTBBOEQ1MTIyMDBCMjQxRTUgLyogRE9NSFRN
TFVMaXN0RWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg1NjcyQTk3MEE4RDUxMjIwMEIyNDFFNSAvKiBET01IVE1MVUxpc3RFbGVtZW50Lm1t
ICovOyB9OworCQk4NTY3MkFBMDBBOEQ1MUQ0MDBCMjQxRTUgLyogRE9NSFRNTFF1b3RlRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJB
OUUwQThENTFENDAwQjI0MUU1IC8qIERPTUhUTUxRdW90ZUVsZW1lbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTY3MkFBMTBBOEQ1MUQ0MDBC
MjQxRTUgLyogRE9NSFRNTFF1b3RlRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NjcyQTlGMEE4RDUxRDQwMEIyNDFFNSAvKiBET01IVE1M
UXVvdGVFbGVtZW50Lm1tICovOyB9OworCQk4NTY3MkFEOTBBOEQ1MkYxMDBCMjQxRTUgLyogRE9N
SFRNTFBhcmFtRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODU2NzJBRDcwQThENTJGMTAwQjI0MUU1IC8qIERPTUhUTUxQYXJhbUVsZW1lbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTY3
MkFEQTBBOEQ1MkYxMDBCMjQxRTUgLyogRE9NSFRNTFBhcmFtRWxlbWVudC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NjcyQUQ4MEE4RDUyRjEwMEIy
NDFFNSAvKiBET01IVE1MUGFyYW1FbGVtZW50Lm1tICovOyB9OworCQk4NTY3MkFGNDBBOEQ1Mzgx
MDBCMjQxRTUgLyogRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NjcyQUYyMEE4RDUzODEwMEIyNDFFNSAvKiBE
T01IVE1MUGFyYWdyYXBoRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTg1NjcyQUY1MEE4RDUzODEwMEIyNDFFNSAvKiBET01IVE1MUGFy
YWdyYXBoRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg1NjcyQUYzMEE4RDUzODEwMEIyNDFFNSAvKiBET01IVE1MUGFyYWdyYXBoRWxlbWVu
dC5tbSAqLzsgfTsKKwkJODU2NzJCMEEwQThENTNFMDAwQjI0MUU1IC8qIERPTUhUTUxPcHRHcm91
cEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg1NjcyQjA4MEE4RDUzRTAwMEIyNDFFNSAvKiBET01IVE1MT3B0R3JvdXBFbGVtZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODU2NzJCMEIw
QThENTNFMDAwQjI0MUU1IC8qIERPTUhUTUxPcHRHcm91cEVsZW1lbnQubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTY3MkIwOTBBOEQ1M0UwMDBCMjQx
RTUgLyogRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5tbSAqLzsgfTsKKwkJODU2NzJCMjUwQThENTRC
MzAwQjI0MUU1IC8qIERPTUhUTUxPTGlzdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NjcyQjIzMEE4RDU0QjMwMEIyNDFFNSAvKiBET01I
VE1MT0xpc3RFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJODU2NzJCMjYwQThENTRCMzAwQjI0MUU1IC8qIERPTUhUTUxPTGlzdEVsZW1l
bnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTY3
MkIyNDBBOEQ1NEIzMDBCMjQxRTUgLyogRE9NSFRNTE9MaXN0RWxlbWVudC5tbSAqLzsgfTsKKwkJ
ODU2NzJCMkIwQThENTUwMzAwQjI0MUU1IC8qIERPTUhUTUxNZW51RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJCMjkwQThENTUwMzAw
QjI0MUU1IC8qIERPTUhUTUxNZW51RWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1NjcyQjJDMEE4RDU1MDMwMEIyNDFFNSAvKiBET01I
VE1MTWVudUVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NTY3MkIyQTBBOEQ1NTAzMDBCMjQxRTUgLyogRE9NSFRNTE1lbnVFbGVtZW50Lm1t
ICovOyB9OworCQk4NTY3MkI3NzBBOEQ1NkY4MDBCMjQxRTUgLyogRE9NSFRNTExJRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJCNzUw
QThENTZGODAwQjI0MUU1IC8qIERPTUhUTUxMSUVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTY3MkI3ODBBOEQ1NkY4MDBCMjQxRTUg
LyogRE9NSFRNTExJRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg1NjcyQjc2MEE4RDU2RjgwMEIyNDFFNSAvKiBET01IVE1MTElFbGVtZW50
Lm1tICovOyB9OworCQk4NTY3MkI4NDBBOEQ1NzkxMDBCMjQxRTUgLyogRE9NSFRNTEhSRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJC
ODIwQThENTc5MTAwQjI0MUU1IC8qIERPTUhUTUxIUkVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTY3MkI4NTBBOEQ1NzkxMDBCMjQx
RTUgLyogRE9NSFRNTEhSRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg1NjcyQjgzMEE4RDU3OTEwMEIyNDFFNSAvKiBET01IVE1MSFJFbGVt
ZW50Lm1tICovOyB9OworCQk4NTY3MkI5MjBBOEQ1N0Y1MDBCMjQxRTUgLyogRE9NSFRNTEhlYWRp
bmdFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NTY3MkI5MDBBOEQ1N0Y1MDBCMjQxRTUgLyogRE9NSFRNTEhlYWRpbmdFbGVtZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODU2NzJCOTMw
QThENTdGNTAwQjI0MUU1IC8qIERPTUhUTUxIZWFkaW5nRWxlbWVudC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NjcyQjkxMEE4RDU3RjUwMEIyNDFF
NSAvKiBET01IVE1MSGVhZGluZ0VsZW1lbnQubW0gKi87IH07CisJCTg1NjcyQjlFMEE4RDU4N0Yw
MEIyNDFFNSAvKiBET01IVE1MRm9udEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NjcyQjlDMEE4RDU4N0YwMEIyNDFFNSAvKiBET01IVE1M
Rm9udEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk4NTY3MkI5RjBBOEQ1ODdGMDBCMjQxRTUgLyogRE9NSFRNTEZvbnRFbGVtZW50Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJCOUQw
QThENTg3RjAwQjI0MUU1IC8qIERPTUhUTUxGb250RWxlbWVudC5tbSAqLzsgfTsKKwkJODU2NzJC
QjEwQThENTk1RDAwQjI0MUU1IC8qIERPTUhUTUxETGlzdEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NjcyQkFGMEE4RDU5NUQwMEIyNDFF
NSAvKiBET01IVE1MRExpc3RFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJODU2NzJCQjIwQThENTk1RDAwQjI0MUU1IC8qIERPTUhUTUxE
TGlzdEVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NTY3MkJCMDBBOEQ1OTVEMDBCMjQxRTUgLyogRE9NSFRNTERMaXN0RWxlbWVudC5tbSAq
LzsgfTsKKwkJODU2Qzg5NkMwQTkwRTE4NDAwNUM2ODdCIC8qIERPTURvY3VtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTZDODk2QTBBOTBFMTg0
MDA1QzY4N0IgLyogRE9NRG9jdW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk4NTZDODk2RDBBOTBFMTg0MDA1QzY4N0IgLyogRE9NRG9jdW1l
bnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTZD
ODk2QjBBOTBFMTg0MDA1QzY4N0IgLyogRE9NRG9jdW1lbnQubW0gKi87IH07CisJCTg1NkM4OUZD
MEE5MEYwNjgwMDVDNjg3QiAvKiBET01Ob2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NTZDODlGQTBBOTBGMDY4MDA1QzY4N0IgLyogRE9NTm9kZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1NkM4
OUZEMEE5MEYwNjgwMDVDNjg3QiAvKiBET01Ob2RlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2Qzg5RkIwQTkwRjA2ODAwNUM2ODdCIC8qIERPTU5v
ZGUubW0gKi87IH07CisJCTg1NkM4QUU0MEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NkM4QUUyMEE5
MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk4NTZDOEFFNTBBOTEyNjQ5MDA1QzY4N0IgLyogRE9NT2Jq
ZWN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2
QzhBRTMwQTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5tbSAqLzsgfTsKKwkJODU2RTA1REYw
QTkzOTUwNjAwQTI0NzM5IC8qIERPTUhUTUxFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTZFMDVERDBBOTM5NTA2MDBBMjQ3MzkgLyogRE9N
SFRNTEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk4NTZFMDVFMDBBOTM5NTA2MDBBMjQ3MzkgLyogRE9NSFRNTEVsZW1lbnQubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTZFMDVERTBBOTM5
NTA2MDBBMjQ3MzkgLyogRE9NSFRNTEVsZW1lbnQubW0gKi87IH07CisJCTg1OUI3RkMyMEE4RDI4
RjIwMEE1RjFFQSAvKiBET01IVE1MSGVhZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1OUI3RjgwMEE4Q0ZGMzcwMEE1RjFFQSAvKiBET01I
VE1MSGVhZEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk4NTlCN0ZDMzBBOEQyOEYyMDBBNUYxRUEgLyogRE9NSFRNTEhlYWRFbGVtZW50
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU5QjdG
ODEwQThDRkYzNzAwQTVGMUVBIC8qIERPTUhUTUxIZWFkRWxlbWVudC5tbSAqLzsgfTsKKwkJODU5
QjdGQzQwQThEMjhGMjAwQTVGMUVBIC8qIERPTUhUTUxIdG1sRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU5QjdGODIwQThDRkYzNzAwQTVG
MUVBIC8qIERPTUhUTUxIdG1sRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTg1OUI3RkM1MEE4RDI4RjIwMEE1RjFFQSAvKiBET01IVE1M
SHRtbEVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NTlCN0Y4MzBBOENGRjM3MDBBNUYxRUEgLyogRE9NSFRNTEh0bWxFbGVtZW50Lm1tICov
OyB9OworCQk4NTlCN0ZDQTBBOEQyOEY4MDBBNUYxRUEgLyogRE9NSFRNTE1vZEVsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RDMzMTgzMEE4
Q0VEQ0MwMDU5MjVBMCAvKiBET01IVE1MTW9kRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1OUI3RkNCMEE4RDI4RjgwMEE1RjFFQSAv
KiBET01IVE1MTW9kRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg1RDMzMTg0MEE4Q0VEQ0MwMDU5MjVBMCAvKiBET01IVE1MTW9kRWxlbWVu
dC5tbSAqLzsgfTsKKwkJODU5QjgwMzcwQThEMzFBNjAwQTVGMUVBIC8qIERPTUhUTUxUaXRsZUVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1
OUI4MDM1MEE4RDMxQTYwMEE1RjFFQSAvKiBET01IVE1MVGl0bGVFbGVtZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODU5QjgwMzgwQThEMzFB
NjAwQTVGMUVBIC8qIERPTUhUTUxUaXRsZUVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTlCODAzNjBBOEQzMUE2MDBBNUYxRUEgLyogRE9N
SFRNTFRpdGxlRWxlbWVudC5tbSAqLzsgfTsKKwkJODVBNUM1NTgwQTkwMzBCQjAwRjkxRjJDIC8q
IERPTUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg1QTVDNTU2MEE5MDMwQkIwMEY5MUYyQyAvKiBET01FbGVtZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVBNUM1NTkwQTkwMzBCQjAw
RjkxRjJDIC8qIERPTUVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NUE1QzU1NzBBOTAzMEJCMDBGOTFGMkMgLyogRE9NRWxlbWVudC5tbSAq
LzsgfTsKKwkJODVBNUM4QzIwQThENUQ4QjAwQTNDRjkwIC8qIERPTUhUTUxCYXNlRm9udEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QTVD
OEMwMEE4RDVEOEIwMEEzQ0Y5MCAvKiBET01IVE1MQmFzZUZvbnRFbGVtZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVBNUM4QzMwQThENUQ4
QjAwQTNDRjkwIC8qIERPTUhUTUxCYXNlRm9udEVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUE1QzhDMTBBOEQ1RDhCMDBBM0NGOTAgLyog
RE9NSFRNTEJhc2VGb250RWxlbWVudC5tbSAqLzsgfTsKKwkJODVBNUM4Q0EwQThENURCOTAwQTND
RjkwIC8qIERPTUhUTUxEaXJlY3RvcnlFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUE1QzhDODBBOEQ1REI4MDBBM0NGOTAgLyogRE9NSFRN
TERpcmVjdG9yeUVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk4NUE1QzhDQjBBOEQ1REI5MDBBM0NGOTAgLyogRE9NSFRNTERpcmVjdG9y
eUVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NUE1QzhDOTBBOEQ1REI5MDBBM0NGOTAgLyogRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQubW0g
Ki87IH07CisJCTg1QTVDOEQwMEE4RDVERTUwMEEzQ0Y5MCAvKiBET01IVE1MQlJFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUE1QzhDRTBB
OEQ1REU1MDBBM0NGOTAgLyogRE9NSFRNTEJSRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1QTVDOEQxMEE4RDVERTUwMEEzQ0Y5MCAv
KiBET01IVE1MQlJFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODVBNUM4Q0YwQThENURFNTAwQTNDRjkwIC8qIERPTUhUTUxCUkVsZW1lbnQu
bW0gKi87IH07CisJCTg1QTg1QUY5MEE5MDI5MDQwMEE1Q0YzQSAvKiBET01Ob2RlTGlzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVBODVBRjcwQTkw
MjkwNDAwQTVDRjNBIC8qIERPTU5vZGVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVBODVBRkEwQTkwMjkwNTAwQTVDRjNBIC8qIERPTU5v
ZGVMaXN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODVBODVBRjgwQTkwMjkwNDAwQTVDRjNBIC8qIERPTU5vZGVMaXN0Lm1tICovOyB9OworCQk4NUFG
MEYxQTBBOEVDNUNGMDA0N0YxOEMgLyogRE9NQ0RBVEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUFGMEYxNjBBOEVDNUNGMDA0N0YxOEMg
LyogRE9NQ0RBVEFTZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJODVBRjBGMUIwQThFQzVDRjAwNDdGMThDIC8qIERPTUNEQVRBU2VjdGlv
bi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QUYw
RjE3MEE4RUM1Q0YwMDQ3RjE4QyAvKiBET01DREFUQVNlY3Rpb24ubW0gKi87IH07CisJCTg1QUYw
RjFDMEE4RUM1Q0YwMDQ3RjE4QyAvKiBET01Db21tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUFGMEYxODBBOEVDNUNGMDA0N0YxOEMgLyogRE9N
Q29tbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTg1QUYwRjFEMEE4RUM1Q0YwMDQ3RjE4QyAvKiBET01Db21tZW50Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVBRjBGMTkwQThFQzVDRjAwNDdG
MThDIC8qIERPTUNvbW1lbnQubW0gKi87IH07CisJCTg1QzkwNTg3MEE4RkNCNDUwMEMzN0Q5MSAv
KiBET01Eb2N1bWVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg1QzkwNTg1MEE4RkNCNDUwMEMzN0Q5MSAvKiBET01Eb2N1bWVudFR5cGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NUM5MDU4
ODBBOEZDQjQ1MDBDMzdEOTEgLyogRE9NRG9jdW1lbnRUeXBlLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVDOTA1ODYwQThGQ0I0NTAwQzM3RDkxIC8q
IERPTURvY3VtZW50VHlwZS5tbSAqLzsgfTsKKwkJODVDOTA2MTcwQThGRDA2OTAwQzM3RDkxIC8q
IERPTURvY3VtZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg1QzkwNjE1MEE4RkQwNjkwMEMzN0Q5MSAvKiBET01Eb2N1bWVudEZyYWdt
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
ODVDOTA2MTgwQThGRDA2OTAwQzM3RDkxIC8qIERPTURvY3VtZW50RnJhZ21lbnQubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUM5MDYxNjBBOEZEMDY5
MDBDMzdEOTEgLyogRE9NRG9jdW1lbnRGcmFnbWVudC5tbSAqLzsgfTsKIAkJODVFQzlBRkEwQTcx
QTJDNjAwRUVFQUVEIC8qIEZvbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NUVDOUFGODBBNzFBMkM2MDBFRUVBRUQgLyogRm9udERhdGEuaCAq
LzsgfTsKIAkJODVFQzlBRkIwQTcxQTJDNjAwRUVFQUVEIC8qIExhbmd1YWdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUVDOUFGOTBBNzFBMkM2MDBF
RUVBRUQgLyogTGFuZ3VhZ2UuaCAqLzsgfTsKKwkJODVGOTJBRTgwQThCQzc3QjAwNzhGOUQ0IC8q
IERPTUhUTUxEaXZFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NUY5MkFFNjBBOEJDNzdCMDA3OEY5RDQgLyogRE9NSFRNTERpdkVsZW1lbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NUY5
MkFFOTBBOEJDNzdCMDA3OEY5RDQgLyogRE9NSFRNTERpdkVsZW1lbnQubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUY5MkFFNzBBOEJDNzdCMDA3OEY5
RDQgLyogRE9NSFRNTERpdkVsZW1lbnQubW0gKi87IH07CiAJCTkzMDMyQ0M4MDlBRUMzNDMwMEY4
MkExOCAvKiBQYXRoQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTMwMzJDQzcwOUFFQzM0MzAwRjgyQTE4IC8qIFBhdGhDRy5jcHAgKi87IH07CiAJ
CTkzMDMyQ0NBMDlBRUMzNEIwMEY4MkExOCAvKiBQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzAzMkNDOTA5QUVDMzRCMDBGODJBMTggLyogUGF0
aC5oICovOyB9OwogCQk5MzA1QjI0RDA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDVCMjRDMDk4RjFCNkIw
MEMyODg1NSAvKiBUaW1lci5oICovOyB9OwpAQCAtNzk5LDcgKzg4MSw3IEBACiAJCUE4MTg1RjNB
MDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxODVGMzIwOTc2NTc2NTAwNTgyNkQ5IC8qIERv
Y3VtZW50VHlwZS5jcHAgKi87IH07CiAJCUE4MTg1RjNCMDk3NjU3NjYwMDU4MjZEOSAvKiBET01J
bXBsZW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTgxODVGMzMwOTc2NTc2NTAwNTgyNkQ5IC8qIERPTUltcGxlbWVudGF0aW9uLmggKi87
IH07CiAJCUE4MTg1RjNDMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODE4NUYzNDA5NzY1NzY1MDA1
ODI2RDkgLyogRG9jdW1lbnQuY3BwICovOyB9OwotCQlBODE4NUYzRDA5NzY1NzY2MDA1ODI2RDkg
LyogRG9jdW1lbnRGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTgxODVGMzUwOTc2NTc2NTAwNTgyNkQ5IC8qIERvY3VtZW50RnJhZ21lbnQu
aCAqLzsgfTsKKwkJQTgxODVGM0QwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50RnJhZ21lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg1RjM1
MDk3NjU3NjUwMDU4MjZEOSAvKiBEb2N1bWVudEZyYWdtZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJQTgxODVGM0UwOTc2NTc2NjAwNTgyNkQ5IC8qIERPTUlt
cGxlbWVudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4MTg1RjM2MDk3NjU3NjUwMDU4MjZEOSAvKiBET01JbXBsZW1lbnRhdGlvbi5jcHAg
Ki87IH07CiAJCUE4MTg1RjNGMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudEZyYWdtZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg1RjM3
MDk3NjU3NjUwMDU4MjZEOSAvKiBEb2N1bWVudEZyYWdtZW50LmNwcCAqLzsgfTsKIAkJQTgxODVG
NDAwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODE4NUYzODA5NzY1NzY1MDA1ODI2RDkgLyogRG9jdW1l
bnQuaCAqLzsgfTsKQEAgLTE0MjEsNyArMTUwMyw3IEBACiAJCUJDMUEzN0I1MDk3QzcxNUYwMDE5
RjNEOCAvKiBET01FeHRlbnNpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzFBMzc5RjA5N0M3MTVGMDAxOUYzRDggLyogRE9NRXh0ZW5zaW9ucy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMUEz
N0I2MDk3QzcxNUYwMDE5RjNEOCAvKiBET01IVE1MLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzFBMzdBMDA5N0M3MTVGMDAxOUYzRDggLyogRE9NSFRN
TC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJD
MUEzN0I3MDk3QzcxNUYwMDE5RjNEOCAvKiBET01IVE1MLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxQTM3QTEwOTdDNzE1RjAwMTlGM0Q4IC8qIERP
TUhUTUwubW0gKi87IH07Ci0JCUJDMUEzN0I4MDk3QzcxNUYwMDE5RjNEOCAvKiBET01IVE1MSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MUEzN0EyMDk3QzcxNUYwMDE5RjNEOCAvKiBET01IVE1MSW50ZXJuYWwuaCAqLzsgfTsKKwkJQkMx
QTM3QjgwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTUhUTUxJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxQTM3QTIwOTdDNzE1RjAwMTlGM0Q4
IC8qIERPTUhUTUxJbnRlcm5hbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07
IH07CiAJCUJDMUEzN0I5MDk3QzcxNUYwMDE5RjNEOCAvKiBET01JbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxQTM3QTMwOTdDNzE1RjAw
MTlGM0Q4IC8qIERPTUludGVybmFsLmggKi87IH07CiAJCUJDMUEzN0JBMDk3QzcxNUYwMDE5RjNE
OCAvKiBET01JbnRlcm5hbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDMUEzN0E0MDk3QzcxNUYwMDE5RjNEOCAvKiBET01JbnRlcm5hbC5tbSAqLzsg
fTsKIAkJQkMxQTM3QkIwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVByaXZhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMUEzN0E1MDk3QzcxNUYwMDE5
RjNEOCAvKiBET01Qcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTIwMzIsNiArMjExNCwyNCBAQAogCQk4NTAzMUIzQjBBNDRFRkM3MDBG
OTkyRTAgLyogV2hlZWxFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2hlZWxFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTIxN0UwMDBBNUVD
RDQ3MDBEQjhEMDAgLyogWFNMSW1wb3J0UnVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gWFNMSW1wb3J0UnVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg1MjE3RTAxMEE1RUNENDcwMERCOEQwMCAvKiBYU0xJbXBvcnRSdWxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYU0xJbXBvcnRSdWxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg1MjZENUVGMEE4RkRCMkQwMDkyMzRCMSAvKiBET01UZXh0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01UZXh0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg1MjZENUYwMEE4RkRCMkUwMDkyMzRCMSAvKiBET01UZXh0Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVRleHQubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MjZENjVDMEE4RkU1NUEwMDkyMzRCMSAvKiBE
T01DaGFyYWN0ZXJEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01D
aGFyYWN0ZXJEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MjZENjVEMEE4
RkU1NUEwMDkyMzRCMSAvKiBET01DaGFyYWN0ZXJEYXRhLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUNoYXJhY3RlckRhdGEubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg1MjZENkVDMEE4RkVERTgwMDkyMzRCMSAvKiBET01BdHRyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01BdHRyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg1MjZENkVEMEE4RkVERTgwMDkyMzRCMSAvKiBET01BdHRyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUF0dHIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MjZENzYyMEE4RkYzOTIwMDkyMzRCMSAvKiBET01O
YW1lZE5vZGVNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU5hbWVk
Tm9kZU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTI2RDc2MzBBOEZGMzky
MDA5MjM0QjEgLyogRE9NTmFtZWROb2RlTWFwLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IERPTU5hbWVkTm9kZU1hcC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODUzMTIwMDgwQThGOTlFMDAwNTEyNUM5IC8qIERPTVByb2Nlc3NpbmdJbnN0cnVj
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NUHJvY2Vzc2luZ0lu
c3RydWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MzEyMDA5MEE4Rjk5
RTAwMDUxMjVDOSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTM5QjUwNjBBOTAzRDQ1MDAzNjZDMkQgLyog
RE9NRE9NSW1wbGVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTURPTUltcGxlbWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1
MzlCNTA3MEE5MDNENDUwMDM2NkMyRCAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01ET01JbXBsZW1lbnRhdGlvbi5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU0RjEyQTgwQThFQkJGRDAwMDk0MEI1
IC8qIERPTU5vdGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01O
b3RhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTRGMTJBOTBBOEVCQkZE
MDAwOTQwQjUgLyogRE9NTm90YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gRE9NTm90YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg1NEYxMkY0MEE4RUMxMDEwMDA5NDBCNSAvKiBET01FbnRpdHlSZWZlcmVuY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUVudGl0eVJlZmVyZW5jZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4NTRGMTJGNTBBOEVDMTAxMDAwOTQwQjUgLyogRE9NRW50
aXR5UmVmZXJlbmNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IERPTUVudGl0eVJlZmVyZW5jZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU0
RjEzMUEwQThFQzI0NzAwMDk0MEI1IC8qIERPTUVudGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRE9NRW50aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg1NEYxMzFCMEE4RUMyNDcwMDA5NDBCNSAvKiBET01FbnRpdHkubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRW50aXR5Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NTRGRTcyNjBBMjI5N0JFMDA1OEQ3QUQgLyogTm9kZUZpbHRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZUZpbHRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1NEZFNzI3MEEyMjk3QkUwMDU4RDdBRCAvKiBO
b2RlRmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb2RlRmlsdGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1NEZFNzI4MEEyMjk3QkUwMDU4RDdB
RCAvKiBOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIwNDIsOCArMjE0Miw3MyBAQAogCQk4NTRGRTcyRDBBMjI5N0JFMDA1OEQ3QUQg
LyogVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmF2ZXJz
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODU0RkU3MkUwQTIyOTdCRTAwNThE
N0FEIC8qIFRyZWVXYWxrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRyZWVXYWxrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTRGRTcy
RjBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVHJlZVdhbGtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
NTY3MkEyOTBBOEQ0REY0MDBCMjQxRTUgLyogRE9NSFRNTE1ldGFFbGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MTWV0YUVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2NzJBMkEwQThENERGNDAwQjI0MUU1IC8qIERPTUhUTUxN
ZXRhRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBE
T01IVE1MTWV0YUVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1Njcy
QTNCMEE4RDRFM0MwMEIyNDFFNSAvKiBET01IVE1MQmFzZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxCYXNlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NTY3MkEzQzBBOEQ0RTNDMDBCMjQxRTUgLyogRE9NSFRNTEJhc2VF
bGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhU
TUxCYXNlRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2NzJBOTYw
QThENTEyMjAwQjI0MUU1IC8qIERPTUhUTUxVTGlzdEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxVTGlzdEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODU2NzJBOTcwQThENTEyMjAwQjI0MUU1IC8qIERPTUhUTUxVTGlzdEVs
ZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRN
TFVMaXN0RWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2NzJBOUUw
QThENTFENDAwQjI0MUU1IC8qIERPTUhUTUxRdW90ZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxRdW90ZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODU2NzJBOUYwQThENTFENDAwQjI0MUU1IC8qIERPTUhUTUxRdW90ZUVs
ZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRN
TFF1b3RlRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2NzJBRDcw
QThENTJGMTAwQjI0MUU1IC8qIERPTUhUTUxQYXJhbUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxQYXJhbUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODU2NzJBRDgwQThENTJGMTAwQjI0MUU1IC8qIERPTUhUTUxQYXJhbUVs
ZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRN
TFBhcmFtRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2NzJBRjIw
QThENTM4MTAwQjI0MUU1IC8qIERPTUhUTUxQYXJhZ3JhcGhFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MUGFyYWdyYXBoRWxlbWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4NTY3MkFGMzBBOEQ1MzgxMDBCMjQxRTUgLyogRE9NSFRN
TFBhcmFncmFwaEVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg1NjcyQjA4MEE4RDUzRTAwMEIyNDFFNSAvKiBET01IVE1MT3B0R3JvdXBFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MT3B0R3JvdXBFbGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1NjcyQjA5MEE4RDUzRTAwMEIy
NDFFNSAvKiBET01IVE1MT3B0R3JvdXBFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxPcHRHcm91cEVsZW1lbnQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg1NjcyQjIzMEE4RDU0QjMwMEIyNDFFNSAvKiBET01IVE1MT0xp
c3RFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MT0xp
c3RFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1NjcyQjI0MEE4RDU0
QjMwMEIyNDFFNSAvKiBET01IVE1MT0xpc3RFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxPTGlzdEVsZW1lbnQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg1NjcyQjI5MEE4RDU1MDMwMEIyNDFFNSAvKiBET01IVE1MTWVu
dUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxNZW51
RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTY3MkIyQTBBOEQ1NTAz
MDBCMjQxRTUgLyogRE9NSFRNTE1lbnVFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxNZW51RWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODU2NzJCNzUwQThENTZGODAwQjI0MUU1IC8qIERPTUhUTUxMSUVsZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxMSUVsZW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2NzJCNzYwQThENTZGODAwQjI0MUU1
IC8qIERPTUhUTUxMSUVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRE9NSFRNTExJRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODU2NzJCODIwQThENTc5MTAwQjI0MUU1IC8qIERPTUhUTUxIUkVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxIUkVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2NzJCODMwQThENTc5MTAwQjI0MUU1IC8qIERPTUhUTUxI
UkVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9N
SFRNTEhSRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2NzJCOTAw
QThENTdGNTAwQjI0MUU1IC8qIERPTUhUTUxIZWFkaW5nRWxlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSFRNTEhlYWRpbmdFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg1NjcyQjkxMEE4RDU3RjUwMEIyNDFFNSAvKiBET01IVE1MSGVh
ZGluZ0VsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
RE9NSFRNTEhlYWRpbmdFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
NTY3MkI5QzBBOEQ1ODdGMDBCMjQxRTUgLyogRE9NSFRNTEZvbnRFbGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MRm9udEVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2NzJCOUQwQThENTg3RjAwQjI0MUU1IC8qIERPTUhUTUxG
b250RWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBE
T01IVE1MRm9udEVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1Njcy
QkFGMEE4RDU5NUQwMEIyNDFFNSAvKiBET01IVE1MRExpc3RFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MRExpc3RFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg1NjcyQkIwMEE4RDU5NUQwMEIyNDFFNSAvKiBET01IVE1MRExp
c3RFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERP
TUhUTUxETGlzdEVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1NkM4
OTZBMEE5MEUxODQwMDVDNjg3QiAvKiBET01Eb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRE9NRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODU2Qzg5NkIwQTkwRTE4NDAwNUM2ODdCIC8qIERPTURvY3VtZW50Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTURvY3VtZW50Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4NTZDODlGQTBBOTBGMDY4MDA1QzY4N0IgLyogRE9NTm9kZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTm9kZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4NTZDODlGQjBBOTBGMDY4MDA1QzY4N0IgLyogRE9NTm9kZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01Ob2RlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTZDOEFFMjBBOTEyNjQ5MDA1QzY4N0IgLyog
RE9NT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01PYmplY3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2QzhBRTMwQTkxMjY0OTAwNUM2ODdC
IC8qIERPTU9iamVjdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBET01PYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1NkUwNUREMEE5
Mzk1MDYwMEEyNDczOSAvKiBET01IVE1MRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NSFRNTEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODU2RTA1REUwQTkzOTUwNjAwQTI0NzM5IC8qIERPTUhUTUxFbGVtZW50Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxFbGVtZW50Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTlCN0Y4MDBBOENGRjM3MDBBNUYxRUEgLyogRE9N
SFRNTEhlYWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01I
VE1MSGVhZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU5QjdGODEw
QThDRkYzNzAwQTVGMUVBIC8qIERPTUhUTUxIZWFkRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MSGVhZEVsZW1lbnQubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1OUI3RjgyMEE4Q0ZGMzcwMEE1RjFFQSAvKiBET01IVE1M
SHRtbEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxI
dG1sRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTlCN0Y4MzBBOENG
RjM3MDBBNUYxRUEgLyogRE9NSFRNTEh0bWxFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxIdG1sRWxlbWVudC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODU5QjdGQjkwQThEMjg4ODAwQTVGMUVBIC8qIENvZGVHZW5lcmF0
b3JPYmpDLnBtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBDb2RlR2VuZXJh
dG9yT2JqQy5wbTsgcGF0aCA9IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG07
IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJODU5QjgwMzUwQThEMzFBNjAwQTVGMUVB
IC8qIERPTUhUTUxUaXRsZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTUhUTUxUaXRsZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODU5QjgwMzYwQThEMzFBNjAwQTVGMUVBIC8qIERPTUhUTUxUaXRsZUVsZW1lbnQubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTFRpdGxlRWxlbWVudC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVBNUM1NTYwQTkwMzBCQjAwRjkxRjJD
IC8qIERPTUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUVs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVBNUM1NTcwQTkwMzBCQjAw
RjkxRjJDIC8qIERPTUVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRE9NRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVB
NUM4QzAwQThENUQ4QjAwQTNDRjkwIC8qIERPTUhUTUxCYXNlRm9udEVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxCYXNlRm9udEVsZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVBNUM4QzEwQThENUQ4QjAwQTNDRjkwIC8qIERP
TUhUTUxCYXNlRm9udEVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRE9NSFRNTEJhc2VGb250RWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODVBNUM4QzgwQThENURCODAwQTNDRjkwIC8qIERPTUhUTUxEaXJlY3RvcnlFbGVt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MRGlyZWN0b3J5
RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUE1QzhDOTBBOEQ1REI5
MDBBM0NGOTAgLyogRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QTVDOENFMEE4RDVERTUwMEEzQ0Y5MCAvKiBET01I
VE1MQlJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1M
QlJFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QTVDOENGMEE4RDVE
RTUwMEEzQ0Y5MCAvKiBET01IVE1MQlJFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxCUkVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg1QTg1QUY3MEE5MDI5MDQwMEE1Q0YzQSAvKiBET01Ob2RlTGlzdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTm9kZUxpc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVBODVBRjgwQTkwMjkwNDAwQTVDRjNBIC8qIERPTU5vZGVM
aXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTU5vZGVM
aXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUFGMEYxNjBBOEVDNUNGMDA0
N0YxOEMgLyogRE9NQ0RBVEFTZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01DREFUQVNlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVB
RjBGMTcwQThFQzVDRjAwNDdGMThDIC8qIERPTUNEQVRBU2VjdGlvbi5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01DREFUQVNlY3Rpb24ubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QUYwRjE4MEE4RUM1Q0YwMDQ3RjE4QyAvKiBET01Db21t
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01Db21tZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QUYwRjE5MEE4RUM1Q0YwMDQ3RjE4QyAvKiBE
T01Db21tZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERP
TUNvbW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QzkwNTg1MEE4RkNC
NDUwMEMzN0Q5MSAvKiBET01Eb2N1bWVudFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTURvY3VtZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4NUM5MDU4NjBBOEZDQjQ1MDBDMzdEOTEgLyogRE9NRG9jdW1lbnRUeXBlLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTURvY3VtZW50VHlwZS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVDOTA2MTUwQThGRDA2OTAwQzM3RDkxIC8qIERP
TURvY3VtZW50RnJhZ21lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERP
TURvY3VtZW50RnJhZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVDOTA2
MTYwQThGRDA2OTAwQzM3RDkxIC8qIERPTURvY3VtZW50RnJhZ21lbnQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRG9jdW1lbnRGcmFnbWVudC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVEMzMxODMwQThDRURDQzAwNTkyNUEwIC8qIERP
TUhUTUxNb2RFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01I
VE1MTW9kRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUQzMzE4NDBB
OENFRENDMDA1OTI1QTAgLyogRE9NSFRNTE1vZEVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTE1vZEVsZW1lbnQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg1RUM5QUY4MEE3MUEyQzYwMEVFRUFFRCAvKiBGb250RGF0YS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udERhdGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODVFQzlBRjkwQTcxQTJDNjAwRUVFQUVEIC8qIExhbmd1YWdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYW5ndWFnZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4NUY5MkFFNjBBOEJDNzdCMDA3OEY5RDQgLyogRE9NSFRN
TERpdkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxE
aXZFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1RjkyQUU3MEE4QkM3
N0IwMDc4RjlENCAvKiBET01IVE1MRGl2RWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MRGl2RWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTMwMzJDQzcwOUFFQzM0MzAwRjgyQTE4IC8qIFBhdGhDRy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXRoQ0cuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5MzAzMkNDOTA5QUVDMzRCMDBGODJBMTggLyogUGF0aC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzMDVCMjRDMDk4RjFCNkIwMEMyODg1NSAvKiBUaW1lci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDAxNyw2ICs0MTgyLDExMSBAQAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTg1NEYxMkFDMEE4RUJDMTgwMDA5NDBCNSAvKiBDb3Jl
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlCQzFBMzc5
OTA5N0M3MTVGMDAxOUYzRDggLyogRE9NQ29yZS5oICovLAorCQkJCTg1MjZENkVDMEE4RkVERTgw
MDkyMzRCMSAvKiBET01BdHRyLmggKi8sCisJCQkJODUyNkQ2RUQwQThGRURFODAwOTIzNEIxIC8q
IERPTUF0dHIubW0gKi8sCisJCQkJODVBRjBGMTYwQThFQzVDRjAwNDdGMThDIC8qIERPTUNEQVRB
U2VjdGlvbi5oICovLAorCQkJCTg1QUYwRjE3MEE4RUM1Q0YwMDQ3RjE4QyAvKiBET01DREFUQVNl
Y3Rpb24ubW0gKi8sCisJCQkJODUyNkQ2NUMwQThGRTU1QTAwOTIzNEIxIC8qIERPTUNoYXJhY3Rl
ckRhdGEuaCAqLywKKwkJCQk4NTI2RDY1RDBBOEZFNTVBMDA5MjM0QjEgLyogRE9NQ2hhcmFjdGVy
RGF0YS5tbSAqLywKKwkJCQk4NUFGMEYxODBBOEVDNUNGMDA0N0YxOEMgLyogRE9NQ29tbWVudC5o
ICovLAorCQkJCTg1QUYwRjE5MEE4RUM1Q0YwMDQ3RjE4QyAvKiBET01Db21tZW50Lm1tICovLAor
CQkJCTg1NkM4OTZBMEE5MEUxODQwMDVDNjg3QiAvKiBET01Eb2N1bWVudC5oICovLAorCQkJCTg1
NkM4OTZCMEE5MEUxODQwMDVDNjg3QiAvKiBET01Eb2N1bWVudC5tbSAqLywKKwkJCQk4NUM5MDYx
NTBBOEZEMDY5MDBDMzdEOTEgLyogRE9NRG9jdW1lbnRGcmFnbWVudC5oICovLAorCQkJCTg1Qzkw
NjE2MEE4RkQwNjkwMEMzN0Q5MSAvKiBET01Eb2N1bWVudEZyYWdtZW50Lm1tICovLAorCQkJCTg1
QzkwNTg1MEE4RkNCNDUwMEMzN0Q5MSAvKiBET01Eb2N1bWVudFR5cGUuaCAqLywKKwkJCQk4NUM5
MDU4NjBBOEZDQjQ1MDBDMzdEOTEgLyogRE9NRG9jdW1lbnRUeXBlLm1tICovLAorCQkJCTg1QTVD
NTU2MEE5MDMwQkIwMEY5MUYyQyAvKiBET01FbGVtZW50LmggKi8sCisJCQkJODVBNUM1NTcwQTkw
MzBCQjAwRjkxRjJDIC8qIERPTUVsZW1lbnQubW0gKi8sCisJCQkJODU0RjEzMUEwQThFQzI0NzAw
MDk0MEI1IC8qIERPTUVudGl0eS5oICovLAorCQkJCTg1NEYxMzFCMEE4RUMyNDcwMDA5NDBCNSAv
KiBET01FbnRpdHkubW0gKi8sCisJCQkJODU0RjEyRjQwQThFQzEwMTAwMDk0MEI1IC8qIERPTUVu
dGl0eVJlZmVyZW5jZS5oICovLAorCQkJCTg1NEYxMkY1MEE4RUMxMDEwMDA5NDBCNSAvKiBET01F
bnRpdHlSZWZlcmVuY2UubW0gKi8sCisJCQkJODUzOUI1MDYwQTkwM0Q0NTAwMzY2QzJEIC8qIERP
TURPTUltcGxlbWVudGF0aW9uLmggKi8sCisJCQkJODUzOUI1MDcwQTkwM0Q0NTAwMzY2QzJEIC8q
IERPTURPTUltcGxlbWVudGF0aW9uLm1tICovLAorCQkJCTg1MjZENzYyMEE4RkYzOTIwMDkyMzRC
MSAvKiBET01OYW1lZE5vZGVNYXAuaCAqLywKKwkJCQk4NTI2RDc2MzBBOEZGMzkyMDA5MjM0QjEg
LyogRE9NTmFtZWROb2RlTWFwLm1tICovLAorCQkJCTg1NkM4OUZBMEE5MEYwNjgwMDVDNjg3QiAv
KiBET01Ob2RlLmggKi8sCisJCQkJODU2Qzg5RkIwQTkwRjA2ODAwNUM2ODdCIC8qIERPTU5vZGUu
bW0gKi8sCisJCQkJODVBODVBRjcwQTkwMjkwNDAwQTVDRjNBIC8qIERPTU5vZGVMaXN0LmggKi8s
CisJCQkJODVBODVBRjgwQTkwMjkwNDAwQTVDRjNBIC8qIERPTU5vZGVMaXN0Lm1tICovLAorCQkJ
CTg1NEYxMkE4MEE4RUJCRkQwMDA5NDBCNSAvKiBET01Ob3RhdGlvbi5oICovLAorCQkJCTg1NEYx
MkE5MEE4RUJCRkQwMDA5NDBCNSAvKiBET01Ob3RhdGlvbi5tbSAqLywKKwkJCQk4NTZDOEFFMjBB
OTEyNjQ5MDA1QzY4N0IgLyogRE9NT2JqZWN0LmggKi8sCisJCQkJODU2QzhBRTMwQTkxMjY0OTAw
NUM2ODdCIC8qIERPTU9iamVjdC5tbSAqLywKKwkJCQk4NTMxMjAwODBBOEY5OUUwMDA1MTI1Qzkg
LyogRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggKi8sCisJCQkJODUzMTIwMDkwQThGOTlFMDAw
NTEyNUM5IC8qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5tbSAqLywKKwkJCQk4NTI2RDVFRjBB
OEZEQjJEMDA5MjM0QjEgLyogRE9NVGV4dC5oICovLAorCQkJCTg1MjZENUYwMEE4RkRCMkUwMDky
MzRCMSAvKiBET01UZXh0Lm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBDb3JlOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJODU2RTA1RDYwQTkzOTRDNDAwQTI0NzM5IC8qIEhU
TUwgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTg1NkUw
NUREMEE5Mzk1MDYwMEEyNDczOSAvKiBET01IVE1MRWxlbWVudC5oICovLAorCQkJCTg1NkUwNURF
MEE5Mzk1MDYwMEEyNDczOSAvKiBET01IVE1MRWxlbWVudC5tbSAqLywKKwkJCSk7CisJCQluYW1l
ID0gSFRNTDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTg1QjIzMjI2MEE4
QkYzQTEwMEZERjQ3QiAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTg1QTVDOENFMEE4RDVERTUwMEEzQ0Y5MCAvKiBET01I
VE1MQlJFbGVtZW50LmggKi8sCisJCQkJODVBNUM4Q0YwQThENURFNTAwQTNDRjkwIC8qIERPTUhU
TUxCUkVsZW1lbnQubW0gKi8sCisJCQkJODVBNUM4QzgwQThENURCODAwQTNDRjkwIC8qIERPTUhU
TUxEaXJlY3RvcnlFbGVtZW50LmggKi8sCisJCQkJODVBNUM4QzkwQThENURCOTAwQTNDRjkwIC8q
IERPTUhUTUxEaXJlY3RvcnlFbGVtZW50Lm1tICovLAorCQkJCTg1NjcyQTNCMEE4RDRFM0MwMEIy
NDFFNSAvKiBET01IVE1MQmFzZUVsZW1lbnQuaCAqLywKKwkJCQk4NTY3MkEzQzBBOEQ0RTNDMDBC
MjQxRTUgLyogRE9NSFRNTEJhc2VFbGVtZW50Lm1tICovLAorCQkJCTg1QTVDOEMwMEE4RDVEOEIw
MEEzQ0Y5MCAvKiBET01IVE1MQmFzZUZvbnRFbGVtZW50LmggKi8sCisJCQkJODVBNUM4QzEwQThE
NUQ4QjAwQTNDRjkwIC8qIERPTUhUTUxCYXNlRm9udEVsZW1lbnQubW0gKi8sCisJCQkJODU2NzJC
QUYwQThENTk1RDAwQjI0MUU1IC8qIERPTUhUTUxETGlzdEVsZW1lbnQuaCAqLywKKwkJCQk4NTY3
MkJCMDBBOEQ1OTVEMDBCMjQxRTUgLyogRE9NSFRNTERMaXN0RWxlbWVudC5tbSAqLywKKwkJCQk4
NTY3MkI5QzBBOEQ1ODdGMDBCMjQxRTUgLyogRE9NSFRNTEZvbnRFbGVtZW50LmggKi8sCisJCQkJ
ODU2NzJCOUQwQThENTg3RjAwQjI0MUU1IC8qIERPTUhUTUxGb250RWxlbWVudC5tbSAqLywKKwkJ
CQk4NTY3MkI5MDBBOEQ1N0Y1MDBCMjQxRTUgLyogRE9NSFRNTEhlYWRpbmdFbGVtZW50LmggKi8s
CisJCQkJODU2NzJCOTEwQThENTdGNTAwQjI0MUU1IC8qIERPTUhUTUxIZWFkaW5nRWxlbWVudC5t
bSAqLywKKwkJCQk4NTY3MkI4MjBBOEQ1NzkxMDBCMjQxRTUgLyogRE9NSFRNTEhSRWxlbWVudC5o
ICovLAorCQkJCTg1NjcyQjgzMEE4RDU3OTEwMEIyNDFFNSAvKiBET01IVE1MSFJFbGVtZW50Lm1t
ICovLAorCQkJCTg1NjcyQjc1MEE4RDU2RjgwMEIyNDFFNSAvKiBET01IVE1MTElFbGVtZW50Lmgg
Ki8sCisJCQkJODU2NzJCNzYwQThENTZGODAwQjI0MUU1IC8qIERPTUhUTUxMSUVsZW1lbnQubW0g
Ki8sCisJCQkJODU2NzJCMjkwQThENTUwMzAwQjI0MUU1IC8qIERPTUhUTUxNZW51RWxlbWVudC5o
ICovLAorCQkJCTg1NjcyQjJBMEE4RDU1MDMwMEIyNDFFNSAvKiBET01IVE1MTWVudUVsZW1lbnQu
bW0gKi8sCisJCQkJODU2NzJCMjMwQThENTRCMzAwQjI0MUU1IC8qIERPTUhUTUxPTGlzdEVsZW1l
bnQuaCAqLywKKwkJCQk4NTY3MkIyNDBBOEQ1NEIzMDBCMjQxRTUgLyogRE9NSFRNTE9MaXN0RWxl
bWVudC5tbSAqLywKKwkJCQk4NTY3MkIwODBBOEQ1M0UwMDBCMjQxRTUgLyogRE9NSFRNTE9wdEdy
b3VwRWxlbWVudC5oICovLAorCQkJCTg1NjcyQjA5MEE4RDUzRTAwMEIyNDFFNSAvKiBET01IVE1M
T3B0R3JvdXBFbGVtZW50Lm1tICovLAorCQkJCTg1NjcyQUYyMEE4RDUzODEwMEIyNDFFNSAvKiBE
T01IVE1MUGFyYWdyYXBoRWxlbWVudC5oICovLAorCQkJCTg1NjcyQUYzMEE4RDUzODEwMEIyNDFF
NSAvKiBET01IVE1MUGFyYWdyYXBoRWxlbWVudC5tbSAqLywKKwkJCQk4NTY3MkFENzBBOEQ1MkYx
MDBCMjQxRTUgLyogRE9NSFRNTFBhcmFtRWxlbWVudC5oICovLAorCQkJCTg1NjcyQUQ4MEE4RDUy
RjEwMEIyNDFFNSAvKiBET01IVE1MUGFyYW1FbGVtZW50Lm1tICovLAorCQkJCTg1NjcyQTlFMEE4
RDUxRDQwMEIyNDFFNSAvKiBET01IVE1MUXVvdGVFbGVtZW50LmggKi8sCisJCQkJODU2NzJBOUYw
QThENTFENDAwQjI0MUU1IC8qIERPTUhUTUxRdW90ZUVsZW1lbnQubW0gKi8sCisJCQkJODU2NzJB
OTYwQThENTEyMjAwQjI0MUU1IC8qIERPTUhUTUxVTGlzdEVsZW1lbnQuaCAqLywKKwkJCQk4NTY3
MkE5NzBBOEQ1MTIyMDBCMjQxRTUgLyogRE9NSFRNTFVMaXN0RWxlbWVudC5tbSAqLywKKwkJCQk4
NTY3MkEyOTBBOEQ0REY0MDBCMjQxRTUgLyogRE9NSFRNTE1ldGFFbGVtZW50LmggKi8sCisJCQkJ
ODU2NzJBMkEwQThENERGNDAwQjI0MUU1IC8qIERPTUhUTUxNZXRhRWxlbWVudC5tbSAqLywKKwkJ
CQk4NTlCODAzNTBBOEQzMUE2MDBBNUYxRUEgLyogRE9NSFRNTFRpdGxlRWxlbWVudC5oICovLAor
CQkJCTg1OUI4MDM2MEE4RDMxQTYwMEE1RjFFQSAvKiBET01IVE1MVGl0bGVFbGVtZW50Lm1tICov
LAorCQkJCTg1OUI3RjgwMEE4Q0ZGMzcwMEE1RjFFQSAvKiBET01IVE1MSGVhZEVsZW1lbnQuaCAq
LywKKwkJCQk4NTlCN0Y4MTBBOENGRjM3MDBBNUYxRUEgLyogRE9NSFRNTEhlYWRFbGVtZW50Lm1t
ICovLAorCQkJCTg1OUI3RjgyMEE4Q0ZGMzcwMEE1RjFFQSAvKiBET01IVE1MSHRtbEVsZW1lbnQu
aCAqLywKKwkJCQk4NTlCN0Y4MzBBOENGRjM3MDBBNUYxRUEgLyogRE9NSFRNTEh0bWxFbGVtZW50
Lm1tICovLAorCQkJCTg1RjkyQUU2MEE4QkM3N0IwMDc4RjlENCAvKiBET01IVE1MRGl2RWxlbWVu
dC5oICovLAorCQkJCTg1RjkyQUU3MEE4QkM3N0IwMDc4RjlENCAvKiBET01IVE1MRGl2RWxlbWVu
dC5tbSAqLywKKwkJCQk4NUQzMzE4MzBBOENFRENDMDA1OTI1QTAgLyogRE9NSFRNTE1vZEVsZW1l
bnQuaCAqLywKKwkJCQk4NUQzMzE4NDBBOENFRENDMDA1OTI1QTAgLyogRE9NSFRNTE1vZEVsZW1l
bnQubW0gKi8sCisJCQkpOworCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOworCQkJcGF0aCA9
IERlcml2ZWRTb3VyY2VzL1dlYkNvcmU7CisJCQlzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOworCQl9OwogCQk5MzAzMkNDQzA5QUVDMzYyMDBGODJBMTggLyogY2cgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtNTAwOSwxMiArNTI3OSwxMiBAQAog
CQlCQzFBMzc5NDA5N0M2RkM0MDAxOUYzRDggLyogb2JqYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdl
YlNjcmlwdE9iamVjdC5oICovLAotCQkJCTFDQUYzNDdGMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJT
Y3JpcHRPYmplY3QubW0gKi8sCi0JCQkJMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNj
cmlwdE9iamVjdFByaXZhdGUuaCAqLywKKwkJCQk4NUIyMzIyNjBBOEJGM0ExMDBGREY0N0IgLyog
RGVyaXZlZCBTb3VyY2VzICovLAorCQkJCTg1NEYxMkFDMEE4RUJDMTgwMDA5NDBCNSAvKiBDb3Jl
ICovLAorCQkJCTg1NkUwNUQ2MEE5Mzk0QzQwMEEyNDczOSAvKiBIVE1MICovLAorCQkJCTg1OUI3
RkI5MEE4RDI4ODgwMEE1RjFFQSAvKiBDb2RlR2VuZXJhdG9yT2JqQy5wbSAqLywKIAkJCQlCQzFB
Mzc5NzA5N0M3MTVGMDAxOUYzRDggLyogRE9NLmggKi8sCiAJCQkJQkMxQTM3OTgwOTdDNzE1RjAw
MTlGM0Q4IC8qIERPTS5tbSAqLywKLQkJCQlCQzFBMzc5OTA5N0M3MTVGMDAxOUYzRDggLyogRE9N
Q29yZS5oICovLAogCQkJCUJDMUEzNzlBMDk3QzcxNUYwMDE5RjNEOCAvKiBET01DU1MuaCAqLywK
IAkJCQlCQzFBMzc5QjA5N0M3MTVGMDAxOUYzRDggLyogRE9NQ1NTLm1tICovLAogCQkJCTFBODA4
MzczMEE0QzdDREEwMERGQjZBNyAvKiBET01DU1NJbnRlcm5hbC5oICovLApAQCAtNTA0MSw2ICs1
MzExLDkgQEAKIAkJCQkxQTFEMTM3RTBBNTMyNTUyMDA2NEJGNUYgLyogRE9NWFBhdGguaCAqLywK
IAkJCQkxQTFEMTM3RjBBNTMyNTUyMDA2NEJGNUYgLyogRE9NWFBhdGgubW0gKi8sCiAJCQkJMUEx
RDEzQzkwQTUzMjkwOTAwNjRCRjVGIC8qIERPTVhQYXRoSW50ZXJuYWwuaCAqLywKKwkJCQkxQ0FG
MzQ3RTBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0LmggKi8sCisJCQkJMUNBRjM0
N0YwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSAqLywKKwkJCQkxQ0FGMzQ4
MDBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oICovLAogCQkJKTsK
IAkJCXBhdGggPSBvYmpjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTY0MTEsNiAr
NjY4NCw0NyBAQAogCQkJCUJDQUE5MEEwMEE3RUIwM0EwMDhCMTIyOSAvKiBQbGF0Zm9ybVNjcm9s
bEJhci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFQzlBRkEwQTcxQTJDNjAwRUVFQUVEIC8qIEZv
bnREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUVDOUFGQjBBNzFBMkM2MDBFRUVBRUQgLyog
TGFuZ3VhZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1RjkyQUU4MEE4QkM3N0IwMDc4RjlENCAv
KiBET01IVE1MRGl2RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU5QjdGQzIwQThEMjhG
MjAwQTVGMUVBIC8qIERPTUhUTUxIZWFkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU5
QjdGQzQwQThEMjhGMjAwQTVGMUVBIC8qIERPTUhUTUxIdG1sRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJODU5QjdGQ0EwQThEMjhGODAwQTVGMUVBIC8qIERPTUhUTUxNb2RFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk4NTlCODAzNzBBOEQzMUE2MDBBNUYxRUEgLyogRE9NSFRNTFRp
dGxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU2NzJBMkIwQThENERGNDAwQjI0MUU1
IC8qIERPTUhUTUxNZXRhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU2NzJBM0QwQThE
NEUzQzAwQjI0MUU1IC8qIERPTUhUTUxCYXNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
ODU2NzJBOTgwQThENTEyMjAwQjI0MUU1IC8qIERPTUhUTUxVTGlzdEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTg1NjcyQUEwMEE4RDUxRDQwMEIyNDFFNSAvKiBET01IVE1MUXVvdGVFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTY3MkFEOTBBOEQ1MkYxMDBCMjQxRTUgLyogRE9N
SFRNTFBhcmFtRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU2NzJBRjQwQThENTM4MTAw
QjI0MUU1IC8qIERPTUhUTUxQYXJhZ3JhcGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4
NTY3MkIwQTBBOEQ1M0UwMDBCMjQxRTUgLyogRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJODU2NzJCMjUwQThENTRCMzAwQjI0MUU1IC8qIERPTUhUTUxPTGlzdEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1NjcyQjJCMEE4RDU1MDMwMEIyNDFFNSAvKiBE
T01IVE1MTWVudUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1NjcyQjc3MEE4RDU2Rjgw
MEIyNDFFNSAvKiBET01IVE1MTElFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTY3MkI4
NDBBOEQ1NzkxMDBCMjQxRTUgLyogRE9NSFRNTEhSRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJODU2NzJCOTIwQThENTdGNTAwQjI0MUU1IC8qIERPTUhUTUxIZWFkaW5nRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJODU2NzJCOUUwQThENTg3RjAwQjI0MUU1IC8qIERPTUhUTUxGb250
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU2NzJCQjEwQThENTk1RDAwQjI0MUU1IC8q
IERPTUhUTUxETGlzdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1QTVDOEMyMEE4RDVE
OEIwMEEzQ0Y5MCAvKiBET01IVE1MQmFzZUZvbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4NUE1QzhDQTBBOEQ1REI5MDBBM0NGOTAgLyogRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTg1QTVDOEQwMEE4RDVERTUwMEEzQ0Y5MCAvKiBET01IVE1MQlJF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTRGMTJBQTBBOEVCQkZEMDAwOTQwQjUgLyog
RE9NTm90YXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTg1NEYxMkY2MEE4RUMxMDEwMDA5NDBC
NSAvKiBET01FbnRpdHlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1NEYxMzFDMEE4
RUMyNDcwMDA5NDBCNSAvKiBET01FbnRpdHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1QUYwRjFB
MEE4RUM1Q0YwMDQ3RjE4QyAvKiBET01DREFUQVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTg1QUYwRjFDMEE4RUM1Q0YwMDQ3RjE4QyAvKiBET01Db21tZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQk4NTMxMjAwQTBBOEY5OUUwMDA1MTI1QzkgLyogRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUM5MDU4NzBBOEZDQjQ1MDBDMzdEOTEgLyogRE9NRG9j
dW1lbnRUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUM5MDYxNzBBOEZEMDY5MDBDMzdEOTEg
LyogRE9NRG9jdW1lbnRGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODUyNkQ1RjEwQThG
REIyRTAwOTIzNEIxIC8qIERPTVRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1MjZENjVFMEE4
RkU1NUEwMDkyMzRCMSAvKiBET01DaGFyYWN0ZXJEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQk4
NTI2RDZFRTBBOEZFREU4MDA5MjM0QjEgLyogRE9NQXR0ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
ODUyNkQ3NjQwQThGRjM5MjAwOTIzNEIxIC8qIERPTU5hbWVkTm9kZU1hcC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJODVBODVBRjkwQTkwMjkwNDAwQTVDRjNBIC8qIERPTU5vZGVMaXN0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk4NUE1QzU1ODBBOTAzMEJCMDBGOTFGMkMgLyogRE9NRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJODUzOUI1MDgwQTkwM0Q0NTAwMzY2QzJEIC8qIERPTURPTUltcGxl
bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTZDODk2QzBBOTBFMTg0MDA1QzY4N0Ig
LyogRE9NRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1NkM4OUZDMEE5MEYwNjgwMDVD
Njg3QiAvKiBET01Ob2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTZDOEFFNDBBOTEyNjQ5MDA1
QzY4N0IgLyogRE9NT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTZFMDVERjBBOTM5NTA2
MDBBMjQ3MzkgLyogRE9NSFRNTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNjQ0NCw3ICs2
NzU4LDYgQEAKIAkJMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICov
ID0gewogCQkJaXNhID0gUEJYUHJvamVjdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAx
NDlDMjg0MzA4OTAyQjExMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhQcm9qZWN0ICJXZWJDb3JlIiAqLzsKLQkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2Rl
IDIuNCI7CiAJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMTsKIAkJCWtub3duUmVnaW9ucyA9
ICgKIAkJCQlFbmdsaXNoLApAQCAtNjQ1OCw4ICs2NzcxLDYgQEAKIAkJCW1haW5Hcm91cCA9IDA4
NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJLaXQgKi87CiAJCQlwcm9kdWN0UmVmR3JvdXAg
PSAwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi87CiAJCQlwcm9qZWN0RGly
UGF0aCA9ICIiOwotCQkJcHJvamVjdFJvb3QgPSAiIjsKLQkJCXNob3VsZENoZWNrQ29tcGF0aWJp
bGl0eSA9IDE7CiAJCQl0YXJnZXRzID0gKAogCQkJCTkzRjE5OEE1MDgyNDVFNTkwMDFFOUFCQyAv
KiBXZWJDb3JlICovLAogCQkJCUREMDQxRkJFMDlEOUREQkUwMDEwQUYyQSAvKiBEZXJpdmVkIFNv
dXJjZXMgKi8sCkBAIC03MjgzLDYgKzc1OTQsNDcgQEAKIAkJCQlCQ0FBOTBDMzBBN0VCQTYwMDA4
QjEyMjkgLyogU2Nyb2xsQmFyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzQjBGRDhBMEE3NTlC
RUQwMDgwQUQ0NCAvKiBTdHJpbmdJbXBsTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNCMEZE
OEIwQTc1OUJFRDAwODBBRDQ0IC8qIFN0cmluZ01hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1
RjkyQUU5MEE4QkM3N0IwMDc4RjlENCAvKiBET01IVE1MRGl2RWxlbWVudC5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTg1OUI3RkMzMEE4RDI4RjIwMEE1RjFFQSAvKiBET01IVE1MSGVhZEVsZW1lbnQu
bW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTlCN0ZDNTBBOEQyOEYyMDBBNUYxRUEgLyogRE9NSFRN
TEh0bWxFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODU5QjdGQ0IwQThEMjhGODAwQTVG
MUVBIC8qIERPTUhUTUxNb2RFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODU5QjgwMzgw
QThEMzFBNjAwQTVGMUVBIC8qIERPTUhUTUxUaXRsZUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywK
KwkJCQk4NTY3MkEyQzBBOEQ0REY0MDBCMjQxRTUgLyogRE9NSFRNTE1ldGFFbGVtZW50Lm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJODU2NzJBM0UwQThENEUzQzAwQjI0MUU1IC8qIERPTUhUTUxCYXNl
RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1NjcyQTk5MEE4RDUxMjIwMEIyNDFFNSAv
KiBET01IVE1MVUxpc3RFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODU2NzJBQTEwQThE
NTFENDAwQjI0MUU1IC8qIERPTUhUTUxRdW90ZUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJ
CQk4NTY3MkFEQTBBOEQ1MkYxMDBCMjQxRTUgLyogRE9NSFRNTFBhcmFtRWxlbWVudC5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTg1NjcyQUY1MEE4RDUzODEwMEIyNDFFNSAvKiBET01IVE1MUGFyYWdy
YXBoRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1NjcyQjBCMEE4RDUzRTAwMEIyNDFF
NSAvKiBET01IVE1MT3B0R3JvdXBFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODU2NzJC
MjYwQThENTRCMzAwQjI0MUU1IC8qIERPTUhUTUxPTGlzdEVsZW1lbnQubW0gaW4gU291cmNlcyAq
LywKKwkJCQk4NTY3MkIyQzBBOEQ1NTAzMDBCMjQxRTUgLyogRE9NSFRNTE1lbnVFbGVtZW50Lm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJODU2NzJCNzgwQThENTZGODAwQjI0MUU1IC8qIERPTUhUTUxM
SUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTY3MkI4NTBBOEQ1NzkxMDBCMjQxRTUg
LyogRE9NSFRNTEhSRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1NjcyQjkzMEE4RDU3
RjUwMEIyNDFFNSAvKiBET01IVE1MSGVhZGluZ0VsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJ
CQk4NTY3MkI5RjBBOEQ1ODdGMDBCMjQxRTUgLyogRE9NSFRNTEZvbnRFbGVtZW50Lm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJODU2NzJCQjIwQThENTk1RDAwQjI0MUU1IC8qIERPTUhUTUxETGlzdEVs
ZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NUE1QzhDMzBBOEQ1RDhCMDBBM0NGOTAgLyog
RE9NSFRNTEJhc2VGb250RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1QTVDOENCMEE4
RDVEQjkwMEEzQ0Y5MCAvKiBET01IVE1MRGlyZWN0b3J5RWxlbWVudC5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTg1QTVDOEQxMEE4RDVERTUwMEEzQ0Y5MCAvKiBET01IVE1MQlJFbGVtZW50Lm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJODU0RjEyQUIwQThFQkJGRDAwMDk0MEI1IC8qIERPTU5vdGF0aW9u
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODU0RjEyRjcwQThFQzEwMTAwMDk0MEI1IC8qIERPTUVu
dGl0eVJlZmVyZW5jZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1NEYxMzFEMEE4RUMyNDcwMDA5
NDBCNSAvKiBET01FbnRpdHkubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NUFGMEYxQjBBOEVDNUNG
MDA0N0YxOEMgLyogRE9NQ0RBVEFTZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODVBRjBG
MUQwQThFQzVDRjAwNDdGMThDIC8qIERPTUNvbW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4
NTMxMjAwQjBBOEY5OUUwMDA1MTI1QzkgLyogRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJODVDOTA1ODgwQThGQ0I0NTAwQzM3RDkxIC8qIERPTURvY3VtZW50
VHlwZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1QzkwNjE4MEE4RkQwNjkwMEMzN0Q5MSAvKiBE
T01Eb2N1bWVudEZyYWdtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODUyNkQ1RjIwQThGREIy
RTAwOTIzNEIxIC8qIERPTVRleHQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTI2RDY1RjBBOEZF
NTVBMDA5MjM0QjEgLyogRE9NQ2hhcmFjdGVyRGF0YS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1
MjZENkVGMEE4RkVERTgwMDkyMzRCMSAvKiBET01BdHRyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
ODUyNkQ3NjUwQThGRjM5MjAwOTIzNEIxIC8qIERPTU5hbWVkTm9kZU1hcC5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTg1QTg1QUZBMEE5MDI5MDUwMEE1Q0YzQSAvKiBET01Ob2RlTGlzdC5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTg1QTVDNTU5MEE5MDMwQkIwMEY5MUYyQyAvKiBET01FbGVtZW50Lm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJODUzOUI1MDkwQTkwM0Q0NTAwMzY2QzJEIC8qIERPTURPTUlt
cGxlbWVudGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODU2Qzg5NkQwQTkwRTE4NDAwNUM2
ODdCIC8qIERPTURvY3VtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODU2Qzg5RkQwQTkwRjA2
ODAwNUM2ODdCIC8qIERPTU5vZGUubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTZDOEFFNTBBOTEy
NjQ5MDA1QzY4N0IgLyogRE9NT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODU2RTA1RTAw
QTkzOTUwNjAwQTI0NzM5IC8qIERPTUhUTUxFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET00ubW0JKHJldmlzaW9uIDE1ODI4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTS5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDQtMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBKYW1lcyBHLiBTcGV0aCAoc3BldGhAZW5kLmNvbSkK
KyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNv
bSkKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNiArNTksNTYgQEAKICNp
bXBvcnQgIlJlbmRlckltYWdlLmgiCiAjaW1wb3J0ICJUcmVlV2Fsa2VyLmgiCiAjaW1wb3J0ICJX
ZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCisKKworLy8gRnJvbSBvbGQgRE9NQ29yZS5oCisjaW1w
b3J0ICJET01BdHRyLmgiCisjaW1wb3J0ICJET01DREFUQVNlY3Rpb24uaCIKKyNpbXBvcnQgIkRP
TUNoYXJhY3RlckRhdGEuaCIKKyNpbXBvcnQgIkRPTUNvbW1lbnQuaCIKKyNpbXBvcnQgIkRPTURP
TUltcGxlbWVudGF0aW9uLmgiCisjaW1wb3J0ICJET01Eb2N1bWVudC5oIgorI2ltcG9ydCAiRE9N
RG9jdW1lbnRGcmFnbWVudC5oIgorI2ltcG9ydCAiRE9NRG9jdW1lbnRUeXBlLmgiCisjaW1wb3J0
ICJET01FbGVtZW50LmgiCisjaW1wb3J0ICJET01FbnRpdHkuaCIKKyNpbXBvcnQgIkRPTUVudGl0
eVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiRE9NTmFtZWROb2RlTWFwLmgiCisjaW1wb3J0ICJET01O
b2RlLmgiCisjaW1wb3J0ICJET01Ob2RlTGlzdC5oIgorI2ltcG9ydCAiRE9NTm90YXRpb24uaCIK
KyNpbXBvcnQgIkRPTU9iamVjdC5oIgorI2ltcG9ydCAiRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmgiCisjaW1wb3J0ICJET01UZXh0LmgiCisKKworLy8gRnJvbSBvbGQgRE9NSFRNTC5oCisjaW1w
b3J0ICJET01IVE1MRWxlbWVudC5oIgorCisvLyBHZW5lcmF0ZWQgT2JqZWN0aXZlLUMgQmluZGlu
Z3MKKyNpbXBvcnQgIkRPTUhUTUxCUkVsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxCYXNlRWxl
bWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTEJhc2VGb250RWxlbWVudC5oIgorI2ltcG9ydCAiRE9N
SFRNTERMaXN0RWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQuaCIK
KyNpbXBvcnQgIkRPTUhUTUxEaXZFbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1MRm9udEVsZW1l
bnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxIUkVsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxIZWFk
RWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTEhlYWRpbmdFbGVtZW50LmgiCisjaW1wb3J0ICJE
T01IVE1MSHRtbEVsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxMSUVsZW1lbnQuaCIKKyNpbXBv
cnQgIkRPTUhUTUxNZW51RWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTE1ldGFFbGVtZW50Lmgi
CisjaW1wb3J0ICJET01IVE1MTW9kRWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTE9MaXN0RWxl
bWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5oIgorI2ltcG9ydCAiRE9N
SFRNTFBhcmFncmFwaEVsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxQYXJhbUVsZW1lbnQuaCIK
KyNpbXBvcnQgIkRPTUhUTUxRdW90ZUVsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxUaXRsZUVs
ZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxVTGlzdEVsZW1lbnQuaCIKKwogI2ltcG9ydCA8b2Jq
Yy9vYmpjLWNsYXNzLmg+CiAKIHVzaW5nIFdlYkNvcmU6OkF0b21pY1N0cmluZzsKQEAgLTk3LDIw
ICsxNDgsNiBAQCB1c2luZyBXZWJDb3JlOjpUcmVlV2Fsa2VyOwogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTo6SFRNTE5hbWVzOwogCi1AaW50ZXJmYWNlIERPTUF0dHIgKFdlYkNvcmVJbnRlcm5h
bCkKLSsgKERPTUF0dHIgKilfYXR0cldpdGg6KEF0dHIgKilpbXBsOwotLSAoQXR0ciAqKV9hdHRy
OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTURvY3VtZW50VHlwZSAoV2ViQ29yZUludGVybmFsKQot
LSAoRG9jdW1lbnRUeXBlICopX2RvY3VtZW50VHlwZTsKLUBlbmQKLQotQGludGVyZmFjZSBET01J
bXBsZW1lbnRhdGlvbiAoV2ViQ29yZUludGVybmFsKQotKyAoRE9NSW1wbGVtZW50YXRpb24gKilf
RE9NSW1wbGVtZW50YXRpb25XaXRoOihET01JbXBsZW1lbnRhdGlvbkZyb250ICopaW1wbDsKLS0g
KERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilfRE9NSW1wbGVtZW50YXRpb247Ci1AZW5kCi0KIGNs
YXNzIE9iakNFdmVudExpc3RlbmVyIDogcHVibGljIEV2ZW50TGlzdGVuZXIgewogcHVibGljOgog
ICAgIHN0YXRpYyBPYmpDRXZlbnRMaXN0ZW5lciAqZmluZChpZCA8RE9NRXZlbnRMaXN0ZW5lcj4p
OwpAQCAtMTM0LDM5ICsxNzEsNiBAQCBzdGF0aWMgTGlzdGVuZXJNYXAqIGxpc3RlbmVyTWFwOwog
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTU9iamVjdAogCi1AaW1w
bGVtZW50YXRpb24gRE9NT2JqZWN0Ci0KLS8vIFByZXZlbnQgY3JlYXRpb24gb2YgRE9NIG9iamVj
dHMgYnkgY2xpZW50cyB3aG8ganVzdCAiW1t4eHggYWxsb2NdIGluaXRdIi4KLS0gKGlkKWluaXQK
LXsKLSAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1hdDpAIitb
JUAgaW5pdF06IHNob3VsZCBuZXZlciBiZSB1c2VkIiwgTlNTdHJpbmdGcm9tQ2xhc3MoW3NlbGYg
Y2xhc3NdKV07Ci0gICAgW3NlbGYgcmVsZWFzZV07Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAo
dm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICByZW1vdmVET01X
cmFwcGVyKF9pbnRlcm5hbCk7Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAo
dm9pZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgcmVtb3ZlRE9N
V3JhcHBlcihfaW50ZXJuYWwpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0t
IChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKLXsKLSAgICByZXR1cm4gW3NlbGYgcmV0
YWluXTsKLX0KLQotQGVuZAotCiBAaW1wbGVtZW50YXRpb24gRE9NT2JqZWN0IChXZWJDb3JlSW50
ZXJuYWwpCiAKIC0gKGlkKV9pbml0CkBAIC0xNzksMjY4ICsxODMsNiBAQCBzdGF0aWMgTGlzdGVu
ZXJNYXAqIGxpc3RlbmVyTWFwOwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IC8vIERPTU5vZGUKIAotQGltcGxlbWVudGF0aW9uIERPTU5vZGUKLQotLSAodm9pZClkZWFsbG9j
Ci17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxOb2RlICo+KF9pbnRl
cm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9p
ZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9k
ZSAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwot
fQotCi0tIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCi17Ci0gICAgaWYgKCFfaW50ZXJuYWwpIHsK
LSAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiBudWxsPiIs
Ci0gICAgICAgICAgICBbW3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9uXSwgc2VsZl07Ci0gICAgfQot
ICAgIE5TU3RyaW5nICp2YWx1ZSA9IFtzZWxmIG5vZGVWYWx1ZV07Ci0gICAgaWYgKHZhbHVlKSB7
Ci0gICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQCBbJUBdOiAl
cCAnJUAnPiIsCi0gICAgICAgICAgICBbW3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9uXSwgW3NlbGYg
bm9kZU5hbWVdLCBfaW50ZXJuYWwsIHZhbHVlXTsKLSAgICB9Ci0gICAgcmV0dXJuIFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAIFslQF06ICVwPiIsCi0gICAgICAgIFtbc2VsZiBjbGFz
c10gZGVzY3JpcHRpb25dLCBbc2VsZiBub2RlTmFtZV0sIF9pbnRlcm5hbF07Ci19Ci0KLS0gKE5T
U3RyaW5nICopbm9kZU5hbWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2RlTmFtZSgp
OwotfQotCi0tIChOU1N0cmluZyAqKW5vZGVWYWx1ZQotewotICAgIC8vIERvY3VtZW50YXRpb24g
c2F5cyB3ZSBjYW4gcmFpc2UgYSBET01TVFJJTkdfU0laRV9FUlIuCi0gICAgLy8gSG93ZXZlciwg
dGhlIGxvd2VyIGxheWVyIGRvZXMgbm90IHJlcG9ydCB0aGF0IGVycm9yIHVwIHRvIHVzLgotICAg
IHJldHVybiBbc2VsZiBfbm9kZV0tPm5vZGVWYWx1ZSgpOwotfQotCi0tICh2b2lkKXNldE5vZGVW
YWx1ZTooTlNTdHJpbmcgKilzdHJpbmcKLXsKLSAgICBBU1NFUlQoc3RyaW5nKTsKLSAgICAKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfbm9kZV0tPnNldE5vZGVWYWx1ZShz
dHJpbmcsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh1bnNpZ25lZCBz
aG9ydClub2RlVHlwZQotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPm5vZGVUeXBlKCk7Ci19
Ci0KLS0gKERPTU5vZGUgKilwYXJlbnROb2RlCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2Rl
V2l0aDpbc2VsZiBfbm9kZV0tPnBhcmVudE5vZGUoKV07Ci19Ci0KLS0gKERPTU5vZGVMaXN0ICop
Y2hpbGROb2RlcwotewotICAgIHJldHVybiBbRE9NTm9kZUxpc3QgX25vZGVMaXN0V2l0aDpbc2Vs
ZiBfbm9kZV0tPmNoaWxkTm9kZXMoKS5nZXQoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilmaXJzdENo
aWxkCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPmZpcnN0
Q2hpbGQoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilsYXN0Q2hpbGQKLXsKLSAgICByZXR1cm4gW0RP
TU5vZGUgX25vZGVXaXRoOltzZWxmIF9ub2RlXS0+bGFzdENoaWxkKCldOwotfQotCi0tIChET01O
b2RlICopcHJldmlvdXNTaWJsaW5nCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpb
c2VsZiBfbm9kZV0tPnByZXZpb3VzU2libGluZygpXTsKLX0KLQotLSAoRE9NTm9kZSAqKW5leHRT
aWJsaW5nCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPm5l
eHRTaWJsaW5nKCldOwotfQotCi0tIChET01OYW1lZE5vZGVNYXAgKilhdHRyaWJ1dGVzCi17Ci0g
ICAgLy8gRE9NIGxldmVsIDIgY29yZSBzcGVjaWZpY2F0aW9uIHNheXM6IAotICAgIC8vIEEgTmFt
ZWROb2RlTWFwIGNvbnRhaW5pbmcgdGhlIGF0dHJpYnV0ZXMgb2YgdGhpcyBub2RlIChpZiBpdCBp
cyBhbiBFbGVtZW50KSBvciBudWxsIG90aGVyd2lzZS4KLSAgICByZXR1cm4gbmlsOwotfQotCi0t
IChET01Eb2N1bWVudCAqKW93bmVyRG9jdW1lbnQKLXsKLSAgICByZXR1cm4gW0RPTURvY3VtZW50
IF9kb2N1bWVudFdpdGg6W3NlbGYgX25vZGVdLT5kb2N1bWVudCgpXTsKLX0KLQotLSAoRE9NTm9k
ZSAqKWluc2VydEJlZm9yZTooRE9NTm9kZSAqKW5ld0NoaWxkIDooRE9NTm9kZSAqKXJlZkNoaWxk
Ci17Ci0gICAgQVNTRVJUKG5ld0NoaWxkKTsKLSAgICBBU1NFUlQocmVmQ2hpbGQpOwotCi0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKFtzZWxmIF9ub2RlXS0+aW5zZXJ0QmVmb3Jl
KFtuZXdDaGlsZCBfbm9kZV0sIFtyZWZDaGlsZCBfbm9kZV0sIGVjKSkKLSAgICAgICAgcmV0dXJu
IG5ld0NoaWxkOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIG5pbDsKLX0K
LQotLSAoRE9NTm9kZSAqKXJlcGxhY2VDaGlsZDooRE9NTm9kZSAqKW5ld0NoaWxkIDooRE9NTm9k
ZSAqKW9sZENoaWxkCi17Ci0gICAgQVNTRVJUKG5ld0NoaWxkKTsKLSAgICBBU1NFUlQob2xkQ2hp
bGQpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKFtzZWxmIF9ub2RlXS0+
cmVwbGFjZUNoaWxkKFtuZXdDaGlsZCBfbm9kZV0sIFtvbGRDaGlsZCBfbm9kZV0sIGVjKSkKLSAg
ICAgICAgcmV0dXJuIG9sZENoaWxkOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0
dXJuIG5pbDsKLX0KLQotLSAoRE9NTm9kZSAqKXJlbW92ZUNoaWxkOihET01Ob2RlICopb2xkQ2hp
bGQKLXsKLSAgICBBU1NFUlQob2xkQ2hpbGQpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgaWYgKFtzZWxmIF9ub2RlXS0+cmVtb3ZlQ2hpbGQoW29sZENoaWxkIF9ub2RlXSwgZWMp
KQotICAgICAgICByZXR1cm4gb2xkQ2hpbGQ7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAg
ICByZXR1cm4gbmlsOwotfQotCi0tIChET01Ob2RlICopYXBwZW5kQ2hpbGQ6KERPTU5vZGUgKilu
ZXdDaGlsZAotewotICAgIEFTU0VSVChuZXdDaGlsZCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBpZiAoW3NlbGYgX25vZGVdLT5hcHBlbmRDaGlsZChbbmV3Q2hpbGQgX25vZGVd
LCBlYykpCi0gICAgICAgIHJldHVybiBuZXdDaGlsZDsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKEJPT0wpaGFzQ2hpbGROb2RlcwotewotICAgIHJl
dHVybiBbc2VsZiBfbm9kZV0tPmhhc0NoaWxkTm9kZXMoKTsKLX0KLQotLSAoRE9NTm9kZSAqKWNs
b25lTm9kZTooQk9PTClkZWVwCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2Vs
ZiBfbm9kZV0tPmNsb25lTm9kZShkZWVwKS5nZXQoKV07Ci19Ci0KLS0gKHZvaWQpbm9ybWFsaXpl
Ci17Ci0gICAgW3NlbGYgX25vZGVdLT5ub3JtYWxpemUoKTsKLX0KLQotLSAoQk9PTClpc1N1cHBv
cnRlZDooTlNTdHJpbmcgKilmZWF0dXJlIDooTlNTdHJpbmcgKil2ZXJzaW9uCi17Ci0gICAgQVNT
RVJUKGZlYXR1cmUpOwotICAgIEFTU0VSVCh2ZXJzaW9uKTsKLQotICAgIHJldHVybiBbc2VsZiBf
bm9kZV0tPmlzU3VwcG9ydGVkKGZlYXR1cmUsIHZlcnNpb24pOwotfQotCi0tIChOU1N0cmluZyAq
KW5hbWVzcGFjZVVSSQotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPm5hbWVzcGFjZVVSSSgp
OwotfQotCi0tIChOU1N0cmluZyAqKXByZWZpeAotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0t
PnByZWZpeCgpOwotfQotCi0tICh2b2lkKXNldFByZWZpeDooTlNTdHJpbmcgKilwcmVmaXgKLXsK
LSAgICBBU1NFUlQocHJlZml4KTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFN0
cmluZyBwcmVmaXhTdHIocHJlZml4KTsKLSAgICBbc2VsZiBfbm9kZV0tPnNldFByZWZpeChwcmVm
aXhTdHIuaW1wbCgpLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoTlNT
dHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5sb2NhbE5hbWUo
KTsKLX0KLQotLSAoQk9PTCloYXNBdHRyaWJ1dGVzCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2Rl
XS0+aGFzQXR0cmlidXRlcygpOwotfQotCi0tIChCT09MKWlzU2FtZU5vZGU6KERPTU5vZGUgKilv
dGhlcgotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmlzU2FtZU5vZGUoW290aGVyIF9ub2Rl
XSk7Ci19Ci0KLS0gKEJPT0wpaXNFcXVhbE5vZGU6KERPTU5vZGUgKilvdGhlcgotewotICAgIHJl
dHVybiBbc2VsZiBfbm9kZV0tPmlzRXF1YWxOb2RlKFtvdGhlciBfbm9kZV0pOwotfQotCi0tIChC
T09MKWlzRGVmYXVsdE5hbWVzcGFjZTooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkKLXsKLSAgICBy
ZXR1cm4gW3NlbGYgX25vZGVdLT5pc0RlZmF1bHROYW1lc3BhY2UobmFtZXNwYWNlVVJJKTsKLX0K
LQotLSAoTlNTdHJpbmcgKilsb29rdXBQcmVmaXg6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJCi17
Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bG9va3VwUHJlZml4KG5hbWVzcGFjZVVSSSk7Ci19
Ci0KLS0gKE5TU3RyaW5nICopbG9va3VwTmFtZXNwYWNlVVJJOihOU1N0cmluZyAqKXByZWZpeAot
ewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmxvb2t1cE5hbWVzcGFjZVVSSShwcmVmaXgpOwot
fQotCi0tIChOU1N0cmluZyAqKXRleHRDb250ZW50Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2Rl
XS0+dGV4dENvbnRlbnQoKTsKLX0KLQotLSAodm9pZClzZXRUZXh0Q29udGVudDooTlNTdHJpbmcg
Kil0ZXh0Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX25vZGVdLT5z
ZXRUZXh0Q29udGVudCh0ZXh0LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQot
LSAoTlNSZWN0KWJvdW5kaW5nQm94Ci17Ci0gICAgV2ViQ29yZTo6UmVuZGVyT2JqZWN0ICpyZW5k
ZXJlciA9IFtzZWxmIF9ub2RlXS0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIpCi0gICAg
ICAgIHJldHVybiByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKLSAgICByZXR1
cm4gTlNaZXJvUmVjdDsKLX0KLQotLSAoTlNBcnJheSAqKWxpbmVCb3hSZWN0cwotewotICAgIFdl
YkNvcmU6OlJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBbc2VsZiBfbm9kZV0tPnJlbmRlcmVyKCk7
Ci0gICAgaWYgKHJlbmRlcmVyKSB7Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5ICpyZXN1bHRzID0g
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07Ci0gICAgICAgIERlcHJlY2F0ZWRWYWx1ZUxp
c3Q8SW50UmVjdD4gcmVjdHMgPSByZW5kZXJlci0+bGluZUJveFJlY3RzKCk7Ci0gICAgICAgIGlm
ICghcmVjdHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBmb3IgKERlcHJlY2F0ZWRWYWx1ZUxp
c3Q8SW50UmVjdD46OkNvbnN0SXRlcmF0b3IgaXQgPSByZWN0cy5iZWdpbigpOyBpdCAhPSByZWN0
cy5lbmQoKTsgKytpdCkKLSAgICAgICAgICAgICAgICBbcmVzdWx0cyBhZGRPYmplY3Q6W05TVmFs
dWUgdmFsdWVXaXRoUmVjdDoqaXRdXTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gW3Jlc3Vs
dHMgYXV0b3JlbGVhc2VdOwotICAgIH0KLSAgICByZXR1cm4gbmlsOwotfQotCi1AZW5kCi0KIHN0
YXRpYyB2b2lkIGFkZEVsZW1lbnRDbGFzcyhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWcsIENsYXNz
IG9iakNDbGFzcykKIHsKICAgICBlbGVtZW50Q2xhc3NNYXAtPnNldCh0YWcubG9jYWxOYW1lKCku
aW1wbCgpLCBvYmpDQ2xhc3MpOwpAQCAtNjY0LDk4ICs0MDYsNiBAQCBzdGF0aWMgQ2xhc3MgZWxl
bWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogLy8gRE9NTmFtZWROb2RlTWFwCiAKLUBpbXBsZW1lbnRhdGlvbiBET01OYW1lZE5vZGVN
YXAKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBE
T01fY2FzdDxOYW1lZE5vZGVNYXAgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAg
W3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgaWYgKF9pbnRl
cm5hbCkgewotICAgICAgICBET01fY2FzdDxOYW1lZE5vZGVNYXAgKj4oX2ludGVybmFsKS0+ZGVy
ZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQotLSAoTmFtZWROb2RlTWFw
ICopX25hbWVkTm9kZU1hcAotewotICAgIHJldHVybiBET01fY2FzdDxOYW1lZE5vZGVNYXAgKj4o
X2ludGVybmFsKTsKLX0KLQotLSAoRE9NTm9kZSAqKWdldE5hbWVkSXRlbTooTlNTdHJpbmcgKilu
YW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0
aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+Z2V0TmFtZWRJdGVtKG5hbWUpLmdldCgpXTsKLX0KLQot
LSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbTooRE9NTm9kZSAqKWFyZwotewotICAgIEFTU0VSVChh
cmcpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RP
TU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5zZXROYW1lZEl0ZW0oW2FyZyBf
bm9kZV0sIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUgKilyZW1vdmVOYW1lZEl0ZW06
KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLQotICAgIGludCBleGNlcHRp
b24gPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBf
bmFtZWROb2RlTWFwXS0+cmVtb3ZlTmFtZWRJdGVtKG5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldOwot
ICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LS0gKERPTU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleAotewotICAgIHJldHVybiBbRE9NTm9k
ZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPml0ZW0oaW5kZXgpLmdldCgpXTsKLX0K
LQotLSAodW5zaWduZWQpbGVuZ3RoCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9uYW1lZE5vZGVNYXBd
LT5sZW5ndGgoKTsKLX0KLQotLSAoRE9NTm9kZSAqKWdldE5hbWVkSXRlbU5TOihOU1N0cmluZyAq
KW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgaWYgKCFuYW1lc3Bh
Y2VVUkkgfHwgIWxvY2FsTmFtZSkgewotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQotICAg
IHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPmdldE5hbWVk
SXRlbU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKS5nZXQoKV07Ci19Ci0KLS0gKERPTU5vZGUg
KilzZXROYW1lZEl0ZW1OUzooRE9NTm9kZSAqKWFyZwotewotICAgIEFTU0VSVChhcmcpOwotCi0g
ICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25v
ZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5zZXROYW1lZEl0ZW1OUyhbYXJnIF9ub2RlXSwg
ZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbU5TOihOU1N0
cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJU
KG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0
aW9uID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYg
X25hbWVkTm9kZU1hcF0tPnJlbW92ZU5hbWVkSXRlbU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1l
LCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi1AZW5kCi0KIEBpbXBsZW1lbnRhdGlvbiBET01OYW1lZE5v
ZGVNYXAgKFdlYkNvcmVJbnRlcm5hbCkKIAogLSAoaWQpX2luaXRXaXRoTmFtZWROb2RlTWFwOihO
YW1lZE5vZGVNYXAgKilpbXBsCkBAIC03ODcsNDQgKzQzNyw5IEBAIHN0YXRpYyBDbGFzcyBlbGVt
ZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAvLyBET01Ob2RlTGlzdAogCi1AaW1wbGVtZW50YXRpb24gRE9NTm9kZUxpc3QKK0BpbXBs
ZW1lbnRhdGlvbiBET01Ob2RlTGlzdCAoV2ViQ29yZUludGVybmFsKQogCi0tICh2b2lkKWRlYWxs
b2MKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5vZGVMaXN0ICo+
KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQot
LSAodm9pZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nh
c3Q8Tm9kZUxpc3QgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGZp
bmFsaXplXTsKLX0KLQotLSAoTm9kZUxpc3QgKilfbm9kZUxpc3QKLXsKLSAgICByZXR1cm4gRE9N
X2Nhc3Q8Tm9kZUxpc3QgKj4oX2ludGVybmFsKTsKLX0KLQotLSAoRE9NTm9kZSAqKWl0ZW06KHVu
c2lnbmVkKWluZGV4Ci17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9k
ZUxpc3RdLT5pdGVtKGluZGV4KV07Ci19Ci0KLS0gKHVuc2lnbmVkKWxlbmd0aAotewotICAgIHJl
dHVybiBbc2VsZiBfbm9kZUxpc3RdLT5sZW5ndGgoKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gRE9NTm9kZUxpc3QgKFdlYkNvcmVJbnRlcm5hbCkKLQotLSAoaWQpX2luaXRXaXRoTm9k
ZUxpc3Q6KE5vZGVMaXN0ICopaW1wbAorLSAoaWQpX2luaXRXaXRoTm9kZUxpc3Q6KE5vZGVMaXN0
ICopaW1wbAogewogICAgIEFTU0VSVChpbXBsKTsKIApAQCAtODUzLDU5ICs0NjgsNiBAQCBzdGF0
aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogLy8gRE9NSW1wbGVtZW50YXRpb24KIAotQGltcGxlbWVudGF0aW9u
IERPTUltcGxlbWVudGF0aW9uCi0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJu
YWwpCi0gICAgICAgIERPTV9jYXN0PERPTUltcGxlbWVudGF0aW9uRnJvbnQgKj4oX2ludGVybmFs
KS0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUK
LXsKLSAgICBpZiAoX2ludGVybmFsKQotICAgICAgICBET01fY2FzdDxET01JbXBsZW1lbnRhdGlv
bkZyb250ICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0K
LQotLSAoQk9PTCloYXNGZWF0dXJlOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0cmluZyAqKXZl
cnNpb24KLXsKLSAgICBBU1NFUlQoZmVhdHVyZSk7Ci0gICAgQVNTRVJUKHZlcnNpb24pOwotCi0g
ICAgcmV0dXJuIFtzZWxmIF9ET01JbXBsZW1lbnRhdGlvbl0tPmhhc0ZlYXR1cmUoZmVhdHVyZSwg
dmVyc2lvbik7Ci19Ci0KLS0gKERPTURvY3VtZW50VHlwZSAqKWNyZWF0ZURvY3VtZW50VHlwZToo
TlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKilwdWJsaWNJZCA6KE5TU3RyaW5n
ICopc3lzdGVtSWQKLXsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7Ci0gICAgQVNTRVJUKHB1
YmxpY0lkKTsKLSAgICBBU1NFUlQoc3lzdGVtSWQpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgUmVmUHRyPERvY3VtZW50VHlwZT4gaW1wbCA9IFtzZWxmIF9ET01JbXBsZW1lbnRh
dGlvbl0tPmNyZWF0ZURvY3VtZW50VHlwZShxdWFsaWZpZWROYW1lLCBwdWJsaWNJZCwgc3lzdGVt
SWQsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxET01Eb2N1bWVudFR5cGUgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGwuZ2V0KCldKTsKLX0K
LQotLSAoRE9NRG9jdW1lbnQgKiljcmVhdGVEb2N1bWVudDooTlNTdHJpbmcgKiluYW1lc3BhY2VV
UkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihET01Eb2N1bWVudFR5cGUgKilkb2N0eXBl
Ci17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUp
OwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPERvY3VtZW50PiBpbXBs
ID0gW3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+Y3JlYXRlRG9jdW1lbnQobmFtZXNwYWNlVVJJ
LCBxdWFsaWZpZWROYW1lLCBbZG9jdHlwZSBfZG9jdW1lbnRUeXBlXSwgZWMpOwotICAgIHJhaXNl
T25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURvY3VtZW50ICo+KFtE
T01Ob2RlIF9ub2RlV2l0aDppbXBsLmdldCgpXSk7Ci19Ci0KLS0gKERPTUhUTUxEb2N1bWVudCAq
KWNyZWF0ZUhUTUxEb2N1bWVudDooTlNTdHJpbmcgKil0aXRsZQotewotICAgIFJlZlB0cjxIVE1M
RG9jdW1lbnQ+IGltcGwgPSBbc2VsZiBfRE9NSW1wbGVtZW50YXRpb25dLT5jcmVhdGVIVE1MRG9j
dW1lbnQodGl0bGUpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01IVE1MRG9jdW1lbnQgKj4o
W0RPTU5vZGUgX25vZGVXaXRoOmltcGwuZ2V0KCldKTsKLX0KLUBlbmQKIAogQGltcGxlbWVudGF0
aW9uIERPTUltcGxlbWVudGF0aW9uIChET01JbXBsZW1lbnRhdGlvbkNTUykKIApAQCAtOTU4LDEw
ICs1MjAsNiBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRE9NRG9jdW1lbnRGcmFnbWVudAog
Ci1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnRGcmFnbWVudAotCi1AZW5kCi0KIEBpbXBsZW1l
bnRhdGlvbiBET01Eb2N1bWVudEZyYWdtZW50IChXZWJDb3JlSW50ZXJuYWwpCiAKICsgKERPTURv
Y3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVudFdpdGg6KERvY3VtZW50RnJhZ21lbnQg
KilpbXBsCkBAIC05NzksMTQ4ICs1MzcsNiBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNv
bnN0IEF0b21pY1N0CiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRE9N
RG9jdW1lbnQKIAotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50Ci0KLS0gKERPTU5vZGUgKilh
ZG9wdE5vZGU6KERPTU5vZGUgKilzb3VyY2UKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50
XS0+YWRvcHROb2RlKFtzb3VyY2UgX25vZGVdLCBlYykuZ2V0KCldOwotICAgIHJhaXNlT25ET01F
cnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRG9jdW1lbnRUeXBlICop
ZG9jdHlwZQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudFR5cGUgKj4oW0RP
TU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmRvY3R5cGUoKV0pOwotfQotCi0tIChE
T01JbXBsZW1lbnRhdGlvbiAqKWltcGxlbWVudGF0aW9uCi17Ci0gICAgcmV0dXJuIFtET01JbXBs
ZW1lbnRhdGlvbiBfRE9NSW1wbGVtZW50YXRpb25XaXRoOmltcGxlbWVudGF0aW9uRnJvbnQoW3Nl
bGYgX2RvY3VtZW50XSldOwotfQotCi0tIChET01FbGVtZW50ICopZG9jdW1lbnRFbGVtZW50Ci17
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRo
OltzZWxmIF9kb2N1bWVudF0tPmRvY3VtZW50RWxlbWVudCgpXSk7Ci19Ci0KLS0gKERPTUVsZW1l
bnQgKiljcmVhdGVFbGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWUKLXsKLSAgICBBU1NFUlQodGFn
TmFtZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01FbGVtZW50ICpyZXN1
bHQgPSBzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBf
ZG9jdW1lbnRdLT5jcmVhdGVFbGVtZW50KHRhZ05hbWUsIGVjKS5nZXQoKV0pOwotICAgIHJhaXNl
T25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRG9jdW1lbnRG
cmFnbWVudCAqKWNyZWF0ZURvY3VtZW50RnJhZ21lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RE9NRG9jdW1lbnRGcmFnbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3Vt
ZW50XS0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLmdldCgpXSk7Ci19Ci0KLS0gKERPTVRleHQg
KiljcmVhdGVUZXh0Tm9kZTooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01UZXh0ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2Vs
ZiBfZG9jdW1lbnRdLT5jcmVhdGVUZXh0Tm9kZShkYXRhKS5nZXQoKV0pOwotfQotCi0tIChET01D
b21tZW50ICopY3JlYXRlQ29tbWVudDooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRh
dGEpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Db21tZW50ICo+KFtET01Ob2RlIF9ub2Rl
V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDb21tZW50KGRhdGEpLmdldCgpXSk7Ci19Ci0K
LS0gKERPTUNEQVRBU2VjdGlvbiAqKWNyZWF0ZUNEQVRBU2VjdGlvbjooTlNTdHJpbmcgKilkYXRh
Ci17Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTUNE
QVRBU2VjdGlvbiAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RE9NQ0RBVEFTZWN0aW9uICo+KFtET01O
b2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDREFUQVNlY3Rpb24oZGF0YSwg
ZXhjZXB0aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKWNyZWF0
ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbjooTlNTdHJpbmcgKil0YXJnZXQgOihOU1N0cmluZyAqKWRh
dGEKLXsKLSAgICBBU1NFUlQodGFyZ2V0KTsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgaW50IGV4
Y2VwdGlvbiA9IDA7Ci0gICAgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICpyZXN1bHQgPSBzdGF0
aWNfY2FzdDxET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKj4oW0RPTU5vZGUgX25vZGVXaXRoOltz
ZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbih0YXJnZXQsIGRhdGEs
IGV4Y2VwdGlvbikuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01BdHRyICopY3JlYXRlQXR0cmlidXRlOihOU1N0
cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7
Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9kb2N1bWVu
dF0tPmNyZWF0ZUF0dHJpYnV0ZShuYW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9u
RE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01FbnRp
dHlSZWZlcmVuY2UgKiljcmVhdGVFbnRpdHlSZWZlcmVuY2U6KE5TU3RyaW5nICopbmFtZQotewot
ICAgIEFTU0VSVChuYW1lKTsKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01FbnRpdHlS
ZWZlcmVuY2UgKnJlc3VsdCA9IHN0YXRpY19jYXN0PERPTUVudGl0eVJlZmVyZW5jZSAqPihbRE9N
Tm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRW50aXR5UmVmZXJlbmNlKG5h
bWUsIGV4Y2VwdGlvbikuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlU
YWdOYW1lOihOU1N0cmluZyAqKXRhZ25hbWUKLXsKLSAgICBBU1NFUlQodGFnbmFtZSk7Ci0gICAg
cmV0dXJuIFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOltzZWxmIF9kb2N1bWVudF0tPmdldEVs
ZW1lbnRzQnlUYWdOYW1lKHRhZ25hbWUpLmdldCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKWltcG9y
dE5vZGU6KERPTU5vZGUgKilpbXBvcnRlZE5vZGUgOihCT09MKWRlZXAKLXsKLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6
W3NlbGYgX2RvY3VtZW50XS0+aW1wb3J0Tm9kZShbaW1wb3J0ZWROb2RlIF9ub2RlXSwgZGVlcCwg
ZWMpLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50TlM6KE5TU3RyaW5nICopbmFtZXNw
YWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFj
ZVVSSSk7Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9k
b2N1bWVudF0tPmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGVj
KS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RE9NRWxlbWVudCAqPihyZXN1bHQpOwotfQotCi0tIChET01BdHRyICopY3JlYXRlQXR0cmli
dXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1l
Ci17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUp
OwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0
dHIgX2F0dHJXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUF0dHJpYnV0ZU5TKG5hbWVzcGFj
ZVVSSSwgcXVhbGlmaWVkTmFtZSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVy
cm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZUxpc3Qg
KilnZXRFbGVtZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3Ry
aW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJU
KGxvY2FsTmFtZSk7Ci0KLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3Nl
bGYgX2RvY3VtZW50XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhuYW1lc3BhY2VVUkksIGxvY2Fs
TmFtZSkuZ2V0KCldOwotfQotCi0tIChET01FbGVtZW50ICopZ2V0RWxlbWVudEJ5SWQ6KE5TU3Ry
aW5nICopZWxlbWVudElkCi17Ci0gICAgQVNTRVJUKGVsZW1lbnRJZCk7Ci0KLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3Vt
ZW50XS0+Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKV0pOwotfQotCi1AZW5kCi0KIEBpbXBsZW1l
bnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRSYW5nZSkKIAogLSAoRE9NUmFuZ2UgKilj
cmVhdGVSYW5nZQpAQCAtMTE3OCwxMjIgKzU5NCwxMCBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENs
YXNzKGNvbnN0IEF0b21pY1N0CiAKIEBlbmQKIAotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS8vIERPTUNoYXJhY3RlckRhdGEKLQotQGltcGxlbWVudGF0aW9uIERPTUNoYXJh
Y3RlckRhdGEKLQotLSAoQ2hhcmFjdGVyRGF0YSAqKV9jaGFyYWN0ZXJEYXRhCi17Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PENoYXJhY3RlckRhdGEgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJu
YWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgLy8gRG9jdW1lbnRhdGlvbiBz
YXlzIHdlIGNhbiByYWlzZSBhIERPTVNUUklOR19TSVpFX0VSUi4KLSAgICAvLyBIb3dldmVyLCB0
aGUgbG93ZXIgbGF5ZXIgZG9lcyBub3QgcmVwb3J0IHRoYXQgZXJyb3IgdXAgdG8gdXMuCi0gICAg
cmV0dXJuIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+ZGF0YSgpOwotfQotCi0tICh2b2lkKXNldERh
dGE6KE5TU3RyaW5nICopZGF0YQotewotICAgIEFTU0VSVChkYXRhKTsKLSAgICAKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPnNldERhdGEoZGF0
YSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHVuc2lnbmVkKWxlbmd0
aAotewotICAgIHJldHVybiBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPmxlbmd0aCgpOwotfQotCi0t
IChOU1N0cmluZyAqKXN1YnN0cmluZ0RhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKWNv
dW50Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgTlNTdHJpbmcgKnJlc3VsdCA9
IFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+c3Vic3RyaW5nRGF0YShvZmZzZXQsIGNvdW50LCBlYyk7
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2
b2lkKWFwcGVuZERhdGE6KE5TU3RyaW5nICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7Ci0gICAg
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5h
cHBlbmREYXRhKGFyZywgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZv
aWQpaW5zZXJ0RGF0YToodW5zaWduZWQpb2Zmc2V0IDooTlNTdHJpbmcgKilhcmcKLXsKLSAgICBB
U1NFUlQoYXJnKTsKLSAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBf
Y2hhcmFjdGVyRGF0YV0tPmluc2VydERhdGEob2Zmc2V0LCBhcmcsIGVjKTsKLSAgICByYWlzZU9u
RE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKWRlbGV0ZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6
KHVuc2lnbmVkKSBjb3VudAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxm
IF9jaGFyYWN0ZXJEYXRhXS0+ZGVsZXRlRGF0YShvZmZzZXQsIGNvdW50LCBlYyk7Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClyZXBsYWNlRGF0YToodW5zaWduZWQpb2Zm
c2V0IDoodW5zaWduZWQpY291bnQgOihOU1N0cmluZyAqKWFyZwotewotICAgIEFTU0VSVChhcmcp
OwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFd
LT5yZXBsYWNlRGF0YShvZmZzZXQsIGNvdW50LCBhcmcsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwotfQotCi1AZW5kCiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAvLyBET01BdHRyCiAKLUBpbXBsZW1lbnRhdGlvbiBET01BdHRyCi0KLS0gKE5TU3RyaW5nICop
bmFtZQotewotICAgIHJldHVybiBbc2VsZiBfYXR0cl0tPm5vZGVOYW1lKCk7Ci19Ci0KLS0gKEJP
T0wpc3BlY2lmaWVkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9hdHRyXS0+c3BlY2lmaWVkKCk7Ci19
Ci0KLS0gKE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2F0dHJdLT5ub2Rl
VmFsdWUoKTsKLX0KLQotLSAodm9pZClzZXRWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZQotewotICAg
IEFTU0VSVCh2YWx1ZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBf
YXR0cl0tPnNldFZhbHVlKHZhbHVlLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0K
LQotLSAoRE9NRWxlbWVudCAqKW93bmVyRWxlbWVudAotewotICAgIHJldHVybiBbRE9NRWxlbWVu
dCBfZWxlbWVudFdpdGg6W3NlbGYgX2F0dHJdLT5vd25lckVsZW1lbnQoKV07Ci19Ci0KLS0gKERP
TUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZQotewotICAgIHJldHVybiBbRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6IFtzZWxmIF9hdHRyXS0+c3R5bGUoKV07
Ci19Ci0KLUBlbmQKLQogQGltcGxlbWVudGF0aW9uIERPTUF0dHIgKFdlYkNvcmVJbnRlcm5hbCkK
IAogKyAoRE9NQXR0ciAqKV9hdHRyV2l0aDooQXR0ciAqKWltcGwKQEAgLTEzMTEsMTU5ICs2MTUs
NiBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRE9NRWxlbWVudAogCi1AaW1wbGVtZW50YXRp
b24gRE9NRWxlbWVudAotCi0tIChOU1N0cmluZyAqKXRhZ05hbWUKLXsKLSAgICByZXR1cm4gW3Nl
bGYgX2VsZW1lbnRdLT5ub2RlTmFtZSgpOwotfQotCi0tIChET01OYW1lZE5vZGVNYXAgKilhdHRy
aWJ1dGVzCi17Ci0gICAgcmV0dXJuIFtET01OYW1lZE5vZGVNYXAgX25hbWVkTm9kZU1hcFdpdGg6
W3NlbGYgX2VsZW1lbnRdLT5hdHRyaWJ1dGVzKCldOwotfQotCi0tIChOU1N0cmluZyAqKWdldEF0
dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotICAgIHJldHVy
biBbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0ZShuYW1lKTsKLX0KLQotLSAodm9pZClzZXRB
dHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZSA6KE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICBBU1NF
UlQobmFtZSk7Ci0gICAgQVNTRVJUKHZhbHVlKTsKLQotICAgIGludCBleGNlcHRpb24gPSAwOwot
ICAgIFtzZWxmIF9lbGVtZW50XS0+c2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlLCBleGNlcHRpb24p
OwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotfQotCi0tICh2b2lkKXJlbW92ZUF0
dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0gICAgaW50
IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5yZW1vdmVBdHRyaWJ1dGUobmFt
ZSwgZXhjZXB0aW9uKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLX0KLQotLSAo
RE9NQXR0ciAqKWdldEF0dHJpYnV0ZU5vZGU6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VS
VChuYW1lKTsKLQotICAgIHJldHVybiBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2VsZW1lbnRd
LT5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpLmdldCgpXTsKLX0KLQotLSAoRE9NQXR0ciAqKXNldEF0
dHJpYnV0ZU5vZGU6KERPTUF0dHIgKiluZXdBdHRyCi17Ci0gICAgQVNTRVJUKG5ld0F0dHIpOwot
Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIg
X2F0dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+c2V0QXR0cmlidXRlTm9kZShbbmV3QXR0ciBfYXR0
cl0sIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTUF0dHIgKilyZW1vdmVBdHRyaWJ1dGVOb2Rl
OihET01BdHRyICopb2xkQXR0cgotewotICAgIEFTU0VSVChvbGRBdHRyKTsKLQotICAgIGludCBl
eGNlcHRpb24gPSAwOwotICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0aDpb
c2VsZiBfZWxlbWVudF0tPnJlbW92ZUF0dHJpYnV0ZU5vZGUoW29sZEF0dHIgX2F0dHJdLCBleGNl
cHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lOihO
U1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0KLSAgICByZXR1cm4gW0RPTU5v
ZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX2VsZW1lbnRdLT5nZXRFbGVtZW50c0J5VGFnTmFt
ZShuYW1lKS5nZXQoKV07Ci19Ci0KLS0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRlTlM6KE5TU3Ry
aW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICBBU1NFUlQo
bmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQobG9jYWxOYW1lKTsKLQotICAgIHJldHVybiBbc2Vs
ZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKLX0K
LQotLSAodm9pZClzZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0
cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXZhbHVlCi17Ci0gICAgQVNTRVJUKG5h
bWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotICAgIEFTU0VSVCh2YWx1
ZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBbc2VsZiBfZWxlbWVudF0tPnNldEF0
dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgdmFsdWUsIGV4Y2VwdGlvbik7
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci19Ci0KLS0gKHZvaWQpcmVtb3ZlQXR0
cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUK
LXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQobG9jYWxOYW1lKTsKLQot
ICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIFtzZWxmIF9lbGVtZW50XS0+cmVtb3ZlQXR0cmli
dXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIGV4Y2VwdGlvbik7Ci0gICAgcmFpc2VPbkRP
TUVycm9yKGV4Y2VwdGlvbik7Ci19Ci0KLS0gKERPTUF0dHIgKilnZXRBdHRyaWJ1dGVOb2RlTlM6
KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICBB
U1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQobG9jYWxOYW1lKTsKLQotICAgIHJldHVy
biBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2VsZW1lbnRdLT5nZXRBdHRyaWJ1dGVOb2RlTlMo
bmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpLmdldCgpXTsKLX0KLQotLSAoRE9NQXR0ciAqKXNldEF0
dHJpYnV0ZU5vZGVOUzooRE9NQXR0ciAqKW5ld0F0dHIKLXsKLSAgICBBU1NFUlQobmV3QXR0cik7
Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0
ciBfYXR0cldpdGg6W3NlbGYgX2VsZW1lbnRdLT5zZXRBdHRyaWJ1dGVOb2RlTlMoW25ld0F0dHIg
X2F0dHJdLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9u
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRz
QnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5h
bWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQobG9jYWxOYW1lKTsK
LQotICAgIHJldHVybiBbRE9NTm9kZUxpc3QgX25vZGVMaXN0V2l0aDpbc2VsZiBfZWxlbWVudF0t
PmdldEVsZW1lbnRzQnlUYWdOYW1lTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpLmdldCgpXTsK
LX0KLQotLSAoQk9PTCloYXNBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VS
VChuYW1lKTsKLQotICAgIHJldHVybiBbc2VsZiBfZWxlbWVudF0tPmhhc0F0dHJpYnV0ZShuYW1l
KTsKLX0KLQotLSAoQk9PTCloYXNBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkg
OihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAg
IEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50XS0+aGFzQXR0
cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwotfQotCi0tICh2b2lkKWZvY3VzCi17
Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5mb2N1cygpOwotfQotCi0tICh2b2lkKWJsdXIKLXsKLSAg
ICBbc2VsZiBfZWxlbWVudF0tPmJsdXIoKTsKLX0KLQotQGVuZAotCiBAaW1wbGVtZW50YXRpb24g
RE9NRWxlbWVudCAoRE9NRWxlbWVudENTU0lubGluZVN0eWxlKQogCiAtIChET01DU1NTdHlsZURl
Y2xhcmF0aW9uICopc3R5bGUKQEAgLTE1NjEsNzcgKzcxMiwxMCBAQCBzdGF0aWMgQ2xhc3MgZWxl
bWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAKIEBlbmQKIAotLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS8vIERPTVRleHQKLQotQGltcGxlbWVudGF0aW9uIERPTVRleHQKLQot
LSAoVGV4dCAqKV90ZXh0Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHQgKj4oRE9NX2Nh
c3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoRE9NVGV4dCAqKXNwbGl0VGV4dDoodW5z
aWduZWQpb2Zmc2V0Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAq
cmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90ZXh0XS0+c3BsaXRUZXh0KG9mZnNl
dCwgZWMpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxET01UZXh0ICo+KHJlc3VsdCk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS8vIERPTUNvbW1lbnQKLQotQGltcGxlbWVudGF0aW9uIERPTUNvbW1l
bnQKLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9N
Q0RBVEFTZWN0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBET01DREFUQVNlY3Rpb24KLQotQGVuZAog
CiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRE9NRG9jdW1lbnRUeXBl
CiAKLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudFR5cGUKLQotLSAoTlNTdHJpbmcgKiluYW1l
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9kb2N1bWVudFR5cGVdLT5wdWJsaWNJZCgpOwotfQotCi0t
IChET01OYW1lZE5vZGVNYXAgKillbnRpdGllcwotewotICAgIHJldHVybiBbRE9NTmFtZWROb2Rl
TWFwIF9uYW1lZE5vZGVNYXBXaXRoOltzZWxmIF9kb2N1bWVudFR5cGVdLT5lbnRpdGllcygpXTsK
LX0KLQotLSAoRE9NTmFtZWROb2RlTWFwICopbm90YXRpb25zCi17Ci0gICAgcmV0dXJuIFtET01O
YW1lZE5vZGVNYXAgX25hbWVkTm9kZU1hcFdpdGg6W3NlbGYgX2RvY3VtZW50VHlwZV0tPm5vdGF0
aW9ucygpXTsKLX0KLQotLSAoTlNTdHJpbmcgKilwdWJsaWNJZAotewotICAgIHJldHVybiBbc2Vs
ZiBfZG9jdW1lbnRUeXBlXS0+cHVibGljSWQoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilzeXN0ZW1J
ZAotewotICAgIHJldHVybiBbc2VsZiBfZG9jdW1lbnRUeXBlXS0+c3lzdGVtSWQoKTsKLX0KLQot
LSAoTlNTdHJpbmcgKilpbnRlcm5hbFN1YnNldAotewotICAgIHJldHVybiBbc2VsZiBfZG9jdW1l
bnRUeXBlXS0+aW50ZXJuYWxTdWJzZXQoKTsKLX0KLQotQGVuZAotCiBAaW1wbGVtZW50YXRpb24g
RE9NRG9jdW1lbnRUeXBlIChXZWJDb3JlSW50ZXJuYWwpCiAKIC0gKERvY3VtZW50VHlwZSAqKV9k
b2N1bWVudFR5cGUKQEAgLTE2NDIsOTMgKzcyNiw2IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xh
c3MoY29uc3QgQXRvbWljU3QKIEBlbmQKIAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLS8vIERPTU5vdGF0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob3RhdGlvbgotCi0t
IChOb3RhdGlvbiAqKV9ub3RhdGlvbgotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxOb3RhdGlv
biAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChOU1N0cmluZyAqKXB1
YmxpY0lkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub3RhdGlvbl0tPnB1YmxpY0lkKCk7Ci19Ci0K
LS0gKE5TU3RyaW5nICopc3lzdGVtSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vdGF0aW9uXS0+
c3lzdGVtSWQoKTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotLy8gRE9NRW50aXR5Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01FbnRpdHkKLQotLSAoRW50
aXR5ICopX2VudGl0eQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbnRpdHkgKj4oRE9NX2Nh
c3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKilwdWJsaWNJZAotewot
ICAgIHJldHVybiBbc2VsZiBfZW50aXR5XS0+cHVibGljSWQoKTsKLX0KLQotLSAoTlNTdHJpbmcg
KilzeXN0ZW1JZAotewotICAgIHJldHVybiBbc2VsZiBfZW50aXR5XS0+c3lzdGVtSWQoKTsKLX0K
LQotLSAoTlNTdHJpbmcgKilub3RhdGlvbk5hbWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2VudGl0
eV0tPm5vdGF0aW9uTmFtZSgpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0vLyBET01FbnRpdHlSZWZlcmVuY2UKLQotQGltcGxlbWVudGF0aW9uIERP
TUVudGl0eVJlZmVyZW5jZQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0vLyBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KLQotQGltcGxlbWVudGF0aW9uIERP
TVByb2Nlc3NpbmdJbnN0cnVjdGlvbgotCi0tIChQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKilfcHJv
Y2Vzc2luZ0luc3RydWN0aW9uCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbiAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChOU1N0
cmluZyAqKXRhcmdldAotewotICAgIHJldHVybiBbc2VsZiBfcHJvY2Vzc2luZ0luc3RydWN0aW9u
XS0+dGFyZ2V0KCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopZGF0YQotewotICAgIHJldHVybiBbc2Vs
ZiBfcHJvY2Vzc2luZ0luc3RydWN0aW9uXS0+ZGF0YSgpOwotfQotCi0tICh2b2lkKXNldERhdGE6
KE5TU3RyaW5nICopZGF0YQotewotICAgIEFTU0VSVChkYXRhKTsKLQotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIFtzZWxmIF9wcm9jZXNzaW5nSW5zdHJ1Y3Rpb25dLT5zZXREYXRhKGRh
dGEsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBET01SYW5nZQogCiBAaW1wbGVtZW50YXRp
b24gRE9NUmFuZ2UKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01BdHRyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUF0dHIuaAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01BdHRyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdl
aW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKworI2ltcG9ydCA8V2ViQ29yZS9E
T01Ob2RlLmg+CisKK0BjbGFzcyBET01FbGVtZW50OworCitAaW50ZXJmYWNlIERPTUF0dHIgOiBE
T01Ob2RlCistIChOU1N0cmluZyAqKW5hbWU7CistIChCT09MKXNwZWNpZmllZDsKKy0gKE5TU3Ry
aW5nICopdmFsdWU7CistICh2b2lkKXNldFZhbHVlOihOU1N0cmluZyAqKXZhbHVlOworLSAoRE9N
RWxlbWVudCAqKW93bmVyRWxlbWVudDsKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01BdHRyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01BdHRy
Lm1tCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUF0dHIubW0JKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBKYW1lcyBHLiBTcGV0aCA8c3BldGhAZW5kLmNvbT4KKyAqIENvcHlyaWdodCAo
QykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJET01BdHRyLmgiCisKKyNpbXBvcnQgIkRPTUludGVy
bmFsLmgiCisjaW1wb3J0ICJBdHRyLmgiCisKKyNpbXBvcnQgIkRPTUVsZW1lbnQuaCIKKyNpbXBv
cnQgIkRPTUNTUy5oIgorLy8jaW1wb3J0ICJET01DU1NTdHlsZURlY2xhcmF0aW9uLmgiCisKK3Vz
aW5nIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGU7CisKK0BpbXBsZW1lbnRhdGlvbiBET01BdHRyCisK
Ky0gKE5TU3RyaW5nICopbmFtZQoreworICAgIHJldHVybiBbc2VsZiBfYXR0cl0tPm5vZGVOYW1l
KCk7Cit9CisKKy0gKEJPT0wpc3BlY2lmaWVkCit7CisgICAgcmV0dXJuIFtzZWxmIF9hdHRyXS0+
c3BlY2lmaWVkKCk7Cit9CisKKy0gKE5TU3RyaW5nICopdmFsdWUKK3sKKyAgICByZXR1cm4gW3Nl
bGYgX2F0dHJdLT5ub2RlVmFsdWUoKTsKK30KKworLSAodm9pZClzZXRWYWx1ZTooTlNTdHJpbmcg
Kil2YWx1ZQoreworICAgIEFTU0VSVCh2YWx1ZSk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKKyAgICBbc2VsZiBfYXR0cl0tPnNldFZhbHVlKHZhbHVlLCBlYyk7CisgICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKK30KKworLSAoRE9NRWxlbWVudCAqKW93bmVyRWxlbWVudAoreworICAgIHJl
dHVybiBbRE9NRWxlbWVudCBfZWxlbWVudFdpdGg6W3NlbGYgX2F0dHJdLT5vd25lckVsZW1lbnQo
KV07Cit9CisKKy0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZQoreworICAgIHJldHVy
biBbRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6IFtzZWxmIF9h
dHRyXS0+c3R5bGUoKV07Cit9CisKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01DREFUQVNlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
Q0RBVEFTZWN0aW9uLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
Q0RBVEFTZWN0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0Bn
bWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKworI2ltcG9ydCA8V2ViQ29yZS9ET01UZXh0Lmg+CisKK0BpbnRl
cmZhY2UgRE9NQ0RBVEFTZWN0aW9uIDogRE9NVGV4dAorQGVuZApJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTUNEQVRBU2VjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NQ0RBVEFTZWN0aW9uLm1tCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTUNEQVRBU2VjdGlvbi5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IEphbWVzIEcuIFNwZXRo
IDxzcGV0aEBlbmQuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNh
bS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiRE9NQ0RBVEFTZWN0aW9uLmgiCisKK0BpbXBsZW1lbnRhdGlvbiBET01DREFUQVNlY3Rpb24K
K0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DU1MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLmgJKHJldmlzaW9uIDE1ODI4KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0u
d2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMs
NiArMjQsMTAgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKKyNpbXBvcnQgPFdlYkNvcmUvRE9N
RE9NSW1wbGVtZW50YXRpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnQuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvRE9NRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3Qu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NU3R5bGVzaGVldHMuaD4KIAogQGNsYXNzIERPTUNvdW50
ZXI7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ2hhcmFjdGVyRGF0YS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DaGFyYWN0ZXJEYXRhLmgJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ2hhcmFjdGVyRGF0YS5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2
IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW1wb3J0IDxXZWJDb3JlL0RPTU5vZGUuaD4KKworQGludGVyZmFjZSBET01DaGFyYWN0ZXJEYXRh
IDogRE9NTm9kZQorLSAoTlNTdHJpbmcgKilkYXRhOworLSAodm9pZClzZXREYXRhOihOU1N0cmlu
ZyAqKWRhdGE7CistICh1bnNpZ25lZClsZW5ndGg7CistIChOU1N0cmluZyAqKXN1YnN0cmluZ0Rh
dGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKWNvdW50OworLSAodm9pZClhcHBlbmREYXRh
OihOU1N0cmluZyAqKWFyZzsKKy0gKHZvaWQpaW5zZXJ0RGF0YToodW5zaWduZWQpb2Zmc2V0IDoo
TlNTdHJpbmcgKilhcmc7CistICh2b2lkKWRlbGV0ZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVu
c2lnbmVkKSBjb3VudDsKKy0gKHZvaWQpcmVwbGFjZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVu
c2lnbmVkKWNvdW50IDooTlNTdHJpbmcgKilhcmc7CitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NQ2hhcmFjdGVyRGF0YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NQ2hhcmFjdGVyRGF0YS5tbQkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01DaGFyYWN0ZXJEYXRhLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEw
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IEphbWVzIEcuIFNw
ZXRoIDxzcGV0aEBlbmQuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcg
PHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIkRPTUNoYXJhY3RlckRhdGEuaCIKKworI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKKyNpbXBv
cnQgIkNoYXJhY3RlckRhdGEuaCIKKyNpbXBvcnQgIk5vZGUuaCIKKwordXNpbmcgV2ViQ29yZTo6
Q2hhcmFjdGVyRGF0YTsKK3VzaW5nIFdlYkNvcmU6Ok5vZGU7Cit1c2luZyBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlOworCitAaW1wbGVtZW50YXRpb24gRE9NQ2hhcmFjdGVyRGF0YQorCistIChDaGFy
YWN0ZXJEYXRhICopX2NoYXJhY3RlckRhdGEKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2hh
cmFjdGVyRGF0YSAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOworfQorCistIChOU1N0
cmluZyAqKWRhdGEKK3sKKyAgICAvLyBEb2N1bWVudGF0aW9uIHNheXMgd2UgY2FuIHJhaXNlIGEg
RE9NU1RSSU5HX1NJWkVfRVJSLgorICAgIC8vIEhvd2V2ZXIsIHRoZSBsb3dlciBsYXllciBkb2Vz
IG5vdCByZXBvcnQgdGhhdCBlcnJvciB1cCB0byB1cy4KKyAgICByZXR1cm4gW3NlbGYgX2NoYXJh
Y3RlckRhdGFdLT5kYXRhKCk7Cit9CisKKy0gKHZvaWQpc2V0RGF0YTooTlNTdHJpbmcgKilkYXRh
Cit7CisgICAgQVNTRVJUKGRhdGEpOworICAgIAorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+c2V0RGF0YShkYXRhLCBlYyk7CisgICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKK30KKworLSAodW5zaWduZWQpbGVuZ3RoCit7CisgICAgcmV0dXJuIFtz
ZWxmIF9jaGFyYWN0ZXJEYXRhXS0+bGVuZ3RoKCk7Cit9CisKKy0gKE5TU3RyaW5nICopc3Vic3Ry
aW5nRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpY291bnQKK3sKKyAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICBOU1N0cmluZyAqcmVzdWx0ID0gW3NlbGYgX2NoYXJhY3RlckRh
dGFdLT5zdWJzdHJpbmdEYXRhKG9mZnNldCwgY291bnQsIGVjKTsKKyAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKHZvaWQpYXBwZW5kRGF0YTooTlNT
dHJpbmcgKilhcmcKK3sKKyAgICBBU1NFUlQoYXJnKTsKKyAgICAKKyAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPmFwcGVuZERhdGEoYXJnLCBlYyk7
CisgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKworLSAodm9pZClpbnNlcnREYXRhOih1bnNp
Z25lZClvZmZzZXQgOihOU1N0cmluZyAqKWFyZworeworICAgIEFTU0VSVChhcmcpOworICAgIAor
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+aW5z
ZXJ0RGF0YShvZmZzZXQsIGFyZywgZWMpOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7Cit9CisK
Ky0gKHZvaWQpZGVsZXRlRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpIGNvdW50Cit7
CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5k
ZWxldGVEYXRhKG9mZnNldCwgY291bnQsIGVjKTsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwor
fQorCistICh2b2lkKXJlcGxhY2VEYXRhOih1bnNpZ25lZClvZmZzZXQgOih1bnNpZ25lZCljb3Vu
dCA6KE5TU3RyaW5nICopYXJnCit7CisgICAgQVNTRVJUKGFyZyk7CisKKyAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKKyAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPnJlcGxhY2VEYXRhKG9mZnNl
dCwgY291bnQsIGFyZywgZWMpOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7Cit9CisKK0BlbmQK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Db21tZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNvbW1lbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01Db21tZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5p
ZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKworI2ltcG9ydCA8V2ViQ29yZS9ET01D
aGFyYWN0ZXJEYXRhLmg+CisKK0BpbnRlcmZhY2UgRE9NQ29tbWVudCA6IERPTUNoYXJhY3RlckRh
dGEKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Db21tZW50Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Db21tZW50Lm1tCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNvbW1lbnQubW0JKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiBBcHBsZSBDb21w
dXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBK
YW1lcyBHLiBTcGV0aCA8c3BldGhAZW5kLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11
ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJET01Db21tZW50LmgiCisKK0BpbXBsZW1lbnRhdGlvbiBET01Db21tZW50
CitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ29yZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Db3JlLmgJKHJldmlzaW9uIDE1ODI4KQorKysg
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdl
aW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIzLDIxOCArMjQsMjEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpbXBvcnQg
PFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0Lmg+Ci0KLUBjbGFzcyBET01Eb2N1bWVudDsgCi1AY2xh
c3MgRE9NRG9jdW1lbnRUeXBlOwotQGNsYXNzIERPTUVsZW1lbnQ7Ci1AY2xhc3MgRE9NTmFtZWRO
b2RlTWFwOwotQGNsYXNzIERPTU5vZGVMaXN0OwotCi10eXBlZGVmIHN0cnVjdCBET01PYmplY3RJ
bnRlcm5hbCBET01PYmplY3RJbnRlcm5hbDsKLQotQGludGVyZmFjZSBET01PYmplY3QgOiBXZWJT
Y3JpcHRPYmplY3QgPE5TQ29weWluZz4KLXsKLSAgICBET01PYmplY3RJbnRlcm5hbCAqX2ludGVy
bmFsOwotfQotQGVuZAotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBET01UaW1lU3RhbXA7
Ci0KLWV4dGVybiBOU1N0cmluZyAqIGNvbnN0IERPTUV4Y2VwdGlvbjsKLQotZW51bSB7Ci0gICAg
Ly8KLSAgICAvLyBET00gZXhjZXB0aW9uIGNvZGVzCi0gICAgLy8KLSAgICBET01fSU5ERVhfU0la
RV9FUlIgICAgICAgICAgICAgICAgPSAxLAotICAgIERPTV9ET01TVFJJTkdfU0laRV9FUlIgICAg
ICAgICAgICA9IDIsCi0gICAgRE9NX0hJRVJBUkNIWV9SRVFVRVNUX0VSUiAgICAgICAgID0gMywK
LSAgICBET01fV1JPTkdfRE9DVU1FTlRfRVJSICAgICAgICAgICAgPSA0LAotICAgIERPTV9JTlZB
TElEX0NIQVJBQ1RFUl9FUlIgICAgICAgICA9IDUsCi0gICAgRE9NX05PX0RBVEFfQUxMT1dFRF9F
UlIgICAgICAgICAgID0gNiwKLSAgICBET01fTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSICAg
PSA3LAotICAgIERPTV9OT1RfRk9VTkRfRVJSICAgICAgICAgICAgICAgICA9IDgsCi0gICAgRE9N
X05PVF9TVVBQT1JURURfRVJSICAgICAgICAgICAgID0gOSwKLSAgICBET01fSU5VU0VfQVRUUklC
VVRFX0VSUiAgICAgICAgICAgPSAxMCwKLSAgICBET01fSU5WQUxJRF9TVEFURV9FUlIgICAgICAg
ICAgICAgPSAxMSwKLSAgICBET01fU1lOVEFYX0VSUiAgICAgICAgICAgICAgICAgICAgPSAxMiwK
LSAgICBET01fSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSICAgICAgPSAxMywKLSAgICBET01fTkFN
RVNQQUNFX0VSUiAgICAgICAgICAgICAgICAgPSAxNCwKLSAgICBET01fSU5WQUxJRF9BQ0NFU1Nf
RVJSICAgICAgICAgICAgPSAxNQotfTsKLQotQGludGVyZmFjZSBET01JbXBsZW1lbnRhdGlvbiA6
IERPTU9iamVjdAotLSAoQk9PTCloYXNGZWF0dXJlOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0
cmluZyAqKXZlcnNpb247Ci0tIChET01Eb2N1bWVudFR5cGUgKiljcmVhdGVEb2N1bWVudFR5cGU6
KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICopcHVibGljSWQgOihOU1N0cmlu
ZyAqKXN5c3RlbUlkOwotLSAoRE9NRG9jdW1lbnQgKiljcmVhdGVEb2N1bWVudDooTlNTdHJpbmcg
KiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihET01Eb2N1bWVudFR5
cGUgKilkb2N0eXBlOwotQGVuZAotCi1lbnVtIHsKLSAgICAvLwotICAgIC8vIERPTSBub2RlIHR5
cGVzCi0gICAgLy8KLSAgICBET01fRUxFTUVOVF9OT0RFICAgICAgICAgICAgICAgICAgPSAxLAot
ICAgIERPTV9BVFRSSUJVVEVfTk9ERSAgICAgICAgICAgICAgICA9IDIsCi0gICAgRE9NX1RFWFRf
Tk9ERSAgICAgICAgICAgICAgICAgICAgID0gMywKLSAgICBET01fQ0RBVEFfU0VDVElPTl9OT0RF
ICAgICAgICAgICAgPSA0LAotICAgIERPTV9FTlRJVFlfUkVGRVJFTkNFX05PREUgICAgICAgICA9
IDUsCi0gICAgRE9NX0VOVElUWV9OT0RFICAgICAgICAgICAgICAgICAgID0gNiwKLSAgICBET01f
UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFICAgPSA3LAotICAgIERPTV9DT01NRU5UX05PREUg
ICAgICAgICAgICAgICAgICA9IDgsCi0gICAgRE9NX0RPQ1VNRU5UX05PREUgICAgICAgICAgICAg
ICAgID0gOSwKLSAgICBET01fRE9DVU1FTlRfVFlQRV9OT0RFICAgICAgICAgICAgPSAxMCwKLSAg
ICBET01fRE9DVU1FTlRfRlJBR01FTlRfTk9ERSAgICAgICAgPSAxMSwKLSAgICBET01fTk9UQVRJ
T05fTk9ERSAgICAgICAgICAgICAgICAgPSAxMgotfTsKLQotQGludGVyZmFjZSBET01Ob2RlIDog
RE9NT2JqZWN0Ci0tIChOU1N0cmluZyAqKW5vZGVOYW1lOwotLSAoTlNTdHJpbmcgKilub2RlVmFs
dWU7Ci0tICh2b2lkKXNldE5vZGVWYWx1ZTooTlNTdHJpbmcgKilzdHJpbmc7Ci0tICh1bnNpZ25l
ZCBzaG9ydClub2RlVHlwZTsKLS0gKERPTU5vZGUgKilwYXJlbnROb2RlOwotLSAoRE9NTm9kZUxp
c3QgKiljaGlsZE5vZGVzOwotLSAoRE9NTm9kZSAqKWZpcnN0Q2hpbGQ7Ci0tIChET01Ob2RlICop
bGFzdENoaWxkOwotLSAoRE9NTm9kZSAqKXByZXZpb3VzU2libGluZzsKLS0gKERPTU5vZGUgKilu
ZXh0U2libGluZzsKLS0gKERPTU5hbWVkTm9kZU1hcCAqKWF0dHJpYnV0ZXM7Ci0tIChET01Eb2N1
bWVudCAqKW93bmVyRG9jdW1lbnQ7Ci0tIChET01Ob2RlICopaW5zZXJ0QmVmb3JlOihET01Ob2Rl
ICopbmV3Q2hpbGQgOihET01Ob2RlICopcmVmQ2hpbGQ7Ci0tIChET01Ob2RlICopcmVwbGFjZUNo
aWxkOihET01Ob2RlICopbmV3Q2hpbGQgOihET01Ob2RlICopb2xkQ2hpbGQ7Ci0tIChET01Ob2Rl
ICopcmVtb3ZlQ2hpbGQ6KERPTU5vZGUgKilvbGRDaGlsZDsKLS0gKERPTU5vZGUgKilhcHBlbmRD
aGlsZDooRE9NTm9kZSAqKW5ld0NoaWxkOwotLSAoQk9PTCloYXNDaGlsZE5vZGVzOwotLSAoRE9N
Tm9kZSAqKWNsb25lTm9kZTooQk9PTClkZWVwOwotLSAodm9pZClub3JtYWxpemU7Ci0tIChCT09M
KWlzU3VwcG9ydGVkOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0cmluZyAqKXZlcnNpb247Ci0t
IChOU1N0cmluZyAqKW5hbWVzcGFjZVVSSTsKLS0gKE5TU3RyaW5nICopcHJlZml4OwotLSAodm9p
ZClzZXRQcmVmaXg6KE5TU3RyaW5nICopcHJlZml4OwotLSAoTlNTdHJpbmcgKilsb2NhbE5hbWU7
Ci0tIChCT09MKWhhc0F0dHJpYnV0ZXM7Ci0tIChCT09MKWlzU2FtZU5vZGU6KERPTU5vZGUgKilv
dGhlcjsKLS0gKEJPT0wpaXNFcXVhbE5vZGU6KERPTU5vZGUgKilvdGhlcjsKLS0gKE5TU3RyaW5n
ICopdGV4dENvbnRlbnQ7Ci0tICh2b2lkKXNldFRleHRDb250ZW50OihOU1N0cmluZyAqKXRleHQ7
Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NTm9kZUxpc3QgOiBET01PYmplY3QKLS0gKERPTU5vZGUg
KilpdGVtOih1bnNpZ25lZClpbmRleDsKLS0gKHVuc2lnbmVkKWxlbmd0aDsKLUBlbmQKLQotQGlu
dGVyZmFjZSBET01OYW1lZE5vZGVNYXAgOiBET01PYmplY3QKLS0gKERPTU5vZGUgKilnZXROYW1l
ZEl0ZW06KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTU5vZGUgKilzZXROYW1lZEl0ZW06KERPTU5v
ZGUgKilhcmc7Ci0tIChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVtOihOU1N0cmluZyAqKW5hbWU7
Ci0tIChET01Ob2RlICopaXRlbToodW5zaWduZWQpaW5kZXg7Ci0tICh1bnNpZ25lZClsZW5ndGg7
Ci0tIChET01Ob2RlICopZ2V0TmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDoo
TlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tIChET01Ob2RlICopc2V0TmFtZWRJdGVtTlM6KERPTU5v
ZGUgKilhcmc7Ci0tIChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFt
ZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9N
Q2hhcmFjdGVyRGF0YSA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopZGF0YTsKLS0gKHZvaWQpc2V0
RGF0YTooTlNTdHJpbmcgKilkYXRhOwotLSAodW5zaWduZWQpbGVuZ3RoOwotLSAoTlNTdHJpbmcg
KilzdWJzdHJpbmdEYXRhOih1bnNpZ25lZClvZmZzZXQgOih1bnNpZ25lZCljb3VudDsKLS0gKHZv
aWQpYXBwZW5kRGF0YTooTlNTdHJpbmcgKilhcmc7Ci0tICh2b2lkKWluc2VydERhdGE6KHVuc2ln
bmVkKW9mZnNldCA6KE5TU3RyaW5nICopYXJnOwotLSAodm9pZClkZWxldGVEYXRhOih1bnNpZ25l
ZClvZmZzZXQgOih1bnNpZ25lZCkgY291bnQ7Ci0tICh2b2lkKXJlcGxhY2VEYXRhOih1bnNpZ25l
ZClvZmZzZXQgOih1bnNpZ25lZCljb3VudCA6KE5TU3RyaW5nICopYXJnOwotQGVuZAotCi1AaW50
ZXJmYWNlIERPTUF0dHIgOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKW5hbWU7Ci0tIChCT09MKXNw
ZWNpZmllZDsKLS0gKE5TU3RyaW5nICopdmFsdWU7Ci0tICh2b2lkKXNldFZhbHVlOihOU1N0cmlu
ZyAqKXZhbHVlOwotLSAoRE9NRWxlbWVudCAqKW93bmVyRWxlbWVudDsKLUBlbmQKLQotQGludGVy
ZmFjZSBET01FbGVtZW50IDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKil0YWdOYW1lOwotLSAoTlNT
dHJpbmcgKilnZXRBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKHZvaWQpc2V0QXR0cmli
dXRlOihOU1N0cmluZyAqKW5hbWUgOihOU1N0cmluZyAqKXZhbHVlOwotLSAodm9pZClyZW1vdmVB
dHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTUF0dHIgKilnZXRBdHRyaWJ1dGVOb2Rl
OihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZTooRE9NQXR0
ciAqKW5ld0F0dHI7Ci0tIChET01BdHRyICopcmVtb3ZlQXR0cmlidXRlTm9kZTooRE9NQXR0ciAq
KW9sZEF0dHI7Ci0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lOihOU1N0cmlu
ZyAqKW5hbWU7Ci0tIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVz
cGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAodm9pZClzZXRBdHRyaWJ1dGVOUzoo
TlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0
cmluZyAqKXZhbHVlOwotLSAodm9pZClyZW1vdmVBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1l
c3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKERPTUF0dHIgKilnZXRBdHRyaWJ1
dGVOb2RlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7
Ci0tIChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZU5TOihET01BdHRyICopbmV3QXR0cjsKLS0g
KERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWVOUzooTlNTdHJpbmcgKiluYW1lc3Bh
Y2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKEJPT0wpaGFzQXR0cmlidXRlOihOU1N0
cmluZyAqKW5hbWU7Ci0tIChCT09MKWhhc0F0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFj
ZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAodm9pZClmb2N1czsKLS0gKHZvaWQpYmx1
cjsKLUBlbmQKLQotQGludGVyZmFjZSBET01UZXh0IDogRE9NQ2hhcmFjdGVyRGF0YQotLSAoRE9N
VGV4dCAqKXNwbGl0VGV4dDoodW5zaWduZWQpb2Zmc2V0OwotQGVuZAotCi1AaW50ZXJmYWNlIERP
TUNvbW1lbnQgOiBET01DaGFyYWN0ZXJEYXRhCi1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NQ0RBVEFT
ZWN0aW9uIDogRE9NVGV4dAotQGVuZAotCi1AaW50ZXJmYWNlIERPTURvY3VtZW50VHlwZSA6IERP
TU5vZGUKLS0gKE5TU3RyaW5nICopbmFtZTsKLS0gKERPTU5hbWVkTm9kZU1hcCAqKWVudGl0aWVz
OwotLSAoRE9NTmFtZWROb2RlTWFwICopbm90YXRpb25zOwotLSAoTlNTdHJpbmcgKilwdWJsaWNJ
ZDsKLS0gKE5TU3RyaW5nICopc3lzdGVtSWQ7Ci0tIChOU1N0cmluZyAqKWludGVybmFsU3Vic2V0
OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTU5vdGF0aW9uIDogRE9NTm9kZQotLSAoTlNTdHJpbmcg
KilwdWJsaWNJZDsKLS0gKE5TU3RyaW5nICopc3lzdGVtSWQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2Ug
RE9NRW50aXR5IDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKilwdWJsaWNJZDsKLS0gKE5TU3RyaW5n
ICopc3lzdGVtSWQ7Ci0tIChOU1N0cmluZyAqKW5vdGF0aW9uTmFtZTsKLUBlbmQKLQotQGludGVy
ZmFjZSBET01FbnRpdHlSZWZlcmVuY2UgOiBET01Ob2RlCi1AZW5kCi0KLUBpbnRlcmZhY2UgRE9N
UHJvY2Vzc2luZ0luc3RydWN0aW9uIDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKil0YXJnZXQ7Ci0t
IChOU1N0cmluZyAqKWRhdGE7Ci0tICh2b2lkKXNldERhdGE6KE5TU3RyaW5nICopZGF0YTsKLUBl
bmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudEZyYWdtZW50IDogRE9NTm9kZQotQGVuZAotCi1A
aW50ZXJmYWNlIERPTURvY3VtZW50IDogRE9NTm9kZQotLSAoRE9NRG9jdW1lbnRUeXBlICopZG9j
dHlwZTsKLS0gKERPTUltcGxlbWVudGF0aW9uICopaW1wbGVtZW50YXRpb247Ci0tIChET01FbGVt
ZW50ICopZG9jdW1lbnRFbGVtZW50OwotLSAoRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnQ6KE5T
U3RyaW5nICopdGFnTmFtZTsKLS0gKERPTURvY3VtZW50RnJhZ21lbnQgKiljcmVhdGVEb2N1bWVu
dEZyYWdtZW50OwotLSAoRE9NVGV4dCAqKWNyZWF0ZVRleHROb2RlOihOU1N0cmluZyAqKWRhdGE7
Ci0tIChET01Db21tZW50ICopY3JlYXRlQ29tbWVudDooTlNTdHJpbmcgKilkYXRhOwotLSAoRE9N
Q0RBVEFTZWN0aW9uICopY3JlYXRlQ0RBVEFTZWN0aW9uOihOU1N0cmluZyAqKWRhdGE7Ci0tIChE
T01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKiljcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246KE5T
U3RyaW5nICopdGFyZ2V0IDooTlNTdHJpbmcgKilkYXRhOwotLSAoRE9NQXR0ciAqKWNyZWF0ZUF0
dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lOwotLSAoRE9NRW50aXR5UmVmZXJlbmNlICopY3JlYXRl
RW50aXR5UmVmZXJlbmNlOihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01Ob2RlTGlzdCAqKWdldEVs
ZW1lbnRzQnlUYWdOYW1lOihOU1N0cmluZyAqKXRhZ25hbWU7Ci0tIChET01Ob2RlICopaW1wb3J0
Tm9kZTooRE9NTm9kZSAqKWltcG9ydGVkTm9kZSA6KEJPT0wpZGVlcDsKLS0gKERPTUVsZW1lbnQg
KiljcmVhdGVFbGVtZW50TlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilx
dWFsaWZpZWROYW1lOwotLSAoRE9NQXR0ciAqKWNyZWF0ZUF0dHJpYnV0ZU5TOihOU1N0cmluZyAq
KW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZTsKLS0gKERPTU5vZGVMaXN0
ICopZ2V0RWxlbWVudHNCeVRhZ05hbWVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0
cmluZyAqKWxvY2FsTmFtZTsKLS0gKERPTUVsZW1lbnQgKilnZXRFbGVtZW50QnlJZDooTlNTdHJp
bmcgKillbGVtZW50SWQ7Ci0tIChET01Ob2RlICopYWRvcHROb2RlOihET01Ob2RlICopc291cmNl
OwotQGVuZAorI2ltcG9ydCA8V2ViQ29yZS9ET01BdHRyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RP
TUNEQVRBU2VjdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01DaGFyYWN0ZXJEYXRhLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0RPTUNvbW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRE9NSW1w
bGVtZW50YXRpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnQuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvRE9NRG9jdW1lbnRGcmFnbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Eb2N1
bWVudFR5cGUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRWxlbWVudC5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9ET01FbnRpdHkuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRW50aXR5UmVmZXJlbmNlLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0RPTU5hbWVkTm9kZU1hcC5oPgorI2ltcG9ydCA8V2ViQ29yZS9E
T01Ob2RlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU5vZGVMaXN0Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL0RPTU5vdGF0aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgorI2ltcG9y
dCA8V2ViQ29yZS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUv
RE9NVGV4dC5oPgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURPTUltcGxlbWVudGF0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURPTUltcGxlbWVu
dGF0aW9uLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRE9NSW1w
bGVtZW50YXRpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdt
YWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KKworQGNsYXNz
IERPTURvY3VtZW50OyAKK0BjbGFzcyBET01Eb2N1bWVudFR5cGU7IAorCitAaW50ZXJmYWNlIERP
TUltcGxlbWVudGF0aW9uIDogRE9NT2JqZWN0CistIChCT09MKWhhc0ZlYXR1cmU6KE5TU3RyaW5n
ICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbjsKKy0gKERPTURvY3VtZW50VHlwZSAqKWNy
ZWF0ZURvY3VtZW50VHlwZTooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKilw
dWJsaWNJZCA6KE5TU3RyaW5nICopc3lzdGVtSWQ7CistIChET01Eb2N1bWVudCAqKWNyZWF0ZURv
Y3VtZW50OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFt
ZSA6KERPTURvY3VtZW50VHlwZSAqKWRvY3R5cGU7CitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NRE9NSW1wbGVtZW50YXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTURPTUltcGxlbWVudGF0aW9uLm1tCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTURPTUltcGxlbWVudGF0aW9uLm1tCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2
IEphbWVzIEcuIFNwZXRoIDxzcGV0aEBlbmQuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNh
bXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIkRPTURPTUltcGxlbWVudGF0aW9uLmgiCisjaW1wb3J0ICJET01JbXBs
ZW1lbnRhdGlvbkZyb250LmgiCisKKyNpbXBvcnQgIkRPTUludGVybmFsLmgiCisjaW1wb3J0ICJE
T01JbXBsZW1lbnRhdGlvbi5oIgorCisjaW1wb3J0ICJET01Eb2N1bWVudC5oIgorI2ltcG9ydCAi
RE9NRG9jdW1lbnRUeXBlLmgiCisjaW1wb3J0ICJET01IVE1MLmgiIC8vIkRPTUhUTUxEb2N1bWVu
dC5oIgorI2ltcG9ydCAiRE9NTm9kZS5oIgorI2ltcG9ydCAiRG9jdW1lbnQuaCIKKyNpbXBvcnQg
IkRvY3VtZW50VHlwZS5oIgorI2ltcG9ydCAiSFRNTERvY3VtZW50LmgiCisjaW1wb3J0ICJQbGF0
Zm9ybVN0cmluZy5oIgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK0BpbXBsZW1lbnRhdGlvbiBET01JbXBsZW1lbnRhdGlvbgorCistICh2
b2lkKWRlYWxsb2MKK3sKKyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICBET01fY2FzdDxET01J
bXBsZW1lbnRhdGlvbkZyb250ICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7CisgICAgW3N1cGVyIGRl
YWxsb2NdOworfQorCistICh2b2lkKWZpbmFsaXplCit7CisgICAgaWYgKF9pbnRlcm5hbCkKKyAg
ICAgICAgRE9NX2Nhc3Q8RE9NSW1wbGVtZW50YXRpb25Gcm9udCAqPihfaW50ZXJuYWwpLT5kZXJl
ZigpOworICAgIFtzdXBlciBmaW5hbGl6ZV07Cit9CisKKy0gKEJPT0wpaGFzRmVhdHVyZTooTlNT
dHJpbmcgKilmZWF0dXJlIDooTlNTdHJpbmcgKil2ZXJzaW9uCit7CisgICAgQVNTRVJUKGZlYXR1
cmUpOworICAgIEFTU0VSVCh2ZXJzaW9uKTsKKworICAgIHJldHVybiBbc2VsZiBfRE9NSW1wbGVt
ZW50YXRpb25dLT5oYXNGZWF0dXJlKGZlYXR1cmUsIHZlcnNpb24pOworfQorCistIChET01Eb2N1
bWVudFR5cGUgKiljcmVhdGVEb2N1bWVudFR5cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6
KE5TU3RyaW5nICopcHVibGljSWQgOihOU1N0cmluZyAqKXN5c3RlbUlkCit7CisgICAgQVNTRVJU
KHF1YWxpZmllZE5hbWUpOworICAgIEFTU0VSVChwdWJsaWNJZCk7CisgICAgQVNTRVJUKHN5c3Rl
bUlkKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFJlZlB0cjxEb2N1bWVudFR5
cGU+IGltcGwgPSBbc2VsZiBfRE9NSW1wbGVtZW50YXRpb25dLT5jcmVhdGVEb2N1bWVudFR5cGUo
cXVhbGlmaWVkTmFtZSwgcHVibGljSWQsIHN5c3RlbUlkLCBlYyk7CisgICAgcmFpc2VPbkRPTUVy
cm9yKGVjKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnRUeXBlICo+KFtET01O
b2RlIF9ub2RlV2l0aDppbXBsLmdldCgpXSk7Cit9CisKKy0gKERPTURvY3VtZW50ICopY3JlYXRl
RG9jdW1lbnQ6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWRO
YW1lIDooRE9NRG9jdW1lbnRUeXBlICopZG9jdHlwZQoreworICAgIEFTU0VSVChuYW1lc3BhY2VV
UkkpOworICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIFJlZlB0cjxEb2N1bWVudD4gaW1wbCA9IFtzZWxmIF9ET01JbXBsZW1lbnRhdGlv
bl0tPmNyZWF0ZURvY3VtZW50KG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgW2RvY3R5cGUg
X2RvY3VtZW50VHlwZV0sIGVjKTsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxET01Eb2N1bWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQo
KV0pOworfQorCistIChET01IVE1MRG9jdW1lbnQgKiljcmVhdGVIVE1MRG9jdW1lbnQ6KE5TU3Ry
aW5nICopdGl0bGUKK3sKKyAgICBSZWZQdHI8SFRNTERvY3VtZW50PiBpbXBsID0gW3NlbGYgX0RP
TUltcGxlbWVudGF0aW9uXS0+Y3JlYXRlSFRNTERvY3VtZW50KHRpdGxlKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RE9NSFRNTERvY3VtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsLmdl
dCgpXSk7Cit9CisKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Eb2N1bWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Eb2N1bWVudC5oCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURvY3VtZW50LmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bXBvcnQgPFdlYkNvcmUvRE9NTm9kZS5oPgorCitAY2xhc3MgRE9NQXR0cjsKK0BjbGFzcyBET01D
REFUQVNlY3Rpb247CitAY2xhc3MgRE9NQ29tbWVudDsKK0BjbGFzcyBET01Eb2N1bWVudEZyYWdt
ZW50OworQGNsYXNzIERPTURvY3VtZW50VHlwZTsKK0BjbGFzcyBET01FbGVtZW50OworQGNsYXNz
IERPTUVudGl0eVJlZmVyZW5jZTsKK0BjbGFzcyBET01JbXBsZW1lbnRhdGlvbjsKK0BjbGFzcyBE
T01Ob2RlTGlzdDsKK0BjbGFzcyBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb247CitAY2xhc3MgRE9N
VGV4dDsKKworQGludGVyZmFjZSBET01Eb2N1bWVudCA6IERPTU5vZGUKKy0gKERPTURvY3VtZW50
VHlwZSAqKWRvY3R5cGU7CistIChET01JbXBsZW1lbnRhdGlvbiAqKWltcGxlbWVudGF0aW9uOwor
LSAoRE9NRWxlbWVudCAqKWRvY3VtZW50RWxlbWVudDsKKy0gKERPTUVsZW1lbnQgKiljcmVhdGVF
bGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWU7CistIChET01Eb2N1bWVudEZyYWdtZW50ICopY3Jl
YXRlRG9jdW1lbnRGcmFnbWVudDsKKy0gKERPTVRleHQgKiljcmVhdGVUZXh0Tm9kZTooTlNTdHJp
bmcgKilkYXRhOworLSAoRE9NQ29tbWVudCAqKWNyZWF0ZUNvbW1lbnQ6KE5TU3RyaW5nICopZGF0
YTsKKy0gKERPTUNEQVRBU2VjdGlvbiAqKWNyZWF0ZUNEQVRBU2VjdGlvbjooTlNTdHJpbmcgKilk
YXRhOworLSAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICopY3JlYXRlUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uOihOU1N0cmluZyAqKXRhcmdldCA6KE5TU3RyaW5nICopZGF0YTsKKy0gKERPTUF0dHIg
KiljcmVhdGVBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKKy0gKERPTUVudGl0eVJlZmVyZW5j
ZSAqKWNyZWF0ZUVudGl0eVJlZmVyZW5jZTooTlNTdHJpbmcgKiluYW1lOworLSAoRE9NTm9kZUxp
c3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZTooTlNTdHJpbmcgKil0YWduYW1lOworLSAoRE9NTm9k
ZSAqKWltcG9ydE5vZGU6KERPTU5vZGUgKilpbXBvcnRlZE5vZGUgOihCT09MKWRlZXA7CistIChE
T01FbGVtZW50ICopY3JlYXRlRWxlbWVudE5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5T
U3RyaW5nICopcXVhbGlmaWVkTmFtZTsKKy0gKERPTUF0dHIgKiljcmVhdGVBdHRyaWJ1dGVOUzoo
TlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWU7CistIChE
T01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNl
VVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7CistIChET01FbGVtZW50ICopZ2V0RWxlbWVudEJ5
SWQ6KE5TU3RyaW5nICopZWxlbWVudElkOworLSAoRE9NTm9kZSAqKWFkb3B0Tm9kZTooRE9NTm9k
ZSAqKXNvdXJjZTsKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Eb2N1bWVu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRG9jdW1lbnQubW0J
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRG9jdW1lbnQubW0JKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIw
MDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYgSmFtZXMgRy4gU3BldGggPHNwZXRoQGVuZC5jb20+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRE9NRG9jdW1lbnQuaCIKKworI2ltcG9ydCAiRE9N
SW50ZXJuYWwuaCIgLy8gZm9yIERPTV9jYXN0PD4KKyNpbXBvcnQgIkRvY3VtZW50LmgiIC8vIElt
cGxlbWVudGF0aW9uCisKKyNpbXBvcnQgIkF0dHIuaCIKKyNpbXBvcnQgIkNEQVRBU2VjdGlvbi5o
IgorI2ltcG9ydCAiQ29tbWVudC5oIgorI2ltcG9ydCAiRE9NQXR0ci5oIgorI2ltcG9ydCAiRE9N
Q0RBVEFTZWN0aW9uLmgiCisjaW1wb3J0ICJET01Db21tZW50LmgiCisjaW1wb3J0ICJET01ET01J
bXBsZW1lbnRhdGlvbi5oIgorI2ltcG9ydCAiRE9NRG9jdW1lbnRGcmFnbWVudC5oIgorI2ltcG9y
dCAiRE9NRG9jdW1lbnRUeXBlLmgiCisjaW1wb3J0ICJET01FbGVtZW50LmgiCisjaW1wb3J0ICJE
T01FbnRpdHlSZWZlcmVuY2UuaCIKKyNpbXBvcnQgIkRPTUltcGxlbWVudGF0aW9uLmgiCisjaW1w
b3J0ICJET01JbXBsZW1lbnRhdGlvbkZyb250LmgiCisjaW1wb3J0ICJET01Ob2RlLmgiCisjaW1w
b3J0ICJET01Ob2RlTGlzdC5oIgorI2ltcG9ydCAiRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgi
CisjaW1wb3J0ICJET01UZXh0LmgiCisjaW1wb3J0ICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW1w
b3J0ICJEb2N1bWVudFR5cGUuaCIKKyNpbXBvcnQgIkVsZW1lbnQuaCIKKyNpbXBvcnQgIkVudGl0
eVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiTm9kZUxpc3QuaCIKKyNpbXBvcnQgIlByb2Nlc3NpbmdJ
bnN0cnVjdGlvbi5oIgorI2ltcG9ydCAiVGV4dC5oIgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMu
aD4KKworCit1c2luZyBXZWJDb3JlOjpEb2N1bWVudDsKK3VzaW5nIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGU7CisKK0BpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudAorCistIChET01Ob2RlICopYWRv
cHROb2RlOihET01Ob2RlICopc291cmNlCit7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0t
PmFkb3B0Tm9kZShbc291cmNlIF9ub2RlXSwgZWMpLmdldCgpXTsKKyAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKERPTURvY3VtZW50VHlwZSAqKWRv
Y3R5cGUKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnRUeXBlICo+KFtET01O
b2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5kb2N0eXBlKCldKTsKK30KKworLSAoRE9N
SW1wbGVtZW50YXRpb24gKilpbXBsZW1lbnRhdGlvbgoreworICAgIHJldHVybiBbRE9NSW1wbGVt
ZW50YXRpb24gX0RPTUltcGxlbWVudGF0aW9uV2l0aDppbXBsZW1lbnRhdGlvbkZyb250KFtzZWxm
IF9kb2N1bWVudF0pXTsKK30KKworLSAoRE9NRWxlbWVudCAqKWRvY3VtZW50RWxlbWVudAorewor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpb
c2VsZiBfZG9jdW1lbnRdLT5kb2N1bWVudEVsZW1lbnQoKV0pOworfQorCistIChET01FbGVtZW50
ICopY3JlYXRlRWxlbWVudDooTlNTdHJpbmcgKil0YWdOYW1lCit7CisgICAgQVNTRVJUKHRhZ05h
bWUpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9NRWxlbWVudCAqcmVzdWx0
ID0gc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2Rv
Y3VtZW50XS0+Y3JlYXRlRWxlbWVudCh0YWdOYW1lLCBlYykuZ2V0KCldKTsKKyAgICByYWlzZU9u
RE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKERPTURvY3VtZW50RnJh
Z21lbnQgKiljcmVhdGVEb2N1bWVudEZyYWdtZW50Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PERPTURvY3VtZW50RnJhZ21lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVu
dF0tPmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKS5nZXQoKV0pOworfQorCistIChET01UZXh0ICop
Y3JlYXRlVGV4dE5vZGU6KE5TU3RyaW5nICopZGF0YQoreworICAgIEFTU0VSVChkYXRhKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NVGV4dCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYg
X2RvY3VtZW50XS0+Y3JlYXRlVGV4dE5vZGUoZGF0YSkuZ2V0KCldKTsKK30KKworLSAoRE9NQ29t
bWVudCAqKWNyZWF0ZUNvbW1lbnQ6KE5TU3RyaW5nICopZGF0YQoreworICAgIEFTU0VSVChkYXRh
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NQ29tbWVudCAqPihbRE9NTm9kZSBfbm9kZVdp
dGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlQ29tbWVudChkYXRhKS5nZXQoKV0pOworfQorCist
IChET01DREFUQVNlY3Rpb24gKiljcmVhdGVDREFUQVNlY3Rpb246KE5TU3RyaW5nICopZGF0YQor
eworICAgIEFTU0VSVChkYXRhKTsKKyAgICBpbnQgZXhjZXB0aW9uID0gMDsKKyAgICBET01DREFU
QVNlY3Rpb24gKnJlc3VsdCA9IHN0YXRpY19jYXN0PERPTUNEQVRBU2VjdGlvbiAqPihbRE9NTm9k
ZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlQ0RBVEFTZWN0aW9uKGRhdGEsIGV4
Y2VwdGlvbikuZ2V0KCldKTsKKyAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCistIChET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKiljcmVhdGVQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb246KE5TU3RyaW5nICopdGFyZ2V0IDooTlNTdHJpbmcgKilkYXRh
Cit7CisgICAgQVNTRVJUKHRhcmdldCk7CisgICAgQVNTRVJUKGRhdGEpOworICAgIGludCBleGNl
cHRpb24gPSAwOworICAgIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqcmVzdWx0ID0gc3RhdGlj
X2Nhc3Q8RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2Vs
ZiBfZG9jdW1lbnRdLT5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24odGFyZ2V0LCBkYXRhLCBl
eGNlcHRpb24pLmdldCgpXSk7CisgICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworLSAoRE9NQXR0ciAqKWNyZWF0ZUF0dHJpYnV0ZTooTlNTdHJp
bmcgKiluYW1lCit7CisgICAgQVNTRVJUKG5hbWUpOworICAgIGludCBleGNlcHRpb24gPSAwOwor
ICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZG9jdW1lbnRd
LT5jcmVhdGVBdHRyaWJ1dGUobmFtZSwgZXhjZXB0aW9uKS5nZXQoKV07CisgICAgcmFpc2VPbkRP
TUVycm9yKGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAoRE9NRW50aXR5
UmVmZXJlbmNlICopY3JlYXRlRW50aXR5UmVmZXJlbmNlOihOU1N0cmluZyAqKW5hbWUKK3sKKyAg
ICBBU1NFUlQobmFtZSk7CisgICAgaW50IGV4Y2VwdGlvbiA9IDA7CisgICAgRE9NRW50aXR5UmVm
ZXJlbmNlICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxET01FbnRpdHlSZWZlcmVuY2UgKj4oW0RPTU5v
ZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUVudGl0eVJlZmVyZW5jZShuYW1l
LCBleGNlcHRpb24pLmdldCgpXSk7CisgICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFn
TmFtZTooTlNTdHJpbmcgKil0YWduYW1lCit7CisgICAgQVNTRVJUKHRhZ25hbWUpOworICAgIHJl
dHVybiBbRE9NTm9kZUxpc3QgX25vZGVMaXN0V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5nZXRFbGVt
ZW50c0J5VGFnTmFtZSh0YWduYW1lKS5nZXQoKV07Cit9CisKKy0gKERPTU5vZGUgKilpbXBvcnRO
b2RlOihET01Ob2RlICopaW1wb3J0ZWROb2RlIDooQk9PTClkZWVwCit7CisgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltz
ZWxmIF9kb2N1bWVudF0tPmltcG9ydE5vZGUoW2ltcG9ydGVkTm9kZSBfbm9kZV0sIGRlZXAsIGVj
KS5nZXQoKV07CisgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCistIChET01FbGVtZW50ICopY3JlYXRlRWxlbWVudE5TOihOU1N0cmluZyAqKW5hbWVzcGFj
ZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZQoreworICAgIEFTU0VSVChuYW1lc3BhY2VV
UkkpOworICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9j
dW1lbnRdLT5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCBlYyku
Z2V0KCldOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PERPTUVsZW1lbnQgKj4ocmVzdWx0KTsKK30KKworLSAoRE9NQXR0ciAqKWNyZWF0ZUF0dHJpYnV0
ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZQor
eworICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOworICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsK
KworICAgIGludCBleGNlcHRpb24gPSAwOworICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRy
IF9hdHRyV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVBdHRyaWJ1dGVOUyhuYW1lc3BhY2VV
UkksIHF1YWxpZmllZE5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldOworICAgIHJhaXNlT25ET01FcnJv
cihleGNlcHRpb24pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKERPTU5vZGVMaXN0ICop
Z2V0RWxlbWVudHNCeVRhZ05hbWVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmlu
ZyAqKWxvY2FsTmFtZQoreworICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOworICAgIEFTU0VSVChs
b2NhbE5hbWUpOworCisgICAgcmV0dXJuIFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOltzZWxm
IF9kb2N1bWVudF0tPmdldEVsZW1lbnRzQnlUYWdOYW1lTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5h
bWUpLmdldCgpXTsKK30KKworLSAoRE9NRWxlbWVudCAqKWdldEVsZW1lbnRCeUlkOihOU1N0cmlu
ZyAqKWVsZW1lbnRJZAoreworICAgIEFTU0VSVChlbGVtZW50SWQpOworCisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVu
dF0tPmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCldKTsKK30KKworQGVuZApJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTURvY3VtZW50RnJhZ21lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NRG9jdW1lbnRGcmFnbWVudC5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURvY3VtZW50RnJhZ21lbnQuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworCisjaW1wb3J0
IDxXZWJDb3JlL0RPTU5vZGUuaD4KKworQGludGVyZmFjZSBET01Eb2N1bWVudEZyYWdtZW50IDog
RE9NTm9kZQorQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURvY3VtZW50RnJh
Z21lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURvY3VtZW50
RnJhZ21lbnQubW0JKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRG9j
dW1lbnRGcmFnbWVudC5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IEphbWVzIEcuIFNwZXRoIDxzcGV0aEBlbmQu
Y29tPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21h
aWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRPTURvY3VtZW50
RnJhZ21lbnQuaCIKKworI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKKworQGltcGxlbWVudGF0aW9u
IERPTURvY3VtZW50RnJhZ21lbnQKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01Eb2N1bWVudFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
RG9jdW1lbnRUeXBlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
RG9jdW1lbnRUeXBlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0Bn
bWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NTm9kZS5oPgorCitAY2xhc3Mg
RE9NTmFtZWROb2RlTWFwOworCitAaW50ZXJmYWNlIERPTURvY3VtZW50VHlwZSA6IERPTU5vZGUK
Ky0gKE5TU3RyaW5nICopbmFtZTsKKy0gKERPTU5hbWVkTm9kZU1hcCAqKWVudGl0aWVzOworLSAo
RE9NTmFtZWROb2RlTWFwICopbm90YXRpb25zOworLSAoTlNTdHJpbmcgKilwdWJsaWNJZDsKKy0g
KE5TU3RyaW5nICopc3lzdGVtSWQ7CistIChOU1N0cmluZyAqKWludGVybmFsU3Vic2V0OworQGVu
ZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURvY3VtZW50VHlwZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRG9jdW1lbnRUeXBlLm1tCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURvY3VtZW50VHlwZS5tbQkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA2IEphbWVzIEcuIFNwZXRoIDxzcGV0aEBlbmQuY29tPgorICogQ29weXJpZ2h0IChDKSAy
MDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIkRPTURvY3VtZW50VHlwZS5oIgorCisjaW1wb3J0ICJET01J
bnRlcm5hbC5oIgorI2ltcG9ydCAiRG9jdW1lbnRUeXBlLmgiCisjaW1wb3J0ICJET01OYW1lZE5v
ZGVNYXAuaCIKKworQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50VHlwZQorCistIChOU1N0cmlu
ZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gW3NlbGYgX2RvY3VtZW50VHlwZV0tPnB1YmxpY0lkKCk7
Cit9CisKKy0gKERPTU5hbWVkTm9kZU1hcCAqKWVudGl0aWVzCit7CisgICAgcmV0dXJuIFtET01O
YW1lZE5vZGVNYXAgX25hbWVkTm9kZU1hcFdpdGg6W3NlbGYgX2RvY3VtZW50VHlwZV0tPmVudGl0
aWVzKCldOworfQorCistIChET01OYW1lZE5vZGVNYXAgKilub3RhdGlvbnMKK3sKKyAgICByZXR1
cm4gW0RPTU5hbWVkTm9kZU1hcCBfbmFtZWROb2RlTWFwV2l0aDpbc2VsZiBfZG9jdW1lbnRUeXBl
XS0+bm90YXRpb25zKCldOworfQorCistIChOU1N0cmluZyAqKXB1YmxpY0lkCit7CisgICAgcmV0
dXJuIFtzZWxmIF9kb2N1bWVudFR5cGVdLT5wdWJsaWNJZCgpOworfQorCistIChOU1N0cmluZyAq
KXN5c3RlbUlkCit7CisgICAgcmV0dXJuIFtzZWxmIF9kb2N1bWVudFR5cGVdLT5zeXN0ZW1JZCgp
OworfQorCistIChOU1N0cmluZyAqKWludGVybmFsU3Vic2V0Cit7CisgICAgcmV0dXJuIFtzZWxm
IF9kb2N1bWVudFR5cGVdLT5pbnRlcm5hbFN1YnNldCgpOworfQorCitAZW5kCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01FbGVtZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NRWxlbWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWlu
aWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTU5vZGUuaD4KKworQGNs
YXNzIERPTUF0dHI7CitAY2xhc3MgRE9NTm9kZUxpc3Q7CisKK0BpbnRlcmZhY2UgRE9NRWxlbWVu
dCA6IERPTU5vZGUKKy0gKE5TU3RyaW5nICopdGFnTmFtZTsKKy0gKE5TU3RyaW5nICopZ2V0QXR0
cmlidXRlOihOU1N0cmluZyAqKW5hbWU7CistICh2b2lkKXNldEF0dHJpYnV0ZTooTlNTdHJpbmcg
KiluYW1lIDooTlNTdHJpbmcgKil2YWx1ZTsKKy0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlOihOU1N0
cmluZyAqKW5hbWU7CistIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9kZTooTlNTdHJpbmcgKilu
YW1lOworLSAoRE9NQXR0ciAqKXNldEF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKiluZXdBdHRyOwor
LSAoRE9NQXR0ciAqKXJlbW92ZUF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKilvbGRBdHRyOworLSAo
RE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZTooTlNTdHJpbmcgKiluYW1lOworLSAo
TlNTdHJpbmcgKilnZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0
cmluZyAqKWxvY2FsTmFtZTsKKy0gKHZvaWQpc2V0QXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFt
ZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKil2YWx1ZTsK
Ky0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNT
dHJpbmcgKilsb2NhbE5hbWU7CistIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9kZU5TOihOU1N0
cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOworLSAoRE9NQXR0ciAq
KXNldEF0dHJpYnV0ZU5vZGVOUzooRE9NQXR0ciAqKW5ld0F0dHI7CistIChET01Ob2RlTGlzdCAq
KWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJp
bmcgKilsb2NhbE5hbWU7CistIChCT09MKWhhc0F0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lOwor
LSAoQk9PTCloYXNBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmlu
ZyAqKWxvY2FsTmFtZTsKKy0gKHZvaWQpZm9jdXM7CistICh2b2lkKWJsdXI7CitAZW5kCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRWxlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NRWxlbWVudC5tbQkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01FbGVtZW50Lm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IEphbWVzIEcuIFNwZXRo
IDxzcGV0aEBlbmQuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNh
bS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
IkRPTUVsZW1lbnQuaCIKKworI2ltcG9ydCAiRE9NQXR0ci5oIgorI2ltcG9ydCAiRE9NSW50ZXJu
YWwuaCIKKworI2ltcG9ydCAiRE9NTmFtZWROb2RlTWFwLmgiCisjaW1wb3J0ICJET01Ob2RlTGlz
dC5oIgorI2ltcG9ydCAiRWxlbWVudC5oIgorI2ltcG9ydCAiTmFtZWRBdHRyTWFwLmgiCisjaW1w
b3J0ICJOb2RlTGlzdC5oIgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKworQGltcGxlbWVu
dGF0aW9uIERPTUVsZW1lbnQKKworLSAoTlNTdHJpbmcgKil0YWdOYW1lCit7CisgICAgcmV0dXJu
IFtzZWxmIF9lbGVtZW50XS0+bm9kZU5hbWUoKTsKK30KKworLSAoRE9NTmFtZWROb2RlTWFwICop
YXR0cmlidXRlcworeworICAgIHJldHVybiBbRE9NTmFtZWROb2RlTWFwIF9uYW1lZE5vZGVNYXBX
aXRoOltzZWxmIF9lbGVtZW50XS0+YXR0cmlidXRlcygpXTsKK30KKworLSAoTlNTdHJpbmcgKiln
ZXRBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZQoreworICAgIEFTU0VSVChuYW1lKTsKKyAgICBy
ZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5nZXRBdHRyaWJ1dGUobmFtZSk7Cit9CisKKy0gKHZvaWQp
c2V0QXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUgOihOU1N0cmluZyAqKXZhbHVlCit7CisgICAg
QVNTRVJUKG5hbWUpOworICAgIEFTU0VSVCh2YWx1ZSk7CisKKyAgICBpbnQgZXhjZXB0aW9uID0g
MDsKKyAgICBbc2VsZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgZXhjZXB0
aW9uKTsKKyAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKK30KKworLSAodm9pZClyZW1v
dmVBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZQoreworICAgIEFTU0VSVChuYW1lKTsKKworICAg
IGludCBleGNlcHRpb24gPSAwOworICAgIFtzZWxmIF9lbGVtZW50XS0+cmVtb3ZlQXR0cmlidXRl
KG5hbWUsIGV4Y2VwdGlvbik7CisgICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Cit9CisK
Ky0gKERPTUF0dHIgKilnZXRBdHRyaWJ1dGVOb2RlOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICBB
U1NFUlQobmFtZSk7CisKKyAgICByZXR1cm4gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVt
ZW50XS0+Z2V0QXR0cmlidXRlTm9kZShuYW1lKS5nZXQoKV07Cit9CisKKy0gKERPTUF0dHIgKilz
ZXRBdHRyaWJ1dGVOb2RlOihET01BdHRyICopbmV3QXR0cgoreworICAgIEFTU0VSVChuZXdBdHRy
KTsKKworICAgIGludCBleGNlcHRpb24gPSAwOworICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01B
dHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZU5vZGUoW25ld0F0dHIg
X2F0dHJdLCBleGNlcHRpb24pLmdldCgpXTsKKyAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9u
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChET01BdHRyICopcmVtb3ZlQXR0cmlidXRl
Tm9kZTooRE9NQXR0ciAqKW9sZEF0dHIKK3sKKyAgICBBU1NFUlQob2xkQXR0cik7CisKKyAgICBp
bnQgZXhjZXB0aW9uID0gMDsKKyAgICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldp
dGg6W3NlbGYgX2VsZW1lbnRdLT5yZW1vdmVBdHRyaWJ1dGVOb2RlKFtvbGRBdHRyIF9hdHRyXSwg
ZXhjZXB0aW9uKS5nZXQoKV07CisgICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFt
ZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgQVNTRVJUKG5hbWUpOworCisgICAgcmV0dXJuIFtE
T01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0RWxlbWVudHNCeVRh
Z05hbWUobmFtZSkuZ2V0KCldOworfQorCistIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZU5TOihO
U1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCit7CisgICAgQVNT
RVJUKG5hbWVzcGFjZVVSSSk7CisgICAgQVNTRVJUKGxvY2FsTmFtZSk7CisKKyAgICByZXR1cm4g
W3NlbGYgX2VsZW1lbnRdLT5nZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7
Cit9CisKKy0gKHZvaWQpc2V0QXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDoo
TlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKil2YWx1ZQoreworICAgIEFTU0VS
VChuYW1lc3BhY2VVUkkpOworICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsKKyAgICBBU1NFUlQo
dmFsdWUpOworCisgICAgaW50IGV4Y2VwdGlvbiA9IDA7CisgICAgW3NlbGYgX2VsZW1lbnRdLT5z
ZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIHZhbHVlLCBleGNlcHRp
b24pOworICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOworfQorCistICh2b2lkKXJlbW92
ZUF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxO
YW1lCit7CisgICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7CisgICAgQVNTRVJUKGxvY2FsTmFtZSk7
CisKKyAgICBpbnQgZXhjZXB0aW9uID0gMDsKKyAgICBbc2VsZiBfZWxlbWVudF0tPnJlbW92ZUF0
dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCBleGNlcHRpb24pOworICAgIHJhaXNl
T25ET01FcnJvcihleGNlcHRpb24pOworfQorCistIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9k
ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCit7Cisg
ICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7CisgICAgQVNTRVJUKGxvY2FsTmFtZSk7CisKKyAgICBy
ZXR1cm4gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0QXR0cmlidXRlTm9k
ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKS5nZXQoKV07Cit9CisKKy0gKERPTUF0dHIgKilz
ZXRBdHRyaWJ1dGVOb2RlTlM6KERPTUF0dHIgKiluZXdBdHRyCit7CisgICAgQVNTRVJUKG5ld0F0
dHIpOworCisgICAgaW50IGV4Y2VwdGlvbiA9IDA7CisgICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RP
TUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+c2V0QXR0cmlidXRlTm9kZU5TKFtuZXdB
dHRyIF9hdHRyXSwgZXhjZXB0aW9uKS5nZXQoKV07CisgICAgcmFpc2VPbkRPTUVycm9yKGV4Y2Vw
dGlvbik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVt
ZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9j
YWxOYW1lCit7CisgICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7CisgICAgQVNTRVJUKGxvY2FsTmFt
ZSk7CisKKyAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX2VsZW1l
bnRdLT5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKS5nZXQo
KV07Cit9CisKKy0gKEJPT0wpaGFzQXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICBB
U1NFUlQobmFtZSk7CisKKyAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5oYXNBdHRyaWJ1dGUo
bmFtZSk7Cit9CisKKy0gKEJPT0wpaGFzQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNl
VVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKK3sKKyAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsK
KyAgICBBU1NFUlQobG9jYWxOYW1lKTsKKworICAgIHJldHVybiBbc2VsZiBfZWxlbWVudF0tPmhh
c0F0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKK30KKworLSAodm9pZClmb2N1
cworeworICAgIFtzZWxmIF9lbGVtZW50XS0+Zm9jdXMoKTsKK30KKworLSAodm9pZClibHVyCit7
CisgICAgW3NlbGYgX2VsZW1lbnRdLT5ibHVyKCk7Cit9CisKK0BlbmQKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01FbnRpdHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NRW50aXR5LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NRW50aXR5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NTm9kZS5oPgorCitAaW50ZXJmYWNl
IERPTUVudGl0eSA6IERPTU5vZGUKKy0gKE5TU3RyaW5nICopcHVibGljSWQ7CistIChOU1N0cmlu
ZyAqKXN5c3RlbUlkOworLSAoTlNTdHJpbmcgKilub3RhdGlvbk5hbWU7CitAZW5kCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRW50aXR5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01FbnRpdHkubW0JKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NRW50aXR5Lm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgSmFtZXMgRy4gU3BldGggPHNwZXRo
QGVuZC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5p
Z0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRE9NRW50
aXR5LmgiCisKKyNpbXBvcnQgIkRPTUludGVybmFsLmgiCisjaW1wb3J0ICJFbnRpdHkuaCIKKyNp
bXBvcnQgIk5vZGUuaCIKKwordXNpbmcgV2ViQ29yZTo6RW50aXR5OwordXNpbmcgV2ViQ29yZTo6
Tm9kZTsKKworQGltcGxlbWVudGF0aW9uIERPTUVudGl0eQorCistIChFbnRpdHkgKilfZW50aXR5
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVudGl0eSAqPihET01fY2FzdDxOb2RlICo+KF9p
bnRlcm5hbCkpOworfQorCistIChOU1N0cmluZyAqKXB1YmxpY0lkCit7CisgICAgcmV0dXJuIFtz
ZWxmIF9lbnRpdHldLT5wdWJsaWNJZCgpOworfQorCistIChOU1N0cmluZyAqKXN5c3RlbUlkCit7
CisgICAgcmV0dXJuIFtzZWxmIF9lbnRpdHldLT5zeXN0ZW1JZCgpOworfQorCistIChOU1N0cmlu
ZyAqKW5vdGF0aW9uTmFtZQoreworICAgIHJldHVybiBbc2VsZiBfZW50aXR5XS0+bm90YXRpb25O
YW1lKCk7Cit9CisKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FbnRpdHlS
ZWZlcmVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRW50aXR5
UmVmZXJlbmNlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRW50
aXR5UmVmZXJlbmNlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0Bn
bWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NTm9kZS5oPgorCitAaW50ZXJm
YWNlIERPTUVudGl0eVJlZmVyZW5jZSA6IERPTU5vZGUKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01FbnRpdHlSZWZlcmVuY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTUVudGl0eVJlZmVyZW5jZS5tbQkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01FbnRpdHlSZWZlcmVuY2UubW0JKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBKYW1l
cyBHLiBTcGV0aCA8c3BldGhAZW5kLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwg
V2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJET01FbnRpdHlSZWZlcmVuY2UuaCIKKworQGltcGxlbWVudGF0aW9uIERPTUVu
dGl0eVJlZmVyZW5jZQorQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FdmVudHMuaAkocmV2
aXNpb24gMTU4MjgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZlbnRzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2
IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw2ICsyNCw4IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
ICAqLwogCisjaW1wb3J0IDxXZWJDb3JlL0RPTU5vZGUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9N
T2JqZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTVZpZXdzLmg+CiAKIEBjbGFzcyBET01FdmVu
dDsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FeHRlbnNpb25zLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV4dGVuc2lvbnMuaAkocmV2aXNpb24gMTU4
MjgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXh0ZW5zaW9ucy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOCArMjQsMTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICov
CiAKKyNpbXBvcnQgPFdlYkNvcmUvRE9NQXR0ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01DU1Mu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9N
SFRNTC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MRWxlbWVudC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9ET01SYW5nZS5oPgogCiBAY2xhc3MgTlNDb2xvcjsKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01IVE1MLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TUhUTUwuaAkocmV2aXNpb24gMTU4MjgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRN
TC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOSArMjQsMzUgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAogICovCiAKLSNpbXBvcnQgPFdlYkNvcmUvRE9NQ29yZS5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9ET01Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01FbGVtZW50Lmg+CisjaW1wb3J0
IDxXZWJDb3JlL0RPTU9iamVjdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MRWxlbWVudC5o
PgorCisvLyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTEJSRWxlbWVudC5oPgorLy8jaW1wb3J0IDxX
ZWJDb3JlL0RPTUhUTUxCYXNlRWxlbWVudC5oPgorLy8jaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxC
YXNlRm9udEVsZW1lbnQuaD4KKy8vI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MRExpc3RFbGVtZW50
Lmg+CisvLyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQuaD4KKy8vI2lt
cG9ydCA8V2ViQ29yZS9ET01IVE1MRGl2RWxlbWVudC5oPgorLy8jaW1wb3J0IDxXZWJDb3JlL0RP
TUhUTUxGb250RWxlbWVudC5oPgorLy8jaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxIUkVsZW1lbnQu
aD4KKy8vI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MSGVhZEVsZW1lbnQuaD4KKy8vI2ltcG9ydCA8
V2ViQ29yZS9ET01IVE1MSGVhZGluZ0VsZW1lbnQuaD4KKy8vI2ltcG9ydCA8V2ViQ29yZS9ET01I
VE1MSHRtbEVsZW1lbnQuaD4KKy8vI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MTElFbGVtZW50Lmg+
CisvLyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTE1lbnVFbGVtZW50Lmg+CisvLyNpbXBvcnQgPFdl
YkNvcmUvRE9NSFRNTE1ldGFFbGVtZW50Lmg+CisvLyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTE1v
ZEVsZW1lbnQuaD4KKy8vI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MT0xpc3RFbGVtZW50Lmg+Cisv
LyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5oPgorLy8jaW1wb3J0IDxX
ZWJDb3JlL0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lmg+CisvLyNpbXBvcnQgPFdlYkNvcmUvRE9N
SFRNTFBhcmFtRWxlbWVudC5oPgorLy8jaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxRdW90ZUVsZW1l
bnQuaD4KKy8vI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MVGl0bGVFbGVtZW50Lmg+CisvLyNpbXBv
cnQgPFdlYkNvcmUvRE9NSFRNTFVMaXN0RWxlbWVudC5oPgogCi1AY2xhc3MgRE9NSFRNTEVsZW1l
bnQ7CitAY2xhc3MgRE9NTm9kZTsKIEBjbGFzcyBET01IVE1MRm9ybUVsZW1lbnQ7CiBAY2xhc3Mg
RE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ7CiBAY2xhc3MgRE9NSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQ7CkBAIC02NiwyOSArOTMsNiBAQAogLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5
TmFtZTooTlNTdHJpbmcgKillbGVtZW50TmFtZTsKIEBlbmQKIAotQGludGVyZmFjZSBET01IVE1M
RWxlbWVudCA6IERPTUVsZW1lbnQKLS0gKE5TU3RyaW5nICopaWROYW1lOwotLSAodm9pZClzZXRJ
ZE5hbWU6KE5TU3RyaW5nICopaWROYW1lOwotLSAoTlNTdHJpbmcgKil0aXRsZTsKLS0gKHZvaWQp
c2V0VGl0bGU6KE5TU3RyaW5nICopdGl0bGU7Ci0tIChOU1N0cmluZyAqKWxhbmc7Ci0tICh2b2lk
KXNldExhbmc6KE5TU3RyaW5nICopbGFuZzsKLS0gKE5TU3RyaW5nICopZGlyOwotLSAodm9pZClz
ZXREaXI6KE5TU3RyaW5nICopZGlyOwotLSAoTlNTdHJpbmcgKiljbGFzc05hbWU7Ci0tICh2b2lk
KXNldENsYXNzTmFtZTooTlNTdHJpbmcgKiljbGFzc05hbWU7Ci1AZW5kCi0KLUBpbnRlcmZhY2Ug
RE9NSFRNTEh0bWxFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKE5TU3RyaW5nICopdmVyc2lv
bjsKLS0gKHZvaWQpc2V0VmVyc2lvbjooTlNTdHJpbmcgKil2ZXJzaW9uOwotQGVuZAotCi1AaW50
ZXJmYWNlIERPTUhUTUxIZWFkRWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChOU1N0cmluZyAq
KXByb2ZpbGU7Ci0tICh2b2lkKXNldFByb2ZpbGU6KE5TU3RyaW5nICopcHJvZmlsZTsKLUBlbmQK
LQogQGludGVyZmFjZSBET01IVE1MTGlua0VsZW1lbnQgOiBET01IVE1MRWxlbWVudAogLSAoQk9P
TClkaXNhYmxlZDsKIC0gKHZvaWQpc2V0RGlzYWJsZWQ6KEJPT0wpZGlzYWJsZWQ7CkBAIC0xMTAs
MjkgKzExNCw2IEBACiAtICh2b2lkKXNldFR5cGU6KE5TU3RyaW5nICopdHlwZTsKIEBlbmQKIAot
QGludGVyZmFjZSBET01IVE1MVGl0bGVFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKE5TU3Ry
aW5nICopdGV4dDsKLS0gKHZvaWQpc2V0VGV4dDooTlNTdHJpbmcgKil0ZXh0OwotQGVuZAotCi1A
aW50ZXJmYWNlIERPTUhUTUxNZXRhRWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChOU1N0cmlu
ZyAqKWNvbnRlbnQ7Ci0tICh2b2lkKXNldENvbnRlbnQ6KE5TU3RyaW5nICopY29udGVudDsKLS0g
KE5TU3RyaW5nICopaHR0cEVxdWl2OwotLSAodm9pZClzZXRIdHRwRXF1aXY6KE5TU3RyaW5nICop
aHR0cEVxdWl2OwotLSAoTlNTdHJpbmcgKiluYW1lOwotLSAodm9pZClzZXROYW1lOihOU1N0cmlu
ZyAqKW5hbWU7Ci0tIChOU1N0cmluZyAqKXNjaGVtZTsKLS0gKHZvaWQpc2V0U2NoZW1lOihOU1N0
cmluZyAqKXNjaGVtZTsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MQmFzZUVsZW1lbnQgOiBE
T01IVE1MRWxlbWVudAotLSAoTlNTdHJpbmcgKilocmVmOwotLSAodm9pZClzZXRIcmVmOihOU1N0
cmluZyAqKWhyZWY7Ci0tIChOU1N0cmluZyAqKXRhcmdldDsKLS0gKHZvaWQpc2V0VGFyZ2V0OihO
U1N0cmluZyAqKXRhcmdldDsKLUBlbmQKLQogQGludGVyZmFjZSBET01IVE1MSXNJbmRleEVsZW1l
bnQgOiBET01IVE1MRWxlbWVudAogLSAoRE9NSFRNTEZvcm1FbGVtZW50ICopZm9ybTsKIC0gKE5T
U3RyaW5nICopcHJvbXB0OwpAQCAtMjA3LDEzICsxODgsNiBAQAogLSAodm9pZClmb2N1czsKIEBl
bmQKIAotQGludGVyZmFjZSBET01IVE1MT3B0R3JvdXBFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQK
LS0gKEJPT0wpZGlzYWJsZWQ7Ci0tICh2b2lkKXNldERpc2FibGVkOihCT09MKWRpc2FibGVkOwot
LSAoTlNTdHJpbmcgKilsYWJlbDsKLS0gKHZvaWQpc2V0TGFiZWw6KE5TU3RyaW5nICopbGFiZWw7
Ci1AZW5kCi0KIEBpbnRlcmZhY2UgRE9NSFRNTE9wdGlvbkVsZW1lbnQgOiBET01IVE1MRWxlbWVu
dAogLSAoRE9NSFRNTEZvcm1FbGVtZW50ICopZm9ybTsKIC0gKEJPT0wpZGVmYXVsdFNlbGVjdGVk
OwpAQCAtMzMzLDExMCArMzA3LDExIEBACiAtICh2b2lkKXNldEFsaWduOihOU1N0cmluZyAqKWFs
aWduOwogQGVuZAogCi1AaW50ZXJmYWNlIERPTUhUTUxVTGlzdEVsZW1lbnQgOiBET01IVE1MRWxl
bWVudAotLSAoQk9PTCljb21wYWN0OwotLSAodm9pZClzZXRDb21wYWN0OihCT09MKWNvbXBhY3Q7
Ci0tIChOU1N0cmluZyAqKXR5cGU7Ci0tICh2b2lkKXNldFR5cGU6KE5TU3RyaW5nICopdHlwZTsK
LUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MT0xpc3RFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQK
LS0gKEJPT0wpY29tcGFjdDsKLS0gKHZvaWQpc2V0Q29tcGFjdDooQk9PTCljb21wYWN0OwotLSAo
aW50KXN0YXJ0OwotLSAodm9pZClzZXRTdGFydDooaW50KXN0YXJ0OwotLSAoTlNTdHJpbmcgKil0
eXBlOwotLSAodm9pZClzZXRUeXBlOihOU1N0cmluZyAqKXR5cGU7Ci1AZW5kCi0KLUBpbnRlcmZh
Y2UgRE9NSFRNTERMaXN0RWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChCT09MKWNvbXBhY3Q7
Ci0tICh2b2lkKXNldENvbXBhY3Q6KEJPT0wpY29tcGFjdDsKLUBlbmQKLQotQGludGVyZmFjZSBE
T01IVE1MRGlyZWN0b3J5RWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChCT09MKWNvbXBhY3Q7
Ci0tICh2b2lkKXNldENvbXBhY3Q6KEJPT0wpY29tcGFjdDsKLUBlbmQKLQotQGludGVyZmFjZSBE
T01IVE1MTWVudUVsZW1lbnQgOiBET01IVE1MRWxlbWVudAotLSAoQk9PTCljb21wYWN0OwotLSAo
dm9pZClzZXRDb21wYWN0OihCT09MKWNvbXBhY3Q7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRN
TExJRWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChOU1N0cmluZyAqKXR5cGU7Ci0tICh2b2lk
KXNldFR5cGU6KE5TU3RyaW5nICopdHlwZTsKLS0gKGludCl2YWx1ZTsKLS0gKHZvaWQpc2V0VmFs
dWU6KGludCl2YWx1ZTsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MRGl2RWxlbWVudCA6IERP
TUhUTUxFbGVtZW50Ci0tIChOU1N0cmluZyAqKWFsaWduOwotLSAodm9pZClzZXRBbGlnbjooTlNT
dHJpbmcgKilhbGlnbjsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MUGFyYWdyYXBoRWxlbWVu
dCA6IERPTUhUTUxFbGVtZW50Ci0tIChOU1N0cmluZyAqKWFsaWduOwotLSAodm9pZClzZXRBbGln
bjooTlNTdHJpbmcgKilhbGlnbjsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MSGVhZGluZ0Vs
ZW1lbnQgOiBET01IVE1MRWxlbWVudAotLSAoTlNTdHJpbmcgKilhbGlnbjsKLS0gKHZvaWQpc2V0
QWxpZ246KE5TU3RyaW5nICopYWxpZ247Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTFF1b3Rl
RWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChOU1N0cmluZyAqKWNpdGU7Ci0tICh2b2lkKXNl
dENpdGU6KE5TU3RyaW5nICopY2l0ZTsKLUBlbmQKLQogQGludGVyZmFjZSBET01IVE1MUHJlRWxl
bWVudCA6IERPTUhUTUxFbGVtZW50CiAtIChpbnQpd2lkdGg7CiAtICh2b2lkKXNldFdpZHRoOihp
bnQpd2lkdGg7CiBAZW5kCiAKLUBpbnRlcmZhY2UgRE9NSFRNTEJSRWxlbWVudCA6IERPTUhUTUxF
bGVtZW50Ci0tIChOU1N0cmluZyAqKWNsZWFyOwotLSAodm9pZClzZXRDbGVhcjooTlNTdHJpbmcg
KiljbGVhcjsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MQmFzZUZvbnRFbGVtZW50IDogRE9N
SFRNTEVsZW1lbnQKLS0gKE5TU3RyaW5nICopY29sb3I7Ci0tICh2b2lkKXNldENvbG9yOihOU1N0
cmluZyAqKWNvbG9yOwotLSAoTlNTdHJpbmcgKilmYWNlOwotLSAodm9pZClzZXRGYWNlOihOU1N0
cmluZyAqKWZhY2U7Ci0tIChOU1N0cmluZyAqKXNpemU7Ci0tICh2b2lkKXNldFNpemU6KE5TU3Ry
aW5nICopc2l6ZTsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MRm9udEVsZW1lbnQgOiBET01I
VE1MRWxlbWVudAotLSAoTlNTdHJpbmcgKiljb2xvcjsKLS0gKHZvaWQpc2V0Q29sb3I6KE5TU3Ry
aW5nICopY29sb3I7Ci0tIChOU1N0cmluZyAqKWZhY2U7Ci0tICh2b2lkKXNldEZhY2U6KE5TU3Ry
aW5nICopZmFjZTsKLS0gKE5TU3RyaW5nICopc2l6ZTsKLS0gKHZvaWQpc2V0U2l6ZTooTlNTdHJp
bmcgKilzaXplOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxIUkVsZW1lbnQgOiBET01IVE1M
RWxlbWVudAotLSAoTlNTdHJpbmcgKilhbGlnbjsKLS0gKHZvaWQpc2V0QWxpZ246KE5TU3RyaW5n
ICopYWxpZ247Ci0tIChCT09MKW5vU2hhZGU7Ci0tICh2b2lkKXNldE5vU2hhZGU6KEJPT0wpbm9T
aGFkZTsKLS0gKE5TU3RyaW5nICopc2l6ZTsKLS0gKHZvaWQpc2V0U2l6ZTooTlNTdHJpbmcgKilz
aXplOwotLSAoTlNTdHJpbmcgKil3aWR0aDsKLS0gKHZvaWQpc2V0V2lkdGg6KE5TU3RyaW5nICop
d2lkdGg7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTE1vZEVsZW1lbnQgOiBET01IVE1MRWxl
bWVudAotLSAoTlNTdHJpbmcgKiljaXRlOwotLSAodm9pZClzZXRDaXRlOihOU1N0cmluZyAqKWNp
dGU7Ci0tIChOU1N0cmluZyAqKWRhdGVUaW1lOwotLSAodm9pZClzZXREYXRlVGltZTooTlNTdHJp
bmcgKilkYXRlVGltZTsKLUBlbmQKLQogQGludGVyZmFjZSBET01IVE1MQW5jaG9yRWxlbWVudCA6
IERPTUhUTUxFbGVtZW50CiAtIChOU1N0cmluZyAqKWFjY2Vzc0tleTsKIC0gKHZvaWQpc2V0QWNj
ZXNzS2V5OihOU1N0cmluZyAqKWFjY2Vzc0tleTsKQEAgLTUzMiwxNyArNDA3LDYgQEAKIC0gKERP
TURvY3VtZW50ICopY29udGVudERvY3VtZW50OwogQGVuZAogCi1AaW50ZXJmYWNlIERPTUhUTUxQ
YXJhbUVsZW1lbnQgOiBET01IVE1MRWxlbWVudAotLSAoTlNTdHJpbmcgKiluYW1lOwotLSAodm9p
ZClzZXROYW1lOihOU1N0cmluZyAqKW5hbWU7Ci0tIChOU1N0cmluZyAqKXR5cGU7Ci0tICh2b2lk
KXNldFR5cGU6KE5TU3RyaW5nICopdHlwZTsKLS0gKE5TU3RyaW5nICopdmFsdWU7Ci0tICh2b2lk
KXNldFZhbHVlOihOU1N0cmluZyAqKXZhbHVlOwotLSAoTlNTdHJpbmcgKil2YWx1ZVR5cGU7Ci0t
ICh2b2lkKXNldFZhbHVlVHlwZTooTlNTdHJpbmcgKil2YWx1ZVR5cGU7Ci1AZW5kCi0KIEBpbnRl
cmZhY2UgRE9NSFRNTEFwcGxldEVsZW1lbnQgOiBET01IVE1MRWxlbWVudAogLSAoTlNTdHJpbmcg
KilhbGlnbjsKIC0gKHZvaWQpc2V0QWxpZ246KE5TU3RyaW5nICopYWxpZ247CkBAIC03MzIsNiAr
NTk2LDcgQEAKIC0gKHZvaWQpc2V0V2lkdGg6KE5TU3RyaW5nICopd2lkdGg7CiBAZW5kCiAKKy8v
IEZJWE1FOiBIVE1MRnJhbWVTZXRFbGVtZW50IGhhcyBubyBJREwgZmlsZSBmb3IgaXQsIHNvIGFz
IG9mIHlldCBjYW4ndCBiZSBhdXRvZ2VuZXJhdGVkLgogQGludGVyZmFjZSBET01IVE1MRnJhbWVT
ZXRFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKIC0gKE5TU3RyaW5nICopY29sczsKIC0gKHZvaWQp
c2V0Q29sczooTlNTdHJpbmcgKiljb2xzOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TUhUTUwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0J
KHJldmlzaW9uIDE1ODI4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0JKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0IEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOSw3IEBACiAKICNpbXBvcnQgIkRPTUV4dGVu
c2lvbnMuaCIKICNpbXBvcnQgIkRPTUhUTUxJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NRG9jdW1l
bnQuaCIKICNpbXBvcnQgIkRPTUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Qcml2YXRlLmgiCiAj
aW1wb3J0ICJEb2N1bWVudEZyYWdtZW50LmgiCkBAIC0zNSw0MyArMzcsMjUgQEAKICNpbXBvcnQg
IkZyYW1lVmlldy5oIgogI2ltcG9ydCAiSFRNTEFwcGxldEVsZW1lbnQuaCIKICNpbXBvcnQgIkhU
TUxBcmVhRWxlbWVudC5oIgotI2ltcG9ydCAiSFRNTEJSRWxlbWVudC5oIgotI2ltcG9ydCAiSFRN
TEJhc2VFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MQmFzZUZvbnRFbGVtZW50LmgiCiAjaW1wb3J0
ICJIVE1MQm9keUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxCdXR0b25FbGVtZW50LmgiCi0jaW1w
b3J0ICJIVE1MRExpc3RFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MRGlyZWN0b3J5RWxlbWVudC5o
IgotI2ltcG9ydCAiSFRNTERpdkVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxEb2N1bWVudC5oIgog
I2ltcG9ydCAiSFRNTEVtYmVkRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTEZpZWxkU2V0RWxlbWVu
dC5oIgotI2ltcG9ydCAiSFRNTEZvbnRFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MRm9ybUNvbGxl
Y3Rpb24uaCIKICNpbXBvcnQgIkhUTUxGb3JtRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTEZyYW1l
U2V0RWxlbWVudC5oIgotI2ltcG9ydCAiSFRNTEhSRWxlbWVudC5oIgotI2ltcG9ydCAiSFRNTEhl
YWRFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MSGVhZGluZ0VsZW1lbnQuaCIKLSNpbXBvcnQgIkhU
TUxIdG1sRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTElGcmFtZUVsZW1lbnQuaCIKICNpbXBvcnQg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxJc0luZGV4RWxlbWVudC5oIgotI2lt
cG9ydCAiSFRNTExJRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTExhYmVsRWxlbWVudC5oIgogI2lt
cG9ydCAiSFRNTExlZ2VuZEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxMaW5rRWxlbWVudC5oIgog
I2ltcG9ydCAiSFRNTE1hcEVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxNZW51RWxlbWVudC5oIgot
I2ltcG9ydCAiSFRNTE1ldGFFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MTmFtZXMuaCIKLSNpbXBv
cnQgIkhUTUxPTGlzdEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxPYmplY3RFbGVtZW50LmgiCi0j
aW1wb3J0ICJIVE1MT3B0R3JvdXBFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MT3B0aW9uRWxlbWVu
dC5oIgogI2ltcG9ydCAiSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCi0jaW1wb3J0ICJIVE1MUGFy
YWdyYXBoRWxlbWVudC5oIgotI2ltcG9ydCAiSFRNTFBhcmFtRWxlbWVudC5oIgogI2ltcG9ydCAi
SFRNTFByZUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxTY3JpcHRFbGVtZW50LmgiCiAjaW1wb3J0
ICJIVE1MU2VsZWN0RWxlbWVudC5oIgpAQCAtODQsNyArNjgsNiBAQAogI2ltcG9ydCAiSFRNTFRh
YmxlU2VjdGlvbkVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNp
bXBvcnQgIkhUTUxUaXRsZUVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxVTGlzdEVsZW1lbnQuaCIK
ICNpbXBvcnQgIktVUkwuaCIKICNpbXBvcnQgIk5hbWVOb2RlTGlzdC5oIgogI2ltcG9ydCAiUmFu
Z2UuaCIKQEAgLTk4LDM5ICs4MSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAvLyBG
SVhNRTogVGhpcyBjb2RlIHNob3VsZCBiZSB1c2luZyB0aGUgaW1wbCBtZXRob2RzIGluc3RlYWQg
b2YgZG9pbmcgc28gbWFueSBnZXQvc2V0QXR0cmlidXRlIGNhbGxzLgogLy8gRklYTUU6IFRoaXMg
Y29kZSBzaG91bGQgYmUgZ2VuZXJhdGVkLgogCi1AaW50ZXJmYWNlIERPTUhUTUxDb2xsZWN0aW9u
IChXZWJDb3JlSW50ZXJuYWwpCi0rIChET01IVE1MQ29sbGVjdGlvbiAqKV9jb2xsZWN0aW9uV2l0
aDooSFRNTENvbGxlY3Rpb24gKilpbXBsOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxFbGVt
ZW50IChXZWJDb3JlSW50ZXJuYWwpCi0rIChET01IVE1MRWxlbWVudCAqKV9lbGVtZW50V2l0aDoo
SFRNTEVsZW1lbnQgKilpbXBsOwotLSAoSFRNTEVsZW1lbnQgKilfSFRNTEVsZW1lbnQ7Ci1AZW5k
Ci0KLUBpbnRlcmZhY2UgRE9NSFRNTEZvcm1FbGVtZW50IChXZWJDb3JlSW50ZXJuYWwpCi0rIChE
T01IVE1MRm9ybUVsZW1lbnQgKilfZm9ybUVsZW1lbnRXaXRoOihIVE1MRm9ybUVsZW1lbnQgKilp
bXBsOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50IChXZWJD
b3JlSW50ZXJuYWwpCi0rIChET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudCAqKV90YWJsZUNhcHRp
b25FbGVtZW50V2l0aDooSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQgKilpbXBsOwotLSAoSFRNTFRh
YmxlQ2FwdGlvbkVsZW1lbnQgKilfdGFibGVDYXB0aW9uRWxlbWVudDsKLUBlbmQKLQotQGludGVy
ZmFjZSBET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCAoV2ViQ29yZUludGVybmFsKQotKyAoRE9N
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgKilfdGFibGVTZWN0aW9uRWxlbWVudFdpdGg6KEhUTUxU
YWJsZVNlY3Rpb25FbGVtZW50ICopaW1wbDsKLS0gKEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50ICop
X3RhYmxlU2VjdGlvbkVsZW1lbnQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTFRhYmxlRWxl
bWVudCAoV2ViQ29yZUludGVybmFsKQotKyAoRE9NSFRNTFRhYmxlRWxlbWVudCAqKV90YWJsZUVs
ZW1lbnRXaXRoOihIVE1MVGFibGVFbGVtZW50ICopaW1wbDsKLS0gKEhUTUxUYWJsZUVsZW1lbnQg
KilfdGFibGVFbGVtZW50OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxUYWJsZUNlbGxFbGVt
ZW50IChXZWJDb3JlSW50ZXJuYWwpCi0rIChET01IVE1MVGFibGVDZWxsRWxlbWVudCAqKV90YWJs
ZUNlbGxFbGVtZW50V2l0aDooSFRNTFRhYmxlQ2VsbEVsZW1lbnQgKilpbXBsOwotLSAoSFRNTFRh
YmxlQ2VsbEVsZW1lbnQgKilfdGFibGVDZWxsRWxlbWVudDsKLUBlbmQKLQogLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogQGltcGxlbWVudGF0aW9uIERPTUhUTUxDb2xsZWN0
aW9uCkBAIC0yNzIsNjAgKzIyMiw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEBl
bmQKIAotQGltcGxlbWVudGF0aW9uIERPTUhUTUxFbGVtZW50Ci0KLS0gKE5TU3RyaW5nICopaWRO
YW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9IVE1MRWxlbWVudF0tPmdldEF0dHJpYnV0ZShpZEF0
dHIpOwotfQotCi0tICh2b2lkKXNldElkTmFtZTooTlNTdHJpbmcgKilpZE5hbWUKLXsKLSAgICBb
c2VsZiBfSFRNTEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoaWRBdHRyLCBpZE5hbWUpOwotfQotCi0t
IChOU1N0cmluZyAqKXRpdGxlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9IVE1MRWxlbWVudF0tPnRp
dGxlKCk7Ci19Ci0KLS0gKHZvaWQpc2V0VGl0bGU6KE5TU3RyaW5nICopdGl0bGUKLXsKLSAgICBb
c2VsZiBfSFRNTEVsZW1lbnRdLT5zZXRUaXRsZSh0aXRsZSk7Ci19Ci0KLS0gKE5TU3RyaW5nICop
bGFuZwotewotICAgIHJldHVybiBbc2VsZiBfSFRNTEVsZW1lbnRdLT5sYW5nKCk7Ci19Ci0KLS0g
KHZvaWQpc2V0TGFuZzooTlNTdHJpbmcgKilsYW5nCi17Ci0gICAgW3NlbGYgX0hUTUxFbGVtZW50
XS0+c2V0TGFuZyhsYW5nKTsKLX0KLQotLSAoTlNTdHJpbmcgKilkaXIKLXsKLSAgICByZXR1cm4g
W3NlbGYgX0hUTUxFbGVtZW50XS0+ZGlyKCk7Ci19Ci0KLS0gKHZvaWQpc2V0RGlyOihOU1N0cmlu
ZyAqKWRpcgotewotICAgIFtzZWxmIF9IVE1MRWxlbWVudF0tPnNldERpcihkaXIpOwotfQotCi0t
IChOU1N0cmluZyAqKWNsYXNzTmFtZQotewotICAgIHJldHVybiBbc2VsZiBfSFRNTEVsZW1lbnRd
LT5jbGFzc05hbWUoKTsKLX0KLQotLSAodm9pZClzZXRDbGFzc05hbWU6KE5TU3RyaW5nICopY2xh
c3NOYW1lCi17Ci0gICAgW3NlbGYgX0hUTUxFbGVtZW50XS0+c2V0Q2xhc3NOYW1lKGNsYXNzTmFt
ZSk7Ci19Ci0KLUBlbmQKLQogQGltcGxlbWVudGF0aW9uIERPTUhUTUxFbGVtZW50IChXZWJDb3Jl
SW50ZXJuYWwpCiAKICsgKERPTUhUTUxFbGVtZW50ICopX2VsZW1lbnRXaXRoOihIVE1MRWxlbWVu
dCAqKWltcGwKQEAgLTYyNyw0NCArNTIzLDYgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
IAogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gRE9NSFRNTEh0bWxFbGVtZW50Ci0KLS0gKEhUTUxI
dG1sRWxlbWVudCAqKV9IVE1MSHRtbEVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SFRNTEh0bWxFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChO
U1N0cmluZyAqKXZlcnNpb24KLXsKLSAgICByZXR1cm4gW3NlbGYgX0hUTUxIdG1sRWxlbWVudF0t
PnZlcnNpb24oKTsKLX0KLQotLSAodm9pZClzZXRWZXJzaW9uOihOU1N0cmluZyAqKXZlcnNpb24K
LXsKLSAgICBbc2VsZiBfSFRNTEh0bWxFbGVtZW50XS0+c2V0VmVyc2lvbih2ZXJzaW9uKTsKLX0K
LQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NSFRNTEhlYWRFbGVtZW50Ci0KLS0gKEhUTUxI
ZWFkRWxlbWVudCAqKV9oZWFkRWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1M
SGVhZEVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3Ry
aW5nICopcHJvZmlsZQotewotICAgIHJldHVybiBbc2VsZiBfaGVhZEVsZW1lbnRdLT5wcm9maWxl
KCk7Ci19Ci0KLS0gKHZvaWQpc2V0UHJvZmlsZTooTlNTdHJpbmcgKilwcm9maWxlCi17Ci0gICAg
W3NlbGYgX2hlYWRFbGVtZW50XS0+c2V0UHJvZmlsZShwcm9maWxlKTsKLX0KLQotQGVuZAotCiBA
aW1wbGVtZW50YXRpb24gRE9NSFRNTExpbmtFbGVtZW50CiAKIC0gKEhUTUxMaW5rRWxlbWVudCAq
KV9saW5rRWxlbWVudApAQCAtNzY5LDEwMyArNjI3LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIAogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gRE9NSFRNTFRpdGxlRWxlbWVudAotCi0t
IChIVE1MVGl0bGVFbGVtZW50ICopX3RpdGxlRWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxIVE1MVGl0bGVFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQot
Ci0tIChOU1N0cmluZyAqKXRleHQKLXsKLSAgICByZXR1cm4gW3NlbGYgX3RpdGxlRWxlbWVudF0t
PmdldEF0dHJpYnV0ZSh0ZXh0QXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0VGV4dDooTlNTdHJpbmcg
Kil0ZXh0Ci17Ci0gICAgW3NlbGYgX3RpdGxlRWxlbWVudF0tPnNldEF0dHJpYnV0ZSh0ZXh0QXR0
ciwgdGV4dCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUhUTUxNZXRhRWxlbWVu
dAotCi0tIChIVE1MTWV0YUVsZW1lbnQgKilfbWV0YUVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SFRNTE1ldGFFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwot
fQotCi0tIChOU1N0cmluZyAqKWNvbnRlbnQKLXsKLSAgICByZXR1cm4gW3NlbGYgX21ldGFFbGVt
ZW50XS0+Z2V0QXR0cmlidXRlKGNvbnRlbnRBdHRyKTsKLX0KLQotLSAodm9pZClzZXRDb250ZW50
OihOU1N0cmluZyAqKWNvbnRlbnQKLXsKLSAgICBbc2VsZiBfbWV0YUVsZW1lbnRdLT5zZXRBdHRy
aWJ1dGUoY29udGVudEF0dHIsIGNvbnRlbnQpOwotfQotCi0tIChOU1N0cmluZyAqKWh0dHBFcXVp
dgotewotICAgIHJldHVybiBbc2VsZiBfbWV0YUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoaHR0cF9l
cXVpdkF0dHIpOwotfQotCi0tICh2b2lkKXNldEh0dHBFcXVpdjooTlNTdHJpbmcgKilodHRwRXF1
aXYKLXsKLSAgICBbc2VsZiBfbWV0YUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoaHR0cF9lcXVpdkF0
dHIsIGh0dHBFcXVpdik7Ci19Ci0KLS0gKE5TU3RyaW5nICopbmFtZQotewotICAgIHJldHVybiBb
c2VsZiBfbWV0YUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUobmFtZUF0dHIpOwotfQotCi0tICh2b2lk
KXNldE5hbWU6KE5TU3RyaW5nICopbmFtZQotewotICAgIFtzZWxmIF9tZXRhRWxlbWVudF0tPnNl
dEF0dHJpYnV0ZShuYW1lQXR0ciwgbmFtZSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopc2NoZW1lCi17
Ci0gICAgcmV0dXJuIFtzZWxmIF9tZXRhRWxlbWVudF0tPmdldEF0dHJpYnV0ZShzY2hlbWVBdHRy
KTsKLX0KLQotLSAodm9pZClzZXRTY2hlbWU6KE5TU3RyaW5nICopc2NoZW1lCi17Ci0gICAgW3Nl
bGYgX21ldGFFbGVtZW50XS0+c2V0QXR0cmlidXRlKHNjaGVtZUF0dHIsIHNjaGVtZSk7Ci19Ci0K
LUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUhUTUxCYXNlRWxlbWVudAotCi0tIChIVE1MQmFz
ZUVsZW1lbnQgKilfYmFzZUVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEJh
c2VFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChOU1N0cmlu
ZyAqKWhyZWYKLXsKLSAgICByZXR1cm4gW3NlbGYgX2Jhc2VFbGVtZW50XS0+aHJlZigpOwotfQot
Ci0tICh2b2lkKXNldEhyZWY6KE5TU3RyaW5nICopaHJlZgotewotICAgIFtzZWxmIF9iYXNlRWxl
bWVudF0tPnNldEF0dHJpYnV0ZShocmVmQXR0ciwgaHJlZik7Ci19Ci0KLS0gKE5TU3RyaW5nICop
dGFyZ2V0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9iYXNlRWxlbWVudF0tPmdldEF0dHJpYnV0ZSh0
YXJnZXRBdHRyKTsKLX0KLQotLSAodm9pZClzZXRUYXJnZXQ6KE5TU3RyaW5nICopdGFyZ2V0Ci17
Ci0gICAgW3NlbGYgX2Jhc2VFbGVtZW50XS0+c2V0QXR0cmlidXRlKHNjaGVtZUF0dHIsIHRhcmdl
dCk7Ci19Ci0KLUBlbmQKLQogQGltcGxlbWVudGF0aW9uIERPTUhUTUxTdHlsZUVsZW1lbnQKIAog
LSAoSFRNTFN0eWxlRWxlbWVudCAqKV9zdHlsZUVsZW1lbnQKQEAgLTEyMjYsMzUgKzk4Nyw2IEBA
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIERP
TUhUTUxPcHRHcm91cEVsZW1lbnQKLQotLSAoSFRNTE9wdEdyb3VwRWxlbWVudCAqKV9vcHRHcm91
cEVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudCo+
KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoQk9PTClkaXNhYmxlZAotewot
ICAgIHJldHVybiBbc2VsZiBfb3B0R3JvdXBFbGVtZW50XS0+ZGlzYWJsZWQoKTsKLX0KLQotLSAo
dm9pZClzZXREaXNhYmxlZDooQk9PTClkaXNhYmxlZAotewotICAgIFtzZWxmIF9vcHRHcm91cEVs
ZW1lbnRdLT5zZXREaXNhYmxlZChkaXNhYmxlZCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbGFiZWwK
LXsKLSAgICByZXR1cm4gW3NlbGYgX29wdEdyb3VwRWxlbWVudF0tPmxhYmVsKCk7Ci19Ci0KLS0g
KHZvaWQpc2V0TGFiZWw6KE5TU3RyaW5nICopbGFiZWwKLXsKLSAgICBbc2VsZiBfb3B0R3JvdXBF
bGVtZW50XS0+c2V0TGFiZWwobGFiZWwpOwotfQotCi1AZW5kCi0KIEBpbXBsZW1lbnRhdGlvbiBE
T01IVE1MT3B0aW9uRWxlbWVudAogCiAtIChIVE1MT3B0aW9uRWxlbWVudCAqKV9vcHRpb25FbGVt
ZW50CkBAIC0xODI5LDIzNiArMTU2MSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
IEBlbmQKIAotQGltcGxlbWVudGF0aW9uIERPTUhUTUxVTGlzdEVsZW1lbnQKLQotLSAoSFRNTFVM
aXN0RWxlbWVudCAqKV91TGlzdEVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRN
TFVMaXN0RWxlbWVudCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoQk9P
TCljb21wYWN0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF91TGlzdEVsZW1lbnRdLT5nZXRBdHRyaWJ1
dGUoY29tcGFjdEF0dHIpLmlzTnVsbCgpOwotfQotCi0tICh2b2lkKXNldENvbXBhY3Q6KEJPT0wp
Y29tcGFjdAotewotICAgIFtzZWxmIF91TGlzdEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoY29tcGFj
dEF0dHIsIGNvbXBhY3QgPyAiIiA6IDApOwotfQotCi0tIChOU1N0cmluZyAqKXR5cGUKLXsKLSAg
ICByZXR1cm4gW3NlbGYgX3VMaXN0RWxlbWVudF0tPmdldEF0dHJpYnV0ZSh0eXBlQXR0cik7Ci19
Ci0KLS0gKHZvaWQpc2V0VHlwZTooTlNTdHJpbmcgKil0eXBlCi17Ci0gICAgW3NlbGYgX3VMaXN0
RWxlbWVudF0tPnNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgdHlwZSk7Ci19Ci0KLUBlbmQKLQotQGlt
cGxlbWVudGF0aW9uIERPTUhUTUxPTGlzdEVsZW1lbnQKLQotLSAoSFRNTE9MaXN0RWxlbWVudCAq
KV9vTGlzdEVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE9MaXN0RWxlbWVu
dCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoQk9PTCljb21wYWN0Ci17
Ci0gICAgcmV0dXJuIFtzZWxmIF9vTGlzdEVsZW1lbnRdLT5jb21wYWN0KCk7Ci19Ci0KLS0gKHZv
aWQpc2V0Q29tcGFjdDooQk9PTCljb21wYWN0Ci17Ci0gICAgW3NlbGYgX29MaXN0RWxlbWVudF0t
PnNldENvbXBhY3QoY29tcGFjdCk7Ci19Ci0KLS0gKGludClzdGFydAotewotICAgIHJldHVybiBb
c2VsZiBfb0xpc3RFbGVtZW50XS0+Z2V0QXR0cmlidXRlKHN0YXJ0QXR0cikudG9JbnQoKTsKLX0K
LQotLSAodm9pZClzZXRTdGFydDooaW50KXN0YXJ0Ci17Ci0gICAgW3NlbGYgX29MaXN0RWxlbWVu
dF0tPnNldEF0dHJpYnV0ZShzdGFydEF0dHIsIFN0cmluZzo6bnVtYmVyKHN0YXJ0KSk7Ci19Ci0K
LS0gKE5TU3RyaW5nICopdHlwZQotewotICAgIHJldHVybiBbc2VsZiBfb0xpc3RFbGVtZW50XS0+
Z2V0QXR0cmlidXRlKHR5cGVBdHRyKTsKLX0KLQotLSAodm9pZClzZXRUeXBlOihOU1N0cmluZyAq
KXR5cGUKLXsKLSAgICBbc2VsZiBfb0xpc3RFbGVtZW50XS0+c2V0QXR0cmlidXRlKHR5cGVBdHRy
LCB0eXBlKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NSFRNTERMaXN0RWxlbWVu
dAotCi0tIChIVE1MRExpc3RFbGVtZW50ICopX2RMaXN0RWxlbWVudAotewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxIVE1MRExpc3RFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkp
OwotfQotCi0tIChCT09MKWNvbXBhY3QKLXsKLSAgICByZXR1cm4gW3NlbGYgX2RMaXN0RWxlbWVu
dF0tPmdldEF0dHJpYnV0ZShjb21wYWN0QXR0cikuaXNOdWxsKCk7Ci19Ci0KLS0gKHZvaWQpc2V0
Q29tcGFjdDooQk9PTCljb21wYWN0Ci17Ci0gICAgW3NlbGYgX2RMaXN0RWxlbWVudF0tPnNldEF0
dHJpYnV0ZShjb21wYWN0QXR0ciwgY29tcGFjdCA/ICIiIDogMCk7Ci19Ci0KLUBlbmQKLQotQGlt
cGxlbWVudGF0aW9uIERPTUhUTUxEaXJlY3RvcnlFbGVtZW50Ci0KLS0gKEhUTUxEaXJlY3RvcnlF
bGVtZW50ICopX2RpcmVjdG9yeUxpc3RFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PEhUTUxEaXJlY3RvcnlFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQot
Ci0tIChCT09MKWNvbXBhY3QKLXsKLSAgICByZXR1cm4gW3NlbGYgX2RpcmVjdG9yeUxpc3RFbGVt
ZW50XS0+Z2V0QXR0cmlidXRlKGNvbXBhY3RBdHRyKS5pc051bGwoKTsKLX0KLQotLSAodm9pZClz
ZXRDb21wYWN0OihCT09MKWNvbXBhY3QKLXsKLSAgICBbc2VsZiBfZGlyZWN0b3J5TGlzdEVsZW1l
bnRdLT5zZXRBdHRyaWJ1dGUoY29tcGFjdEF0dHIsIGNvbXBhY3QgPyAiIiA6IDApOwotfQotCi1A
ZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MTWVudUVsZW1lbnQKLQotLSAoSFRNTE1lbnVF
bGVtZW50ICopX21lbnVMaXN0RWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1M
TWVudUVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKEJPT0wp
Y29tcGFjdAotewotICAgIHJldHVybiBbc2VsZiBfbWVudUxpc3RFbGVtZW50XS0+Z2V0QXR0cmli
dXRlKGNvbXBhY3RBdHRyKS5pc051bGwoKTsKLX0KLQotLSAodm9pZClzZXRDb21wYWN0OihCT09M
KWNvbXBhY3QKLXsKLSAgICBbc2VsZiBfbWVudUxpc3RFbGVtZW50XS0+c2V0QXR0cmlidXRlKGNv
bXBhY3RBdHRyLCBjb21wYWN0ID8gIiIgOiAwKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRp
b24gRE9NSFRNTExJRWxlbWVudAotCi0tIChIVE1MTElFbGVtZW50ICopX2xpRWxlbWVudAotewot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MTElFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9p
bnRlcm5hbCkpOwotfQotCi0tIChOU1N0cmluZyAqKXR5cGUKLXsKLSAgICByZXR1cm4gW3NlbGYg
X2xpRWxlbWVudF0tPnR5cGUoKTsKLX0KLQotLSAodm9pZClzZXRUeXBlOihOU1N0cmluZyAqKXR5
cGUKLXsKLSAgICBbc2VsZiBfbGlFbGVtZW50XS0+c2V0VHlwZSh0eXBlKTsKLX0KLQotLSAoaW50
KXZhbHVlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9saUVsZW1lbnRdLT52YWx1ZSgpOwotfQotCi0t
ICh2b2lkKXNldFZhbHVlOihpbnQpdmFsdWUKLXsKLSAgICBbc2VsZiBfbGlFbGVtZW50XS0+c2V0
VmFsdWUodmFsdWUpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MUXVvdGVF
bGVtZW50Ci0KLS0gKEhUTUxFbGVtZW50ICopX3F1b3RlRWxlbWVudAotewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0K
LQotLSAoTlNTdHJpbmcgKiljaXRlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9xdW90ZUVsZW1lbnRd
LT5nZXRBdHRyaWJ1dGUoY2l0ZUF0dHIpOwotfQotCi0tICh2b2lkKXNldENpdGU6KE5TU3RyaW5n
ICopY2l0ZQotewotICAgIFtzZWxmIF9xdW90ZUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoY2l0ZUF0
dHIsIGNpdGUpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MRGl2RWxlbWVu
dAotCi0tIChIVE1MRGl2RWxlbWVudCAqKV9kaXZFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEhUTUxEaXZFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQot
Ci0tIChOU1N0cmluZyAqKWFsaWduCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9kaXZFbGVtZW50XS0+
Z2V0QXR0cmlidXRlKGFsaWduQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0QWxpZ246KE5TU3RyaW5n
ICopYWxpZ24KLXsKLSAgICBbc2VsZiBfZGl2RWxlbWVudF0tPnNldEF0dHJpYnV0ZShhbGlnbkF0
dHIsIGFsaWduKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NSFRNTFBhcmFncmFw
aEVsZW1lbnQKLQotLSAoSFRNTFBhcmFncmFwaEVsZW1lbnQgKilfcGFyYWdyYXBoRWxlbWVudAot
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MUGFyYWdyYXBoRWxlbWVudCo+KERPTV9jYXN0
PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKilhbGlnbgotewotICAgIHJl
dHVybiBbc2VsZiBfcGFyYWdyYXBoRWxlbWVudF0tPmdldEF0dHJpYnV0ZShhbGlnbkF0dHIpOwot
fQotCi0tICh2b2lkKXNldEFsaWduOihOU1N0cmluZyAqKWFsaWduCi17Ci0gICAgW3NlbGYgX3Bh
cmFncmFwaEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoYWxpZ25BdHRyLCBhbGlnbik7Ci19Ci0KLUBl
bmQKLQotQGltcGxlbWVudGF0aW9uIERPTUhUTUxIZWFkaW5nRWxlbWVudAotCi0tIChIVE1MSGVh
ZGluZ0VsZW1lbnQgKilfaGVhZGluZ0VsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SFRNTEhlYWRpbmdFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQotCi0t
IChOU1N0cmluZyAqKWFsaWduCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9oZWFkaW5nRWxlbWVudF0t
PmdldEF0dHJpYnV0ZShhbGlnbkF0dHIpOwotfQotCi0tICh2b2lkKXNldEFsaWduOihOU1N0cmlu
ZyAqKWFsaWduCi17Ci0gICAgW3NlbGYgX2hlYWRpbmdFbGVtZW50XS0+c2V0QXR0cmlidXRlKGFs
aWduQXR0ciwgYWxpZ24pOwotfQotCi1AZW5kCi0KIEBpbXBsZW1lbnRhdGlvbiBET01IVE1MUHJl
RWxlbWVudAogCiAtIChIVE1MUHJlRWxlbWVudCAqKV9wcmVFbGVtZW50CkBAIC0yMDc4LDE4MSAr
MTU4MCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEBlbmQKIAotQGltcGxlbWVu
dGF0aW9uIERPTUhUTUxCUkVsZW1lbnQKLQotLSAoSFRNTEJSRWxlbWVudCAqKV9CUkVsZW1lbnQK
LXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEJSRWxlbWVudCo+KERPTV9jYXN0PE5vZGUq
PihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKiljbGVhcgotewotICAgIHJldHVybiBb
c2VsZiBfQlJFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGNsZWFyQXR0cik7Ci19Ci0KLS0gKHZvaWQp
c2V0Q2xlYXI6KE5TU3RyaW5nICopY2xlYXIKLXsKLSAgICBbc2VsZiBfQlJFbGVtZW50XS0+c2V0
QXR0cmlidXRlKGNsZWFyQXR0ciwgY2xlYXIpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlv
biBET01IVE1MQmFzZUZvbnRFbGVtZW50Ci0KLS0gKEhUTUxCYXNlRm9udEVsZW1lbnQgKilfYmFz
ZUZvbnRFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxCYXNlRm9udEVsZW1l
bnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopY29s
b3IKLXsKLSAgICByZXR1cm4gW3NlbGYgX2Jhc2VGb250RWxlbWVudF0tPmdldEF0dHJpYnV0ZShj
b2xvckF0dHIpOwotfQotCi0tICh2b2lkKXNldENvbG9yOihOU1N0cmluZyAqKWNvbG9yCi17Ci0g
ICAgW3NlbGYgX2Jhc2VGb250RWxlbWVudF0tPnNldEF0dHJpYnV0ZShjb2xvckF0dHIsIGNvbG9y
KTsKLX0KLQotLSAoTlNTdHJpbmcgKilmYWNlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9iYXNlRm9u
dEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoZmFjZUF0dHIpOwotfQotCi0tICh2b2lkKXNldEZhY2U6
KE5TU3RyaW5nICopZmFjZQotewotICAgIFtzZWxmIF9iYXNlRm9udEVsZW1lbnRdLT5zZXRBdHRy
aWJ1dGUoZmFjZUF0dHIsIGZhY2UpOwotfQotCi0tIChOU1N0cmluZyAqKXNpemUKLXsKLSAgICBy
ZXR1cm4gW3NlbGYgX2Jhc2VGb250RWxlbWVudF0tPmdldEF0dHJpYnV0ZShzaXplQXR0cik7Ci19
Ci0KLS0gKHZvaWQpc2V0U2l6ZTooTlNTdHJpbmcgKilzaXplCi17Ci0gICAgW3NlbGYgX2Jhc2VG
b250RWxlbWVudF0tPnNldEF0dHJpYnV0ZShzaXplQXR0ciwgc2l6ZSk7Ci19Ci0KLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIERPTUhUTUxGb250RWxlbWVudAotCi0tIChIVE1MRm9udEVsZW1lbnQg
KilfZm9udEVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZvbnRFbGVtZW50
Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChOU1N0cmluZyAqKWNvbG9y
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9mb250RWxlbWVudF0tPmdldEF0dHJpYnV0ZShjb2xvckF0
dHIpOwotfQotCi0tICh2b2lkKXNldENvbG9yOihOU1N0cmluZyAqKWNvbG9yCi17Ci0gICAgW3Nl
bGYgX2ZvbnRFbGVtZW50XS0+c2V0QXR0cmlidXRlKGNvbG9yQXR0ciwgY29sb3IpOwotfQotCi0t
IChOU1N0cmluZyAqKWZhY2UKLXsKLSAgICByZXR1cm4gW3NlbGYgX2ZvbnRFbGVtZW50XS0+Z2V0
QXR0cmlidXRlKGZhY2VBdHRyKTsKLX0KLQotLSAodm9pZClzZXRGYWNlOihOU1N0cmluZyAqKWZh
Y2UKLXsKLSAgICBbc2VsZiBfZm9udEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoZmFjZUF0dHIsIGZh
Y2UpOwotfQotCi0tIChOU1N0cmluZyAqKXNpemUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2ZvbnRF
bGVtZW50XS0+Z2V0QXR0cmlidXRlKHNpemVBdHRyKTsKLX0KLQotLSAodm9pZClzZXRTaXplOihO
U1N0cmluZyAqKXNpemUKLXsKLSAgICBbc2VsZiBfZm9udEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUo
c2l6ZUF0dHIsIHNpemUpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MSFJF
bGVtZW50Ci0KLS0gKEhUTUxIUkVsZW1lbnQgKilfSFJFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PEhUTUxIUkVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19
Ci0KLS0gKE5TU3RyaW5nICopYWxpZ24KLXsKLSAgICByZXR1cm4gW3NlbGYgX0hSRWxlbWVudF0t
PmdldEF0dHJpYnV0ZShhbGlnbkF0dHIpOwotfQotCi0tICh2b2lkKXNldEFsaWduOihOU1N0cmlu
ZyAqKWFsaWduCi17Ci0gICAgW3NlbGYgX0hSRWxlbWVudF0tPnNldEF0dHJpYnV0ZShhbGlnbkF0
dHIsIGFsaWduKTsKLX0KLQotLSAoQk9PTClub1NoYWRlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9I
UkVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUobm9zaGFkZUF0dHIpLmlzTnVsbCgpOwotfQotCi0tICh2
b2lkKXNldE5vU2hhZGU6KEJPT0wpbm9TaGFkZQotewotICAgIFtzZWxmIF9IUkVsZW1lbnRdLT5z
ZXRBdHRyaWJ1dGUobm9zaGFkZUF0dHIsIG5vU2hhZGUgPyAiIiA6IDApOwotfQotCi0tIChOU1N0
cmluZyAqKXNpemUKLXsKLSAgICByZXR1cm4gW3NlbGYgX0hSRWxlbWVudF0tPmdldEF0dHJpYnV0
ZShzaXplQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0U2l6ZTooTlNTdHJpbmcgKilzaXplCi17Ci0g
ICAgW3NlbGYgX0hSRWxlbWVudF0tPnNldEF0dHJpYnV0ZShzaXplQXR0ciwgc2l6ZSk7Ci19Ci0K
LS0gKE5TU3RyaW5nICopd2lkdGgKLXsKLSAgICByZXR1cm4gW3NlbGYgX0hSRWxlbWVudF0tPmdl
dEF0dHJpYnV0ZSh3aWR0aEF0dHIpOwotfQotCi0tICh2b2lkKXNldFdpZHRoOihOU1N0cmluZyAq
KXdpZHRoCi17Ci0gICAgW3NlbGYgX0hSRWxlbWVudF0tPnNldEF0dHJpYnV0ZSh3aWR0aEF0dHIs
IHdpZHRoKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NSFRNTE1vZEVsZW1lbnQK
LQotLSAoSFRNTEVsZW1lbnQgKilfbW9kRWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxIVE1MRWxlbWVudCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNT
dHJpbmcgKiljaXRlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9tb2RFbGVtZW50XS0+Z2V0QXR0cmli
dXRlKGNpdGVBdHRyKTsKLX0KLQotLSAodm9pZClzZXRDaXRlOihOU1N0cmluZyAqKWNpdGUKLXsK
LSAgICBbc2VsZiBfbW9kRWxlbWVudF0tPnNldEF0dHJpYnV0ZShjaXRlQXR0ciwgY2l0ZSk7Ci19
Ci0KLS0gKE5TU3RyaW5nICopZGF0ZVRpbWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX21vZEVsZW1l
bnRdLT5nZXRBdHRyaWJ1dGUoZGF0ZXRpbWVBdHRyKTsKLX0KLQotLSAodm9pZClzZXREYXRlVGlt
ZTooTlNTdHJpbmcgKilkYXRlVGltZQotewotICAgIFtzZWxmIF9tb2RFbGVtZW50XS0+c2V0QXR0
cmlidXRlKGRhdGV0aW1lQXR0ciwgZGF0ZVRpbWUpOwotfQotCi1AZW5kCi0KIEBpbXBsZW1lbnRh
dGlvbiBET01IVE1MQW5jaG9yRWxlbWVudAogCiAtIChIVE1MQW5jaG9yRWxlbWVudCAqKV9hbmNo
b3JFbGVtZW50CkBAIC0yNzM2LDU1ICsyMDYzLDYgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gRE9NSFRNTFBhcmFtRWxlbWVudAotCi0tIChI
VE1MUGFyYW1FbGVtZW50ICopX3BhcmFtRWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxIVE1MUGFyYW1FbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQotCi0t
IChOU1N0cmluZyAqKW5hbWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX3BhcmFtRWxlbWVudF0tPmdl
dEF0dHJpYnV0ZShuYW1lQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcgKilu
YW1lCi17Ci0gICAgW3NlbGYgX3BhcmFtRWxlbWVudF0tPnNldEF0dHJpYnV0ZShuYW1lQXR0ciwg
bmFtZSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopdHlwZQotewotICAgIHJldHVybiBbc2VsZiBfcGFy
YW1FbGVtZW50XS0+Z2V0QXR0cmlidXRlKHR5cGVBdHRyKTsKLX0KLQotLSAodm9pZClzZXRUeXBl
OihOU1N0cmluZyAqKXR5cGUKLXsKLSAgICBbc2VsZiBfcGFyYW1FbGVtZW50XS0+c2V0QXR0cmli
dXRlKHR5cGVBdHRyLCB0eXBlKTsKLX0KLQotLSAoTlNTdHJpbmcgKil2YWx1ZQotewotICAgIHJl
dHVybiBbc2VsZiBfcGFyYW1FbGVtZW50XS0+Z2V0QXR0cmlidXRlKHZhbHVlQXR0cik7Ci19Ci0K
LS0gKHZvaWQpc2V0VmFsdWU6KE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICBbc2VsZiBfcGFyYW1F
bGVtZW50XS0+c2V0QXR0cmlidXRlKHZhbHVlQXR0ciwgdmFsdWUpOwotfQotCi0tIChOU1N0cmlu
ZyAqKXZhbHVlVHlwZQotewotICAgIHJldHVybiBbc2VsZiBfcGFyYW1FbGVtZW50XS0+Z2V0QXR0
cmlidXRlKHZhbHVldHlwZUF0dHIpOwotfQotCi0tICh2b2lkKXNldFZhbHVlVHlwZTooTlNTdHJp
bmcgKil2YWx1ZVR5cGUKLXsKLSAgICBbc2VsZiBfcGFyYW1FbGVtZW50XS0+c2V0QXR0cmlidXRl
KHZhbHVldHlwZUF0dHIsIHZhbHVlVHlwZSk7Ci19Ci0KLUBlbmQKLQogQGltcGxlbWVudGF0aW9u
IERPTUhUTUxBcHBsZXRFbGVtZW50CiAKIC0gKEhUTUxBcHBsZXRFbGVtZW50ICopX2FwcGxldEVs
ZW1lbnQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MRWxlbWVudC5oCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxFbGVtZW50LmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
U2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFdl
YkNvcmUvRE9NRWxlbWVudC5oPgorCitAaW50ZXJmYWNlIERPTUhUTUxFbGVtZW50IDogRE9NRWxl
bWVudAorLSAoTlNTdHJpbmcgKilpZE5hbWU7CistICh2b2lkKXNldElkTmFtZTooTlNTdHJpbmcg
KilpZE5hbWU7CistIChOU1N0cmluZyAqKXRpdGxlOworLSAodm9pZClzZXRUaXRsZTooTlNTdHJp
bmcgKil0aXRsZTsKKy0gKE5TU3RyaW5nICopbGFuZzsKKy0gKHZvaWQpc2V0TGFuZzooTlNTdHJp
bmcgKilsYW5nOworLSAoTlNTdHJpbmcgKilkaXI7CistICh2b2lkKXNldERpcjooTlNTdHJpbmcg
KilkaXI7CistIChOU1N0cmluZyAqKWNsYXNzTmFtZTsKKy0gKHZvaWQpc2V0Q2xhc3NOYW1lOihO
U1N0cmluZyAqKWNsYXNzTmFtZTsKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01IVE1MRWxlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
SFRNTEVsZW1lbnQubW0JKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
SFRNTEVsZW1lbnQubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5j
b20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRE9NQXR0ci5oIgorCisj
aW1wb3J0ICJET01JbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NSFRNTEludGVybmFsLmgiCisjaW1w
b3J0ICJIVE1MRWxlbWVudC5oIgorCitAaW1wbGVtZW50YXRpb24gRE9NSFRNTEVsZW1lbnQKKwor
LSAoTlNTdHJpbmcgKilpZE5hbWUKK3sKKyAgICAvLyBGSVhNRTogZG9lcyB0aGlzIHJlYWxseSB3
b3JrPworICAgIHJldHVybiBbc2VsZiBfSFRNTEVsZW1lbnRdLT5pZCgpOworfQorCistICh2b2lk
KXNldElkTmFtZTooTlNTdHJpbmcgKilpZE5hbWUKK3sKKyAgICBbc2VsZiBfSFRNTEVsZW1lbnRd
LT5zZXRJZChpZE5hbWUpOworfQorCistIChOU1N0cmluZyAqKXRpdGxlCit7CisgICAgcmV0dXJu
IFtzZWxmIF9IVE1MRWxlbWVudF0tPnRpdGxlKCk7Cit9CisKKy0gKHZvaWQpc2V0VGl0bGU6KE5T
U3RyaW5nICopdGl0bGUKK3sKKyAgICBbc2VsZiBfSFRNTEVsZW1lbnRdLT5zZXRUaXRsZSh0aXRs
ZSk7Cit9CisKKy0gKE5TU3RyaW5nICopbGFuZworeworICAgIHJldHVybiBbc2VsZiBfSFRNTEVs
ZW1lbnRdLT5sYW5nKCk7Cit9CisKKy0gKHZvaWQpc2V0TGFuZzooTlNTdHJpbmcgKilsYW5nCit7
CisgICAgW3NlbGYgX0hUTUxFbGVtZW50XS0+c2V0TGFuZyhsYW5nKTsKK30KKworLSAoTlNTdHJp
bmcgKilkaXIKK3sKKyAgICByZXR1cm4gW3NlbGYgX0hUTUxFbGVtZW50XS0+ZGlyKCk7Cit9CisK
Ky0gKHZvaWQpc2V0RGlyOihOU1N0cmluZyAqKWRpcgoreworICAgIFtzZWxmIF9IVE1MRWxlbWVu
dF0tPnNldERpcihkaXIpOworfQorCistIChOU1N0cmluZyAqKWNsYXNzTmFtZQoreworICAgIHJl
dHVybiBbc2VsZiBfSFRNTEVsZW1lbnRdLT5jbGFzc05hbWUoKTsKK30KKworLSAodm9pZClzZXRD
bGFzc05hbWU6KE5TU3RyaW5nICopY2xhc3NOYW1lCit7CisgICAgW3NlbGYgX0hUTUxFbGVtZW50
XS0+c2V0Q2xhc3NOYW1lKGNsYXNzTmFtZSk7Cit9CisKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01IVE1MSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NSFRNTEludGVybmFsLmgJKHJldmlzaW9uIDE1ODI4KQorKysgV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTUhUTUxJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxz
YW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjQsMTEgKzI1LDUyIEBACiAgKi8KIAogI2ltcG9ydCAiRE9NSFRNTC5oIgorI2ltcG9ydCAiRE9N
SFRNTEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEhUTUxPcHRp
b25zQ29sbGVjdGlvbjsKKyAgICBjbGFzcyBIVE1MQ29sbGVjdGlvbjsKKyAgICBjbGFzcyBIVE1M
RWxlbWVudDsKKyAgICBjbGFzcyBIVE1MRm9ybUVsZW1lbnQ7CisgICAgY2xhc3MgSFRNTFRhYmxl
Q2FwdGlvbkVsZW1lbnQ7CisgICAgY2xhc3MgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ7CisgICAg
Y2xhc3MgSFRNTFRhYmxlRWxlbWVudDsKKyAgICBjbGFzcyBIVE1MVGFibGVDZWxsRWxlbWVudDsK
IH0KIAogQGludGVyZmFjZSBET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24gKFdlYkNvcmVJbnRlcm5h
bCkKICsgKERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbiAqKV9vcHRpb25zQ29sbGVjdGlvbldpdGg6
KFdlYkNvcmU6OkhUTUxPcHRpb25zQ29sbGVjdGlvbiAqKWltcGw7CiBAZW5kCisKK0BpbnRlcmZh
Y2UgRE9NSFRNTENvbGxlY3Rpb24gKFdlYkNvcmVJbnRlcm5hbCkKKysgKERPTUhUTUxDb2xsZWN0
aW9uICopX2NvbGxlY3Rpb25XaXRoOihXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbiAqKWltcGw7CitA
ZW5kCisKK0BpbnRlcmZhY2UgRE9NSFRNTEVsZW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKKysgKERP
TUhUTUxFbGVtZW50ICopX2VsZW1lbnRXaXRoOihXZWJDb3JlOjpIVE1MRWxlbWVudCAqKWltcGw7
CistIChXZWJDb3JlOjpIVE1MRWxlbWVudCAqKV9IVE1MRWxlbWVudDsKK0BlbmQKKworQGludGVy
ZmFjZSBET01IVE1MRm9ybUVsZW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKKysgKERPTUhUTUxGb3Jt
RWxlbWVudCAqKV9mb3JtRWxlbWVudFdpdGg6KFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudCAqKWlt
cGw7CitAZW5kCisKK0BpbnRlcmZhY2UgRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQgKFdlYkNv
cmVJbnRlcm5hbCkKKysgKERPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50ICopX3RhYmxlQ2FwdGlv
bkVsZW1lbnRXaXRoOihXZWJDb3JlOjpIVE1MVGFibGVDYXB0aW9uRWxlbWVudCAqKWltcGw7Cist
IChXZWJDb3JlOjpIVE1MVGFibGVDYXB0aW9uRWxlbWVudCAqKV90YWJsZUNhcHRpb25FbGVtZW50
OworQGVuZAorCitAaW50ZXJmYWNlIERPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50IChXZWJDb3Jl
SW50ZXJuYWwpCisrIChET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCAqKV90YWJsZVNlY3Rpb25F
bGVtZW50V2l0aDooV2ViQ29yZTo6SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgKilpbXBsOworLSAo
V2ViQ29yZTo6SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgKilfdGFibGVTZWN0aW9uRWxlbWVudDsK
K0BlbmQKKworQGludGVyZmFjZSBET01IVE1MVGFibGVFbGVtZW50IChXZWJDb3JlSW50ZXJuYWwp
CisrIChET01IVE1MVGFibGVFbGVtZW50ICopX3RhYmxlRWxlbWVudFdpdGg6KFdlYkNvcmU6OkhU
TUxUYWJsZUVsZW1lbnQgKilpbXBsOworLSAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudCAqKV90
YWJsZUVsZW1lbnQ7CitAZW5kCisKK0BpbnRlcmZhY2UgRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQg
KFdlYkNvcmVJbnRlcm5hbCkKKysgKERPTUhUTUxUYWJsZUNlbGxFbGVtZW50ICopX3RhYmxlQ2Vs
bEVsZW1lbnRXaXRoOihXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVudCAqKWltcGw7CistIChX
ZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVudCAqKV90YWJsZUNlbGxFbGVtZW50OworQGVuZApJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUltcGxlbWVudGF0aW9uRnJvbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW1wbGVtZW50YXRpb25Gcm9udC5o
CShyZXZpc2lvbiAxNTgyOCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbXBsZW1lbnRh
dGlvbkZyb250LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
U2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTUzLDYgKzU0LDYgQEAgcHVibGljOgogCiBET01JbXBsZW1lbnRhdGlvbkZyb250KiBpbXBs
ZW1lbnRhdGlvbkZyb250KERvY3VtZW50Kik7CiAKLX0gLy9uYW1lc3BhY2UKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gRE9NSW1wbGVtZW50YXRpb25Gcm9udF9o
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaAkocmV2aXNpb24gMTU4MjgpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBKYW1l
cyBHLiBTcGV0aCAoc3BldGhAZW5kLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwg
V2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjYsMjUgKzI3LDQyIEBACiAKICNpbXBvcnQgIkRPTS5oIgogCisjaW1wb3J0ICJE
T01BdHRyLmgiCisjaW1wb3J0ICJET01ET01JbXBsZW1lbnRhdGlvbi5oIgorI2ltcG9ydCAiRE9N
RG9jdW1lbnQuaCIKKyNpbXBvcnQgIkRPTURvY3VtZW50RnJhZ21lbnQuaCIKKyNpbXBvcnQgIkRP
TURvY3VtZW50VHlwZS5oIgorI2ltcG9ydCAiRE9NRWxlbWVudC5oIgorI2ltcG9ydCAiRE9NTmFt
ZWROb2RlTWFwLmgiCisjaW1wb3J0ICJET01Ob2RlLmgiCisjaW1wb3J0ICJET01Ob2RlTGlzdC5o
IgorI2ltcG9ydCAiRE9NT2JqZWN0LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFz
cyBBdHRyOwogICAgIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CiAgICAgY2xhc3MgQ1NTU3R5
bGVTaGVldDsKLSAgICBjbGFzcyBEb2N1bWVudEZyYWdtZW50OworICAgIGNsYXNzIERPTUltcGxl
bWVudGF0aW9uRnJvbnQ7CiAgICAgY2xhc3MgRG9jdW1lbnQ7CisgICAgY2xhc3MgRG9jdW1lbnRG
cmFnbWVudDsKICAgICBjbGFzcyBEb2N1bWVudFR5cGU7CiAgICAgY2xhc3MgRWxlbWVudDsKLSAg
ICBjbGFzcyBOb2RlRmlsdGVyOworICAgIGNsYXNzIE5hbWVkTm9kZU1hcDsKICAgICBjbGFzcyBO
b2RlOworICAgIGNsYXNzIE5vZGVGaWx0ZXI7CiAgICAgY2xhc3MgTm9kZUl0ZXJhdG9yOwotICAg
IGNsYXNzIE5hbWVkTm9kZU1hcDsKICAgICBjbGFzcyBOb2RlTGlzdDsKICAgICBjbGFzcyBSYW5n
ZTsKICAgICBjbGFzcyBTdHlsZVNoZWV0TGlzdDsKICAgICBjbGFzcyBUcmVlV2Fsa2VyOwotCisg
ICAgCiAgICAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIH0KIAorQGludGVyZmFjZSBET01P
YmplY3QgKFdlYkNvcmVJbnRlcm5hbCkKKy0gKGlkKV9pbml0OworQGVuZAorCiBAaW50ZXJmYWNl
IERPTU5vZGUgKFdlYkNvcmVJbnRlcm5hbCkKICsgKERPTU5vZGUgKilfbm9kZVdpdGg6KFdlYkNv
cmU6Ok5vZGUgKilpbXBsOwogLSAoV2ViQ29yZTo6Tm9kZSAqKV9ub2RlOwpAQCAtNjMsNiArODEs
MjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLSAoV2ViQ29yZTo6RWxlbWVudCAqKV9lbGVtZW50
OwogQGVuZAogCitAaW50ZXJmYWNlIERPTUF0dHIgKFdlYkNvcmVJbnRlcm5hbCkKKysgKERPTUF0
dHIgKilfYXR0cldpdGg6KFdlYkNvcmU6OkF0dHIgKilpbXBsOworLSAoV2ViQ29yZTo6QXR0ciAq
KV9hdHRyOworQGVuZAorCitAaW50ZXJmYWNlIERPTURvY3VtZW50VHlwZSAoV2ViQ29yZUludGVy
bmFsKQorLSAoV2ViQ29yZTo6RG9jdW1lbnRUeXBlICopX2RvY3VtZW50VHlwZTsKK0BlbmQKKwor
QGludGVyZmFjZSBET01JbXBsZW1lbnRhdGlvbiAoV2ViQ29yZUludGVybmFsKQorKyAoRE9NSW1w
bGVtZW50YXRpb24gKilfRE9NSW1wbGVtZW50YXRpb25XaXRoOihXZWJDb3JlOjpET01JbXBsZW1l
bnRhdGlvbkZyb250ICopaW1wbDsKKy0gKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uRnJvbnQg
KilfRE9NSW1wbGVtZW50YXRpb247CitAZW5kCisKIEBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgKFdl
YkNvcmVJbnRlcm5hbCkKICsgKERPTURvY3VtZW50ICopX2RvY3VtZW50V2l0aDooV2ViQ29yZTo6
RG9jdW1lbnQgKilpbXBsOwogLSAoV2ViQ29yZTo6RG9jdW1lbnQgKilfZG9jdW1lbnQ7CkBAIC04
NywxMCArMTE5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogKyAoRE9NVHJlZVdhbGtlciAqKV90
cmVlV2Fsa2VyV2l0aDooV2ViQ29yZTo6VHJlZVdhbGtlciAqKWltcGwgZmlsdGVyOihpZCA8RE9N
Tm9kZUZpbHRlcj4pZmlsdGVyOwogQGVuZAogCi1AaW50ZXJmYWNlIERPTU9iamVjdCAoV2ViQ29y
ZUludGVybmFsKQotLSAoaWQpX2luaXQ7Ci1AZW5kCi0KIEBpbnRlcmZhY2UgRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbiAoV2ViQ29yZUludGVybmFsKQogKyAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAq
KV9zdHlsZURlY2xhcmF0aW9uV2l0aDooV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbiAqKWlt
cGw7CiAtIChXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uICopX3N0eWxlRGVjbGFyYXRpb247
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTmFtZWROb2RlTWFwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5hbWVkTm9kZU1hcC5oCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5hbWVkTm9kZU1hcC5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFwcGxl
IENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0
IDxXZWJDb3JlL0RPTU9iamVjdC5oPgorCitAY2xhc3MgRE9NTm9kZTsKKworQGludGVyZmFjZSBE
T01OYW1lZE5vZGVNYXAgOiBET01PYmplY3QKKy0gKERPTU5vZGUgKilnZXROYW1lZEl0ZW06KE5T
U3RyaW5nICopbmFtZTsKKy0gKERPTU5vZGUgKilzZXROYW1lZEl0ZW06KERPTU5vZGUgKilhcmc7
CistIChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVtOihOU1N0cmluZyAqKW5hbWU7CistIChET01O
b2RlICopaXRlbToodW5zaWduZWQpaW5kZXg7CistICh1bnNpZ25lZClsZW5ndGg7CistIChET01O
b2RlICopZ2V0TmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcg
Kilsb2NhbE5hbWU7CistIChET01Ob2RlICopc2V0TmFtZWRJdGVtTlM6KERPTU5vZGUgKilhcmc7
CistIChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJ
IDooTlNTdHJpbmcgKilsb2NhbE5hbWU7CitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NTmFtZWROb2RlTWFwLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01OYW1lZE5vZGVNYXAubW0JKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NTmFtZWROb2RlTWFwLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IEphbWVzIEcuIFNwZXRoIDxzcGV0
aEBlbmQuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWlu
aWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRPTU5h
bWVkTm9kZU1hcC5oIgorCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorI2ltcG9ydCAiTmFtZWRO
b2RlTWFwLmgiCisKKyNpbXBvcnQgIkRPTU5vZGUuaCIKKyNpbXBvcnQgIk5vZGUuaCIKKyNpbXBv
cnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK3VzaW5nIFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDsKKwor
QGltcGxlbWVudGF0aW9uIERPTU5hbWVkTm9kZU1hcAorCistICh2b2lkKWRlYWxsb2MKK3sKKyAg
ICBpZiAoX2ludGVybmFsKQorICAgICAgICBET01fY2FzdDxOYW1lZE5vZGVNYXAgKj4oX2ludGVy
bmFsKS0+ZGVyZWYoKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpZmluYWxp
emUKK3sKKyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICBET01fY2FzdDxOYW1lZE5vZGVNYXAg
Kj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKKyAgICBbc3VwZXIgZmluYWxpemVdOworfQorCistIChO
YW1lZE5vZGVNYXAgKilfbmFtZWROb2RlTWFwCit7CisgICAgcmV0dXJuIERPTV9jYXN0PE5hbWVk
Tm9kZU1hcCAqPihfaW50ZXJuYWwpOworfQorCistIChET01Ob2RlICopZ2V0TmFtZWRJdGVtOihO
U1N0cmluZyAqKW5hbWUKK3sKKyAgICBBU1NFUlQobmFtZSk7CisKKyAgICByZXR1cm4gW0RPTU5v
ZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5nZXROYW1lZEl0ZW0obmFtZSkuZ2V0
KCldOworfQorCistIChET01Ob2RlICopc2V0TmFtZWRJdGVtOihET01Ob2RlICopYXJnCit7Cisg
ICAgQVNTRVJUKGFyZyk7CisKKyAgICBpbnQgZXhjZXB0aW9uID0gMDsKKyAgICBET01Ob2RlICpy
ZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPnNldE5hbWVk
SXRlbShbYXJnIF9ub2RlXSwgZXhjZXB0aW9uKS5nZXQoKV07CisgICAgcmFpc2VPbkRPTUVycm9y
KGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAoRE9NTm9kZSAqKXJlbW92
ZU5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgQVNTRVJUKG5hbWUpOworCisgICAg
aW50IGV4Y2VwdGlvbiA9IDA7CisgICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVX
aXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5yZW1vdmVOYW1lZEl0ZW0obmFtZSwgZXhjZXB0aW9u
KS5nZXQoKV07CisgICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworLSAoRE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4Cit7CisgICAgcmV0
dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+aXRlbShpbmRleCku
Z2V0KCldOworfQorCistICh1bnNpZ25lZClsZW5ndGgKK3sKKyAgICByZXR1cm4gW3NlbGYgX25h
bWVkTm9kZU1hcF0tPmxlbmd0aCgpOworfQorCistIChET01Ob2RlICopZ2V0TmFtZWRJdGVtTlM6
KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKK3sKKyAgICBp
ZiAoIW5hbWVzcGFjZVVSSSB8fCAhbG9jYWxOYW1lKSB7CisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgfQorCisgICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFw
XS0+Z2V0TmFtZWRJdGVtTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpLmdldCgpXTsKK30KKwor
LSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbU5TOihET01Ob2RlICopYXJnCit7CisgICAgQVNTRVJU
KGFyZyk7CisKKyAgICBpbnQgZXhjZXB0aW9uID0gMDsKKyAgICBET01Ob2RlICpyZXN1bHQgPSBb
RE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPnNldE5hbWVkSXRlbU5TKFth
cmcgX25vZGVdLCBleGNlcHRpb24pLmdldCgpXTsKKyAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0
aW9uKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChET01Ob2RlICopcmVtb3ZlTmFtZWRJ
dGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKK3sK
KyAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKKyAgICBBU1NFUlQobG9jYWxOYW1lKTsKKworICAg
IGludCBleGNlcHRpb24gPSAwOworICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2Rl
V2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+cmVtb3ZlTmFtZWRJdGVtTlMobmFtZXNwYWNlVVJJ
LCBsb2NhbE5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldOworICAgIHJhaXNlT25ET01FcnJvcihleGNl
cHRpb24pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTU5vZGUuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2Rl
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+Cisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CisKK0BjbGFzcyBET01Eb2N1bWVu
dDsgCitAY2xhc3MgRE9NTmFtZWROb2RlTWFwOworQGNsYXNzIERPTU5vZGVMaXN0OworCitAaW50
ZXJmYWNlIERPTU5vZGUgOiBET01PYmplY3QKKy0gKE5TU3RyaW5nICopbm9kZU5hbWU7CistIChO
U1N0cmluZyAqKW5vZGVWYWx1ZTsKKy0gKHZvaWQpc2V0Tm9kZVZhbHVlOihOU1N0cmluZyAqKXN0
cmluZzsKKy0gKHVuc2lnbmVkIHNob3J0KW5vZGVUeXBlOworLSAoRE9NTm9kZSAqKXBhcmVudE5v
ZGU7CistIChET01Ob2RlTGlzdCAqKWNoaWxkTm9kZXM7CistIChET01Ob2RlICopZmlyc3RDaGls
ZDsKKy0gKERPTU5vZGUgKilsYXN0Q2hpbGQ7CistIChET01Ob2RlICopcHJldmlvdXNTaWJsaW5n
OworLSAoRE9NTm9kZSAqKW5leHRTaWJsaW5nOworLSAoRE9NTmFtZWROb2RlTWFwICopYXR0cmli
dXRlczsKKy0gKERPTURvY3VtZW50ICopb3duZXJEb2N1bWVudDsKKy0gKERPTU5vZGUgKilpbnNl
cnRCZWZvcmU6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilyZWZDaGlsZDsKKy0gKERP
TU5vZGUgKilyZXBsYWNlQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilvbGRD
aGlsZDsKKy0gKERPTU5vZGUgKilyZW1vdmVDaGlsZDooRE9NTm9kZSAqKW9sZENoaWxkOworLSAo
RE9NTm9kZSAqKWFwcGVuZENoaWxkOihET01Ob2RlICopbmV3Q2hpbGQ7CistIChCT09MKWhhc0No
aWxkTm9kZXM7CistIChET01Ob2RlICopY2xvbmVOb2RlOihCT09MKWRlZXA7CistICh2b2lkKW5v
cm1hbGl6ZTsKKy0gKEJPT0wpaXNTdXBwb3J0ZWQ6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3Ry
aW5nICopdmVyc2lvbjsKKy0gKE5TU3RyaW5nICopbmFtZXNwYWNlVVJJOworLSAoTlNTdHJpbmcg
KilwcmVmaXg7CistICh2b2lkKXNldFByZWZpeDooTlNTdHJpbmcgKilwcmVmaXg7CistIChOU1N0
cmluZyAqKWxvY2FsTmFtZTsKKy0gKEJPT0wpaGFzQXR0cmlidXRlczsKKy0gKEJPT0wpaXNTYW1l
Tm9kZTooRE9NTm9kZSAqKW90aGVyOworLSAoQk9PTClpc0VxdWFsTm9kZTooRE9NTm9kZSAqKW90
aGVyOworLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudDsKKy0gKHZvaWQpc2V0VGV4dENvbnRlbnQ6
KE5TU3RyaW5nICopdGV4dDsKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01O
b2RlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlLm1tCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5vZGUubW0JKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMDYgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgSmFtZXMgRy4gU3BldGggPHNwZXRoQGVuZC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiRE9NTm9kZS5oIgorCisjaW1wb3J0ICJET01JbnRlcm5hbC5o
IgorI2ltcG9ydCAiTm9kZS5oIgorCisjaW1wb3J0ICJBdG9taWNTdHJpbmcuaCIKKyNpbXBvcnQg
IkRlcHJlY2F0ZWRWYWx1ZUxpc3QuaCIKKyNpbXBvcnQgIkRPTURvY3VtZW50LmgiCisjaW1wb3J0
ICJET01Ob2RlTGlzdC5oIgorI2ltcG9ydCAiSW50UmVjdC5oIgorI2ltcG9ydCAiTm9kZUxpc3Qu
aCIKKyNpbXBvcnQgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW1wb3J0ICJSZW5kZXJPYmplY3QuaCIK
KyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK3VzaW5nIFdlYkNvcmU6OkRlcHJlY2F0ZWRW
YWx1ZUxpc3Q7Cit1c2luZyBXZWJDb3JlOjpFeGNlcHRpb25Db2RlOwordXNpbmcgV2ViQ29yZTo6
SW50UmVjdDsKK3VzaW5nIFdlYkNvcmU6Ok5vZGU7Cit1c2luZyBXZWJDb3JlOjpTdHJpbmc7CisK
K0BpbXBsZW1lbnRhdGlvbiBET01Ob2RlCisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIGlmIChf
aW50ZXJuYWwpIHsKKyAgICAgICAgRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpLT5kZXJlZigp
OworICAgIH0KKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpZmluYWxpemUKK3sK
KyAgICBpZiAoX2ludGVybmFsKSB7CisgICAgICAgIERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFs
KS0+ZGVyZWYoKTsKKyAgICB9CisgICAgW3N1cGVyIGZpbmFsaXplXTsKK30KKworLSAoTlNTdHJp
bmcgKilkZXNjcmlwdGlvbgoreworICAgIGlmICghX2ludGVybmFsKSB7CisgICAgICAgIHJldHVy
biBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQDogbnVsbD4iLAorICAgICAgICAgICAg
W1tzZWxmIGNsYXNzXSBkZXNjcmlwdGlvbl0sIHNlbGZdOworICAgIH0KKyAgICBOU1N0cmluZyAq
dmFsdWUgPSBbc2VsZiBub2RlVmFsdWVdOworICAgIGlmICh2YWx1ZSkgeworICAgICAgICByZXR1
cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUAgWyVAXTogJXAgJyVAJz4iLAorICAg
ICAgICAgICAgW1tzZWxmIGNsYXNzXSBkZXNjcmlwdGlvbl0sIFtzZWxmIG5vZGVOYW1lXSwgX2lu
dGVybmFsLCB2YWx1ZV07CisgICAgfQorICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIjwlQCBbJUBdOiAlcD4iLAorICAgICAgICBbW3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9u
XSwgW3NlbGYgbm9kZU5hbWVdLCBfaW50ZXJuYWxdOworfQorCistIChOU1N0cmluZyAqKW5vZGVO
YW1lCit7CisgICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bm9kZU5hbWUoKTsKK30KKworLSAoTlNT
dHJpbmcgKilub2RlVmFsdWUKK3sKKyAgICAvLyBEb2N1bWVudGF0aW9uIHNheXMgd2UgY2FuIHJh
aXNlIGEgRE9NU1RSSU5HX1NJWkVfRVJSLgorICAgIC8vIEhvd2V2ZXIsIHRoZSBsb3dlciBsYXll
ciBkb2VzIG5vdCByZXBvcnQgdGhhdCBlcnJvciB1cCB0byB1cy4KKyAgICByZXR1cm4gW3NlbGYg
X25vZGVdLT5ub2RlVmFsdWUoKTsKK30KKworLSAodm9pZClzZXROb2RlVmFsdWU6KE5TU3RyaW5n
ICopc3RyaW5nCit7CisgICAgQVNTRVJUKHN0cmluZyk7CisgICAgCisgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgW3NlbGYgX25vZGVdLT5zZXROb2RlVmFsdWUoc3RyaW5nLCBlYyk7Cisg
ICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKworLSAodW5zaWduZWQgc2hvcnQpbm9kZVR5cGUK
K3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2RlVHlwZSgpOworfQorCistIChET01Ob2Rl
ICopcGFyZW50Tm9kZQoreworICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25v
ZGVdLT5wYXJlbnROb2RlKCldOworfQorCistIChET01Ob2RlTGlzdCAqKWNoaWxkTm9kZXMKK3sK
KyAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX25vZGVdLT5jaGls
ZE5vZGVzKCkuZ2V0KCldOworfQorCistIChET01Ob2RlICopZmlyc3RDaGlsZAoreworICAgIHJl
dHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5maXJzdENoaWxkKCldOworfQor
CistIChET01Ob2RlICopbGFzdENoaWxkCit7CisgICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0
aDpbc2VsZiBfbm9kZV0tPmxhc3RDaGlsZCgpXTsKK30KKworLSAoRE9NTm9kZSAqKXByZXZpb3Vz
U2libGluZworeworICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5w
cmV2aW91c1NpYmxpbmcoKV07Cit9CisKKy0gKERPTU5vZGUgKiluZXh0U2libGluZworeworICAg
IHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5uZXh0U2libGluZygpXTsK
K30KKworLSAoRE9NTmFtZWROb2RlTWFwICopYXR0cmlidXRlcworeworICAgIC8vIERPTSBsZXZl
bCAyIGNvcmUgc3BlY2lmaWNhdGlvbiBzYXlzOiAKKyAgICAvLyBBIE5hbWVkTm9kZU1hcCBjb250
YWluaW5nIHRoZSBhdHRyaWJ1dGVzIG9mIHRoaXMgbm9kZSAoaWYgaXQgaXMgYW4gRWxlbWVudCkg
b3IgbnVsbCBvdGhlcndpc2UuCisgICAgcmV0dXJuIG5pbDsKK30KKworLSAoRE9NRG9jdW1lbnQg
Kilvd25lckRvY3VtZW50Cit7CisgICAgcmV0dXJuIFtET01Eb2N1bWVudCBfZG9jdW1lbnRXaXRo
OltzZWxmIF9ub2RlXS0+ZG9jdW1lbnQoKV07Cit9CisKKy0gKERPTU5vZGUgKilpbnNlcnRCZWZv
cmU6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilyZWZDaGlsZAoreworICAgIEFTU0VS
VChuZXdDaGlsZCk7CisgICAgQVNTRVJUKHJlZkNoaWxkKTsKKworICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIGlmIChbc2VsZiBfbm9kZV0tPmluc2VydEJlZm9yZShbbmV3Q2hpbGQgX25v
ZGVdLCBbcmVmQ2hpbGQgX25vZGVdLCBlYykpCisgICAgICAgIHJldHVybiBuZXdDaGlsZDsKKyAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKERPTU5vZGUg
KilyZXBsYWNlQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilvbGRDaGlsZAor
eworICAgIEFTU0VSVChuZXdDaGlsZCk7CisgICAgQVNTRVJUKG9sZENoaWxkKTsKKworICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlmIChbc2VsZiBfbm9kZV0tPnJlcGxhY2VDaGlsZChb
bmV3Q2hpbGQgX25vZGVdLCBbb2xkQ2hpbGQgX25vZGVdLCBlYykpCisgICAgICAgIHJldHVybiBv
bGRDaGlsZDsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiBuaWw7Cit9CisK
Ky0gKERPTU5vZGUgKilyZW1vdmVDaGlsZDooRE9NTm9kZSAqKW9sZENoaWxkCit7CisgICAgQVNT
RVJUKG9sZENoaWxkKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlmIChbc2Vs
ZiBfbm9kZV0tPnJlbW92ZUNoaWxkKFtvbGRDaGlsZCBfbm9kZV0sIGVjKSkKKyAgICAgICAgcmV0
dXJuIG9sZENoaWxkOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIG5pbDsK
K30KKworLSAoRE9NTm9kZSAqKWFwcGVuZENoaWxkOihET01Ob2RlICopbmV3Q2hpbGQKK3sKKyAg
ICBBU1NFUlQobmV3Q2hpbGQpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaWYg
KFtzZWxmIF9ub2RlXS0+YXBwZW5kQ2hpbGQoW25ld0NoaWxkIF9ub2RlXSwgZWMpKQorICAgICAg
ICByZXR1cm4gbmV3Q2hpbGQ7CisgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4g
bmlsOworfQorCistIChCT09MKWhhc0NoaWxkTm9kZXMKK3sKKyAgICByZXR1cm4gW3NlbGYgX25v
ZGVdLT5oYXNDaGlsZE5vZGVzKCk7Cit9CisKKy0gKERPTU5vZGUgKiljbG9uZU5vZGU6KEJPT0wp
ZGVlcAoreworICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5jbG9u
ZU5vZGUoZGVlcCkuZ2V0KCldOworfQorCistICh2b2lkKW5vcm1hbGl6ZQoreworICAgIFtzZWxm
IF9ub2RlXS0+bm9ybWFsaXplKCk7Cit9CisKKy0gKEJPT0wpaXNTdXBwb3J0ZWQ6KE5TU3RyaW5n
ICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbgoreworICAgIEFTU0VSVChmZWF0dXJlKTsK
KyAgICBBU1NFUlQodmVyc2lvbik7CisKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc1N1cHBv
cnRlZChmZWF0dXJlLCB2ZXJzaW9uKTsKK30KKworLSAoTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkK
K3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5uYW1lc3BhY2VVUkkoKTsKK30KKworLSAoTlNT
dHJpbmcgKilwcmVmaXgKK3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5wcmVmaXgoKTsKK30K
KworLSAodm9pZClzZXRQcmVmaXg6KE5TU3RyaW5nICopcHJlZml4Cit7CisgICAgQVNTRVJUKHBy
ZWZpeCk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTdHJpbmcgcHJlZml4U3Ry
KHByZWZpeCk7CisgICAgW3NlbGYgX25vZGVdLT5zZXRQcmVmaXgocHJlZml4U3RyLmltcGwoKSwg
ZWMpOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7Cit9CisKKy0gKE5TU3RyaW5nICopbG9jYWxO
YW1lCit7CisgICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bG9jYWxOYW1lKCk7Cit9CisKKy0gKEJP
T0wpaGFzQXR0cmlidXRlcworeworICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmhhc0F0dHJpYnV0
ZXMoKTsKK30KKworLSAoQk9PTClpc1NhbWVOb2RlOihET01Ob2RlICopb3RoZXIKK3sKKyAgICBy
ZXR1cm4gW3NlbGYgX25vZGVdLT5pc1NhbWVOb2RlKFtvdGhlciBfbm9kZV0pOworfQorCistIChC
T09MKWlzRXF1YWxOb2RlOihET01Ob2RlICopb3RoZXIKK3sKKyAgICByZXR1cm4gW3NlbGYgX25v
ZGVdLT5pc0VxdWFsTm9kZShbb3RoZXIgX25vZGVdKTsKK30KKworLSAoQk9PTClpc0RlZmF1bHRO
YW1lc3BhY2U6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJCit7CisgICAgcmV0dXJuIFtzZWxmIF9u
b2RlXS0+aXNEZWZhdWx0TmFtZXNwYWNlKG5hbWVzcGFjZVVSSSk7Cit9CisKKy0gKE5TU3RyaW5n
ICopbG9va3VwUHJlZml4OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSQoreworICAgIHJldHVybiBb
c2VsZiBfbm9kZV0tPmxvb2t1cFByZWZpeChuYW1lc3BhY2VVUkkpOworfQorCistIChOU1N0cmlu
ZyAqKWxvb2t1cE5hbWVzcGFjZVVSSTooTlNTdHJpbmcgKilwcmVmaXgKK3sKKyAgICByZXR1cm4g
W3NlbGYgX25vZGVdLT5sb29rdXBOYW1lc3BhY2VVUkkocHJlZml4KTsKK30KKworLSAoTlNTdHJp
bmcgKil0ZXh0Q29udGVudAoreworICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPnRleHRDb250ZW50
KCk7Cit9CisKKy0gKHZvaWQpc2V0VGV4dENvbnRlbnQ6KE5TU3RyaW5nICopdGV4dAoreworICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFtzZWxmIF9ub2RlXS0+c2V0VGV4dENvbnRlbnQo
dGV4dCwgZWMpOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7Cit9CisKKy0gKE5TUmVjdClib3Vu
ZGluZ0JveAoreworICAgIFdlYkNvcmU6OlJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBbc2VsZiBf
bm9kZV0tPnJlbmRlcmVyKCk7CisgICAgaWYgKHJlbmRlcmVyKQorICAgICAgICByZXR1cm4gcmVu
ZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgcmV0dXJuIE5TWmVyb1JlY3Q7
Cit9CisKKy0gKE5TQXJyYXkgKilsaW5lQm94UmVjdHMKK3sKKyAgICBXZWJDb3JlOjpSZW5kZXJP
YmplY3QgKnJlbmRlcmVyID0gW3NlbGYgX25vZGVdLT5yZW5kZXJlcigpOworICAgIGlmIChyZW5k
ZXJlcikgeworICAgICAgICBOU011dGFibGVBcnJheSAqcmVzdWx0cyA9IFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRdOworICAgICAgICBEZXByZWNhdGVkVmFsdWVMaXN0PEludFJlY3Q+IHJl
Y3RzID0gcmVuZGVyZXItPmxpbmVCb3hSZWN0cygpOworICAgICAgICBpZiAoIXJlY3RzLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgZm9yIChEZXByZWNhdGVkVmFsdWVMaXN0PEludFJlY3Q+OjpD
b25zdEl0ZXJhdG9yIGl0ID0gcmVjdHMuYmVnaW4oKTsgaXQgIT0gcmVjdHMuZW5kKCk7ICsraXQp
CisgICAgICAgICAgICAgICAgW3Jlc3VsdHMgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJl
Y3Q6Kml0XV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFtyZXN1bHRzIGF1dG9yZWxlYXNl
XTsKKyAgICB9CisgICAgcmV0dXJuIG5pbDsKK30KKworQGVuZApJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTU5vZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTU5vZGVMaXN0LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NTm9kZUxpc3QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdt
YWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KKworQGNsYXNz
IERPTU5vZGU7CisKK0BpbnRlcmZhY2UgRE9NTm9kZUxpc3QgOiBET01PYmplY3QKKy0gKERPTU5v
ZGUgKilpdGVtOih1bnNpZ25lZClpbmRleDsKKy0gKHVuc2lnbmVkKWxlbmd0aDsKK0BlbmQKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlTGlzdC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZUxpc3QubW0JKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZUxpc3QubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBKYW1lcyBHLiBT
cGV0aCA8c3BldGhAZW5kLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vpbmln
IDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJET01Ob2RlTGlzdC5oIgorCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorI2ltcG9ydCAi
Tm9kZUxpc3QuaCIKKyNpbXBvcnQgIkRPTU5vZGUuaCIKKwordXNpbmcgV2ViQ29yZTo6Tm9kZUxp
c3Q7CisKK0BpbXBsZW1lbnRhdGlvbiBET01Ob2RlTGlzdAorCistICh2b2lkKWRlYWxsb2MKK3sK
KyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50ZXJu
YWwpLT5kZXJlZigpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClmaW5hbGl6
ZQoreworICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIERPTV9jYXN0PE5vZGVMaXN0ICo+KF9p
bnRlcm5hbCktPmRlcmVmKCk7CisgICAgW3N1cGVyIGZpbmFsaXplXTsKK30KKworLSAoTm9kZUxp
c3QgKilfbm9kZUxpc3QKK3sKKyAgICByZXR1cm4gRE9NX2Nhc3Q8Tm9kZUxpc3QgKj4oX2ludGVy
bmFsKTsKK30KKworLSAoRE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4Cit7CisgICAgcmV0
dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZUxpc3RdLT5pdGVtKGluZGV4KV07Cit9
CisKKy0gKHVuc2lnbmVkKWxlbmd0aAoreworICAgIHJldHVybiBbc2VsZiBfbm9kZUxpc3RdLT5s
ZW5ndGgoKTsKK30KKworQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5vdGF0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5vdGF0aW9uLmgJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm90YXRpb24uaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2ltcG9ydCA8V2ViQ29yZS9ET01Ob2RlLmg+CisKK0BpbnRlcmZhY2UgRE9NTm90YXRpb24gOiBE
T01Ob2RlCistIChOU1N0cmluZyAqKXB1YmxpY0lkOworLSAoTlNTdHJpbmcgKilzeXN0ZW1JZDsK
K0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob3RhdGlvbi5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm90YXRpb24ubW0JKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm90YXRpb24ubW0JKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiBBcHBsZSBDb21w
dXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBK
YW1lcyBHLiBTcGV0aCA8c3BldGhAZW5kLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11
ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJET01Ob3RhdGlvbi5oIgorCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgor
I2ltcG9ydCAiTm9kZS5oIgorI2ltcG9ydCAiTm90YXRpb24uaCIKKwordXNpbmcgV2ViQ29yZTo6
Tm9kZTsKK3VzaW5nIFdlYkNvcmU6Ok5vdGF0aW9uOworCitAaW1wbGVtZW50YXRpb24gRE9NTm90
YXRpb24KKworLSAoTm90YXRpb24gKilfbm90YXRpb24KK3sKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Tm90YXRpb24gKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKK30KKworLSAoTlNT
dHJpbmcgKilwdWJsaWNJZAoreworICAgIHJldHVybiBbc2VsZiBfbm90YXRpb25dLT5wdWJsaWNJ
ZCgpOworfQorCistIChOU1N0cmluZyAqKXN5c3RlbUlkCit7CisgICAgcmV0dXJuIFtzZWxmIF9u
b3RhdGlvbl0tPnN5c3RlbUlkKCk7Cit9CisKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
T2JqZWN0LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NT2JqZWN0
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+Cisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0Lmg+CisKK3R5cGVkZWYgdW5z
aWduZWQgbG9uZyBsb25nIERPTVRpbWVTdGFtcDsKKworZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qg
RE9NRXhjZXB0aW9uOworCisvLyBET00gZXhjZXB0aW9uIGNvZGVzCitlbnVtIHsKKyAgICBET01f
SU5ERVhfU0laRV9FUlIgICAgICAgICAgICAgICAgPSAxLAorICAgIERPTV9ET01TVFJJTkdfU0la
RV9FUlIgICAgICAgICAgICA9IDIsCisgICAgRE9NX0hJRVJBUkNIWV9SRVFVRVNUX0VSUiAgICAg
ICAgID0gMywKKyAgICBET01fV1JPTkdfRE9DVU1FTlRfRVJSICAgICAgICAgICAgPSA0LAorICAg
IERPTV9JTlZBTElEX0NIQVJBQ1RFUl9FUlIgICAgICAgICA9IDUsCisgICAgRE9NX05PX0RBVEFf
QUxMT1dFRF9FUlIgICAgICAgICAgID0gNiwKKyAgICBET01fTk9fTU9ESUZJQ0FUSU9OX0FMTE9X
RURfRVJSICAgPSA3LAorICAgIERPTV9OT1RfRk9VTkRfRVJSICAgICAgICAgICAgICAgICA9IDgs
CisgICAgRE9NX05PVF9TVVBQT1JURURfRVJSICAgICAgICAgICAgID0gOSwKKyAgICBET01fSU5V
U0VfQVRUUklCVVRFX0VSUiAgICAgICAgICAgPSAxMCwKKyAgICBET01fSU5WQUxJRF9TVEFURV9F
UlIgICAgICAgICAgICAgPSAxMSwKKyAgICBET01fU1lOVEFYX0VSUiAgICAgICAgICAgICAgICAg
ICAgPSAxMiwKKyAgICBET01fSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSICAgICAgPSAxMywKKyAg
ICBET01fTkFNRVNQQUNFX0VSUiAgICAgICAgICAgICAgICAgPSAxNCwKKyAgICBET01fSU5WQUxJ
RF9BQ0NFU1NfRVJSICAgICAgICAgICAgPSAxNQorfTsKKworCisvLyBET00gbm9kZSB0eXBlcwor
ZW51bSB7CisgICAgRE9NX0VMRU1FTlRfTk9ERSAgICAgICAgICAgICAgICAgID0gMSwKKyAgICBE
T01fQVRUUklCVVRFX05PREUgICAgICAgICAgICAgICAgPSAyLAorICAgIERPTV9URVhUX05PREUg
ICAgICAgICAgICAgICAgICAgICA9IDMsCisgICAgRE9NX0NEQVRBX1NFQ1RJT05fTk9ERSAgICAg
ICAgICAgID0gNCwKKyAgICBET01fRU5USVRZX1JFRkVSRU5DRV9OT0RFICAgICAgICAgPSA1LAor
ICAgIERPTV9FTlRJVFlfTk9ERSAgICAgICAgICAgICAgICAgICA9IDYsCisgICAgRE9NX1BST0NF
U1NJTkdfSU5TVFJVQ1RJT05fTk9ERSAgID0gNywKKyAgICBET01fQ09NTUVOVF9OT0RFICAgICAg
ICAgICAgICAgICAgPSA4LAorICAgIERPTV9ET0NVTUVOVF9OT0RFICAgICAgICAgICAgICAgICA9
IDksCisgICAgRE9NX0RPQ1VNRU5UX1RZUEVfTk9ERSAgICAgICAgICAgID0gMTAsCisgICAgRE9N
X0RPQ1VNRU5UX0ZSQUdNRU5UX05PREUgICAgICAgID0gMTEsCisgICAgRE9NX05PVEFUSU9OX05P
REUgICAgICAgICAgICAgICAgID0gMTIKK307CisKK3R5cGVkZWYgc3RydWN0IERPTU9iamVjdElu
dGVybmFsIERPTU9iamVjdEludGVybmFsOworCitAaW50ZXJmYWNlIERPTU9iamVjdCA6IFdlYlNj
cmlwdE9iamVjdCA8TlNDb3B5aW5nPgoreworICAgIERPTU9iamVjdEludGVybmFsICpfaW50ZXJu
YWw7Cit9CitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NT2JqZWN0Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01PYmplY3QubW0JKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NT2JqZWN0Lm1tCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMDYgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
SmFtZXMgRy4gU3BldGggPHNwZXRoQGVuZC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2Ft
dWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiRE9NT2JqZWN0LmgiCisKKyNpbXBvcnQgIkRPTUludGVybmFsLmgiCisK
K0BpbXBsZW1lbnRhdGlvbiBET01PYmplY3QKKworLy8gUHJldmVudCBjcmVhdGlvbiBvZiBET00g
b2JqZWN0cyBieSBjbGllbnRzIHdobyBqdXN0ICJbW3h4eCBhbGxvY10gaW5pdF0iLgorLSAoaWQp
aW5pdAoreworICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0dlbmVyaWNFeGNlcHRpb24gZm9ybWF0
OkAiK1slQCBpbml0XTogc2hvdWxkIG5ldmVyIGJlIHVzZWQiLCBOU1N0cmluZ0Zyb21DbGFzcyhb
c2VsZiBjbGFzc10pXTsKKyAgICBbc2VsZiByZWxlYXNlXTsKKyAgICByZXR1cm4gbmlsOworfQor
CistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICByZW1vdmVE
T01XcmFwcGVyKF9pbnRlcm5hbCk7CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZv
aWQpZmluYWxpemUKK3sKKyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICByZW1vdmVET01XcmFw
cGVyKF9pbnRlcm5hbCk7CisKKyAgICBbc3VwZXIgZmluYWxpemVdOworfQorCistIChpZCljb3B5
V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKK3sKKyAgICByZXR1cm4gW3NlbGYgcmV0YWluXTsKK30K
KworQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVByaXZhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUHJpdmF0ZS5oCShyZXZpc2lvbiAxNTgy
OCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Qcml2YXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVy
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVl
bCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNCw5ICsyNSwxMSBAQAogICovCiAKICNpbXBvcnQgPFdlYkNvcmUvRE9NQ1NT
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9N
RXZlbnRzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUwuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
RE9NTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01SYW5nZS5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9ET01FdmVudHMuaD4KIAogQGludGVyZmFjZSBET01SYW5nZSAoV2ViUHJpdmF0ZSkKIC8vIHVz
ZXMgc2FtZSBhbGdvcml0aG0gYXMgaW5uZXJUZXh0CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFwcGxl
IENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0
IDxXZWJDb3JlL0RPTU5vZGUuaD4KKworQGludGVyZmFjZSBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24gOiBET01Ob2RlCistIChOU1N0cmluZyAqKXRhcmdldDsKKy0gKE5TU3RyaW5nICopZGF0YTsK
Ky0gKHZvaWQpc2V0RGF0YTooTlNTdHJpbmcgKilkYXRhOworQGVuZApJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5t
bQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NC0yMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IEphbWVzIEcuIFNwZXRoIDxzcGV0aEBlbmQuY29tPgorICogQ29weXJp
Z2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5o
IgorCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorI2ltcG9ydCAiTm9kZS5oIgorI2ltcG9ydCAi
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCisKKwordXNpbmcgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZTsKK3VzaW5nIFdlYkNvcmU6Ok5vZGU7Cit1c2luZyBXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb247CisKK0BpbXBsZW1lbnRhdGlvbiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KKworLSAo
UHJvY2Vzc2luZ0luc3RydWN0aW9uICopX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbgoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKj4oRE9NX2Nhc3Q8Tm9kZSAq
PihfaW50ZXJuYWwpKTsKK30KKworLSAoTlNTdHJpbmcgKil0YXJnZXQKK3sKKyAgICByZXR1cm4g
W3NlbGYgX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbl0tPnRhcmdldCgpOworfQorCistIChOU1N0cmlu
ZyAqKWRhdGEKK3sKKyAgICByZXR1cm4gW3NlbGYgX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbl0tPmRh
dGEoKTsKK30KKworLSAodm9pZClzZXREYXRhOihOU1N0cmluZyAqKWRhdGEKK3sKKyAgICBBU1NF
UlQoZGF0YSk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBbc2VsZiBfcHJvY2Vz
c2luZ0luc3RydWN0aW9uXS0+c2V0RGF0YShkYXRhLCBlYyk7CisgICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKK30KKworQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVJhbmdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVJhbmdlLmgJKHJldmlzaW9u
IDE1ODI4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVJhbmdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1
dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNh
bXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMyw3ICsyNCw4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW1w
b3J0IDxXZWJDb3JlL0RPTUNvcmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnQuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CiAKIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0
IERPTVJhbmdlRXhjZXB0aW9uOwogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NU3R5
bGVzaGVldHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NU3R5bGVz
aGVldHMuaAkocmV2aXNpb24gMTU4MjgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NU3R5
bGVzaGVldHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDkgKzI0LDExIEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKICAqLwogCi0jaW1wb3J0IDxXZWJDb3JlL0RPTUNvcmUuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvRE9NRG9jdW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CiAK
IEBjbGFzcyBET01NZWRpYUxpc3Q7CitAY2xhc3MgRE9NTm9kZTsKIEBjbGFzcyBET01TdHlsZVNo
ZWV0OwogCiBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBET01FdmVudEV4Y2VwdGlvbjsKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01UZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTVRleHQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01UZXh0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0Bn
bWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NQ2hhcmFjdGVyRGF0YS5oPgor
CitAaW50ZXJmYWNlIERPTVRleHQgOiBET01DaGFyYWN0ZXJEYXRhCistIChET01UZXh0ICopc3Bs
aXRUZXh0Oih1bnNpZ25lZClvZmZzZXQ7CitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NVGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVGV4
dC5tbQkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01UZXh0Lm1tCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIw
MDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYgSmFtZXMgRy4gU3BldGggPHNwZXRoQGVuZC5jb20+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRE9NVGV4dC5oIgorCisjaW1wb3J0ICJET01JbnRl
cm5hbC5oIgorI2ltcG9ydCAiVGV4dC5oIgorCisjaW1wb3J0ICJOb2RlLmgiCisjaW1wb3J0ICJE
T01Ob2RlLmgiCisKK3VzaW5nIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGU7Cit1c2luZyBXZWJDb3Jl
OjpOb2RlOwordXNpbmcgV2ViQ29yZTo6VGV4dDsKKworQGltcGxlbWVudGF0aW9uIERPTVRleHQK
KworLSAoVGV4dCAqKV90ZXh0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHQgKj4oRE9N
X2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKK30KKworLSAoRE9NVGV4dCAqKXNwbGl0VGV4dDoo
dW5zaWduZWQpb2Zmc2V0Cit7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9NTm9k
ZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90ZXh0XS0+c3BsaXRUZXh0KG9m
ZnNldCwgZWMpXTsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxET01UZXh0ICo+KHJlc3VsdCk7Cit9CisKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01UcmF2ZXJzYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NVHJhdmVyc2FsLmgJKHJldmlzaW9uIDE1ODI4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTVRyYXZlcnNhbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdt
YWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOCArMjQsMTAg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpbXBvcnQgPFdlYkNvcmUvRE9NQ29yZS5oPgor
I2ltcG9ydCA8V2ViQ29yZS9ET01Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01PYmpl
Y3QuaD4KIAorQGNsYXNzIERPTU5vZGU7CiBAY2xhc3MgRE9NTm9kZUZpbHRlcjsKIAogZW51bSB7
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVmlld3MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVmlld3MuaAkocmV2aXNpb24gMTU4MjgpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NVmlld3MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2Ft
LndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDcgKzI0LDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpbXBvcnQgPFdlYkNvcmUvRE9N
Q29yZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9ET01PYmplY3QuaD4KIAogQGludGVyZmFjZSBET01BYnN0cmFjdFZpZXcgOiBET01PYmplY3QK
IC0gKERPTURvY3VtZW50ICopZG9jdW1lbnQ7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NWFBhdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NWFBhdGgu
aAkocmV2aXNpb24gMTU4MjgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NWFBhdGguaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDcgKzI0LDggQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAog
ICovCiAKLSNpbXBvcnQgPFdlYkNvcmUvRE9NQ29yZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01E
b2N1bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KIAogZXh0ZXJuIE5TU3Ry
aW5nICogY29uc3QgRE9NWFBhdGhFeGNlcHRpb247CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCShyZXZpc2lvbiAxNTgyOCkKKysrIFdlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3
MSw2IEBAIHN1YiBQcm9jZXNzRG9jdW1lbnQKICAgJHVzZURvY3VtZW50ID0gc2hpZnQ7CiAgIAog
ICBteSAkaWZhY2VOYW1lID0gJHVzZUdlbmVyYXRvcjsKLSAgJGlmYWNlTmFtZSA9fiBzL1xiKFx3
KS9cVSQxL2c7ICMgTWFrZSBmaXJzdCBsZXR0ZXIgb2YgZWFjaCB3b3JkIHVwcGVyY2FzZQogICAk
aWZhY2VOYW1lID0gIkNvZGVHZW5lcmF0b3IkaWZhY2VOYW1lIjsKIAogICAjIER5bmFtaWNhbGx5
IGxvYWQgZXh0ZXJuYWwgY29kZSBnZW5lcmF0aW9uIHBlcmwgbW9kdWxlLi4uCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQyMiBAQAorIyAKKyMgS0RPTSBJREwgcGFyc2VyCisjCisjIENv
cHlyaWdodCAoQykgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyMg
Q29weXJpZ2h0IChDKSAyMDA2IEFuZGVycyBDYXJsc3NvbiA8YW5kZXJzY2FAbWFjLmNvbT4gCisj
IENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4K
KyMgQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisjCisjIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAorIyAKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorIyAKKyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIyAKKyMgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorIyBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyMgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBV
U0EuCisjCisKK3BhY2thZ2UgQ29kZUdlbmVyYXRvck9iakM7CisKK3VzZSBGaWxlOjpzdGF0Owor
CitteSAkbW9kdWxlID0gIiI7CitteSAkb3V0cHV0RGlyID0gIiI7CitteSAlaW1wbEluY2x1ZGVz
ID0gKCk7CisKKyMgRGVmYXVsdCB0ZW1wbGF0ZQorbXkgJGhlYWRlclRlbXBsYXRlID0gPDwgIkVP
RiI7CisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2Ug
cHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJp
bmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICAgIEJvc3Rvbiwg
TUEgMDIxMTEtMTMwNywgVVNBLgorKi8KK0VPRgorCisjIERlZmF1bHQgY29uc3RydWN0b3IKK3N1
YiBuZXcKK3sKKyAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJHJlZmVyZW5jZSA9IHsg
fTsKKyAgICAKKyAgICAkY29kZUdlbmVyYXRvciA9IHNoaWZ0OworICAgICRvdXRwdXREaXIgPSBz
aGlmdDsKKyAgICAKKyAgICBibGVzcygkcmVmZXJlbmNlLCAkb2JqZWN0KTsKKyAgICByZXR1cm4g
JHJlZmVyZW5jZTsKK30KKworc3ViIGZpbmlzaAoreworICAgIG15ICRvYmplY3QgPSBzaGlmdDsK
KyAgICAKKyAgICAjIENvbW1pdCBjaGFuZ2VzIQorICAgICRvYmplY3QtPldyaXRlRGF0YSgpOwor
fQorCisjIFBhcmFtczogJ2RvbUNsYXNzJyBzdHJ1Y3QKK3N1YiBHZW5lcmF0ZUludGVyZmFjZQor
eworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKwor
ICAgICMgU3RhcnQgYWN0dWFsIGdlbmVyYXRpb24uLgorICAgICRvYmplY3QtPkdlbmVyYXRlSGVh
ZGVyKCRkYXRhTm9kZSk7CisgICAgJG9iamVjdC0+R2VuZXJhdGVJbXBsZW1lbnRhdGlvbigkZGF0
YU5vZGUpOworCisgICAgbXkgJG5hbWUgPSAkZGF0YU5vZGUtPm5hbWU7CisKKyAgICAjIE9wZW4g
ZmlsZXMgZm9yIHdyaXRpbmcuLi4KKyAgICBteSAkaGVhZGVyRmlsZU5hbWUgPSAiJG91dHB1dERp
ci9ET00kbmFtZS5oIjsKKyAgICBteSAkaW1wbEZpbGVOYW1lID0gIiRvdXRwdXREaXIvRE9NJG5h
bWUubW0iOworCisgICAgb3BlbigkSU1QTCwgIj4kaW1wbEZpbGVOYW1lIikgb3IgZGllICJDb3Vs
ZG4ndCBvcGVuIGZpbGUgJGltcGxGaWxlTmFtZSI7CisgICAgb3BlbigkSEVBREVSLCAiPiRoZWFk
ZXJGaWxlTmFtZSIpIG9yIGRpZSAiQ291bGRuJ3Qgb3BlbiBmaWxlICRoZWFkZXJGaWxlTmFtZSI7
Cit9CisKKyMgUGFyYW1zOiAnaWRsRG9jdW1lbnQnIHN0cnVjdAorc3ViIEdlbmVyYXRlTW9kdWxl
Cit7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OyAg
CisgICAgCisgICAgJG1vZHVsZSA9ICRkYXRhTm9kZS0+bW9kdWxlOyAgICAKK30KKworc3ViIEdl
dFBhcmVudENsYXNzTmFtZQoreworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworCisgICAgaWYg
KEB7JGRhdGFOb2RlLT5wYXJlbnRzfSBlcSAwKSB7CisgICAgICAgIHJldHVybiAiRE9NT2JqZWN0
IjsKKyAgICB9CisKKyAgICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKCRkYXRh
Tm9kZS0+cGFyZW50cygwKSk7Cit9CisKK3N1YiBHZXRPYmpDVHlwZQoreworICAgIG15ICR0eXBl
ID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKHNoaWZ0KTsKKyAgICAKKyAgICBpZiAoJHR5
cGUgZXEgImJvb2xlYW4iKSB7CisgICAgICAgIHJldHVybiAiQk9PTCI7CisgICAgfSBlbHNpZiAo
JHR5cGUgZXEgInVuc2lnbmVkIGxvbmciKSB7CisgICAgICAgIHJldHVybiAidW5zaWduZWQiOwor
ICAgIH0gZWxzaWYgKCR0eXBlIGVxICJsb25nIikgeworICAgICAgICByZXR1cm4gImludCI7Cisg
ICAgfSBlbHNpZiAoJHR5cGUgZXEgIkRPTVN0cmluZyIpIHsKKyAgICAgICAgcmV0dXJuICJOU1N0
cmluZyAqIjsKKyAgICB9IGVsc2lmICgkdHlwZSBlcSAidW5zaWduZWQgc2hvcnQiIAorICAgICAg
ICAgICAgIG9yICR0eXBlIGVxICJmbG9hdCIKKyAgICAgICAgICAgICBvciAkdHlwZSBlcSAidm9p
ZCIKKyAgICAgICAgICAgICBvciAkdHlwZSBlcSAiQXRvbWljU3RyaW5nIikgeworICAgICAgICBy
ZXR1cm4gJHR5cGU7CisgICAgfQorICAgIAorICAgICMgRGVmYXVsdCwgYXNzdW1lIG5hdGl2ZSB0
eXBlIGlzIGEgcG9pbnRlciB3aXRoIHNhbWUgdHlwZSBuYW1lIGFzIGlkbCB0eXBlCisgICAgcmV0
dXJuICIkdHlwZSAqIjsKK30KKworCitzdWIgQWRkSW5jbHVkZXNGb3JUeXBlCit7CisgICAgbXkg
JHR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoc2hpZnQpOworICAgIAorICAgIGlm
ICgkY29kZUdlbmVyYXRvci0+SXNQcmltaXRpdmVUeXBlKCR0eXBlKQorICAgICAgICAgICAgb3Ig
JHR5cGUgZXEgIkRPTVN0cmluZyIKKyAgICAgICAgICAgIG9yICR0eXBlIGVxICJET01PYmplY3Qi
CisgICAgICAgICAgICBvciAkdHlwZSBlcSAiUkdCQ29sb3IiCisgICAgICAgICAgICBvciAkdHlw
ZSBlcSAiUmVjdCIpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgICMgZGVmYXVsdCwg
aW5jbHVkZSB0aGUgc2FtZSBuYW1lZCBmaWxlCisgICAgJGltcGxJbmNsdWRlc3siJHR5cGUuaCJ9
ID0gMTsKKworICAgICMgYWRkaXRpb25hbCBpbmNsdWRlcyAodGhpbmdzIG5lZWRlZCB0byBjb21w
aWxlIHRoZSBiaW5kaW5ncyBidXQgbm90IHRoZSBoZWFkZXIpCisKKyAgICAjIGlmICgkdHlwZSBl
cSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIikgeworICAgICMgICAgICRpbXBsSW5jbHVkZXN7
IkNhbnZhc0dyYWRpZW50LmgifSA9IDE7CisgICAgIyAgICAgJGltcGxJbmNsdWRlc3siQ2FudmFz
UGF0dGVybi5oIn0gPSAxOworICAgICMgICAgICRpbXBsSW5jbHVkZXN7IkNhbnZhc1N0eWxlLmgi
fSA9IDE7CisgICAgIyB9CisgICAgIyAKKyAgICAjIGlmICgkdHlwZSBlcSAiQ2FudmFzR3JhZGll
bnQiIG9yICR0eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7CisgICAgIyAgICAgJGltcGxJbmNs
dWRlc3siUGxhdGZvcm1TdHJpbmcuaCJ9ID0gMTsKKyAgICAjIH0KK30KKworc3ViIEdlbmVyYXRl
SGVhZGVyCit7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAgIG15ICRkYXRhTm9kZSA9IHNo
aWZ0OworCisgICAgIyBNYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCBoYXZlIG1vcmUgdGhhbiBvbmUg
cGFyZW50LgorICAgIGlmIChAeyRkYXRhTm9kZS0+cGFyZW50c30gPiAxKSB7CisgICAgICAgIGRp
ZSAiQSBjbGFzcyBjYW4ndCBoYXZlIG1vcmUgdGhhbiBvbmUgcGFyZW50LiI7CisgICAgfQorCisg
ICAgbXkgJGludGVyZmFjZU5hbWUgPSAkZGF0YU5vZGUtPm5hbWU7CisgICAgbXkgJGNsYXNzTmFt
ZSA9ICJET00kaW50ZXJmYWNlTmFtZSI7CisgICAgbXkgJHBhcmVudENsYXNzTmFtZSA9ICJET00i
IC4gR2V0UGFyZW50Q2xhc3NOYW1lKCRkYXRhTm9kZSk7CisgICAgbXkgJGNvbmRpdGlvbmFsID0g
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifTsKKworCisgICAg
IyAtIEFkZCBkZWZhdWx0IGhlYWRlciB0ZW1wbGF0ZQorICAgIEBoZWFkZXJDb250ZW50ID0gc3Bs
aXQoIlxyIiwgJGhlYWRlclRlbXBsYXRlKTsKKyAgICAKKyAgICAjIC0gQWRkIHByb3RlY3Rpb24g
YWdhaW5zdCB1bnN1cHBvcnRlZCBtb2R1bGVzCisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxu
I2lmICR7Y29uZGl0aW9uYWx9X1NVUFBPUlRcbiIpIGlmICRjb25kaXRpb25hbDsKKworCisgICAg
IyAtIElOQ0xVREVTIC0KKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4jaW1wb3J0IFwiJHBh
cmVudENsYXNzTmFtZS5oXCIgLy8gcGFyZW50IGNsYXNzXG5cbiIpOworICAgIAorICAgICMgLSBG
T1JXQVJEIERFQ0xBUkFUSU9OUyAtCisgICAgIyBGSVhNRTogYWRkIEZPUldBUkQgREVDTEFSQVRJ
T05TIHdoZXJlIG5lZWRlZAorCisgICAgIyAtIEJlZ2luIEBpbnRlcmZhY2UgCisgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIlxAaW50ZXJmYWNlICRjbGFzc05hbWUgOiAkcGFyZW50Q2xhc3NOYW1l
XG4iKTsKKworICAgIG15ICRudW1BdHRyaWJ1dGVzID0gQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9
OworICAgIG15ICRudW1GdW5jdGlvbnMgPSBAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfTsKKyAgICBt
eSAkbnVtQ29uc3RhbnRzID0gQHskZGF0YU5vZGUtPmNvbnN0YW50c307CisKKyAgICAjIC0gQWRk
IGF0dHJpYnV0ZSBnZXR0ZXJzL3NldHRlcnMuCisgICAgaWYgKCRudW1BdHRyaWJ1dGVzID4gMCkg
eworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4vLyBBdHRyaWJ1dGVzXG4iKTsKKyAg
ICAgICAgCisgICAgICAgIGZvcmVhY2ggKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgeworICAg
ICAgICAgICAgbXkgJGF0dHJpYnV0ZSA9ICRfOworICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT2JqQ1ByaXZh
dGUifSkgeworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5uYW1lOworICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZVR5cGUgPSBHZXRPYmpDVHlwZSgkYXR0
cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOworICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZUlzUmVh
ZG9ubHkgPSAoJGF0dHJpYnV0ZS0+dHlwZSA9fiAvXnJlYWRvbmx5Lyk7CisKKyAgICAgICAgICAg
ICMgLSBHRVRURVIKKyAgICAgICAgICAgIG15ICRnZXR0ZXIgPSAiLSAoIiAuICRhdHRyaWJ1dGVU
eXBlIC4gIikiIC4gJGF0dHJpYnV0ZU5hbWUgLiAiO1xuIjsKKyAgICAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICRnZXR0ZXIpOworICAgICAgICAgICAgCisgICAgICAgICAgICAjIC0gU0VU
VEVSCisgICAgICAgICAgICBpZiAoISRhdHRyaWJ1dGVJc1JlYWRvbmx5KSB7CisgICAgICAgICAg
ICAgICAgbXkgJHNldHRlciA9ICItICh2b2lkKXNldCIgLiB1Y2ZpcnN0KCRhdHRyaWJ1dGVOYW1l
KSAuICI6KCIgLiAkYXR0cmlidXRlVHlwZSAuICIpIiAuICRhdHRyaWJ1dGVOYW1lIC4gIjtcbiI7
CisgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgJHNldHRlcik7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgIyAtIEFkZCBGdW5jdGlvbnMuCisg
ICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwKSB7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICJcbi8vIEZ1bmN0aW9uc1xuIik7CisgICAgICAgIAorICAgICAgICBmb3JlYWNoIChAeyRkYXRh
Tm9kZS0+ZnVuY3Rpb25zfSkgeworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uID0gJF87CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+bmFtZTsKKyAgICAgICAgICAgIG15ICRyZXR1cm5UeXBlID0gR2V0T2JqQ1R5cGUoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpOworICAgICAgICAgICAgbXkgJG51bWJlck9mUGFyYW1l
dGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKKworICAgICAgICAgICAgbXkgJG91dHB1
dCA9ICItICgkcmV0dXJuVHlwZSkkZnVuY3Rpb25OYW1lIjsKKyAgICAgICAgICAgIGZvcmVhY2gg
bXkgJHBhcmFtIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKKyAgICAgICAgICAgICAgICBt
eSAkcGFyYW1OYW1lID0gJHBhcmFtLT5uYW1lOworICAgICAgICAgICAgICAgIG15ICRwYXJhbVR5
cGUgPSBHZXRPYmpDVHlwZSgkcGFyYW0tPnR5cGUpOworCisgICAgICAgICAgICAgICAgJG91dHB1
dCAuPSAiOigkcGFyYW1UeXBlKSRwYXJhbU5hbWUiOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgJG91dHB1dCAuPSAiO1xuIjsKKworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
JG91dHB1dCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAjIC0gRW5kIEBpbnRlcmZhY2UgCisg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuXEBlbmRcbiIpOworCisgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIlxuI2VuZGlmIC8vICR7Y29uZGl0aW9uYWx9X1NVUFBPUlRcbiIpIGlmICRjb25k
aXRpb25hbDsKKworfQorCitzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgoreworICAgIG15ICRv
YmplY3QgPSBzaGlmdDsKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKworICAgIG15ICRpbnRl
cmZhY2VOYW1lID0gJGRhdGFOb2RlLT5uYW1lOworICAgIG15ICRjbGFzc05hbWUgPSAiRE9NJGlu
dGVyZmFjZU5hbWUiOworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gIldlYkNvcmU6OiRpbnRlcmZh
Y2VOYW1lIjsKKworICAgIG15ICRwYXJlbnRDbGFzc05hbWUgPSBHZXRQYXJlbnRDbGFzc05hbWUo
JGRhdGFOb2RlKTsKKyAgICBteSAkY29uZGl0aW9uYWwgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9OworICAKKyAgICAKKyAgICAjIC0gQWRkIGRlZmF1bHQg
aGVhZGVyIHRlbXBsYXRlLgorICAgIEBpbXBsQ29udGVudEhlYWRlciA9IHNwbGl0KCJcciIsICRo
ZWFkZXJUZW1wbGF0ZSk7CisKKyAgICAjIC0gQWRkIHByb3RlY3Rpb24gYWdhaW5zdCB1bnN1cHBv
cnRlZCBtb2R1bGVzLgorICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAiXG4jaWZkZWYgJHtj
b25kaXRpb25hbH1fU1VQUE9SVFxuIikgaWYgJGNvbmRpdGlvbmFsOworCisgICAgIyAtIElOQ0xV
REVTIC0KKyAgICBwdXNoKEBpbXBsQ29udGVudEhlYWRlciwgIlxuI2ltcG9ydCBcImNvbmZpZy5o
XCJcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAiI2ltcG9ydCBcIiRjbGFzc05h
bWUuaFwiXG5cbiIpOworCisgICAgIyBORUVERUQgZm9yIERPTV9DQVNUCisgICAgcHVzaChAaW1w
bENvbnRlbnRIZWFkZXIsICIjaW1wb3J0IFwiRE9NSW50ZXJuYWwuaFwiIC8vIG5lZWRlZCBmb3Ig
RE9NX2Nhc3Q8PlxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIsICIjaW1wb3J0IFwi
RE9NSFRNTEludGVybmFsLmhcIlxuIik7CisKKyAgICAjIGluY2x1ZGUgSW1wbGVtZW50YXRpb24g
Y2xhc3MKKyAgICBwdXNoKEBpbXBsQ29udGVudEhlYWRlciwgIiNpbXBvcnQgXCIkaW50ZXJmYWNl
TmFtZS5oXCIgLy8gaW1wbGVtZW50YXRpb24gY2xhc3NcblxuIik7CisKKyAgICBAaW1wbENvbnRl
bnQgPSAoKTsKKworICAgICMgU1RBUlQgaW1wbGVtZW50YXRpb24KKyAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIlxAaW1wbGVtZW50YXRpb24gJGNsYXNzTmFtZVxuXG4iKTsKKyAgICAKKyAgICAjIEFE
RCBJTlRFUk5BTCBDQVNUSU5HIE1FVEhPRAorICAgIG15ICRpbnRlcm5hbENhc3RpbmdOYW1lID0g
Il8kaW50ZXJmYWNlTmFtZSI7CisgICAgIyBpZiAoKCRpbnRlcmZhY2VOYW1lID1+IC9eSFRNTC8p
KSB7CisgICAgIyAgICAgJGludGVybmFsQ2FzdGluZ05hbWUgLj0gbGNmaXJzdChzdWJzdHIoJGlu
dGVyZmFjZU5hbWUsIDQpKTsKKyAgICAjIH0gZWxzZSB7CisgICAgIyAgICAgJGludGVybmFsQ2Fz
dGluZ05hbWUgLj0gbGNmaXJzdCgkaW50ZXJmYWNlTmFtZSk7CisgICAgIyB9CisgICAgcHVzaChA
aW1wbENvbnRlbnQsICItICgkaW1wbENsYXNzTmFtZSAqKSRpbnRlcm5hbENhc3RpbmdOYW1lXG4i
KTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHJldHVybiBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSAqPihET01fY2FzdDxXZWJD
b3JlOjpOb2RlICo+KF9pbnRlcm5hbCkpO1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9
XG5cbiIpOworICAgIAorICAgIG15ICRpbXBsZW1lbnRhdGlvbiA9ICJbc2VsZiAkaW50ZXJuYWxD
YXN0aW5nTmFtZV0iOworICAgIAorICAgICMgLSBBdHRyaWJ1dGVzCisgICAgbXkgJG51bUF0dHJp
YnV0ZXMgPSBAeyRkYXRhTm9kZS0+YXR0cmlidXRlc307CisgICAgaWYgKCRudW1BdHRyaWJ1dGVz
ID4gMCkgeyAgICAgICAgCisgICAgICAgIGZvcmVhY2ggKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVz
fSkgeworICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZSA9ICRfOworCisgICAgICAgICAgICBBZGRJ
bmNsdWRlc0ZvclR5cGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsKKworICAgICAgICAg
ICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAg
ICAgICAgICBteSAkYXR0cmlidXRlVHlwZSA9IEdldE9iakNUeXBlKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+dHlwZSk7CisgICAgICAgICAgICBteSAkYXR0cmlidXRlSXNSZWFkb25seSA9ICgkYXR0
cmlidXRlLT50eXBlID1+IC9ecmVhZG9ubHkvKTsKKworICAgICAgICAgICAgIyAtIEdFVFRFUgor
ICAgICAgICAgICAgbXkgJGdldHRlclNpZyA9ICItICgkYXR0cmlidXRlVHlwZSkkYXR0cmlidXRl
TmFtZVxuIjsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkZ2V0dGVyU2lnKTsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gJGltcGxlbWVudGF0aW9uLT4kYXR0cmlidXRlTmFtZSgp
O1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisKKyAgICAg
ICAgICAgICMgLSBTRVRURVIKKyAgICAgICAgICAgIGlmICghJGF0dHJpYnV0ZUlzUmVhZG9ubHkp
IHsKKyAgICAgICAgICAgICAgICBteSAkc2V0dGVyTmFtZSA9ICJzZXQiIC4gdWNmaXJzdCgkYXR0
cmlidXRlTmFtZSk7CisgICAgICAgICAgICAgICAgbXkgJHNldHRlclNpZyA9ICItICh2b2lkKSRz
ZXR0ZXJOYW1lOigkYXR0cmlidXRlVHlwZSkkYXR0cmlidXRlTmFtZVxuIjsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgJHNldHRlclNpZyk7CisgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAkaW1wbGVtZW50YXRpb24tPiRzZXR0ZXJOYW1lKCRhdHRyaWJ1dGVOYW1lKTtcbiIp
OworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgICMgLSBGdW5jdGlvbnMKKyAgICBteSAkbnVt
RnVuY3Rpb25zID0gQHskZGF0YU5vZGUtPmZ1bmN0aW9uc307ICAgIAorICAgIGlmICgkbnVtRnVu
Y3Rpb25zID4gMCkgeyAgICAgICAgCisgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRk
YXRhTm9kZS0+ZnVuY3Rpb25zfSkgeworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICAgICAgbXkgJHJldHVyblR5cGUgPSBH
ZXRPYmpDVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAgICAgICBteSAk
bnVtYmVyT2ZQYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OworICAgICAgICAg
ICAgCisgICAgICAgICAgICBteSAkZnVuY3Rpb25TaWcgPSAiLSAoJHJldHVyblR5cGUpJGZ1bmN0
aW9uTmFtZSI7CisgICAgICAgICAgICBmb3JlYWNoIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30p
IHsKKyAgICAgICAgICAgICAgICBteSAkcGFyYW0gPSAkXzsKKyAgICAgICAgICAgICAgICBteSAk
cGFyYW1OYW1lID0gJHBhcmFtLT5uYW1lOworICAgICAgICAgICAgICAgIG15ICRwYXJhbVR5cGUg
PSBHZXRPYmpDVHlwZSgkcGFyYW0tPnR5cGUpOworCisgICAgICAgICAgICAgICAgJGZ1bmN0aW9u
U2lnIC49ICI6KCRwYXJhbVR5cGUpJHBhcmFtTmFtZSI7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiRmdW5jdGlvblNpZ1xuIik7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBteSAk
ZnVuY3Rpb25Db250ZW50OworICAgICAgICAgICAgaWYgKCRyZXR1cm5UeXBlIGVxICJ2b2lkIikg
eworICAgICAgICAgICAgICAgICRmdW5jdGlvbkNvbnRlbnQgPSAiICAgICRpbXBsZW1lbnRhdGlv
bi0+JGZ1bmN0aW9uTmFtZSgiOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG15
ICRudW1QYXJhbXMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CisgICAgICAgICAgICAgICAg
aWYgKCRudW1QYXJhbXMgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKEB7JGZ1
bmN0aW9uLT5wYXJhbWV0ZXJzfSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHBhcmFt
ID0gJF87CisgICAgICAgICAgICAgICAgICAgICAgICBteSAkcGFyYW1OYW1lID0gJHBhcmFtLT5u
YW1lOworICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uQ29udGVudCAuPSAiJHBhcmFt
TmFtZSwgIjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAjIHJl
bW92ZSB0aGUgZmluYWwgIiwgIgorICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25Db250ZW50
ID0gc3Vic3RyKCRmdW5jdGlvbkNvbnRlbnQsIDAsIC0yKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgJGZ1bmN0aW9uQ29udGVudCAuPSAiKTtcbiIKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRmdW5jdGlvbkNvbnRlbnQpOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworICAgICAgICB9CisgICAgfQor
CisgICAgIyBFTkQgaW1wbGVtZW50YXRpb24KKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxAZW5k
XG4iKTsKKyAgICAKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2VuZGlmIC8vICR7Y29uZGl0
aW9uYWx9X1NVUFBPUlRcbiIpIGlmICRjb25kaXRpb25hbDsKK30KKworIyBJbnRlcm5hbCBoZWxw
ZXIKK3N1YiBXcml0ZURhdGEKK3sKKyAgICBpZiAoZGVmaW5lZCgkSU1QTCkpIHsKKyAgICAgICAg
IyBXcml0ZSBjb250ZW50IHRvIGZpbGUuCisgICAgICAgIHByaW50ICRJTVBMIEBpbXBsQ29udGVu
dEhlYWRlcjsKKyAgICAgICAgCisgICAgICAgIGZvcmVhY2ggbXkgJGltcGxJbmNsdWRlIChzb3J0
IGtleXMoJWltcGxJbmNsdWRlcykpIHsKKyAgICAgICAgICAgIHByaW50ICRJTVBMICIjaW1wb3J0
IFwiJGltcGxJbmNsdWRlXCJcbiI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHByaW50
ICRJTVBMIEBpbXBsQ29udGVudDsKKyAgICAgICAgY2xvc2UoJElNUEwpOworICAgICAgICB1bmRl
ZigkSU1QTCk7CisgICAgICAgIAorICAgICAgICBAaW1wbEhlYWRlckNvbnRlbnQgPSAiIjsKKyAg
ICAgICAgQGltcGxDb250ZW50ID0gIiI7ICAgIAorICAgICAgICAlaW1wbEluY2x1ZGVzID0gKCk7
CisgICAgfQorICAgICAgICAKKyAgICBpZiAoZGVmaW5lZCgkSEVBREVSKSkgeworICAgICAgICAj
IFdyaXRlIGNvbnRlbnQgdG8gZmlsZS4KKyAgICAgICAgcHJpbnQgJEhFQURFUiBAaGVhZGVyQ29u
dGVudDsKKyAgICAgICAgY2xvc2UoJEhFQURFUik7CisgICAgICAgIHVuZGVmKCRIRUFERVIpOwor
ICAgICAgICAKKyAgICAgICAgQGhlYWRlckNvbnRlbnQgPSAiIjsKKyAgICB9Cit9CisKKzE7Cklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmlkbAkocmV2aXNpb24gMTU4MjgpCisrKyBXZWJDb3Jl
L2h0bWwvSFRNTEJhc2VFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTksOSArMTksMTAg
QEAKIAogbW9kdWxlIGh0bWwgewogCisKICAgICBpbnRlcmZhY2UgW0xlZ2FjeVBhcmVudD1LSlM6
OkpTSFRNTEVsZW1lbnRdIEhUTUxCYXNlRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKLSAgICAgICAg
YXR0cmlidXRlICBET01TdHJpbmcgICAgICAgICAgICBocmVmOwotICAgICAgICBhdHRyaWJ1dGUg
IERPTVN0cmluZyAgICAgICAgICAgIHRhcmdldDsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmlu
ZyBocmVmOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRhcmdldDsKICAgICB9OwogCiB9
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEJhc2VGb250RWxlbWVudC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxCYXNlRm9udEVsZW1lbnQuaWRsCShyZXZpc2lvbiAxNTgyOCkK
KysrIFdlYkNvcmUvaHRtbC9IVE1MQmFzZUZvbnRFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjIsNiArMjIsNiBAQCBtb2R1bGUgaHRtbCB7CiAgICAgaW50ZXJmYWNlIFtMZWdhY3lQYXJl
bnQ9S0pTOjpKU0hUTUxFbGVtZW50XSBIVE1MQmFzZUZvbnRFbGVtZW50IDogSFRNTEVsZW1lbnQg
ewogICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNvbG9yOwogICAgICAgICBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGZhY2U7Ci0gICAgICAgIGF0dHJpYnV0ZSBsb25nIHNpemU7ICAgIAorICAgICAg
ICBhdHRyaWJ1dGUgbG9uZyBzaXplOwogICAgIH07CiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRN
TFN0eWxlRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVs
ZW1lbnQuaWRsCShyZXZpc2lvbiAxNTgyOCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVt
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQCBtb2R1bGUgaHRtbCB7CiAg
ICAgICAgIGF0dHJpYnV0ZSAgRE9NU3RyaW5nICAgICAgICAgICAgdHlwZTsKICAgICAgICAgCiAg
ICAgICAgIC8vIERPTSBMZXZlbCAyIFN0eWxlCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBT
dHlsZVNoZWV0ICAgc2hlZXQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbT2JqQ1ByaXZh
dGVdIFN0eWxlU2hlZXQgICBzaGVldDsKICAgICB9OwogCiB9CkluZGV4OiBXZWJLaXQvRE9NL1dl
YkRPTU9wZXJhdGlvbnMubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvRE9NL1dlYkRPTU9wZXJhdGlv
bnMubQkocmV2aXNpb24gMTU4MjgpCisrKyBXZWJLaXQvRE9NL1dlYkRPTU9wZXJhdGlvbnMubQko
d29ya2luZyBjb3B5KQpAQCAtMjgsMTQgKzI4LDE2IEBACiAKICNpbXBvcnQgPFdlYktpdC9XZWJE
T01PcGVyYXRpb25zUHJpdmF0ZS5oPgogCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9Bc3NlcnRp
b25zLmg+CisjaW1wb3J0IDxXZWJLaXQvRE9NQ29yZS5oPgogI2ltcG9ydCA8V2ViS2l0L0RPTUV4
dGVuc2lvbnMuaD4KICNpbXBvcnQgPFdlYktpdC9ET01IVE1MLmg+Ci0jaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWVCcmlkZ2UuaD4K
KyNpbXBvcnQgPFdlYktpdC9ET01IVE1MUGFyYW1FbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJLaXQv
V2ViQXJjaGl2ZXIuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJEYXRhU291cmNlUHJpdmF0ZS5oPgor
I2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lQnJpZGdlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJh
bWVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0TlNTdHJpbmdFeHRyYXMuaD4KLSNp
bXBvcnQgPFdlYktpdC9XZWJBcmNoaXZlci5oPgogCiAKIEBpbXBsZW1lbnRhdGlvbiBET01Ob2Rl
IChXZWJET01Ob2RlT3BlcmF0aW9ucykKSW5kZXg6IFdlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDE1ODI4KQorKysgV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04NTksMjEgKzg1OSwxOSBAQAogCQk5
QzdDQUJCQjAxOTBBMzdDMEVDQTE2RUEgLyogV2ViVmlldyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNjU4QTQwOTUwQTE0ODUzQjAwNUU2OTg3IC8qIFdl
YkRhdGFTb3VyY2VJbnRlcm5hbC5oICovLAotCQkJCTY1MEY3NEUyMDlFNDg4RjcwMDIwMTE4QSAv
KiBXZWJVbmFyY2hpdmluZ1N0YXRlLmggKi8sCi0JCQkJNjUwRjc0RTMwOUU0ODhGNzAwMjAxMThB
IC8qIFdlYlVuYXJjaGl2aW5nU3RhdGUubSAqLywKLQkJCQk2NTUwQjdDNTA5OUVGQUU5MDA5MEQ3
ODEgLyogV2ViQXJjaGl2ZXIuaCAqLywKLQkJCQk2NTUwQjdDNjA5OUVGQUU5MDA5MEQ3ODEgLyog
V2ViQXJjaGl2ZXIubSAqLywKIAkJCQlGNTJDQTZCRDAyREY5RDBGMDE4NjM1Q0EgLyogSFRNTCAq
LywKIAkJCQk1MUU5NEMwNzA2QzAyQ0EzMDBBOUIwOUUgLyogUERGICovLAogCQkJCTgzNzM0MzVB
MDYyNEVFMEQwMEYzQjI4OSAvKiBXZWJBcmNoaXZlLmggKi8sCiAJCQkJODM3MzQzNUIwNjI0RUUw
RDAwRjNCMjg5IC8qIFdlYkFyY2hpdmUubSAqLywKKwkJCQk2NTUwQjdDNTA5OUVGQUU5MDA5MEQ3
ODEgLyogV2ViQXJjaGl2ZXIuaCAqLywKKwkJCQk2NTUwQjdDNjA5OUVGQUU5MDA5MEQ3ODEgLyog
V2ViQXJjaGl2ZXIubSAqLywKIAkJCQk5MzNENjU5OTAzNDEzRkYyMDA4NjM1Q0UgLyogV2ViQ2xp
cFZpZXcuaCAqLywKIAkJCQk5MzNENjU5QTAzNDEzRkYyMDA4NjM1Q0UgLyogV2ViQ2xpcFZpZXcu
bSAqLywKIAkJCQk3MEVDRDZDQzA0M0I3Mjc0MDBBODAxODEgLyogV2ViRGF0YVByb3RvY29sLmgg
Ki8sCiAJCQkJNzBFQ0Q2Q0QwNDNCNzI3NDAwQTgwMTgxIC8qIFdlYkRhdGFQcm90b2NvbC5tICov
LAogCQkJCTM5NDQ2MDcwMDIwRjUwRUQwRUNBMTc2NyAvKiBXZWJEYXRhU291cmNlLmggKi8sCiAJ
CQkJMzk0NDYwNzEwMjBGNTBFRDBFQ0ExNzY3IC8qIFdlYkRhdGFTb3VyY2UubSAqLywKKwkJCQk2
NThBNDA5NTBBMTQ4NTNCMDA1RTY5ODcgLyogV2ViRGF0YVNvdXJjZUludGVybmFsLmggKi8sCiAJ
CQkJMzk0NDYwNzIwMjBGNTBFRDBFQ0ExNzY3IC8qIFdlYkRhdGFTb3VyY2VQcml2YXRlLmggKi8s
CiAJCQkJMzUwODFEQUUwMkI2RDRGNTBBQ0EyQUNBIC8qIFdlYkRvY3VtZW50LmggKi8sCiAJCQkJ
RUQyMUI5ODEwNTI4RjdBQTAwMzI5OUFDIC8qIFdlYkRvY3VtZW50SW50ZXJuYWwuaCAqLywKQEAg
LTkxMSw2ICs5MDksOCBAQAogCQkJCTdFNkZFRjA3MDg5ODVBNzIwMEM0NEMzRiAvKiBXZWJTY3Jp
cHREZWJ1Z0RlbGVnYXRlUHJpdmF0ZS5oICovLAogCQkJCTUxNUUyN0NDMDQ1OEM4NjUwMENBMkQz
QSAvKiBXZWJVSURlbGVnYXRlLmggKi8sCiAJCQkJNjVBN0Q0NEEwNTY4QUIyNjAwRTcwRUY2IC8q
IFdlYlVJRGVsZWdhdGVQcml2YXRlLmggKi8sCisJCQkJNjUwRjc0RTIwOUU0ODhGNzAwMjAxMThB
IC8qIFdlYlVuYXJjaGl2aW5nU3RhdGUuaCAqLywKKwkJCQk2NTBGNzRFMzA5RTQ4OEY3MDAyMDEx
OEEgLyogV2ViVW5hcmNoaXZpbmdTdGF0ZS5tICovLAogCQkJCTUxQThCNTc5MDQyODM0RjcwMENB
MkQzQSAvKiBXZWJWaWV3LmggKi8sCiAJCQkJNTFBOEI1N0EwNDI4MzRGNzAwQ0EyRDNBIC8qIFdl
YlZpZXcubSAqLywKIAkJCQk5MzBEMDJCQjA2Mjc1RjY0MDA3NjcwMUUgLyogV2ViVmlld0ludGVy
bmFsLmggKi8sCkBAIC0xMjI3LDEwICsxMjI3LDMwIEBACiAJCQlidWlsZFBoYXNlcyA9ICgKIAkJ
CQk5M0FGNTI4NzA4MjU0QjMzMDA1RDAxNTYgLyogRE9NLmggKi8sCiAJCQkJOTNBRjUyQTcwODI1
NEQ4QjAwNUQwMTU2IC8qIERPTUNvcmUuaCAqLywKKwkJCQk4NTI2RDc0RDBBOEZFRjAyMDA5MjM0
QjEgLyogRE9NQXR0ci5oICovLAorCQkJCTg1MzExRjY5MEE4RjkwOTEwMDUxMjVDOSAvKiBET01D
REFUQVNlY3Rpb24uaCAqLywKKwkJCQk4NTI2RDZCRjBBOEZFNjBCMDA5MjM0QjEgLyogRE9NQ2hh
cmFjdGVyRGF0YS5oICovLAorCQkJCTg1MzExRjcyMEE4RjkwRjYwMDUxMjVDOSAvKiBET01Db21t
ZW50LmggKi8sCisJCQkJODU2Qzg5REUwQTkwRTM4MzAwNUM2ODdCIC8qIERPTURvY3VtZW50Lmgg
Ki8sCisJCQkJODVDOTA2NkYwQThGRDExQzAwQzM3RDkxIC8qIERPTURvY3VtZW50RnJhZ21lbnQu
aCAqLywKKwkJCQk4NUM5MDVGMzBBOEZDQ0IyMDBDMzdEOTEgLyogRE9NRG9jdW1lbnRUeXBlLmgg
Ki8sCisJCQkJODUzOUI1NjUwQTkwM0VCOTAwMzY2QzJEIC8qIERPTURPTUltcGxlbWVudGF0aW9u
LmggKi8sCisJCQkJODVBNUM1RTEwQTkwMzJCMzAwRjkxRjJDIC8qIERPTUVsZW1lbnQuaCAqLywK
KwkJCQk4NTMxMUY3NTBBOEY5MTY4MDA1MTI1QzkgLyogRE9NRW50aXR5LmggKi8sCisJCQkJODUz
MTFGODgwQThGOTFGRTAwNTEyNUM5IC8qIERPTUVudGl0eVJlZmVyZW5jZS5oICovLAorCQkJCTg1
MjZEN0VBMEE4RkY2NEMwMDkyMzRCMSAvKiBET01OYW1lZE5vZGVNYXAuaCAqLywKKwkJCQk4NTZD
OEE5MzBBOTBGNTRGMDA1QzY4N0IgLyogRE9NTm9kZS5oICovLAorCQkJCTg1QTg1QjU5MEE5MDJD
MzIwMEE1Q0YzQSAvKiBET01Ob2RlTGlzdC5oICovLAorCQkJCTg1MzExRkU5MEE4Rjk4QjkwMDUx
MjVDOSAvKiBET01Ob3RhdGlvbi5oICovLAorCQkJCTg1NkM4QjdCMEE5MTI5QjgwMDVDNjg3QiAv
KiBET01PYmplY3QuaCAqLywKKwkJCQk4NTMxMjAxMzBBOEY5QTUyMDA1MTI1QzkgLyogRE9NUHJv
Y2Vzc2luZ0luc3RydWN0aW9uLmggKi8sCisJCQkJODUyNkQ2NDEwQThGREI4NDAwOTIzNEIxIC8q
IERPTVRleHQuaCAqLywKIAkJCQk5M0FGNTJBOTA4MjU0RDhGMDA1RDAxNTYgLyogRE9NQ1NTLmgg
Ki8sCiAJCQkJOTNBRjUyQTUwODI1NEQ4NzAwNUQwMTU2IC8qIERPTUV2ZW50cy5oICovLAogCQkJ
CTkzQUY1MkEzMDgyNTREODEwMDVEMDE1NiAvKiBET01FeHRlbnNpb25zLmggKi8sCiAJCQkJOTNB
RjUyQTEwODI1NEQ3RDAwNUQwMTU2IC8qIERPTUhUTUwuaCAqLywKKwkJCQk4NTZFMDY1RjBBOTM5
ODU5MDBBMjQ3MzkgLyogRE9NSFRNTEVsZW1lbnQuaCAqLywKKwkJCQk4NTRGMTIxMjBBOEU0M0I3
MDAwOTQwQjUgLyogRE9NSFRNTFBhcmFtRWxlbWVudC5oICovLAogCQkJCTkzQUY1MjlGMDgyNTRE
N0EwMDVEMDE1NiAvKiBET01Qcml2YXRlLmggKi8sCiAJCQkJOTNBRjUyOUQwODI1NEQ3NjAwNUQw
MTU2IC8qIERPTVJhbmdlLmggKi8sCiAJCQkJOTNBRjUyOUIwODI1NEQ2MjAwNUQwMTU2IC8qIERP
TVN0eWxlc2hlZXRzLmggKi8sCkBAIC0xMzE4LDYgKzEzMzgsMzI2IEBACiAJCQlzaGVsbFBhdGgg
PSAvYmluL3NoOwogCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJ
Ui8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQv
IFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01YUGF0aC5oXCIgPiBcIiRUQVJHRVRf
QlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01YUGF0aC5oXCIiOwogCQl9
OworCQk4NTI2RDY0MTBBOEZEQjg0MDA5MjM0QjEgLyogRE9NVGV4dC5oICovID0geworCQkJaXNh
ID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VC
Q09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01UZXh0LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBE
T01UZXh0Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8k
KFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01UZXh0LmgiLAorCQkJKTsKKwkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9z
aDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJ
Q19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJD
T1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NVGV4dC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElS
LyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01UZXh0LmhcIiI7CisJCX07CisJCTg1MjZE
NkJGMEE4RkU2MEIwMDkyMzRCMSAvKiBET01DaGFyYWN0ZXJEYXRhLmggKi8gPSB7CisJCQlpc2Eg
PSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJD
T1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTUNoYXJhY3RlckRhdGEuaCIsCisJCQkpOworCQkJ
bmFtZSA9IERPTUNoYXJhY3RlckRhdGEuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRB
UkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUNoYXJhY3Rl
ckRhdGEuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAg
XCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1l
IHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01DaGFy
YWN0ZXJEYXRhLmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERF
Ul9QQVRIL0RPTUNoYXJhY3RlckRhdGEuaFwiIjsKKwkJfTsKKwkJODUyNkQ3NEQwQThGRUYwMjAw
OTIzNEIxIC8qIERPTUF0dHIuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJ
CSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJ
UikvRE9NQXR0ci5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NQXR0ci5oOworCQkJb3V0cHV0UGF0
aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJf
UEFUSCkvRE9NQXR0ci5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJt
a2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwi
XG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElS
L0RPTUF0dHIuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVS
X1BBVEgvRE9NQXR0ci5oXCIiOworCQl9OworCQk4NTI2RDdFQTBBOEZGNjRDMDA5MjM0QjEgLyog
RE9NTmFtZWROb2RlTWFwLmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhh
c2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkp
OworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIp
L0RPTU5hbWVkTm9kZU1hcC5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NTmFtZWROb2RlTWFwLmg7
CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19I
RUFERVJTX0ZPTERFUl9QQVRIKS9ET01OYW1lZE5vZGVNYXAuaCIsCisJCQkpOworCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3No
OworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElD
X0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNP
UkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01OYW1lZE5vZGVNYXAuaFwiID4gXCIkVEFSR0VUX0JV
SUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NTmFtZWROb2RlTWFwLmhcIiI7
CisJCX07CisJCTg1MzExRjY5MEE4RjkwOTEwMDUxMjVDOSAvKiBET01DREFUQVNlY3Rpb24uaCAq
LyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0g
KAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NQ0RBVEFTZWN0aW9uLmgi
LAorCQkJKTsKKwkJCW5hbWUgPSBET01DREFUQVNlY3Rpb24uaDsKKwkJCW91dHB1dFBhdGhzID0g
KAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgp
L0RPTUNEQVRBU2VjdGlvbi5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9
ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFU
SFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNf
RElSL0RPTUNEQVRBU2VjdGlvbi5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVB
REVSU19GT0xERVJfUEFUSC9ET01DREFUQVNlY3Rpb24uaFwiIjsKKwkJfTsKKwkJODUzMTFGNzIw
QThGOTBGNjAwNTEyNUM5IC8qIERPTUNvbW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxs
U2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlm
aWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFU
RV9IRUFERVJTX0RJUikvRE9NQ29tbWVudC5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NQ29tbWVu
dC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJM
SUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NQ29tbWVudC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7
CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNf
SEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09S
RV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUNvbW1lbnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJ
Ui8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NQ29tbWVudC5oXCIiOworCQl9OworCQk4
NTMxMUY3NTBBOEY5MTY4MDA1MTI1QzkgLyogRE9NRW50aXR5LmggKi8gPSB7CisJCQlpc2EgPSBQ
QlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3
OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JF
X1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTUVudGl0eS5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9N
RW50aXR5Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8k
KFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01FbnRpdHkuaCIsCisJCQkpOworCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmlu
L3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVC
TElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdF
QkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01FbnRpdHkuaFwiID4gXCIkVEFSR0VUX0JVSUxE
X0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NRW50aXR5LmhcIiI7CisJCX07CisJ
CTg1MzExRjg4MEE4RjkxRkUwMDUxMjVDOSAvKiBET01FbnRpdHlSZWZlcmVuY2UuaCAqLyA9IHsK
KwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJ
CSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NRW50aXR5UmVmZXJlbmNlLmgiLAor
CQkJKTsKKwkJCW5hbWUgPSBET01FbnRpdHlSZWZlcmVuY2UuaDsKKwkJCW91dHB1dFBhdGhzID0g
KAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgp
L0RPTUVudGl0eVJlZmVyZW5jZS5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlw
dCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJf
UEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURF
UlNfRElSL0RPTUVudGl0eVJlZmVyZW5jZS5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJM
SUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01FbnRpdHlSZWZlcmVuY2UuaFwiIjsKKwkJfTsKKwkJ
ODUzMTFGRTkwQThGOThCOTAwNTEyNUM5IC8qIERPTU5vdGF0aW9uLmggKi8gPSB7CisJCQlpc2Eg
PSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJD
T1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTU5vdGF0aW9uLmgiLAorCQkJKTsKKwkJCW5hbWUg
PSBET01Ob3RhdGlvbi5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxE
X0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NTm90YXRpb24uaCIsCisJCQkp
OworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBh
dGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxE
X0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJL
aXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01Ob3RhdGlvbi5oXCIgPiBcIiRU
QVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01Ob3RhdGlvbi5o
XCIiOworCQl9OworCQk4NTMxMjAxMzBBOEY5QTUyMDA1MTI1QzkgLyogRE9NUHJvY2Vzc2luZ0lu
c3RydWN0aW9uLmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJ
aW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTVBy
b2Nlc3NpbmdJbnN0cnVjdGlvbi5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NUHJvY2Vzc2luZ0lu
c3RydWN0aW9uLmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElS
KS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
aCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJ
CQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFS
R0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2Vi
Q29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9M
REVSX1BBVEgvRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmhcIiI7CisJCX07CisJCTg1MzlCNTY1
MEE5MDNFQjkwMDM2NkMyRCAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5oICovID0geworCQkJaXNh
ID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VC
Q09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01ET01JbXBsZW1lbnRhdGlvbi5oIiwKKwkJCSk7
CisJCQluYW1lID0gRE9NRE9NSW1wbGVtZW50YXRpb24uaDsKKwkJCW91dHB1dFBhdGhzID0gKAor
CQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RP
TURPTUltcGxlbWVudGF0aW9uLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0
ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9Q
QVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVS
U19ESVIvRE9NRE9NSW1wbGVtZW50YXRpb24uaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVC
TElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NRE9NSW1wbGVtZW50YXRpb24uaFwiIjsKKwkJfTsK
KwkJODU0RjEyMTIwQThFNDNCNzAwMDk0MEI1IC8qIERPTUhUTUxQYXJhbUVsZW1lbnQuaCAqLyA9
IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAor
CQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NSFRNTFBhcmFtRWxlbWVudC5o
IiwKKwkJCSk7CisJCQluYW1lID0gRE9NSFRNTFBhcmFtRWxlbWVudC5oOworCQkJb3V0cHV0UGF0
aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJf
UEFUSCkvRE9NSFRNTFBhcmFtRWxlbWVudC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVs
bFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19G
T0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRF
X0hFQURFUlNfRElSL0RPTUhUTUxQYXJhbUVsZW1lbnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJ
Ui8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NSFRNTFBhcmFtRWxlbWVudC5oXCIiOwor
CQl9OworCQk4NTZDODlERTBBOTBFMzgzMDA1QzY4N0IgLyogRE9NRG9jdW1lbnQuaCAqLyA9IHsK
KwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJ
CSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NRG9jdW1lbnQuaCIsCisJCQkpOwor
CQkJbmFtZSA9IERPTURvY3VtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJH
RVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01Eb2N1bWVudC5o
IiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJ
CXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJH
RVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJD
b3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTURvY3VtZW50Lmhc
IiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTURv
Y3VtZW50LmhcIiI7CisJCX07CisJCTg1NkM4QTkzMEE5MEY1NEYwMDVDNjg3QiAvKiBET01Ob2Rl
LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRo
cyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTU5vZGUuaCIsCisJ
CQkpOworCQkJbmFtZSA9IERPTU5vZGUuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRB
UkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTU5vZGUuaCIs
CisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlz
aGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VU
X0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29y
ZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01Ob2RlLmhcIiA+IFwi
JFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTU5vZGUuaFwi
IjsKKwkJfTsKKwkJODU2QzhCN0IwQTkxMjlCODAwNUM2ODdCIC8qIERPTU9iamVjdC5oICovID0g
eworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJ
CQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01PYmplY3QuaCIsCisJCQkpOwor
CQkJbmFtZSA9IERPTU9iamVjdC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VU
X0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NT2JqZWN0LmgiLAor
CQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hl
bGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9C
VUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUv
V2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NT2JqZWN0LmhcIiA+IFwi
JFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTU9iamVjdC5o
XCIiOworCQl9OworCQk4NTZFMDY1RjBBOTM5ODU5MDBBMjQ3MzkgLyogRE9NSFRNTEVsZW1lbnQu
aCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhz
ID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NSFRNTEVsZW1lbnQu
aCIsCisJCQkpOworCQkJbmFtZSA9IERPTUhUTUxFbGVtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9
ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRI
KS9ET01IVE1MRWxlbWVudC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9
ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFU
SFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNf
RElSL0RPTUhUTUxFbGVtZW50LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFE
RVJTX0ZPTERFUl9QQVRIL0RPTUhUTUxFbGVtZW50LmhcIiI7CisJCX07CisJCTg1QTVDNUUxMEE5
MDMyQjMwMEY5MUYyQyAvKiBET01FbGVtZW50LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNj
cmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmls
ZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVf
SEVBREVSU19ESVIpL0RPTUVsZW1lbnQuaCIsCisJCQkpOworCQkJbmFtZSA9IERPTUVsZW1lbnQu
aDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElD
X0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUVsZW1lbnQuaCIsCisJCQkpOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOwor
CQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hF
QURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVf
UFJJVkFURV9IRUFERVJTX0RJUi9ET01FbGVtZW50LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIv
JFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTUVsZW1lbnQuaFwiIjsKKwkJfTsKKwkJODVB
ODVCNTkwQTkwMkMzMjAwQTVDRjNBIC8qIERPTU5vZGVMaXN0LmggKi8gPSB7CisJCQlpc2EgPSBQ
QlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3
OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JF
X1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTU5vZGVMaXN0LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBE
T01Ob2RlTGlzdC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJ
UikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NTm9kZUxpc3QuaCIsCisJCQkpOwor
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGgg
PSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJ
Ui8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQv
IFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01Ob2RlTGlzdC5oXCIgPiBcIiRUQVJH
RVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01Ob2RlTGlzdC5oXCIi
OworCQl9OworCQk4NUM5MDVGMzBBOEZDQ0IyMDBDMzdEOTEgLyogRE9NRG9jdW1lbnRUeXBlLmgg
Ki8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9
ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTURvY3VtZW50VHlwZS5o
IiwKKwkJCSk7CisJCQluYW1lID0gRE9NRG9jdW1lbnRUeXBlLmg7CisJCQlvdXRwdXRQYXRocyA9
ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRI
KS9ET01Eb2N1bWVudFR5cGUuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQg
PSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BB
VEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJT
X0RJUi9ET01Eb2N1bWVudFR5cGUuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hF
QURFUlNfRk9MREVSX1BBVEgvRE9NRG9jdW1lbnRUeXBlLmhcIiI7CisJCX07CisJCTg1QzkwNjZG
MEE4RkQxMUMwMEMzN0Q5MSAvKiBET01Eb2N1bWVudEZyYWdtZW50LmggKi8gPSB7CisJCQlpc2Eg
PSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJD
T1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTURvY3VtZW50RnJhZ21lbnQuaCIsCisJCQkpOwor
CQkJbmFtZSA9IERPTURvY3VtZW50RnJhZ21lbnQuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJ
CSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTURv
Y3VtZW50RnJhZ21lbnQuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAi
bWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhc
Ilxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJ
Ui9ET01Eb2N1bWVudEZyYWdtZW50LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19I
RUFERVJTX0ZPTERFUl9QQVRIL0RPTURvY3VtZW50RnJhZ21lbnQuaFwiIjsKKwkJfTsKIAkJOTMz
OTMyM0UwODI1QTY0MjAwQUFEQTZCIC8qIG5wcnVudGltZS5oICovID0gewogCQkJaXNhID0gUEJY
U2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
SW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvV2ViVmlldy9XZWJEYXRhU291cmNlLm0JKHJldmlzaW9uIDE1ODI4KQorKysgV2ViS2l0L1dl
YlZpZXcvV2ViRGF0YVNvdXJjZS5tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwyMSArMzAsMjEgQEAK
IAogI2ltcG9ydCAiV2ViQXJjaGl2ZS5oIgogI2ltcG9ydCAiV2ViQXJjaGl2ZXIuaCIKLSNpbXBv
cnQgIldlYkRPTU9wZXJhdGlvbnNQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJEYXRhUHJvdG9jb2wu
aCIKICNpbXBvcnQgIldlYkRhdGFTb3VyY2VJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViRGVmYXVs
dFJlc291cmNlTG9hZERlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJEb2N1bWVudC5oIgorI2ltcG9y
dCAiV2ViRE9NT3BlcmF0aW9uc1ByaXZhdGUuaCIKICNpbXBvcnQgIldlYkRvd25sb2FkSW50ZXJu
YWwuaCIKICNpbXBvcnQgIldlYkZyYW1lQnJpZGdlLmgiCiAjaW1wb3J0ICJXZWJGcmFtZUludGVy
bmFsLmgiCi0jaW1wb3J0ICJXZWJGcmFtZUxvYWRlci5oIgogI2ltcG9ydCAiV2ViRnJhbWVMb2Fk
RGVsZWdhdGUuaCIKKyNpbXBvcnQgIldlYkZyYW1lTG9hZGVyLmgiCiAjaW1wb3J0ICJXZWJGcmFt
ZVZpZXcuaCIKLSNpbXBvcnQgIldlYkhUTUxSZXByZXNlbnRhdGlvbi5oIgotI2ltcG9ydCAiV2Vi
SFRNTFZpZXdQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJIaXN0b3J5LmgiCiAjaW1wb3J0ICJXZWJI
aXN0b3J5SXRlbVByaXZhdGUuaCIKKyNpbXBvcnQgIldlYkhUTUxSZXByZXNlbnRhdGlvbi5oIgor
I2ltcG9ydCAiV2ViSFRNTFZpZXdQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJJY29uRGF0YWJhc2VQ
cml2YXRlLmgiCiAjaW1wb3J0ICJXZWJLaXRFcnJvcnNQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJL
aXRMb2dnaW5nLmgiCkBAIC02Myw2ICs2Myw3IEBACiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJM
Q29ubmVjdGlvbi5oPgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFJlcXVlc3QuaD4KICNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPFdlYktpdC9ET01Db3Jl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvRE9NSFRNTC5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50
ZXJmYWNlLmg+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>10072</attachid>
            <date>2006-08-16 12:34:04 -0700</date>
            <delta_ts>2006-08-26 18:58:21 -0700</delta_ts>
            <desc>sample generated header</desc>
            <filename>DOMHTMLBaseElement.h</filename>
            <type>text/plain</type>
            <size>1140</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">LyoKICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCgogICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoK
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt
cGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiov
CgojaW1wb3J0ICJET01IVE1MRWxlbWVudC5oIiAvLyBwYXJlbnQgY2xhc3MKCkBpbnRlcmZhY2Ug
RE9NSFRNTEJhc2VFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKCi8vIEF0dHJpYnV0ZXMKLSAoTlNT
dHJpbmcgKilocmVmOwotICh2b2lkKXNldEhyZWY6KE5TU3RyaW5nICopaHJlZjsKLSAoTlNTdHJp
bmcgKil0YXJnZXQ7Ci0gKHZvaWQpc2V0VGFyZ2V0OihOU1N0cmluZyAqKXRhcmdldDsKCkBlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>10073</attachid>
            <date>2006-08-16 12:34:37 -0700</date>
            <delta_ts>2006-08-26 18:58:30 -0700</delta_ts>
            <desc>sample generated source file</desc>
            <filename>DOMHTMLBaseElement.mm</filename>
            <type>text/plain</type>
            <size>1589</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">LyoKICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCgogICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoK
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt
cGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiov
CiNpbXBvcnQgImNvbmZpZy5oIgojaW1wb3J0ICJET01IVE1MQmFzZUVsZW1lbnQuaCIKCiNpbXBv
cnQgIkRPTUludGVybmFsLmgiIC8vIG5lZWRlZCBmb3IgRE9NX2Nhc3Q8PgojaW1wb3J0ICJET01I
VE1MSW50ZXJuYWwuaCIKI2ltcG9ydCAiSFRNTEJhc2VFbGVtZW50LmgiIC8vIGltcGxlbWVudGF0
aW9uIGNsYXNzCgpAaW1wbGVtZW50YXRpb24gRE9NSFRNTEJhc2VFbGVtZW50CgotIChXZWJDb3Jl
OjpIVE1MQmFzZUVsZW1lbnQgKilfSFRNTEJhc2VFbGVtZW50CnsKICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpIVE1MQmFzZUVsZW1lbnQgKj4oRE9NX2Nhc3Q8V2ViQ29yZTo6Tm9kZSAq
PihfaW50ZXJuYWwpKTsKfQoKLSAoTlNTdHJpbmcgKilocmVmCnsKICAgIHJldHVybiBbc2VsZiBf
SFRNTEJhc2VFbGVtZW50XS0+aHJlZigpOwp9CgotICh2b2lkKXNldEhyZWY6KE5TU3RyaW5nICop
aHJlZgp7CiAgICBbc2VsZiBfSFRNTEJhc2VFbGVtZW50XS0+c2V0SHJlZihocmVmKTsKfQoKLSAo
TlNTdHJpbmcgKil0YXJnZXQKewogICAgcmV0dXJuIFtzZWxmIF9IVE1MQmFzZUVsZW1lbnRdLT50
YXJnZXQoKTsKfQoKLSAodm9pZClzZXRUYXJnZXQ6KE5TU3RyaW5nICopdGFyZ2V0CnsKICAgIFtz
ZWxmIF9IVE1MQmFzZUVsZW1lbnRdLT5zZXRUYXJnZXQodGFyZ2V0KTsKfQoKQGVuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10153</attachid>
            <date>2006-08-21 13:23:30 -0700</date>
            <delta_ts>2006-08-26 18:57:40 -0700</delta_ts>
            <desc>patch v3</desc>
            <filename>autogen9.diff</filename>
            <type>text/plain</type>
            <size>552022</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDE1OTQ1KQorKysgV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQg
KEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29w
eXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPiAKICMK
ICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjgsNyBAQAogVlBBVEggPSBcCiAg
ICAgJChXZWJDb3JlKSBcCiAgICAgJChXZWJDb3JlKS9iaW5kaW5ncy9qcyBcCisgICAgJChXZWJD
b3JlKS9iaW5kaW5ncy9vYmpjIFwKICAgICAkKFdlYkNvcmUpL2NzcyBcCiAgICAgJChXZWJDb3Jl
KS9kb20gXAogICAgICQoV2ViQ29yZSkvaHRtbCBcCkBAIC00NCw2ICs0Niw1NCBAQCBhbGwgOiBc
CiAgICAgQ2hhcnNldERhdGEuY3BwIFwKICAgICBDb2xvckRhdGEuYyBcCiAgICAgRG9jVHlwZVN0
cmluZ3MuY3BwIFwKKyAgICBET01BdHRyLmggXAorICAgIERPTUNEQVRBU2VjdGlvbi5oIFwKKyAg
ICBET01Db21tZW50LmggXAorICAgIERPTURvY3VtZW50RnJhZ21lbnQuaCBcCisgICAgRE9NRG9j
dW1lbnRUeXBlLmggXAorICAgIERPTUVudGl0eS5oIFwKKyAgICBET01FbnRpdHlSZWZlcmVuY2Uu
aCBcCisgICAgRE9NTm90YXRpb24uaCBcCisgICAgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgg
XAorICAgIERPTUNTU1ByaW1pdGl2ZVZhbHVlLmggXAorICAgIERPTUhUTUxBcmVhRWxlbWVudC5o
IFwKKyAgICBET01IVE1MQlJFbGVtZW50LmggXAorICAgIERPTUhUTUxCYXNlRWxlbWVudC5oIFwK
KyAgICBET01IVE1MQmFzZUZvbnRFbGVtZW50LmggXAorICAgIERPTUhUTUxCb2R5RWxlbWVudC5o
IFwKKyAgICBET01IVE1MQnV0dG9uRWxlbWVudC5oIFwKKyAgICBET01IVE1MRExpc3RFbGVtZW50
LmggXAorICAgIERPTUhUTUxEaXJlY3RvcnlFbGVtZW50LmggXAorICAgIERPTUhUTUxEaXZFbGVt
ZW50LmggXAorICAgIERPTUhUTUxGaWVsZFNldEVsZW1lbnQuaCBcCisgICAgRE9NSFRNTEZvbnRF
bGVtZW50LmggXAorICAgIERPTUhUTUxGb3JtRWxlbWVudC5oIFwKKyAgICBET01IVE1MSFJFbGVt
ZW50LmggXAorICAgIERPTUhUTUxIZWFkRWxlbWVudC5oIFwKKyAgICBET01IVE1MSGVhZGluZ0Vs
ZW1lbnQuaCBcCisgICAgRE9NSFRNTEh0bWxFbGVtZW50LmggXAorICAgIERPTUhUTUxJbWFnZUVs
ZW1lbnQuaCBcCisgICAgRE9NSFRNTElucHV0RWxlbWVudC5oIFwKKyAgICBET01IVE1MSXNJbmRl
eEVsZW1lbnQuaCBcCisgICAgRE9NSFRNTExJRWxlbWVudC5oIFwKKyAgICBET01IVE1MTGFiZWxF
bGVtZW50LmggXAorICAgIERPTUhUTUxMZWdlbmRFbGVtZW50LmggXAorICAgIERPTUhUTUxMaW5r
RWxlbWVudC5oIFwKKyAgICBET01IVE1MTWFwRWxlbWVudC5oIFwKKyAgICBET01IVE1MTWVudUVs
ZW1lbnQuaCBcCisgICAgRE9NSFRNTE1ldGFFbGVtZW50LmggXAorICAgIERPTUhUTUxNb2RFbGVt
ZW50LmggXAorICAgIERPTUhUTUxPTGlzdEVsZW1lbnQuaCBcCisgICAgRE9NSFRNTE9wdEdyb3Vw
RWxlbWVudC5oIFwKKyAgICBET01IVE1MUGFyYWdyYXBoRWxlbWVudC5oIFwKKyAgICBET01IVE1M
UGFyYW1FbGVtZW50LmggXAorICAgIERPTUhUTUxQcmVFbGVtZW50LmggXAorICAgIERPTUhUTUxR
dW90ZUVsZW1lbnQuaCBcCisgICAgRE9NSFRNTFNjcmlwdEVsZW1lbnQuaCBcCisgICAgRE9NSFRN
TFN0eWxlRWxlbWVudC5oIFwKKyAgICBET01IVE1MVGV4dEFyZWFFbGVtZW50LmggXAorICAgIERP
TUhUTUxUaXRsZUVsZW1lbnQuaCBcCisgICAgRE9NSFRNTFVMaXN0RWxlbWVudC5oIFwKICAgICBI
VE1MRW50aXR5TmFtZXMuYyBcCiAgICAgSlNBdHRyLmggXAogICAgIEpTQ1NTUHJpbWl0aXZlVmFs
dWUuaCBcCkBAIC0yODYsNiArMzM2LDE5IEBAIGtzdmdjc3N2YWx1ZXMuaCA6CiAKIGVuZGlmCiAK
KyMgbmV3LXN0eWxlIE9iamVjdGl2ZS1DIGJpbmRpbmdzCisKK09CSkNfQklORElOR1NfU0NSSVBU
UyA9IFwKKyAgICBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0gXAorICAgIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0gXAorICAgIGJpbmRpbmdzL3NjcmlwdHMv
SURMUGFyc2VyLnBtIFwKKyAgICBiaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5wbSBcCisg
ICAgYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCBcCisjCisKK0RPTSUuaCA6
ICUuaWRsICQoT0JKQ19CSU5ESU5HU19TQ1JJUFRTKQorCXBlcmwgLUkkKFdlYkNvcmUpL2JpbmRp
bmdzL3NjcmlwdHMgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdz
LnBsIC0tZGVmaW5lcyAiJChGRUFUVVJFX0RFRklORVMpIiAtLWdlbmVyYXRvciBPYmpDIC0taW5j
bHVkZSBkb20gLS1pbmNsdWRlIGh0bWwgLS1pbmNsdWRlIHhwYXRoIC0taW5jbHVkZSBrc3ZnMi9z
dmcgLS1vdXRwdXRkaXIgIC4gJDwKKwogIyBuZXctc3R5bGUgSmF2YVNjcmlwdCBiaW5kaW5ncwog
CiBKU19CSU5ESU5HU19TQ1JJUFRTID0gXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1OTQ1KQorKysgV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM1MSw4ICszNTEsNTMg
QEAKIAkJODUwMzFCNEYwQTQ0RUZDNzAwRjk5MkUwIC8qIFVJRXZlbnRXaXRoS2V5U3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDMxQjM5MEE0
NEVGQzcwMEY5OTJFMCAvKiBVSUV2ZW50V2l0aEtleVN0YXRlLmggKi87IH07CiAJCTg1MDMxQjUw
MEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVlbEV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDMxQjNBMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVl
bEV2ZW50LmNwcCAqLzsgfTsKIAkJODUwMzFCNTEwQTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVsRXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDMx
QjNCMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVlbEV2ZW50LmggKi87IH07CisJCTg1MDdDMDg5MEE5
QTMwMEYwMEZCQzg5NSAvKiBET01DU1NWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODUwN0MwODcwQTlBMzAwRjAwRkJDODk1IC8qIERPTUNTU1Zh
bHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
ODUwN0MwOEEwQTlBMzAwRjAwRkJDODk1IC8qIERPTUNTU1ZhbHVlLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwN0MwODgwQTlBMzAwRjAwRkJDODk1
IC8qIERPTUNTU1ZhbHVlLm1tICovOyB9OworCQk4NTA4OUNDODBBOThDMjI2MDBBMjc1QUEgLyog
Q29tbWVudC5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg1MDg5Q0M3MEE5OEMyMjYwMEEyNzVBQSAvKiBDb21tZW50LmlkbCAqLzsgfTsKKwkJODUw
ODlDQ0EwQTk4QzJBQjAwQTI3NUFBIC8qIENEQVRBU2VjdGlvbi5pZGwgaW4gUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDg5Q0M5MEE5OEMyQUIwMEEyNzVB
QSAvKiBDREFUQVNlY3Rpb24uaWRsICovOyB9OworCQk4NTA4OUNDQzBBOThDMzNBMDBBMjc1QUEg
LyogRW50aXR5UmVmZXJlbmNlLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODUwODlDQ0IwQTk4QzMzQTAwQTI3NUFBIC8qIEVudGl0eVJlZmVyZW5j
ZS5pZGwgKi87IH07CisJCTg1MDg5Q0Q3MEE5OEM0MjgwMEEyNzVBQSAvKiBET01DREFUQVNlY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDg5
Q0NGMEE5OEM0MjcwMEEyNzVBQSAvKiBET01DREFUQVNlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTA4OUNEODBBOThDNDI4MDBBMjc1
QUEgLyogRE9NQ0RBVEFTZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODUwODlDRDAwQTk4QzQyNzAwQTI3NUFBIC8qIERPTUNEQVRBU2VjdGlv
bi5tbSAqLzsgfTsKKwkJODUwODlDRDkwQTk4QzQyODAwQTI3NUFBIC8qIERPTUNvbW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDg5Q0QxMEE5
OEM0MjcwMEEyNzVBQSAvKiBET01Db21tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODUwODlDREEwQTk4QzQyODAwQTI3NUFBIC8qIERPTUNv
bW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NTA4OUNEMjBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ29tbWVudC5tbSAqLzsgfTsKKwkJODUwODlD
REIwQTk4QzQyODAwQTI3NUFBIC8qIERPTURvY3VtZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDg5Q0QzMEE5OEM0MjgwMEEyNzVB
QSAvKiBET01Eb2N1bWVudEZyYWdtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJODUwODlDREMwQTk4QzQyODAwQTI3NUFBIC8qIERPTURvY3Vt
ZW50RnJhZ21lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NTA4OUNENDBBOThDNDI4MDBBMjc1QUEgLyogRE9NRG9jdW1lbnRGcmFnbWVudC5tbSAq
LzsgfTsKKwkJODUwODlDREQwQTk4QzQyODAwQTI3NUFBIC8qIERPTUVudGl0eVJlZmVyZW5jZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwODlDRDUw
QTk4QzQyODAwQTI3NUFBIC8qIERPTUVudGl0eVJlZmVyZW5jZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1MDg5Q0RFMEE5OEM0MjgwMEEyNzVB
QSAvKiBET01FbnRpdHlSZWZlcmVuY2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NTA4OUNENjBBOThDNDI4MDBBMjc1QUEgLyogRE9NRW50aXR5UmVm
ZXJlbmNlLm1tICovOyB9OworCQk4NTBFNjFEQzBBOTQwNkYwMDBFRkI3M0EgLyogRE9NSFRNTERv
Y3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NTBFNjFEQTBBOTQwNkYwMDBFRkI3M0EgLyogRE9NSFRNTERvY3VtZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODUwRTYxREQwQTk0MDZGMDAw
RUZCNzNBIC8qIERPTUhUTUxEb2N1bWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg1MEU2MURCMEE5NDA2RjAwMEVGQjczQSAvKiBET01IVE1MRG9j
dW1lbnQubW0gKi87IH07CisJCTg1MEU2M0QzMEE5NDE4ODcwMEVGQjczQSAvKiBET01IVE1MQm9k
eUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg1MEU2M0QxMEE5NDE4ODcwMEVGQjczQSAvKiBET01IVE1MQm9keUVsZW1lbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTBFNjNENDBBOTQx
ODg3MDBFRkI3M0EgLyogRE9NSFRNTEJvZHlFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwRTYzRDIwQTk0MTg4NzAwRUZCNzNBIC8qIERP
TUhUTUxCb2R5RWxlbWVudC5tbSAqLzsgfTsKKwkJODUwRTY0MDUwQTk0MUMyNDAwRUZCNzNBIC8q
IERPTUhUTUxBcmVhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODUwRTY0MDMwQTk0MUMyNDAwRUZCNzNBIC8qIERPTUhUTUxBcmVhRWxlbWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1
MEU2NDA2MEE5NDFDMjQwMEVGQjczQSAvKiBET01IVE1MQXJlYUVsZW1lbnQubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTBFNjQwNDBBOTQxQzI0MDBF
RkI3M0EgLyogRE9NSFRNTEFyZWFFbGVtZW50Lm1tICovOyB9OworCQk4NTBFNjUyNzBBOTQzNzdC
MDBFRkI3M0EgLyogRE9NSFRNTElGcmFtZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MEU2NTI1MEE5NDM3N0IwMEVGQjczQSAvKiBET01I
VE1MSUZyYW1lRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTg1MEU2NTI4MEE5NDM3N0IwMEVGQjczQSAvKiBET01IVE1MSUZyYW1lRWxl
bWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1
MEU2NTI2MEE5NDM3N0IwMEVGQjczQSAvKiBET01IVE1MSUZyYW1lRWxlbWVudC5tbSAqLzsgfTsK
KwkJODUwRTY1NUEwQTk0M0FGNDAwRUZCNzNBIC8qIERPTUhUTUxGcmFtZUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MEU2NTU2MEE5NDNB
RjQwMEVGQjczQSAvKiBET01IVE1MRnJhbWVFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODUwRTY1NUIwQTk0M0FGNDAwRUZCNzNBIC8q
IERPTUhUTUxGcmFtZUVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NTBFNjU1NzBBOTQzQUY0MDBFRkI3M0EgLyogRE9NSFRNTEZyYW1lRWxl
bWVudC5tbSAqLzsgfTsKKwkJODUwRTY1NUMwQTk0M0FGNDAwRUZCNzNBIC8qIERPTUhUTUxGcmFt
ZVNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg1MEU2NTU4MEE5NDNBRjQwMEVGQjczQSAvKiBET01IVE1MRnJhbWVTZXRFbGVtZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODUwRTY1
NUQwQTk0M0FGNDAwRUZCNzNBIC8qIERPTUhUTUxGcmFtZVNldEVsZW1lbnQubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTBFNjU1OTBBOTQzQUY0MDBF
RkI3M0EgLyogRE9NSFRNTEZyYW1lU2V0RWxlbWVudC5tbSAqLzsgfTsKKwkJODUwRTY1QTgwQTk0
OEY0MDAwRUZCNzNBIC8qIERPTUhUTUxBcHBsZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTBFNjVBNjBBOTQ4RjQwMDBFRkI3M0EgLyog
RE9NSFRNTEFwcGxldEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk4NTBFNjVBOTBBOTQ4RjQwMDBFRkI3M0EgLyogRE9NSFRNTEFwcGxl
dEVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NTBFNjVBNzBBOTQ4RjQwMDBFRkI3M0EgLyogRE9NSFRNTEFwcGxldEVsZW1lbnQubW0gKi87
IH07CisJCTg1MEU2NUQ2MEE5NDkzRUQwMEVGQjczQSAvKiBET01IVE1MT2JqZWN0RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwRTY1RDQw
QTk0OTNFRDAwRUZCNzNBIC8qIERPTUhUTUxPYmplY3RFbGVtZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODUwRTY1RDcwQTk0OTNFRDAwRUZC
NzNBIC8qIERPTUhUTUxPYmplY3RFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODUwRTY1RDUwQTk0OTNFRDAwRUZCNzNBIC8qIERPTUhUTUxP
YmplY3RFbGVtZW50Lm1tICovOyB9OworCQk4NTBFNjc0MDBBOTUwRjUyMDBFRkI3M0EgLyogRE9N
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NTBFNjczRTBBOTUwRjUyMDBFRkI3M0EgLyogRE9NSFRNTE9wdGlvbnND
b2xsZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJODUwRTY3NDEwQTk1MEY1MjAwRUZCNzNBIC8qIERPTUhUTUxPcHRpb25zQ29sbGVjdGlv
bi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MEU2
NzNGMEE5NTBGNTIwMEVGQjczQSAvKiBET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0gKi87IH07
CiAJCTg1MjE3RTAyMEE1RUNENDcwMERCOEQwMCAvKiBYU0xJbXBvcnRSdWxlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MjE3RTAwMEE1RUNENDcw
MERCOEQwMCAvKiBYU0xJbXBvcnRSdWxlLmNwcCAqLzsgfTsKIAkJODUyMTdFMDMwQTVFQ0Q0NzAw
REI4RDAwIC8qIFhTTEltcG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg1MjE3RTAxMEE1RUNENDcwMERCOEQwMCAvKiBYU0xJbXBvcnRSdWxl
LmggKi87IH07CisJCTg1MjZENUYxMEE4RkRCMkUwMDkyMzRCMSAvKiBET01UZXh0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTI2RDVFRjBBOEZEQjJE
MDA5MjM0QjEgLyogRE9NVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTg1MjZENUYyMEE4RkRCMkUwMDkyMzRCMSAvKiBET01UZXh0Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUyNkQ1RjAwQThG
REIyRTAwOTIzNEIxIC8qIERPTVRleHQubW0gKi87IH07CisJCTg1MjZENjVFMEE4RkU1NUEwMDky
MzRCMSAvKiBET01DaGFyYWN0ZXJEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NTI2RDY1QzBBOEZFNTVBMDA5MjM0QjEgLyogRE9NQ2hhcmFjdGVy
RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTg1MjZENjVGMEE4RkU1NUEwMDkyMzRCMSAvKiBET01DaGFyYWN0ZXJEYXRhLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUyNkQ2NUQwQThGRTU1QTAw
OTIzNEIxIC8qIERPTUNoYXJhY3RlckRhdGEubW0gKi87IH07CisJCTg1MjZENzY0MEE4RkYzOTIw
MDkyMzRCMSAvKiBET01OYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg1MjZENzYyMEE4RkYzOTIwMDkyMzRCMSAvKiBET01OYW1lZE5v
ZGVNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk4NTI2RDc2NTBBOEZGMzkyMDA5MjM0QjEgLyogRE9NTmFtZWROb2RlTWFwLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUyNkQ3NjMwQThGRjM5MjAw
OTIzNEIxIC8qIERPTU5hbWVkTm9kZU1hcC5tbSAqLzsgfTsKKwkJODUzOTU0RDAwQTk2QUY1NzAw
RkEzRDBFIC8qIERPTUhUTUxGaWVsZFNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1Mzk1NENDMEE5NkFGNTcwMEZBM0QwRSAvKiBET01I
VE1MRmllbGRTZXRFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJODUzOTU0RDEwQTk2QUY1NzAwRkEzRDBFIC8qIERPTUhUTUxGaWVsZFNl
dEVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NTM5NTRDRDBBOTZBRjU3MDBGQTNEMEUgLyogRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbSAq
LzsgfTsKKwkJODUzOTU0RDIwQTk2QUY1NzAwRkEzRDBFIC8qIERPTUhUTUxMZWdlbmRFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTM5NTRD
RTBBOTZBRjU3MDBGQTNEMEUgLyogRE9NSFRNTExlZ2VuZEVsZW1lbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTM5NTREMzBBOTZBRjU3MDBG
QTNEMEUgLyogRE9NSFRNTExlZ2VuZEVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTM5NTRDRjBBOTZBRjU3MDBGQTNEMEUgLyogRE9NSFRN
TExlZ2VuZEVsZW1lbnQubW0gKi87IH07CisJCTg1MzlCNTA4MEE5MDNENDUwMDM2NkMyRCAvKiBE
T01ET01JbXBsZW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODUzOUI1MDYwQTkwM0Q0NTAwMzY2QzJEIC8qIERPTURPTUltcGxlbWVudGF0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
ODUzOUI1MDkwQTkwM0Q0NTAwMzY2QzJEIC8qIERPTURPTUltcGxlbWVudGF0aW9uLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUzOUI1MDcwQTkwM0Q0
NTAwMzY2QzJEIC8qIERPTURPTUltcGxlbWVudGF0aW9uLm1tICovOyB9OworCQk4NTQ0ODlDNDBB
OTc2OTBBMDBCOEJBODkgLyogRE9NSFRNTFNlbGVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NDQ4OUMyMEE5NzY5MEEwMEI4QkE4OSAv
KiBET01IVE1MU2VsZWN0RWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTg1NDQ4OUM1MEE5NzY5MEIwMEI4QkE4OSAvKiBET01IVE1MU2Vs
ZWN0RWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg1NDQ4OUMzMEE5NzY5MEEwMEI4QkE4OSAvKiBET01IVE1MU2VsZWN0RWxlbWVudC5tbSAq
LzsgfTsKIAkJODU0RkU3MzAwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU0RkU3MjYwQTIyOTdC
RTAwNThEN0FEIC8qIE5vZGVGaWx0ZXIuY3BwICovOyB9OwogCQk4NTRGRTczMTBBMjI5N0JFMDA1
OEQ3QUQgLyogTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODU0RkU3MjcwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0ZXIuaCAqLzsg
fTsKIAkJODU0RkU3MzIwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0ZXJDb25kaXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU0RkU3Mjgw
QTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0ZXJDb25kaXRpb24uY3BwICovOyB9OwpAQCAtMzYz
LDggKzQwOCwxMjAgQEAKIAkJODU0RkU3MzcwQTIyOTdCRTAwNThEN0FEIC8qIFRyYXZlcnNhbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU0RkU3MkQw
QTIyOTdCRTAwNThEN0FEIC8qIFRyYXZlcnNhbC5oICovOyB9OwogCQk4NTRGRTczODBBMjI5N0JF
MDA1OEQ3QUQgLyogVHJlZVdhbGtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NTRGRTcyRTBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtlci5j
cHAgKi87IH07CiAJCTg1NEZFNzM5MEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTRGRTcyRjBBMjI5
N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtlci5oICovOyB9OworCQk4NTVDMkRBNTBBOTZCQjhCMDAw
NEYxNzEgLyogRE9NSFRNTEZvcm1FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NTVDMkRBMzBBOTZCQjhCMDAwNEYxNzEgLyogRE9NSFRNTEZv
cm1FbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJODU1QzJEQTYwQTk2QkI4QjAwMDRGMTcxIC8qIERPTUhUTUxGb3JtRWxlbWVudC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NUMyREE0MEE5
NkJCOEIwMDA0RjE3MSAvKiBET01IVE1MRm9ybUVsZW1lbnQubW0gKi87IH07CisJCTg1NUMyREU3
MEE5NkNGMEEwMDA0RjE3MSAvKiBET01IVE1MVGV4dEFyZWFFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTVDMkRFNTBBOTZDRjBBMDAwNEYx
NzEgLyogRE9NSFRNTFRleHRBcmVhRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1NUMyREU4MEE5NkNGMEEwMDA0RjE3MSAvKiBET01I
VE1MVGV4dEFyZWFFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODU1QzJERTYwQTk2Q0YwQTAwMDRGMTcxIC8qIERPTUhUTUxUZXh0QXJlYUVs
ZW1lbnQubW0gKi87IH07CisJCTg1NjcyQTJCMEE4RDRERjQwMEIyNDFFNSAvKiBET01IVE1MTWV0
YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg1NjcyQTI5MEE4RDRERjQwMEIyNDFFNSAvKiBET01IVE1MTWV0YUVsZW1lbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTY3MkEyQzBBOEQ0
REY0MDBCMjQxRTUgLyogRE9NSFRNTE1ldGFFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJBMkEwQThENERGNDAwQjI0MUU1IC8qIERP
TUhUTUxNZXRhRWxlbWVudC5tbSAqLzsgfTsKKwkJODU2NzJBM0QwQThENEUzQzAwQjI0MUU1IC8q
IERPTUhUTUxCYXNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODU2NzJBM0IwQThENEUzQzAwQjI0MUU1IC8qIERPTUhUTUxCYXNlRWxlbWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1
NjcyQTNFMEE4RDRFM0MwMEIyNDFFNSAvKiBET01IVE1MQmFzZUVsZW1lbnQubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTY3MkEzQzBBOEQ0RTNDMDBC
MjQxRTUgLyogRE9NSFRNTEJhc2VFbGVtZW50Lm1tICovOyB9OworCQk4NTY3MkE5ODBBOEQ1MTIy
MDBCMjQxRTUgLyogRE9NSFRNTFVMaXN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJBOTYwQThENTEyMjAwQjI0MUU1IC8qIERPTUhU
TUxVTGlzdEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk4NTY3MkE5OTBBOEQ1MTIyMDBCMjQxRTUgLyogRE9NSFRNTFVMaXN0RWxlbWVu
dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1Njcy
QTk3MEE4RDUxMjIwMEIyNDFFNSAvKiBET01IVE1MVUxpc3RFbGVtZW50Lm1tICovOyB9OworCQk4
NTY3MkFBMDBBOEQ1MUQ0MDBCMjQxRTUgLyogRE9NSFRNTFF1b3RlRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJBOUUwQThENTFENDAw
QjI0MUU1IC8qIERPTUhUTUxRdW90ZUVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTY3MkFBMTBBOEQ1MUQ0MDBCMjQxRTUgLyogRE9N
SFRNTFF1b3RlRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg1NjcyQTlGMEE4RDUxRDQwMEIyNDFFNSAvKiBET01IVE1MUXVvdGVFbGVtZW50
Lm1tICovOyB9OworCQk4NTY3MkFEOTBBOEQ1MkYxMDBCMjQxRTUgLyogRE9NSFRNTFBhcmFtRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2
NzJBRDcwQThENTJGMTAwQjI0MUU1IC8qIERPTUhUTUxQYXJhbUVsZW1lbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTY3MkFEQTBBOEQ1MkYx
MDBCMjQxRTUgLyogRE9NSFRNTFBhcmFtRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NjcyQUQ4MEE4RDUyRjEwMEIyNDFFNSAvKiBET01I
VE1MUGFyYW1FbGVtZW50Lm1tICovOyB9OworCQk4NTY3MkFGNDBBOEQ1MzgxMDBCMjQxRTUgLyog
RE9NSFRNTFBhcmFncmFwaEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg1NjcyQUYyMEE4RDUzODEwMEIyNDFFNSAvKiBET01IVE1MUGFyYWdy
YXBoRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTg1NjcyQUY1MEE4RDUzODEwMEIyNDFFNSAvKiBET01IVE1MUGFyYWdyYXBoRWxlbWVu
dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1Njcy
QUYzMEE4RDUzODEwMEIyNDFFNSAvKiBET01IVE1MUGFyYWdyYXBoRWxlbWVudC5tbSAqLzsgfTsK
KwkJODU2NzJCMEEwQThENTNFMDAwQjI0MUU1IC8qIERPTUhUTUxPcHRHcm91cEVsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NjcyQjA4MEE4
RDUzRTAwMEIyNDFFNSAvKiBET01IVE1MT3B0R3JvdXBFbGVtZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODU2NzJCMEIwQThENTNFMDAwQjI0
MUU1IC8qIERPTUhUTUxPcHRHcm91cEVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTY3MkIwOTBBOEQ1M0UwMDBCMjQxRTUgLyogRE9NSFRN
TE9wdEdyb3VwRWxlbWVudC5tbSAqLzsgfTsKKwkJODU2NzJCMjUwQThENTRCMzAwQjI0MUU1IC8q
IERPTUhUTUxPTGlzdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg1NjcyQjIzMEE4RDU0QjMwMEIyNDFFNSAvKiBET01IVE1MT0xpc3RFbGVt
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
ODU2NzJCMjYwQThENTRCMzAwQjI0MUU1IC8qIERPTUhUTUxPTGlzdEVsZW1lbnQubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTY3MkIyNDBBOEQ1NEIz
MDBCMjQxRTUgLyogRE9NSFRNTE9MaXN0RWxlbWVudC5tbSAqLzsgfTsKKwkJODU2NzJCMkIwQThE
NTUwMzAwQjI0MUU1IC8qIERPTUhUTUxNZW51RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJCMjkwQThENTUwMzAwQjI0MUU1IC8qIERP
TUhUTUxNZW51RWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTg1NjcyQjJDMEE4RDU1MDMwMEIyNDFFNSAvKiBET01IVE1MTWVudUVsZW1l
bnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTY3
MkIyQTBBOEQ1NTAzMDBCMjQxRTUgLyogRE9NSFRNTE1lbnVFbGVtZW50Lm1tICovOyB9OworCQk4
NTY3MkI3NzBBOEQ1NkY4MDBCMjQxRTUgLyogRE9NSFRNTExJRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJCNzUwQThENTZGODAwQjI0
MUU1IC8qIERPTUhUTUxMSUVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk4NTY3MkI3ODBBOEQ1NkY4MDBCMjQxRTUgLyogRE9NSFRNTExJ
RWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg1NjcyQjc2MEE4RDU2RjgwMEIyNDFFNSAvKiBET01IVE1MTElFbGVtZW50Lm1tICovOyB9Owor
CQk4NTY3MkI4NDBBOEQ1NzkxMDBCMjQxRTUgLyogRE9NSFRNTEhSRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJCODIwQThENTc5MTAw
QjI0MUU1IC8qIERPTUhUTUxIUkVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk4NTY3MkI4NTBBOEQ1NzkxMDBCMjQxRTUgLyogRE9NSFRN
TEhSRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg1NjcyQjgzMEE4RDU3OTEwMEIyNDFFNSAvKiBET01IVE1MSFJFbGVtZW50Lm1tICovOyB9
OworCQk4NTY3MkI5MjBBOEQ1N0Y1MDBCMjQxRTUgLyogRE9NSFRNTEhlYWRpbmdFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTY3MkI5MDBB
OEQ1N0Y1MDBCMjQxRTUgLyogRE9NSFRNTEhlYWRpbmdFbGVtZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODU2NzJCOTMwQThENTdGNTAwQjI0
MUU1IC8qIERPTUhUTUxIZWFkaW5nRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NjcyQjkxMEE4RDU3RjUwMEIyNDFFNSAvKiBET01IVE1M
SGVhZGluZ0VsZW1lbnQubW0gKi87IH07CisJCTg1NjcyQjlFMEE4RDU4N0YwMEIyNDFFNSAvKiBE
T01IVE1MRm9udEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg1NjcyQjlDMEE4RDU4N0YwMEIyNDFFNSAvKiBET01IVE1MRm9udEVsZW1lbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTY3
MkI5RjBBOEQ1ODdGMDBCMjQxRTUgLyogRE9NSFRNTEZvbnRFbGVtZW50Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2NzJCOUQwQThENTg3RjAwQjI0
MUU1IC8qIERPTUhUTUxGb250RWxlbWVudC5tbSAqLzsgfTsKKwkJODU2NzJCQjEwQThENTk1RDAw
QjI0MUU1IC8qIERPTUhUTUxETGlzdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NjcyQkFGMEE4RDU5NUQwMEIyNDFFNSAvKiBET01IVE1M
RExpc3RFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJODU2NzJCQjIwQThENTk1RDAwQjI0MUU1IC8qIERPTUhUTUxETGlzdEVsZW1lbnQu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTY3MkJC
MDBBOEQ1OTVEMDBCMjQxRTUgLyogRE9NSFRNTERMaXN0RWxlbWVudC5tbSAqLzsgfTsKKwkJODU2
Qzg5NkMwQTkwRTE4NDAwNUM2ODdCIC8qIERPTURvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTZDODk2QTBBOTBFMTg0MDA1QzY4N0IgLyog
RE9NRG9jdW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk4NTZDODk2RDBBOTBFMTg0MDA1QzY4N0IgLyogRE9NRG9jdW1lbnQubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTZDODk2QjBBOTBFMTg0
MDA1QzY4N0IgLyogRE9NRG9jdW1lbnQubW0gKi87IH07CisJCTg1NkM4OUZDMEE5MEYwNjgwMDVD
Njg3QiAvKiBET01Ob2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NTZDODlGQTBBOTBGMDY4MDA1QzY4N0IgLyogRE9NTm9kZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1NkM4OUZEMEE5MEYwNjgw
MDVDNjg3QiAvKiBET01Ob2RlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODU2Qzg5RkIwQTkwRjA2ODAwNUM2ODdCIC8qIERPTU5vZGUubW0gKi87IH07
CisJCTg1NkM4QUU0MEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NkM4QUUyMEE5MTI2NDkwMDVDNjg3
QiAvKiBET01PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk4NTZDOEFFNTBBOTEyNjQ5MDA1QzY4N0IgLyogRE9NT2JqZWN0Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2QzhBRTMwQTkxMjY0
OTAwNUM2ODdCIC8qIERPTU9iamVjdC5tbSAqLzsgfTsKKwkJODU2RTA1REYwQTkzOTUwNjAwQTI0
NzM5IC8qIERPTUhUTUxFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NTZFMDVERDBBOTM5NTA2MDBBMjQ3MzkgLyogRE9NSFRNTEVsZW1lbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTZF
MDVFMDBBOTM5NTA2MDBBMjQ3MzkgLyogRE9NSFRNTEVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTZFMDVERTBBOTM5NTA2MDBBMjQ3Mzkg
LyogRE9NSFRNTEVsZW1lbnQubW0gKi87IH07CisJCTg1OUI3RkMyMEE4RDI4RjIwMEE1RjFFQSAv
KiBET01IVE1MSGVhZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg1OUI3RjgwMEE4Q0ZGMzcwMEE1RjFFQSAvKiBET01IVE1MSGVhZEVsZW1l
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4
NTlCN0ZDMzBBOEQyOEYyMDBBNUYxRUEgLyogRE9NSFRNTEhlYWRFbGVtZW50Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU5QjdGODEwQThDRkYzNzAw
QTVGMUVBIC8qIERPTUhUTUxIZWFkRWxlbWVudC5tbSAqLzsgfTsKKwkJODU5QjdGQzQwQThEMjhG
MjAwQTVGMUVBIC8qIERPTUhUTUxIdG1sRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU5QjdGODIwQThDRkYzNzAwQTVGMUVBIC8qIERPTUhU
TUxIdG1sRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTg1OUI3RkM1MEE4RDI4RjIwMEE1RjFFQSAvKiBET01IVE1MSHRtbEVsZW1lbnQu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTlCN0Y4
MzBBOENGRjM3MDBBNUYxRUEgLyogRE9NSFRNTEh0bWxFbGVtZW50Lm1tICovOyB9OworCQk4NTlC
N0ZDQTBBOEQyOEY4MDBBNUYxRUEgLyogRE9NSFRNTE1vZEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RDMzMTgzMEE4Q0VEQ0MwMDU5MjVB
MCAvKiBET01IVE1MTW9kRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTg1OUI3RkNCMEE4RDI4RjgwMEE1RjFFQSAvKiBET01IVE1MTW9k
RWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg1RDMzMTg0MEE4Q0VEQ0MwMDU5MjVBMCAvKiBET01IVE1MTW9kRWxlbWVudC5tbSAqLzsgfTsK
KwkJODU5QjgwMzcwQThEMzFBNjAwQTVGMUVBIC8qIERPTUhUTUxUaXRsZUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1OUI4MDM1MEE4RDMx
QTYwMEE1RjFFQSAvKiBET01IVE1MVGl0bGVFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODU5QjgwMzgwQThEMzFBNjAwQTVGMUVBIC8q
IERPTUhUTUxUaXRsZUVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NTlCODAzNjBBOEQzMUE2MDBBNUYxRUEgLyogRE9NSFRNTFRpdGxlRWxl
bWVudC5tbSAqLzsgfTsKKwkJODVBNUM1NTgwQTkwMzBCQjAwRjkxRjJDIC8qIERPTUVsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QTVDNTU2
MEE5MDMwQkIwMEY5MUYyQyAvKiBET01FbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVBNUM1NTkwQTkwMzBCQjAwRjkxRjJDIC8qIERP
TUVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NUE1QzU1NzBBOTAzMEJCMDBGOTFGMkMgLyogRE9NRWxlbWVudC5tbSAqLzsgfTsKKwkJODVB
NUM4QzIwQThENUQ4QjAwQTNDRjkwIC8qIERPTUhUTUxCYXNlRm9udEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QTVDOEMwMEE4RDVEOEIw
MEEzQ0Y5MCAvKiBET01IVE1MQmFzZUZvbnRFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVBNUM4QzMwQThENUQ4QjAwQTNDRjkwIC8q
IERPTUhUTUxCYXNlRm9udEVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NUE1QzhDMTBBOEQ1RDhCMDBBM0NGOTAgLyogRE9NSFRNTEJhc2VG
b250RWxlbWVudC5tbSAqLzsgfTsKKwkJODVBNUM4Q0EwQThENURCOTAwQTNDRjkwIC8qIERPTUhU
TUxEaXJlY3RvcnlFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NUE1QzhDODBBOEQ1REI4MDBBM0NGOTAgLyogRE9NSFRNTERpcmVjdG9yeUVs
ZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk4NUE1QzhDQjBBOEQ1REI5MDBBM0NGOTAgLyogRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUE1QzhDOTBB
OEQ1REI5MDBBM0NGOTAgLyogRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQubW0gKi87IH07CisJCTg1
QTVDOEQwMEE4RDVERTUwMEEzQ0Y5MCAvKiBET01IVE1MQlJFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUE1QzhDRTBBOEQ1REU1MDBBM0NG
OTAgLyogRE9NSFRNTEJSRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTg1QTVDOEQxMEE4RDVERTUwMEEzQ0Y5MCAvKiBET01IVE1MQlJF
bGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODVBNUM4Q0YwQThENURFNTAwQTNDRjkwIC8qIERPTUhUTUxCUkVsZW1lbnQubW0gKi87IH07CisJ
CTg1QTg1QUY5MEE5MDI5MDQwMEE1Q0YzQSAvKiBET01Ob2RlTGlzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVBODVBRjcwQTkwMjkwNDAwQTVDRjNB
IC8qIERPTU5vZGVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJODVBODVBRkEwQTkwMjkwNTAwQTVDRjNBIC8qIERPTU5vZGVMaXN0Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVBODVBRjgwQTkw
MjkwNDAwQTVDRjNBIC8qIERPTU5vZGVMaXN0Lm1tICovOyB9OworCQk4NUJFQkFEMjBBOTdFQTY3
MDA3MDJDQjYgLyogRE9NSFRNTFRhYmxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVCRUJBRDAwQTk3RUE2NzAwNzAyQ0I2IC8qIERPTUhU
TUxUYWJsZUVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk4NUJFQkFEMzBBOTdFQTY3MDA3MDJDQjYgLyogRE9NSFRNTFRhYmxlRWxlbWVu
dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QkVC
QUQxMEE5N0VBNjcwMDcwMkNCNiAvKiBET01IVE1MVGFibGVFbGVtZW50Lm1tICovOyB9OworCQk4
NUJFQkFGMjBBOTdFRjFEMDA3MDJDQjYgLyogRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QkVCQUYwMEE5
N0VGMUQwMDcwMkNCNiAvKiBET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1QkVCQUYzMEE5N0VGMUQw
MDcwMkNCNiAvKiBET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QkVCQUYxMEE5N0VGMUQwMDcwMkNCNiAv
KiBET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5tbSAqLzsgfTsKKwkJODVCRUJCMUIwQTk3RjA4
QjAwNzAyQ0I2IC8qIERPTUhUTUxUYWJsZUNvbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QkVCQjE5MEE5N0YwOEIwMDcwMkNCNiAvKiBE
T01IVE1MVGFibGVDb2xFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJODVCRUJCMUMwQTk3RjA4QjAwNzAyQ0I2IC8qIERPTUhUTUxUYWJs
ZUNvbEVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NUJFQkIxQTBBOTdGMDhCMDA3MDJDQjYgLyogRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5t
bSAqLzsgfTsKKwkJODVCRUJCMzAwQTk3RjI4MDAwNzAyQ0I2IC8qIERPTUhUTUxUYWJsZVNlY3Rp
b25FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NUJFQkIyRTBBOTdGMjgwMDA3MDJDQjYgLyogRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NUJF
QkIzMTBBOTdGMjgwMDA3MDJDQjYgLyogRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUJFQkIyRjBBOTdG
MjgwMDA3MDJDQjYgLyogRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQubW0gKi87IH07CisJCTg1
QkVCQjRDMEE5N0Y0NjQwMDcwMkNCNiAvKiBET01IVE1MVGFibGVSb3dFbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUJFQkI0QTBBOTdGNDY0
MDA3MDJDQjYgLyogRE9NSFRNTFRhYmxlUm93RWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1QkVCQjREMEE5N0Y0NjQwMDcwMkNCNiAv
KiBET01IVE1MVGFibGVSb3dFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODVCRUJCNEIwQTk3RjQ2NDAwNzAyQ0I2IC8qIERPTUhUTUxUYWJs
ZVJvd0VsZW1lbnQubW0gKi87IH07CisJCTg1QkVCQjYwMEE5N0Y2MUMwMDcwMkNCNiAvKiBET01I
VE1MVGFibGVDZWxsRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODVCRUJCNUUwQTk3RjYxQzAwNzAyQ0I2IC8qIERPTUhUTUxUYWJsZUNlbGxF
bGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJODVCRUJCNjEwQTk3RjYxQzAwNzAyQ0I2IC8qIERPTUhUTUxUYWJsZUNlbGxFbGVtZW50Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVCRUJCNUYw
QTk3RjYxQzAwNzAyQ0I2IC8qIERPTUhUTUxUYWJsZUNlbGxFbGVtZW50Lm1tICovOyB9OworCQk4
NUNBOTZCODBBOTYyMUE2MDA2OTBDQ0YgLyogRE9NRW50aXR5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUNBOTZCNjBBOTYyMUE2MDA2OTBDQ0YgLyog
RE9NRW50aXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJODVDQTk2QjkwQTk2MjFBNjAwNjkwQ0NGIC8qIERPTUVudGl0eS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1Q0E5NkI3MEE5NjIxQTYwMDY5
MENDRiAvKiBET01FbnRpdHkubW0gKi87IH07CisJCTg1Q0E5NkVBMEE5NjI0RTkwMDY5MENDRiAv
KiBET01Ob3RhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODVDQTk2RTgwQTk2MjRFOTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVDQTk2RUIwQTk2MjRF
OTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODVDQTk2RTkwQTk2MjRFOTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9u
Lm1tICovOyB9OworCQk4NUNBOTc1QzBBOTYyRTU0MDA2OTBDQ0YgLyogRE9NRG9jdW1lbnRUeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUNBOTc1
QTBBOTYyRTU0MDA2OTBDQ0YgLyogRE9NRG9jdW1lbnRUeXBlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVDQTk3NUQwQTk2MkU1NDAwNjkwQ0NG
IC8qIERPTURvY3VtZW50VHlwZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg1Q0E5NzVCMEE5NjJFNTQwMDY5MENDRiAvKiBET01Eb2N1bWVudFR5cGUu
bW0gKi87IH07CisJCTg1Q0E5OEFGMEE5NjYwMjEwMDY5MENDRiAvKiBET01IVE1MQW5jaG9yRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVD
QTk4QUQwQTk2NjAyMTAwNjkwQ0NGIC8qIERPTUhUTUxBbmNob3JFbGVtZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVDQTk4QjAwQTk2NjAy
MTAwNjkwQ0NGIC8qIERPTUhUTUxBbmNob3JFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVDQTk4QUUwQTk2NjAyMTAwNjkwQ0NGIC8qIERP
TUhUTUxBbmNob3JFbGVtZW50Lm1tICovOyB9OworCQk4NUNBOTkzRTBBOTY2NjNEMDA2OTBDQ0Yg
LyogRE9NSFRNTE1hcEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg1Q0E5OTNDMEE5NjY2M0QwMDY5MENDRiAvKiBET01IVE1MTWFwRWxlbWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1
Q0E5OTNGMEE5NjY2M0QwMDY5MENDRiAvKiBET01IVE1MTWFwRWxlbWVudC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1Q0E5OTNEMEE5NjY2M0QwMDY5
MENDRiAvKiBET01IVE1MTWFwRWxlbWVudC5tbSAqLzsgfTsKKwkJODVDQTk5ODAwQTk2NjdFMDAw
NjkwQ0NGIC8qIERPTUhUTUxJc0luZGV4RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVDQTk5N0UwQTk2NjdFMDAwNjkwQ0NGIC8qIERPTUhU
TUxJc0luZGV4RWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTg1Q0E5OTgxMEE5NjY3RTAwMDY5MENDRiAvKiBET01IVE1MSXNJbmRleEVs
ZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NUNBOTk3RjBBOTY2N0UwMDA2OTBDQ0YgLyogRE9NSFRNTElzSW5kZXhFbGVtZW50Lm1tICovOyB9
OworCQk4NUNBOUEwOTBBOTY5N0E4MDA2OTBDQ0YgLyogRE9NSFRNTElucHV0RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVDQTlBMDcwQTk2
OTdBODAwNjkwQ0NGIC8qIERPTUhUTUxJbnB1dEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NUNBOUEwQTBBOTY5N0E4MDA2OTBDQ0Yg
LyogRE9NSFRNTElucHV0RWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg1Q0E5QTA4MEE5Njk3QTgwMDY5MENDRiAvKiBET01IVE1MSW5wdXRF
bGVtZW50Lm1tICovOyB9OworCQk4NUNBOUE0QTBBOTY5QTE1MDA2OTBDQ0YgLyogRE9NSFRNTEJ1
dHRvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg1Q0E5QTQ4MEE5NjlBMTUwMDY5MENDRiAvKiBET01IVE1MQnV0dG9uRWxlbWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1Q0E5QTRC
MEE5NjlBMTUwMDY5MENDRiAvKiBET01IVE1MQnV0dG9uRWxlbWVudC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1Q0E5QTQ5MEE5NjlBMTUwMDY5MEND
RiAvKiBET01IVE1MQnV0dG9uRWxlbWVudC5tbSAqLzsgfTsKKwkJODVDQTlBRTUwQTk2QTA5QjAw
NjkwQ0NGIC8qIERPTUhUTUxMYWJlbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1Q0E5QUUzMEE5NkEwOUIwMDY5MENDRiAvKiBET01IVE1M
TGFiZWxFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJODVDQTlBRTYwQTk2QTA5QjAwNjkwQ0NGIC8qIERPTUhUTUxMYWJlbEVsZW1lbnQu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUNBOUFF
NDBBOTZBMDlCMDA2OTBDQ0YgLyogRE9NSFRNTExhYmVsRWxlbWVudC5tbSAqLzsgfTsKKwkJODVE
Mzg5QjIwQTk5MUE3RjAwMjgyMTQ1IC8qIERPTUF0dHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RDM4OUIwMEE5OTFBN0YwMDI4MjE0NSAvKiBET01B
dHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
ODVEMzg5QjMwQTk5MUE3RjAwMjgyMTQ1IC8qIERPTUF0dHIubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUQzODlCMTBBOTkxQTdGMDAyODIxNDUgLyog
RE9NQXR0ci5tbSAqLzsgfTsKKwkJODVEMzg5RkMwQTk5NDExNzAwMjgyMTQ1IC8qIERPTUhUTUxD
b2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NUQzODlGQTBBOTk0MTE3MDAyODIxNDUgLyogRE9NSFRNTENvbGxlY3Rpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NUQzODlGRDBBOTk0
MTE3MDAyODIxNDUgLyogRE9NSFRNTENvbGxlY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUQzODlGQjBBOTk0MTE3MDAyODIxNDUgLyogRE9N
SFRNTENvbGxlY3Rpb24ubW0gKi87IH07CisJCTg1RDM4QTA2MEE5OTQyREMwMDI4MjE0NSAvKiBE
T01DU1NQcmltaXRpdmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODVEMzhBMDQwQTk5NDJEQzAwMjgyMTQ1IC8qIERPTUNTU1ByaW1pdGl2ZVZh
bHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
ODVEMzhBMDcwQTk5NDJEQzAwMjgyMTQ1IC8qIERPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVEMzhBMDUwQTk5NDJE
QzAwMjgyMTQ1IC8qIERPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tICovOyB9OworCQk4NUQ2MzAwRjBB
OTdCNzg0MDAzMzI0NDMgLyogRE9NSFRNTE9wdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RDYzMDBEMEE5N0I3ODQwMDMzMjQ0MyAv
KiBET01IVE1MT3B0aW9uRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTg1RDYzMDEwMEE5N0I3ODQwMDMzMjQ0MyAvKiBET01IVE1MT3B0
aW9uRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg1RDYzMDBFMEE5N0I3ODQwMDMzMjQ0MyAvKiBET01IVE1MT3B0aW9uRWxlbWVudC5tbSAq
LzsgfTsKKwkJODVEOTgzNkEwQTkzRkI2ODAwN0E4QTk4IC8qIERPTUhUTUxMaW5rRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVEOTgzNjgw
QTkzRkI2ODAwN0E4QTk4IC8qIERPTUhUTUxMaW5rRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1RDk4MzZCMEE5M0ZCNjgwMDdBOEE5
OCAvKiBET01IVE1MTGlua0VsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NUQ5ODM2OTBBOTNGQjY4MDA3QThBOTggLyogRE9NSFRNTExpbmtF
bGVtZW50Lm1tICovOyB9OworCQk4NUQ5ODNEQjBBOTNGRDg3MDA3QThBOTggLyogRE9NSFRNTElt
YWdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODVEOTgzRDkwQTkzRkQ4NzAwN0E4QTk4IC8qIERPTUhUTUxJbWFnZUVsZW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NUQ5ODNEQzBB
OTNGRDg3MDA3QThBOTggLyogRE9NSFRNTEltYWdlRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RDk4M0RBMEE5M0ZEODcwMDdBOEE5OCAv
KiBET01IVE1MSW1hZ2VFbGVtZW50Lm1tICovOyB9OwogCQk4NUVDOUFGQTBBNzFBMkM2MDBFRUVB
RUQgLyogRm9udERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg1RUM5QUY4MEE3MUEyQzYwMEVFRUFFRCAvKiBGb250RGF0YS5oICovOyB9OwogCQk4
NUVDOUFGQjBBNzFBMkM2MDBFRUVBRUQgLyogTGFuZ3VhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RUM5QUY5MEE3MUEyQzYwMEVFRUFFRCAvKiBM
YW5ndWFnZS5oICovOyB9OworCQk4NUY1NkE3QTBBOThDRTM3MDBBREI2MEEgLyogRE9NUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NUY1NkE3ODBBOThDRTM3MDBBREI2MEEgLyogRE9NUHJvY2Vzc2luZ0luc3RydWN0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
ODVGNTZBN0IwQTk4Q0UzNzAwQURCNjBBIC8qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RjU2QTc5MEE5
OENFMzcwMEFEQjYwQSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0gKi87IH07CisJCTg1
RjkyQUU4MEE4QkM3N0IwMDc4RjlENCAvKiBET01IVE1MRGl2RWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVGOTJBRTYwQThCQzc3QjAwNzhG
OUQ0IC8qIERPTUhUTUxEaXZFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVGOTJBRTkwQThCQzc3QjAwNzhGOUQ0IC8qIERPTUhUTUxE
aXZFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODVGOTJBRTcwQThCQzc3QjAwNzhGOUQ0IC8qIERPTUhUTUxEaXZFbGVtZW50Lm1tICovOyB9
OworCQk4NUZCRTlGNjBBOUE0MjQ2MDAwQTJBNEUgLyogRE9NQ1NTUnVsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVGQkU5RjQwQTlBNDI0NTAwMEEy
QTRFIC8qIERPTUNTU1J1bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk4NUZCRTlGNzBBOUE0MjQ2MDAwQTJBNEUgLyogRE9NQ1NTUnVsZS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RkJFOUY1MEE5
QTQyNDYwMDBBMkE0RSAvKiBET01DU1NSdWxlLm1tICovOyB9OworCQk4NUZEMTdBMTBBOTNDM0JG
MDA2QzA4NDIgLyogRE9NSFRNTFN0eWxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVGRDE3OUYwQTkzQzNCRjAwNkMwODQyIC8qIERPTUhU
TUxTdHlsZUVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk4NUZEMTdBMjBBOTNDM0JGMDA2QzA4NDIgLyogRE9NSFRNTFN0eWxlRWxlbWVu
dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RkQx
N0EwMEE5M0MzQkYwMDZDMDg0MiAvKiBET01IVE1MU3R5bGVFbGVtZW50Lm1tICovOyB9OworCQk4
NUZEMTg5NDBBOTNFRDUwMDA2QzA4NDIgLyogRE9NSFRNTFNjcmlwdEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RkQxODkyMEE5M0VENTAw
MDZDMDg0MiAvKiBET01IVE1MU2NyaXB0RWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1RkQxODk1MEE5M0VENTAwMDZDMDg0MiAvKiBE
T01IVE1MU2NyaXB0RWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg1RkQxODkzMEE5M0VENTAwMDZDMDg0MiAvKiBET01IVE1MU2NyaXB0RWxl
bWVudC5tbSAqLzsgfTsKKwkJODVGRDE4RTAwQTkzRUVGOTAwNkMwODQyIC8qIERPTUhUTUxQcmVF
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NUZEMThERTBBOTNFRUY5MDA2QzA4NDIgLyogRE9NSFRNTFByZUVsZW1lbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NUZEMThFMTBBOTNFRUY5
MDA2QzA4NDIgLyogRE9NSFRNTFByZUVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUZEMThERjBBOTNFRUY5MDA2QzA4NDIgLyogRE9NSFRN
TFByZUVsZW1lbnQubW0gKi87IH07CiAJCTkzMDMyQ0M4MDlBRUMzNDMwMEY4MkExOCAvKiBQYXRo
Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMw
MzJDQzcwOUFFQzM0MzAwRjgyQTE4IC8qIFBhdGhDRy5jcHAgKi87IH07CiAJCTkzMDMyQ0NBMDlB
RUMzNEIwMEY4MkExOCAvKiBQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzAzMkNDOTA5QUVDMzRCMDBGODJBMTggLyogUGF0aC5oICovOyB9Owog
CQk5MzA1QjI0RDA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDVCMjRDMDk4RjFCNkIwMEMyODg1NSAvKiBU
aW1lci5oICovOyB9OwpAQCAtMTYwMSwyMyArMTc1OCw2IEBACiAJCUZBRTA0MTkwMDk3NTk2Qzkw
MDA1NDBCRSAvKiBTVkdJbWFnZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkFFMDQxOEUwOTc1OTZDOTAwMDU0MEJFIC8qIFNWR0ltYWdlTG9h
ZGVyLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAotLyogQmVnaW4g
UEJYQnVpbGRTdHlsZSBzZWN0aW9uICovCi0JCUJDRDMxODg2MEE5MjkwOTQwMEJGMUQ1RiAvKiBE
ZXZlbG9wbWVudCAqLyA9IHsKLQkJCWlzYSA9IFBCWEJ1aWxkU3R5bGU7Ci0JCQlidWlsZFNldHRp
bmdzID0gewotCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKLQkJCX07Ci0JCQluYW1lID0gRGV2
ZWxvcG1lbnQ7Ci0JCX07Ci0JCUJDRDMxODg3MEE5MjkwOTQwMEJGMUQ1RiAvKiBEZXBsb3ltZW50
ICovID0gewotCQkJaXNhID0gUEJYQnVpbGRTdHlsZTsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0J
CQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKLQkJCX07Ci0JCQluYW1lID0gRGVwbG95bWVudDsK
LQkJfTsKLS8qIEVuZCBQQlhCdWlsZFN0eWxlIHNlY3Rpb24gKi8KLQogLyogQmVnaW4gUEJYQ29u
dGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAkJREQwNDFGRjAwOUQ5RTMyNTAwMTBBRjJBIC8q
IFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Q
cm94eTsKQEAgLTIwNjQsOCArMjIwNCw1MyBAQAogCQk4NTAzMUIzOTBBNDRFRkM3MDBGOTkyRTAg
LyogVUlFdmVudFdpdGhLZXlTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVUlFdmVudFdpdGhLZXlTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
NTAzMUIzQTBBNDRFRkM3MDBGOTkyRTAgLyogV2hlZWxFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2hlZWxFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg1MDMxQjNCMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVlbEV2ZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaGVlbEV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg1MDdDMDg3MEE5QTMwMEYwMEZCQzg5NSAvKiBET01DU1NWYWx1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQ1NTVmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwN0MwODgwQTlBMzAwRjAwRkJDODk1IC8qIERP
TUNTU1ZhbHVlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERP
TUNTU1ZhbHVlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTA4OUNDNzBBOThD
MjI2MDBBMjc1QUEgLyogQ29tbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENvbW1l
bnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTA4OUNDOTBBOThDMkFCMDBB
Mjc1QUEgLyogQ0RBVEFTZWN0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ0RBVEFT
ZWN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwODlDQ0IwQTk4QzMz
QTAwQTI3NUFBIC8qIEVudGl0eVJlZmVyZW5jZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEVudGl0eVJlZmVyZW5jZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MDg5
Q0NGMEE5OEM0MjcwMEEyNzVBQSAvKiBET01DREFUQVNlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTUNEQVRBU2VjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4NTA4OUNEMDBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUNEQVRBU2VjdGlv
bi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwODlDRDEwQTk4QzQyNzAwQTI3
NUFBIC8qIERPTUNvbW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERP
TUNvbW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwODlDRDIwQTk4QzQy
NzAwQTI3NUFBIC8qIERPTUNvbW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gRE9NQ29tbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODUwODlDRDMwQTk4QzQyODAwQTI3NUFBIC8qIERPTURvY3VtZW50RnJhZ21lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTURvY3VtZW50RnJhZ21lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwODlDRDQwQTk4QzQyODAwQTI3NUFBIC8qIERPTURv
Y3VtZW50RnJhZ21lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRE9NRG9jdW1lbnRGcmFnbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODUwODlDRDUwQTk4QzQyODAwQTI3NUFBIC8qIERPTUVudGl0eVJlZmVyZW5jZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRW50aXR5UmVmZXJlbmNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MDg5Q0Q2MEE5OEM0MjgwMEEyNzVBQSAvKiBET01FbnRp
dHlSZWZlcmVuY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
RE9NRW50aXR5UmVmZXJlbmNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTBF
NjFEQTBBOTQwNkYwMDBFRkI3M0EgLyogRE9NSFRNTERvY3VtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODUwRTYxREIwQTk0MDZGMDAwRUZCNzNBIC8qIERPTUhUTUxEb2N1bWVudC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MRG9jdW1l
bnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MEU2M0QxMEE5NDE4ODcwMEVG
QjczQSAvKiBET01IVE1MQm9keUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTUhUTUxCb2R5RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4NTBFNjNEMjBBOTQxODg3MDBFRkI3M0EgLyogRE9NSFRNTEJvZHlFbGVtZW50Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxCb2R5RWxlbWVudC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwRTY0MDMwQTk0MUMyNDAwRUZCNzNB
IC8qIERPTUhUTUxBcmVhRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NSFRNTEFyZWFFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1
MEU2NDA0MEE5NDFDMjQwMEVGQjczQSAvKiBET01IVE1MQXJlYUVsZW1lbnQubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTEFyZWFFbGVtZW50Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTBFNjUyNTBBOTQzNzdCMDBFRkI3M0EgLyog
RE9NSFRNTElGcmFtZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTUhUTUxJRnJhbWVFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1
MEU2NTI2MEE5NDM3N0IwMEVGQjczQSAvKiBET01IVE1MSUZyYW1lRWxlbWVudC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MSUZyYW1lRWxlbWVudC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwRTY1NTYwQTk0M0FGNDAwRUZCNzNB
IC8qIERPTUhUTUxGcmFtZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTUhUTUxGcmFtZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODUwRTY1NTcwQTk0M0FGNDAwRUZCNzNBIC8qIERPTUhUTUxGcmFtZUVsZW1lbnQubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTEZyYW1lRWxlbWVudC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwRTY1NTgwQTk0M0FGNDAwRUZCNzNB
IC8qIERPTUhUTUxGcmFtZVNldEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTUhUTUxGcmFtZVNldEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODUwRTY1NTkwQTk0M0FGNDAwRUZCNzNBIC8qIERPTUhUTUxGcmFtZVNldEVsZW1lbnQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTEZyYW1l
U2V0RWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwRTY1QTYwQTk0
OEY0MDAwRUZCNzNBIC8qIERPTUhUTUxBcHBsZXRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01IVE1MQXBwbGV0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4NTBFNjVBNzBBOTQ4RjQwMDBFRkI3M0EgLyogRE9NSFRNTEFwcGxldEVs
ZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRN
TEFwcGxldEVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MEU2NUQ0
MEE5NDkzRUQwMEVGQjczQSAvKiBET01IVE1MT2JqZWN0RWxlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSFRNTE9iamVjdEVsZW1lbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODUwRTY1RDUwQTk0OTNFRDAwRUZCNzNBIC8qIERPTUhUTUxPYmpl
Y3RFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERP
TUhUTUxPYmplY3RFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTBF
NjczRTBBOTUwRjUyMDBFRkI3M0EgLyogRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwRTY3M0YwQTk1MEY1MjAwRUZCNzNBIC8q
IERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg1MjE3RTAwMEE1RUNENDcwMERCOEQwMCAvKiBYU0xJbXBvcnRSdWxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYU0xJbXBvcnRSdWxl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODUyMTdFMDEwQTVFQ0Q0NzAwREI4
RDAwIC8qIFhTTEltcG9ydFJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFhTTEltcG9ydFJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUyNkQ1RUYw
QThGREIyRDAwOTIzNEIxIC8qIERPTVRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTVRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUyNkQ1RjAw
QThGREIyRTAwOTIzNEIxIC8qIERPTVRleHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRE9NVGV4dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODUyNkQ2NUMwQThGRTU1QTAwOTIzNEIxIC8qIERPTUNoYXJhY3RlckRhdGEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUNoYXJhY3RlckRhdGEuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODUyNkQ2NUQwQThGRTU1QTAwOTIzNEIxIC8qIERPTUNoYXJhY3Rl
ckRhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NQ2hh
cmFjdGVyRGF0YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUyNkQ3NjIwQThG
RjM5MjAwOTIzNEIxIC8qIERPTU5hbWVkTm9kZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NTmFtZWROb2RlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTg1MjZENzYzMEE4RkYzOTIwMDkyMzRCMSAvKiBET01OYW1lZE5vZGVNYXAubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NTmFtZWROb2RlTWFwLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTM5NTRDQzBBOTZBRjU3MDBGQTNEMEUgLyog
RE9NSFRNTEZpZWxkU2V0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4NTM5NTRDRDBBOTZBRjU3MDBGQTNEMEUgLyogRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MRmllbGRTZXRF
bGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTM5NTRDRTBBOTZBRjU3
MDBGQTNEMEUgLyogRE9NSFRNTExlZ2VuZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTUhUTUxMZWdlbmRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTg1Mzk1NENGMEE5NkFGNTcwMEZBM0QwRSAvKiBET01IVE1MTGVnZW5kRWxlbWVu
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MTGVn
ZW5kRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUzOUI1MDYwQTkw
M0Q0NTAwMzY2QzJEIC8qIERPTURPTUltcGxlbWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01ET01JbXBsZW1lbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4NTM5QjUwNzBBOTAzRDQ1MDAzNjZDMkQgLyogRE9NRE9NSW1wbGVtZW50
YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRE9N
SW1wbGVtZW50YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1NDQ4OUMy
MEE5NzY5MEEwMEI4QkE4OSAvKiBET01IVE1MU2VsZWN0RWxlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSFRNTFNlbGVjdEVsZW1lbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODU0NDg5QzMwQTk3NjkwQTAwQjhCQTg5IC8qIERPTUhUTUxTZWxl
Y3RFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERP
TUhUTUxTZWxlY3RFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTRG
RTcyNjBBMjI5N0JFMDA1OEQ3QUQgLyogTm9kZUZpbHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZUZpbHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg1NEZFNzI3MEEyMjk3QkUwMDU4RDdBRCAvKiBOb2RlRmlsdGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb2RlRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg1NEZFNzI4MEEyMjk3QkUwMDU4RDdBRCAvKiBOb2RlRmlsdGVyQ29u
ZGl0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2RlRmls
dGVyQ29uZGl0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzYsOCAr
MjI2MSwxMjEgQEAKIAkJODU0RkU3MkQwQTIyOTdCRTAwNThEN0FEIC8qIFRyYXZlcnNhbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhdmVyc2FsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg1NEZFNzJFMEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmVlV2Fsa2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODU0RkU3MkYwQTIyOTdCRTAwNThEN0FE
IC8qIFRyZWVXYWxrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyZWVX
YWxrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU1QzJEQTMwQTk2QkI4QjAw
MDRGMTcxIC8qIERPTUhUTUxGb3JtRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NSFRNTEZvcm1FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTg1NUMyREE0MEE5NkJCOEIwMDA0RjE3MSAvKiBET01IVE1MRm9ybUVsZW1lbnQubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTEZvcm1FbGVtZW50
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTVDMkRFNTBBOTZDRjBBMDAwNEYx
NzEgLyogRE9NSFRNTFRleHRBcmVhRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NSFRNTFRleHRBcmVhRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4NTVDMkRFNjBBOTZDRjBBMDAwNEYxNzEgLyogRE9NSFRNTFRleHRBcmVhRWxlbWVu
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MVGV4
dEFyZWFFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTY3MkEyOTBB
OEQ0REY0MDBCMjQxRTUgLyogRE9NSFRNTE1ldGFFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01IVE1MTWV0YUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODU2NzJBMkEwQThENERGNDAwQjI0MUU1IC8qIERPTUhUTUxNZXRhRWxlbWVu
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MTWV0
YUVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1NjcyQTNCMEE4RDRF
M0MwMEIyNDFFNSAvKiBET01IVE1MQmFzZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTUhUTUxCYXNlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4NTY3MkEzQzBBOEQ0RTNDMDBCMjQxRTUgLyogRE9NSFRNTEJhc2VFbGVtZW50Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxCYXNlRWxl
bWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2NzJBOTYwQThENTEyMjAw
QjI0MUU1IC8qIERPTUhUTUxVTGlzdEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTUhUTUxVTGlzdEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODU2NzJBOTcwQThENTEyMjAwQjI0MUU1IC8qIERPTUhUTUxVTGlzdEVsZW1lbnQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTFVMaXN0RWxl
bWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2NzJBOUUwQThENTFENDAw
QjI0MUU1IC8qIERPTUhUTUxRdW90ZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTUhUTUxRdW90ZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODU2NzJBOUYwQThENTFENDAwQjI0MUU1IC8qIERPTUhUTUxRdW90ZUVsZW1lbnQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTFF1b3RlRWxl
bWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2NzJBRDcwQThENTJGMTAw
QjI0MUU1IC8qIERPTUhUTUxQYXJhbUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTUhUTUxQYXJhbUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODU2NzJBRDgwQThENTJGMTAwQjI0MUU1IC8qIERPTUhUTUxQYXJhbUVsZW1lbnQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTFBhcmFtRWxl
bWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2NzJBRjIwQThENTM4MTAw
QjI0MUU1IC8qIERPTUhUTUxQYXJhZ3JhcGhFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01IVE1MUGFyYWdyYXBoRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4NTY3MkFGMzBBOEQ1MzgxMDBCMjQxRTUgLyogRE9NSFRNTFBhcmFncmFw
aEVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9N
SFRNTFBhcmFncmFwaEVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1
NjcyQjA4MEE4RDUzRTAwMEIyNDFFNSAvKiBET01IVE1MT3B0R3JvdXBFbGVtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MT3B0R3JvdXBFbGVtZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1NjcyQjA5MEE4RDUzRTAwMEIyNDFFNSAvKiBE
T01IVE1MT3B0R3JvdXBFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IERPTUhUTUxPcHRHcm91cEVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTg1NjcyQjIzMEE4RDU0QjMwMEIyNDFFNSAvKiBET01IVE1MT0xpc3RFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MT0xpc3RFbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1NjcyQjI0MEE4RDU0QjMwMEIyNDFF
NSAvKiBET01IVE1MT0xpc3RFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IERPTUhUTUxPTGlzdEVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTg1NjcyQjI5MEE4RDU1MDMwMEIyNDFFNSAvKiBET01IVE1MTWVudUVsZW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxNZW51RWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTY3MkIyQTBBOEQ1NTAzMDBCMjQxRTUg
LyogRE9NSFRNTE1lbnVFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IERPTUhUTUxNZW51RWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODU2NzJCNzUwQThENTZGODAwQjI0MUU1IC8qIERPTUhUTUxMSUVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxMSUVsZW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2NzJCNzYwQThENTZGODAwQjI0MUU1IC8qIERPTUhU
TUxMSUVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
RE9NSFRNTExJRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2NzJC
ODIwQThENTc5MTAwQjI0MUU1IC8qIERPTUhUTUxIUkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxIUkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODU2NzJCODMwQThENTc5MTAwQjI0MUU1IC8qIERPTUhUTUxIUkVsZW1lbnQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTEhSRWxl
bWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2NzJCOTAwQThENTdGNTAw
QjI0MUU1IC8qIERPTUhUTUxIZWFkaW5nRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NSFRNTEhlYWRpbmdFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTg1NjcyQjkxMEE4RDU3RjUwMEIyNDFFNSAvKiBET01IVE1MSGVhZGluZ0VsZW1l
bnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTEhl
YWRpbmdFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTY3MkI5QzBB
OEQ1ODdGMDBCMjQxRTUgLyogRE9NSFRNTEZvbnRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01IVE1MRm9udEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODU2NzJCOUQwQThENTg3RjAwQjI0MUU1IC8qIERPTUhUTUxGb250RWxlbWVu
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MRm9u
dEVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1NjcyQkFGMEE4RDU5
NUQwMEIyNDFFNSAvKiBET01IVE1MRExpc3RFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01IVE1MRExpc3RFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTg1NjcyQkIwMEE4RDU5NUQwMEIyNDFFNSAvKiBET01IVE1MRExpc3RFbGVtZW50
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxETGlz
dEVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1NkM4OTZBMEE5MEUx
ODQwMDVDNjg3QiAvKiBET01Eb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2Qzg5
NkIwQTkwRTE4NDAwNUM2ODdCIC8qIERPTURvY3VtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTURvY3VtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4NTZDODlGQTBBOTBGMDY4MDA1QzY4N0IgLyogRE9NTm9kZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4NTZDODlGQjBBOTBGMDY4MDA1QzY4N0IgLyogRE9NTm9kZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01Ob2RlLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4NTZDOEFFMjBBOTEyNjQ5MDA1QzY4N0IgLyogRE9NT2JqZWN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01PYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2QzhBRTMwQTkxMjY0OTAwNUM2ODdCIC8qIERPTU9i
amVjdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01PYmpl
Y3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1NkUwNUREMEE5Mzk1MDYwMEEy
NDczOSAvKiBET01IVE1MRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NSFRNTEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2RTA1
REUwQTkzOTUwNjAwQTI0NzM5IC8qIERPTUhUTUxFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NTlCN0Y4MDBBOENGRjM3MDBBNUYxRUEgLyogRE9NSFRNTEhlYWRF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MSGVhZEVs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU5QjdGODEwQThDRkYzNzAw
QTVGMUVBIC8qIERPTUhUTUxIZWFkRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBET01IVE1MSGVhZEVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg1OUI3RjgyMEE4Q0ZGMzcwMEE1RjFFQSAvKiBET01IVE1MSHRtbEVsZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxIdG1sRWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTlCN0Y4MzBBOENGRjM3MDBBNUYx
RUEgLyogRE9NSFRNTEh0bWxFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IERPTUhUTUxIdG1sRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODU5QjdGQjkwQThEMjg4ODAwQTVGMUVBIC8qIENvZGVHZW5lcmF0b3JPYmpDLnBt
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBDb2RlR2VuZXJhdG9yT2JqQy5w
bTsgcGF0aCA9IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG07IHNvdXJjZVRy
ZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJODU5QjgwMzUwQThEMzFBNjAwQTVGMUVBIC8qIERPTUhU
TUxUaXRsZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhU
TUxUaXRsZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU5QjgwMzYw
QThEMzFBNjAwQTVGMUVBIC8qIERPTUhUTUxUaXRsZUVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTFRpdGxlRWxlbWVudC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVBNUM1NTYwQTkwMzBCQjAwRjkxRjJDIC8qIERPTUVs
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUVsZW1lbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVBNUM1NTcwQTkwMzBCQjAwRjkxRjJDIC8q
IERPTUVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
RE9NRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVBNUM4QzAwQThE
NUQ4QjAwQTNDRjkwIC8qIERPTUhUTUxCYXNlRm9udEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxCYXNlRm9udEVsZW1lbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODVBNUM4QzEwQThENUQ4QjAwQTNDRjkwIC8qIERPTUhUTUxCYXNl
Rm9udEVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
RE9NSFRNTEJhc2VGb250RWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODVBNUM4QzgwQThENURCODAwQTNDRjkwIC8qIERPTUhUTUxEaXJlY3RvcnlFbGVtZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MRGlyZWN0b3J5RWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUE1QzhDOTBBOEQ1REI5MDBBM0NGOTAg
LyogRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg1QTVDOENFMEE4RDVERTUwMEEzQ0Y5MCAvKiBET01IVE1MQlJFbGVt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MQlJFbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QTVDOENGMEE4RDVERTUwMEEzQ0Y5
MCAvKiBET01IVE1MQlJFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IERPTUhUTUxCUkVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTg1QTg1QUY3MEE5MDI5MDQwMEE1Q0YzQSAvKiBET01Ob2RlTGlzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODVBODVBRjgwQTkwMjkwNDAwQTVDRjNBIC8qIERPTU5vZGVMaXN0Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTU5vZGVMaXN0Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUJFQkFEMDBBOTdFQTY3MDA3MDJDQjYgLyog
RE9NSFRNTFRhYmxlRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01IVE1MVGFibGVFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QkVC
QUQxMEE5N0VBNjcwMDcwMkNCNiAvKiBET01IVE1MVGFibGVFbGVtZW50Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTFRhYmxlRWxlbWVudC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVCRUJBRjAwQTk3RUYxRDAwNzAyQ0I2IC8qIERP
TUhUTUxUYWJsZUNhcHRpb25FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg1QkVCQUYxMEE5N0VGMUQwMDcwMkNCNiAvKiBET01IVE1MVGFibGVDYXB0aW9uRWxl
bWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxU
YWJsZUNhcHRpb25FbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUJF
QkIxOTBBOTdGMDhCMDA3MDJDQjYgLyogRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MVGFibGVDb2xFbGVtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QkVCQjFBMEE5N0YwOEIwMDcwMkNCNiAvKiBET01I
VE1MVGFibGVDb2xFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODVCRUJCMkUwQTk3RjI4MDAwNzAyQ0I2IC8qIERPTUhUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxUYWJsZVNlY3Rp
b25FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QkVCQjJGMEE5N0Yy
ODAwMDcwMkNCNiAvKiBET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUJFQkI0QTBBOTdGNDY0MDA3MDJDQjYg
LyogRE9NSFRNTFRhYmxlUm93RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01IVE1MVGFibGVSb3dFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTg1QkVCQjRCMEE5N0Y0NjQwMDcwMkNCNiAvKiBET01IVE1MVGFibGVSb3dFbGVtZW50Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTFRhYmxlUm93
RWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVCRUJCNUUwQTk3RjYx
QzAwNzAyQ0I2IC8qIERPTUhUTUxUYWJsZUNlbGxFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTUhUTUxUYWJsZUNlbGxFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg1QkVCQjVGMEE5N0Y2MUMwMDcwMkNCNiAvKiBET01IVE1MVGFibGVD
ZWxsRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERP
TUhUTUxUYWJsZUNlbGxFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
NUNBOTZCNjBBOTYyMUE2MDA2OTBDQ0YgLyogRE9NRW50aXR5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01FbnRpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODVDQTk2QjcwQTk2MjFBNjAwNjkwQ0NGIC8qIERPTUVudGl0eS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01FbnRpdHkubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg1Q0E5NkU4MEE5NjI0RTkwMDY5MENDRiAvKiBET01Ob3RhdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTm90YXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVDQTk2RTkwQTk2MjRFOTAwNjkwQ0NGIC8qIERPTU5v
dGF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTU5v
dGF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUNBOTc1QTBBOTYyRTU0
MDA2OTBDQ0YgLyogRE9NRG9jdW1lbnRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01Eb2N1bWVudFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODVDQTk3NUIwQTk2MkU1NDAwNjkwQ0NGIC8qIERPTURvY3VtZW50VHlwZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01Eb2N1bWVudFR5cGUubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1Q0E5OEFEMEE5NjYwMjEwMDY5MENDRiAvKiBET01I
VE1MQW5jaG9yRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
SFRNTEFuY2hvckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVDQTk4
QUUwQTk2NjAyMTAwNjkwQ0NGIC8qIERPTUhUTUxBbmNob3JFbGVtZW50Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxBbmNob3JFbGVtZW50Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUNBOTkzQzBBOTY2NjNEMDA2OTBDQ0YgLyog
RE9NSFRNTE1hcEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERP
TUhUTUxNYXBFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1Q0E5OTNE
MEE5NjY2M0QwMDY5MENDRiAvKiBET01IVE1MTWFwRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MTWFwRWxlbWVudC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVDQTk5N0UwQTk2NjdFMDAwNjkwQ0NGIC8qIERPTUhUTUxJ
c0luZGV4RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSFRN
TElzSW5kZXhFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1Q0E5OTdG
MEE5NjY3RTAwMDY5MENDRiAvKiBET01IVE1MSXNJbmRleEVsZW1lbnQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTElzSW5kZXhFbGVtZW50Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUNBOUEwNzBBOTY5N0E4MDA2OTBDQ0YgLyog
RE9NSFRNTElucHV0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NSFRNTElucHV0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUNB
OUEwODBBOTY5N0E4MDA2OTBDQ0YgLyogRE9NSFRNTElucHV0RWxlbWVudC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MSW5wdXRFbGVtZW50Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUNBOUE0ODBBOTY5QTE1MDA2OTBDQ0YgLyog
RE9NSFRNTEJ1dHRvbkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTUhUTUxCdXR0b25FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1
Q0E5QTQ5MEE5NjlBMTUwMDY5MENDRiAvKiBET01IVE1MQnV0dG9uRWxlbWVudC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MQnV0dG9uRWxlbWVudC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVDQTlBRTMwQTk2QTA5QjAwNjkwQ0NG
IC8qIERPTUhUTUxMYWJlbEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTUhUTUxMYWJlbEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODVDQTlBRTQwQTk2QTA5QjAwNjkwQ0NGIC8qIERPTUhUTUxMYWJlbEVsZW1lbnQubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTExhYmVsRWxlbWVudC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVEMzMxODMwQThDRURDQzAwNTkyNUEw
IC8qIERPTUhUTUxNb2RFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBET01IVE1MTW9kRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUQz
MzE4NDBBOENFRENDMDA1OTI1QTAgLyogRE9NSFRNTE1vZEVsZW1lbnQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTE1vZEVsZW1lbnQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1RDM4OUIwMEE5OTFBN0YwMDI4MjE0NSAvKiBET01B
dHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01BdHRyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1RDM4OUIxMEE5OTFBN0YwMDI4MjE0NSAvKiBET01B
dHRyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUF0dHIu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1RDM4OUZBMEE5OTQxMTcwMDI4MjE0
NSAvKiBET01IVE1MQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NSFRNTENvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVE
Mzg5RkIwQTk5NDExNzAwMjgyMTQ1IC8qIERPTUhUTUxDb2xsZWN0aW9uLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxDb2xsZWN0aW9uLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUQzOEEwNDBBOTk0MkRDMDAyODIxNDUgLyogRE9N
Q1NTUHJpbWl0aXZlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERP
TUNTU1ByaW1pdGl2ZVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1RDM4
QTA1MEE5OTQyREMwMDI4MjE0NSAvKiBET01DU1NQcmltaXRpdmVWYWx1ZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01DU1NQcmltaXRpdmVWYWx1ZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVENjMwMEQwQTk3Qjc4NDAwMzMyNDQzIC8q
IERPTUhUTUxPcHRpb25FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBET01IVE1MT3B0aW9uRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
NUQ2MzAwRTBBOTdCNzg0MDAzMzI0NDMgLyogRE9NSFRNTE9wdGlvbkVsZW1lbnQubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTE9wdGlvbkVsZW1lbnQu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1RDk4MzY4MEE5M0ZCNjgwMDdBOEE5
OCAvKiBET01IVE1MTGlua0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTUhUTUxMaW5rRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
NUQ5ODM2OTBBOTNGQjY4MDA3QThBOTggLyogRE9NSFRNTExpbmtFbGVtZW50Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxMaW5rRWxlbWVudC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVEOTgzRDkwQTkzRkQ4NzAwN0E4QTk4IC8q
IERPTUhUTUxJbWFnZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTUhUTUxJbWFnZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVE
OTgzREEwQTkzRkQ4NzAwN0E4QTk4IC8qIERPTUhUTUxJbWFnZUVsZW1lbnQubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTEltYWdlRWxlbWVudC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODVFQzlBRjgwQTcxQTJDNjAwRUVFQUVEIC8q
IEZvbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250RGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NUVDOUFGOTBBNzFBMkM2MDBFRUVBRUQg
LyogTGFuZ3VhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhbmd1YWdl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1RjU2QTc4MEE5OENFMzcwMEFEQjYw
QSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4NUY1NkE3OTBBOThDRTM3MDBBREI2MEEgLyogRE9NUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVBy
b2Nlc3NpbmdJbnN0cnVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVG
OTJBRTYwQThCQzc3QjAwNzhGOUQ0IC8qIERPTUhUTUxEaXZFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MRGl2RWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NUY5MkFFNzBBOEJDNzdCMDA3OEY5RDQgLyogRE9NSFRNTERpdkVs
ZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRN
TERpdkVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1RkJFOUY0MEE5
QTQyNDUwMDBBMkE0RSAvKiBET01DU1NSdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01DU1NSdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1RkJF
OUY1MEE5QTQyNDYwMDBBMkE0RSAvKiBET01DU1NSdWxlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUNTU1J1bGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTg1RkQxNzlGMEE5M0MzQkYwMDZDMDg0MiAvKiBET01IVE1MU3R5bGVFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MU3R5bGVFbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1RkQxN0EwMEE5M0MzQkYwMDZDMDg0
MiAvKiBET01IVE1MU3R5bGVFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IERPTUhUTUxTdHlsZUVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTg1RkQxODkyMEE5M0VENTAwMDZDMDg0MiAvKiBET01IVE1MU2NyaXB0RWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSFRNTFNjcmlwdEVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVGRDE4OTMwQTkzRUQ1MDAwNkMw
ODQyIC8qIERPTUhUTUxTY3JpcHRFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IERPTUhUTUxTY3JpcHRFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4NUZEMThERTBBOTNFRUY5MDA2QzA4NDIgLyogRE9NSFRNTFByZUVsZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxQcmVFbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1RkQxOERGMEE5M0VFRjkwMDZDMDg0
MiAvKiBET01IVE1MUHJlRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBET01IVE1MUHJlRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTMwMzJDQzcwOUFFQzM0MzAwRjgyQTE4IC8qIFBhdGhDRy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXRoQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzAzMkNDOTA5QUVDMzRCMDBGODJBMTggLyogUGF0aC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzMDVCMjRDMDk4RjFCNkIwMEMyODg1NSAvKiBUaW1lci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
Mzk5Myw2ICs0MjkxLDE4OSBAQAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CiAJCX07CisJCTg1MDdDMDhCMEE5QTMwMTQwMEZCQzg5NSAvKiBDU1MgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTg1RkJFOUY0MEE5QTQyNDUw
MDBBMkE0RSAvKiBET01DU1NSdWxlLmggKi8sCisJCQkJODVGQkU5RjUwQTlBNDI0NjAwMEEyQTRF
IC8qIERPTUNTU1J1bGUubW0gKi8sCisJCQkJODUwN0MwODcwQTlBMzAwRjAwRkJDODk1IC8qIERP
TUNTU1ZhbHVlLmggKi8sCisJCQkJODUwN0MwODgwQTlBMzAwRjAwRkJDODk1IC8qIERPTUNTU1Zh
bHVlLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBDU1M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OworCQk4NTRGMTJBQzBBOEVCQzE4MDAwOTQwQjUgLyogQ29yZSAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJODUyNkQ2NUMwQThGRTU1QTAw
OTIzNEIxIC8qIERPTUNoYXJhY3RlckRhdGEuaCAqLywKKwkJCQk4NTI2RDY1RDBBOEZFNTVBMDA5
MjM0QjEgLyogRE9NQ2hhcmFjdGVyRGF0YS5tbSAqLywKKwkJCQk4NTZDODk2QTBBOTBFMTg0MDA1
QzY4N0IgLyogRE9NRG9jdW1lbnQuaCAqLywKKwkJCQk4NTZDODk2QjBBOTBFMTg0MDA1QzY4N0Ig
LyogRE9NRG9jdW1lbnQubW0gKi8sCisJCQkJODVBNUM1NTYwQTkwMzBCQjAwRjkxRjJDIC8qIERP
TUVsZW1lbnQuaCAqLywKKwkJCQk4NUE1QzU1NzBBOTAzMEJCMDBGOTFGMkMgLyogRE9NRWxlbWVu
dC5tbSAqLywKKwkJCQk4NTM5QjUwNjBBOTAzRDQ1MDAzNjZDMkQgLyogRE9NRE9NSW1wbGVtZW50
YXRpb24uaCAqLywKKwkJCQk4NTM5QjUwNzBBOTAzRDQ1MDAzNjZDMkQgLyogRE9NRE9NSW1wbGVt
ZW50YXRpb24ubW0gKi8sCisJCQkJODUyNkQ3NjIwQThGRjM5MjAwOTIzNEIxIC8qIERPTU5hbWVk
Tm9kZU1hcC5oICovLAorCQkJCTg1MjZENzYzMEE4RkYzOTIwMDkyMzRCMSAvKiBET01OYW1lZE5v
ZGVNYXAubW0gKi8sCisJCQkJODU2Qzg5RkEwQTkwRjA2ODAwNUM2ODdCIC8qIERPTU5vZGUuaCAq
LywKKwkJCQk4NTZDODlGQjBBOTBGMDY4MDA1QzY4N0IgLyogRE9NTm9kZS5tbSAqLywKKwkJCQk4
NUE4NUFGNzBBOTAyOTA0MDBBNUNGM0EgLyogRE9NTm9kZUxpc3QuaCAqLywKKwkJCQk4NUE4NUFG
ODBBOTAyOTA0MDBBNUNGM0EgLyogRE9NTm9kZUxpc3QubW0gKi8sCisJCQkJODU2QzhBRTIwQTkx
MjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5oICovLAorCQkJCTg1NkM4QUUzMEE5MTI2NDkwMDVD
Njg3QiAvKiBET01PYmplY3QubW0gKi8sCisJCQkJODUyNkQ1RUYwQThGREIyRDAwOTIzNEIxIC8q
IERPTVRleHQuaCAqLywKKwkJCQk4NTI2RDVGMDBBOEZEQjJFMDA5MjM0QjEgLyogRE9NVGV4dC5t
bSAqLywKKwkJCSk7CisJCQluYW1lID0gQ29yZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CisJCTg1NkUwNUQ2MEE5Mzk0QzQwMEEyNDczOSAvKiBIVE1MICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk4NUNBOThBRDBBOTY2MDIxMDA2OTBD
Q0YgLyogRE9NSFRNTEFuY2hvckVsZW1lbnQuaCAqLywKKwkJCQk4NUNBOThBRTBBOTY2MDIxMDA2
OTBDQ0YgLyogRE9NSFRNTEFuY2hvckVsZW1lbnQubW0gKi8sCisJCQkJODUwRTY1QTYwQTk0OEY0
MDAwRUZCNzNBIC8qIERPTUhUTUxBcHBsZXRFbGVtZW50LmggKi8sCisJCQkJODUwRTY1QTcwQTk0
OEY0MDAwRUZCNzNBIC8qIERPTUhUTUxBcHBsZXRFbGVtZW50Lm1tICovLAorCQkJCTg1RDM4OUZB
MEE5OTQxMTcwMDI4MjE0NSAvKiBET01IVE1MQ29sbGVjdGlvbi5oICovLAorCQkJCTg1RDM4OUZC
MEE5OTQxMTcwMDI4MjE0NSAvKiBET01IVE1MQ29sbGVjdGlvbi5tbSAqLywKKwkJCQk4NTBFNjFE
QTBBOTQwNkYwMDBFRkI3M0EgLyogRE9NSFRNTERvY3VtZW50LmggKi8sCisJCQkJODUwRTYxREIw
QTk0MDZGMDAwRUZCNzNBIC8qIERPTUhUTUxEb2N1bWVudC5tbSAqLywKKwkJCQk4NTZFMDVERDBB
OTM5NTA2MDBBMjQ3MzkgLyogRE9NSFRNTEVsZW1lbnQuaCAqLywKKwkJCQk4NTZFMDVERTBBOTM5
NTA2MDBBMjQ3MzkgLyogRE9NSFRNTEVsZW1lbnQubW0gKi8sCisJCQkJODUwRTY1NTYwQTk0M0FG
NDAwRUZCNzNBIC8qIERPTUhUTUxGcmFtZUVsZW1lbnQuaCAqLywKKwkJCQk4NTBFNjU1NzBBOTQz
QUY0MDBFRkI3M0EgLyogRE9NSFRNTEZyYW1lRWxlbWVudC5tbSAqLywKKwkJCQk4NTBFNjU1ODBB
OTQzQUY0MDBFRkI3M0EgLyogRE9NSFRNTEZyYW1lU2V0RWxlbWVudC5oICovLAorCQkJCTg1MEU2
NTU5MEE5NDNBRjQwMEVGQjczQSAvKiBET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tICovLAorCQkJ
CTg1MEU2NTI1MEE5NDM3N0IwMEVGQjczQSAvKiBET01IVE1MSUZyYW1lRWxlbWVudC5oICovLAor
CQkJCTg1MEU2NTI2MEE5NDM3N0IwMEVGQjczQSAvKiBET01IVE1MSUZyYW1lRWxlbWVudC5tbSAq
LywKKwkJCQk4NTBFNjVENDBBOTQ5M0VEMDBFRkI3M0EgLyogRE9NSFRNTE9iamVjdEVsZW1lbnQu
aCAqLywKKwkJCQk4NTBFNjVENTBBOTQ5M0VEMDBFRkI3M0EgLyogRE9NSFRNTE9iamVjdEVsZW1l
bnQubW0gKi8sCisJCQkJODVENjMwMEQwQTk3Qjc4NDAwMzMyNDQzIC8qIERPTUhUTUxPcHRpb25F
bGVtZW50LmggKi8sCisJCQkJODVENjMwMEUwQTk3Qjc4NDAwMzMyNDQzIC8qIERPTUhUTUxPcHRp
b25FbGVtZW50Lm1tICovLAorCQkJCTg1MEU2NzNFMEE5NTBGNTIwMEVGQjczQSAvKiBET01IVE1M
T3B0aW9uc0NvbGxlY3Rpb24uaCAqLywKKwkJCQk4NTBFNjczRjBBOTUwRjUyMDBFRkI3M0EgLyog
RE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tICovLAorCQkJCTg1NDQ4OUMyMEE5NzY5MEEwMEI4
QkE4OSAvKiBET01IVE1MU2VsZWN0RWxlbWVudC5oICovLAorCQkJCTg1NDQ4OUMzMEE5NzY5MEEw
MEI4QkE4OSAvKiBET01IVE1MU2VsZWN0RWxlbWVudC5tbSAqLywKKwkJCQk4NUJFQkFEMDBBOTdF
QTY3MDA3MDJDQjYgLyogRE9NSFRNTFRhYmxlRWxlbWVudC5oICovLAorCQkJCTg1QkVCQUQxMEE5
N0VBNjcwMDcwMkNCNiAvKiBET01IVE1MVGFibGVFbGVtZW50Lm1tICovLAorCQkJCTg1QkVCQUYw
MEE5N0VGMUQwMDcwMkNCNiAvKiBET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oICovLAorCQkJ
CTg1QkVCQUYxMEE5N0VGMUQwMDcwMkNCNiAvKiBET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5t
bSAqLywKKwkJCQk4NUJFQkI1RTBBOTdGNjFDMDA3MDJDQjYgLyogRE9NSFRNTFRhYmxlQ2VsbEVs
ZW1lbnQuaCAqLywKKwkJCQk4NUJFQkI1RjBBOTdGNjFDMDA3MDJDQjYgLyogRE9NSFRNTFRhYmxl
Q2VsbEVsZW1lbnQubW0gKi8sCisJCQkJODVCRUJCMTkwQTk3RjA4QjAwNzAyQ0I2IC8qIERPTUhU
TUxUYWJsZUNvbEVsZW1lbnQuaCAqLywKKwkJCQk4NUJFQkIxQTBBOTdGMDhCMDA3MDJDQjYgLyog
RE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbSAqLywKKwkJCQk4NUJFQkI0QTBBOTdGNDY0MDA3MDJD
QjYgLyogRE9NSFRNTFRhYmxlUm93RWxlbWVudC5oICovLAorCQkJCTg1QkVCQjRCMEE5N0Y0NjQw
MDcwMkNCNiAvKiBET01IVE1MVGFibGVSb3dFbGVtZW50Lm1tICovLAorCQkJCTg1QkVCQjJFMEE5
N0YyODAwMDcwMkNCNiAvKiBET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oICovLAorCQkJCTg1
QkVCQjJGMEE5N0YyODAwMDcwMkNCNiAvKiBET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5tbSAq
LywKKwkJCSk7CisJCQluYW1lID0gSFRNTDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisJCTg1QjIzMjI2MEE4QkYzQTEwMEZERjQ3QiAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTg1RDM4OUIwMEE5OTFB
N0YwMDI4MjE0NSAvKiBET01BdHRyLmggKi8sCisJCQkJODVEMzg5QjEwQTk5MUE3RjAwMjgyMTQ1
IC8qIERPTUF0dHIubW0gKi8sCisJCQkJODUwODlDQ0YwQTk4QzQyNzAwQTI3NUFBIC8qIERPTUNE
QVRBU2VjdGlvbi5oICovLAorCQkJCTg1MDg5Q0QwMEE5OEM0MjcwMEEyNzVBQSAvKiBET01DREFU
QVNlY3Rpb24ubW0gKi8sCisJCQkJODUwODlDRDEwQTk4QzQyNzAwQTI3NUFBIC8qIERPTUNvbW1l
bnQuaCAqLywKKwkJCQk4NTA4OUNEMjBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ29tbWVudC5tbSAq
LywKKwkJCQk4NTA4OUNEMzBBOThDNDI4MDBBMjc1QUEgLyogRE9NRG9jdW1lbnRGcmFnbWVudC5o
ICovLAorCQkJCTg1MDg5Q0Q0MEE5OEM0MjgwMEEyNzVBQSAvKiBET01Eb2N1bWVudEZyYWdtZW50
Lm1tICovLAorCQkJCTg1Q0E5NzVBMEE5NjJFNTQwMDY5MENDRiAvKiBET01Eb2N1bWVudFR5cGUu
aCAqLywKKwkJCQk4NUNBOTc1QjBBOTYyRTU0MDA2OTBDQ0YgLyogRE9NRG9jdW1lbnRUeXBlLm1t
ICovLAorCQkJCTg1Q0E5NkI2MEE5NjIxQTYwMDY5MENDRiAvKiBET01FbnRpdHkuaCAqLywKKwkJ
CQk4NUNBOTZCNzBBOTYyMUE2MDA2OTBDQ0YgLyogRE9NRW50aXR5Lm1tICovLAorCQkJCTg1MDg5
Q0Q1MEE5OEM0MjgwMEEyNzVBQSAvKiBET01FbnRpdHlSZWZlcmVuY2UuaCAqLywKKwkJCQk4NTA4
OUNENjBBOThDNDI4MDBBMjc1QUEgLyogRE9NRW50aXR5UmVmZXJlbmNlLm1tICovLAorCQkJCTg1
Q0E5NkU4MEE5NjI0RTkwMDY5MENDRiAvKiBET01Ob3RhdGlvbi5oICovLAorCQkJCTg1Q0E5NkU5
MEE5NjI0RTkwMDY5MENDRiAvKiBET01Ob3RhdGlvbi5tbSAqLywKKwkJCQk4NUY1NkE3ODBBOThD
RTM3MDBBREI2MEEgLyogRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggKi8sCisJCQkJODVGNTZB
NzkwQTk4Q0UzNzAwQURCNjBBIC8qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5tbSAqLywKKwkJ
CQk4NUQzOEEwNDBBOTk0MkRDMDAyODIxNDUgLyogRE9NQ1NTUHJpbWl0aXZlVmFsdWUuaCAqLywK
KwkJCQk4NUQzOEEwNTBBOTk0MkRDMDAyODIxNDUgLyogRE9NQ1NTUHJpbWl0aXZlVmFsdWUubW0g
Ki8sCisJCQkJODUwRTY0MDMwQTk0MUMyNDAwRUZCNzNBIC8qIERPTUhUTUxBcmVhRWxlbWVudC5o
ICovLAorCQkJCTg1MEU2NDA0MEE5NDFDMjQwMEVGQjczQSAvKiBET01IVE1MQXJlYUVsZW1lbnQu
bW0gKi8sCisJCQkJODVBNUM4Q0UwQThENURFNTAwQTNDRjkwIC8qIERPTUhUTUxCUkVsZW1lbnQu
aCAqLywKKwkJCQk4NUE1QzhDRjBBOEQ1REU1MDBBM0NGOTAgLyogRE9NSFRNTEJSRWxlbWVudC5t
bSAqLywKKwkJCQk4NTY3MkEzQjBBOEQ0RTNDMDBCMjQxRTUgLyogRE9NSFRNTEJhc2VFbGVtZW50
LmggKi8sCisJCQkJODU2NzJBM0MwQThENEUzQzAwQjI0MUU1IC8qIERPTUhUTUxCYXNlRWxlbWVu
dC5tbSAqLywKKwkJCQk4NUE1QzhDMDBBOEQ1RDhCMDBBM0NGOTAgLyogRE9NSFRNTEJhc2VGb250
RWxlbWVudC5oICovLAorCQkJCTg1QTVDOEMxMEE4RDVEOEIwMEEzQ0Y5MCAvKiBET01IVE1MQmFz
ZUZvbnRFbGVtZW50Lm1tICovLAorCQkJCTg1MEU2M0QxMEE5NDE4ODcwMEVGQjczQSAvKiBET01I
VE1MQm9keUVsZW1lbnQuaCAqLywKKwkJCQk4NTBFNjNEMjBBOTQxODg3MDBFRkI3M0EgLyogRE9N
SFRNTEJvZHlFbGVtZW50Lm1tICovLAorCQkJCTg1Q0E5QTQ4MEE5NjlBMTUwMDY5MENDRiAvKiBE
T01IVE1MQnV0dG9uRWxlbWVudC5oICovLAorCQkJCTg1Q0E5QTQ5MEE5NjlBMTUwMDY5MENDRiAv
KiBET01IVE1MQnV0dG9uRWxlbWVudC5tbSAqLywKKwkJCQk4NUE1QzhDODBBOEQ1REI4MDBBM0NG
OTAgLyogRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQuaCAqLywKKwkJCQk4NUE1QzhDOTBBOEQ1REI5
MDBBM0NGOTAgLyogRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQubW0gKi8sCisJCQkJODVGOTJBRTYw
QThCQzc3QjAwNzhGOUQ0IC8qIERPTUhUTUxEaXZFbGVtZW50LmggKi8sCisJCQkJODVGOTJBRTcw
QThCQzc3QjAwNzhGOUQ0IC8qIERPTUhUTUxEaXZFbGVtZW50Lm1tICovLAorCQkJCTg1NjcyQkFG
MEE4RDU5NUQwMEIyNDFFNSAvKiBET01IVE1MRExpc3RFbGVtZW50LmggKi8sCisJCQkJODU2NzJC
QjAwQThENTk1RDAwQjI0MUU1IC8qIERPTUhUTUxETGlzdEVsZW1lbnQubW0gKi8sCisJCQkJODUz
OTU0Q0MwQTk2QUY1NzAwRkEzRDBFIC8qIERPTUhUTUxGaWVsZFNldEVsZW1lbnQuaCAqLywKKwkJ
CQk4NTM5NTRDRDBBOTZBRjU3MDBGQTNEMEUgLyogRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbSAq
LywKKwkJCQk4NTY3MkI5QzBBOEQ1ODdGMDBCMjQxRTUgLyogRE9NSFRNTEZvbnRFbGVtZW50Lmgg
Ki8sCisJCQkJODU2NzJCOUQwQThENTg3RjAwQjI0MUU1IC8qIERPTUhUTUxGb250RWxlbWVudC5t
bSAqLywKKwkJCQk4NTVDMkRBMzBBOTZCQjhCMDAwNEYxNzEgLyogRE9NSFRNTEZvcm1FbGVtZW50
LmggKi8sCisJCQkJODU1QzJEQTQwQTk2QkI4QjAwMDRGMTcxIC8qIERPTUhUTUxGb3JtRWxlbWVu
dC5tbSAqLywKKwkJCQk4NTlCN0Y4MDBBOENGRjM3MDBBNUYxRUEgLyogRE9NSFRNTEhlYWRFbGVt
ZW50LmggKi8sCisJCQkJODU5QjdGODEwQThDRkYzNzAwQTVGMUVBIC8qIERPTUhUTUxIZWFkRWxl
bWVudC5tbSAqLywKKwkJCQk4NTY3MkI5MDBBOEQ1N0Y1MDBCMjQxRTUgLyogRE9NSFRNTEhlYWRp
bmdFbGVtZW50LmggKi8sCisJCQkJODU2NzJCOTEwQThENTdGNTAwQjI0MUU1IC8qIERPTUhUTUxI
ZWFkaW5nRWxlbWVudC5tbSAqLywKKwkJCQk4NTlCN0Y4MjBBOENGRjM3MDBBNUYxRUEgLyogRE9N
SFRNTEh0bWxFbGVtZW50LmggKi8sCisJCQkJODU5QjdGODMwQThDRkYzNzAwQTVGMUVBIC8qIERP
TUhUTUxIdG1sRWxlbWVudC5tbSAqLywKKwkJCQk4NTY3MkI4MjBBOEQ1NzkxMDBCMjQxRTUgLyog
RE9NSFRNTEhSRWxlbWVudC5oICovLAorCQkJCTg1NjcyQjgzMEE4RDU3OTEwMEIyNDFFNSAvKiBE
T01IVE1MSFJFbGVtZW50Lm1tICovLAorCQkJCTg1RDk4M0Q5MEE5M0ZEODcwMDdBOEE5OCAvKiBE
T01IVE1MSW1hZ2VFbGVtZW50LmggKi8sCisJCQkJODVEOTgzREEwQTkzRkQ4NzAwN0E4QTk4IC8q
IERPTUhUTUxJbWFnZUVsZW1lbnQubW0gKi8sCisJCQkJODVDQTlBMDcwQTk2OTdBODAwNjkwQ0NG
IC8qIERPTUhUTUxJbnB1dEVsZW1lbnQuaCAqLywKKwkJCQk4NUNBOUEwODBBOTY5N0E4MDA2OTBD
Q0YgLyogRE9NSFRNTElucHV0RWxlbWVudC5tbSAqLywKKwkJCQk4NUNBOTk3RTBBOTY2N0UwMDA2
OTBDQ0YgLyogRE9NSFRNTElzSW5kZXhFbGVtZW50LmggKi8sCisJCQkJODVDQTk5N0YwQTk2NjdF
MDAwNjkwQ0NGIC8qIERPTUhUTUxJc0luZGV4RWxlbWVudC5tbSAqLywKKwkJCQk4NTY3MkI3NTBB
OEQ1NkY4MDBCMjQxRTUgLyogRE9NSFRNTExJRWxlbWVudC5oICovLAorCQkJCTg1NjcyQjc2MEE4
RDU2RjgwMEIyNDFFNSAvKiBET01IVE1MTElFbGVtZW50Lm1tICovLAorCQkJCTg1Q0E5QUUzMEE5
NkEwOUIwMDY5MENDRiAvKiBET01IVE1MTGFiZWxFbGVtZW50LmggKi8sCisJCQkJODVDQTlBRTQw
QTk2QTA5QjAwNjkwQ0NGIC8qIERPTUhUTUxMYWJlbEVsZW1lbnQubW0gKi8sCisJCQkJODUzOTU0
Q0UwQTk2QUY1NzAwRkEzRDBFIC8qIERPTUhUTUxMZWdlbmRFbGVtZW50LmggKi8sCisJCQkJODUz
OTU0Q0YwQTk2QUY1NzAwRkEzRDBFIC8qIERPTUhUTUxMZWdlbmRFbGVtZW50Lm1tICovLAorCQkJ
CTg1RDk4MzY4MEE5M0ZCNjgwMDdBOEE5OCAvKiBET01IVE1MTGlua0VsZW1lbnQuaCAqLywKKwkJ
CQk4NUQ5ODM2OTBBOTNGQjY4MDA3QThBOTggLyogRE9NSFRNTExpbmtFbGVtZW50Lm1tICovLAor
CQkJCTg1Q0E5OTNDMEE5NjY2M0QwMDY5MENDRiAvKiBET01IVE1MTWFwRWxlbWVudC5oICovLAor
CQkJCTg1Q0E5OTNEMEE5NjY2M0QwMDY5MENDRiAvKiBET01IVE1MTWFwRWxlbWVudC5tbSAqLywK
KwkJCQk4NTY3MkIyOTBBOEQ1NTAzMDBCMjQxRTUgLyogRE9NSFRNTE1lbnVFbGVtZW50LmggKi8s
CisJCQkJODU2NzJCMkEwQThENTUwMzAwQjI0MUU1IC8qIERPTUhUTUxNZW51RWxlbWVudC5tbSAq
LywKKwkJCQk4NTY3MkEyOTBBOEQ0REY0MDBCMjQxRTUgLyogRE9NSFRNTE1ldGFFbGVtZW50Lmgg
Ki8sCisJCQkJODU2NzJBMkEwQThENERGNDAwQjI0MUU1IC8qIERPTUhUTUxNZXRhRWxlbWVudC5t
bSAqLywKKwkJCQk4NUQzMzE4MzBBOENFRENDMDA1OTI1QTAgLyogRE9NSFRNTE1vZEVsZW1lbnQu
aCAqLywKKwkJCQk4NUQzMzE4NDBBOENFRENDMDA1OTI1QTAgLyogRE9NSFRNTE1vZEVsZW1lbnQu
bW0gKi8sCisJCQkJODU2NzJCMjMwQThENTRCMzAwQjI0MUU1IC8qIERPTUhUTUxPTGlzdEVsZW1l
bnQuaCAqLywKKwkJCQk4NTY3MkIyNDBBOEQ1NEIzMDBCMjQxRTUgLyogRE9NSFRNTE9MaXN0RWxl
bWVudC5tbSAqLywKKwkJCQk4NTY3MkIwODBBOEQ1M0UwMDBCMjQxRTUgLyogRE9NSFRNTE9wdEdy
b3VwRWxlbWVudC5oICovLAorCQkJCTg1NjcyQjA5MEE4RDUzRTAwMEIyNDFFNSAvKiBET01IVE1M
T3B0R3JvdXBFbGVtZW50Lm1tICovLAorCQkJCTg1NjcyQUYyMEE4RDUzODEwMEIyNDFFNSAvKiBE
T01IVE1MUGFyYWdyYXBoRWxlbWVudC5oICovLAorCQkJCTg1NjcyQUYzMEE4RDUzODEwMEIyNDFF
NSAvKiBET01IVE1MUGFyYWdyYXBoRWxlbWVudC5tbSAqLywKKwkJCQk4NTY3MkFENzBBOEQ1MkYx
MDBCMjQxRTUgLyogRE9NSFRNTFBhcmFtRWxlbWVudC5oICovLAorCQkJCTg1NjcyQUQ4MEE4RDUy
RjEwMEIyNDFFNSAvKiBET01IVE1MUGFyYW1FbGVtZW50Lm1tICovLAorCQkJCTg1RkQxOERFMEE5
M0VFRjkwMDZDMDg0MiAvKiBET01IVE1MUHJlRWxlbWVudC5oICovLAorCQkJCTg1RkQxOERGMEE5
M0VFRjkwMDZDMDg0MiAvKiBET01IVE1MUHJlRWxlbWVudC5tbSAqLywKKwkJCQk4NTY3MkE5RTBB
OEQ1MUQ0MDBCMjQxRTUgLyogRE9NSFRNTFF1b3RlRWxlbWVudC5oICovLAorCQkJCTg1NjcyQTlG
MEE4RDUxRDQwMEIyNDFFNSAvKiBET01IVE1MUXVvdGVFbGVtZW50Lm1tICovLAorCQkJCTg1RkQx
ODkyMEE5M0VENTAwMDZDMDg0MiAvKiBET01IVE1MU2NyaXB0RWxlbWVudC5oICovLAorCQkJCTg1
RkQxODkzMEE5M0VENTAwMDZDMDg0MiAvKiBET01IVE1MU2NyaXB0RWxlbWVudC5tbSAqLywKKwkJ
CQk4NUZEMTc5RjBBOTNDM0JGMDA2QzA4NDIgLyogRE9NSFRNTFN0eWxlRWxlbWVudC5oICovLAor
CQkJCTg1RkQxN0EwMEE5M0MzQkYwMDZDMDg0MiAvKiBET01IVE1MU3R5bGVFbGVtZW50Lm1tICov
LAorCQkJCTg1NUMyREU1MEE5NkNGMEEwMDA0RjE3MSAvKiBET01IVE1MVGV4dEFyZWFFbGVtZW50
LmggKi8sCisJCQkJODU1QzJERTYwQTk2Q0YwQTAwMDRGMTcxIC8qIERPTUhUTUxUZXh0QXJlYUVs
ZW1lbnQubW0gKi8sCisJCQkJODU5QjgwMzUwQThEMzFBNjAwQTVGMUVBIC8qIERPTUhUTUxUaXRs
ZUVsZW1lbnQuaCAqLywKKwkJCQk4NTlCODAzNjBBOEQzMUE2MDBBNUYxRUEgLyogRE9NSFRNTFRp
dGxlRWxlbWVudC5tbSAqLywKKwkJCQk4NTY3MkE5NjBBOEQ1MTIyMDBCMjQxRTUgLyogRE9NSFRN
TFVMaXN0RWxlbWVudC5oICovLAorCQkJCTg1NjcyQTk3MEE4RDUxMjIwMEIyNDFFNSAvKiBET01I
VE1MVUxpc3RFbGVtZW50Lm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2Vz
IjsKKwkJCXBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlOworCQkJc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsKKwkJfTsKIAkJOTMwMzJDQ0MwOUFFQzM2MjAwRjgyQTE4IC8qIGNn
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTQ5ODMsOSAr
NTQ2NCwxMSBAQAogCQlCQzFBMzc5NDA5N0M2RkM0MDAxOUYzRDggLyogb2JqYyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUNBRjM0N0UwQTZDNDA1MjAw
QUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oICovLAotCQkJCTFDQUYzNDdGMEE2QzQwNTIwMEFC
RTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0gKi8sCi0JCQkJMUNBRjM0ODAwQTZDNDA1MjAwQUJF
MDZFIC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCAqLywKKwkJCQk4NTA3QzA4QjBBOUEzMDE0
MDBGQkM4OTUgLyogQ1NTICovLAorCQkJCTg1QjIzMjI2MEE4QkYzQTEwMEZERjQ3QiAvKiBEZXJp
dmVkIFNvdXJjZXMgKi8sCisJCQkJODU0RjEyQUMwQThFQkMxODAwMDk0MEI1IC8qIENvcmUgKi8s
CisJCQkJODU2RTA1RDYwQTkzOTRDNDAwQTI0NzM5IC8qIEhUTUwgKi8sCisJCQkJODU5QjdGQjkw
QThEMjg4ODAwQTVGMUVBIC8qIENvZGVHZW5lcmF0b3JPYmpDLnBtICovLAogCQkJCUJDMUEzNzk3
MDk3QzcxNUYwMDE5RjNEOCAvKiBET00uaCAqLywKIAkJCQlCQzFBMzc5ODA5N0M3MTVGMDAxOUYz
RDggLyogRE9NLm1tICovLAogCQkJCUJDMUEzNzk5MDk3QzcxNUYwMDE5RjNEOCAvKiBET01Db3Jl
LmggKi8sCkBAIC01MDE1LDYgKzU0OTgsOSBAQAogCQkJCTFBMUQxMzdFMEE1MzI1NTIwMDY0QkY1
RiAvKiBET01YUGF0aC5oICovLAogCQkJCTFBMUQxMzdGMEE1MzI1NTIwMDY0QkY1RiAvKiBET01Y
UGF0aC5tbSAqLywKIAkJCQkxQTFEMTNDOTBBNTMyOTA5MDA2NEJGNUYgLyogRE9NWFBhdGhJbnRl
cm5hbC5oICovLAorCQkJCTFDQUYzNDdFMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmpl
Y3QuaCAqLywKKwkJCQkxQ0FGMzQ3RjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0
Lm1tICovLAorCQkJCTFDQUYzNDgwMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IG9iamM7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtNTQ5NSw2ICs1OTgxLDcgQEAKIAkJCQk4NTAzMUIyNzBBNDRFRkM3MDBGOTky
RTAgLyogQmVmb3JlVW5sb2FkRXZlbnQuaCAqLywKIAkJCQk2NTUwQjY5MzA5OURGMDI3MDA5MEQ3
ODEgLyogQ0RBVEFTZWN0aW9uLmNwcCAqLywKIAkJCQk2NTUwQjY5NDA5OURGMDI3MDA5MEQ3ODEg
LyogQ0RBVEFTZWN0aW9uLmggKi8sCisJCQkJODUwODlDQzkwQTk4QzJBQjAwQTI3NUFBIC8qIENE
QVRBU2VjdGlvbi5pZGwgKi8sCiAJCQkJNjU1MEI2OTUwOTlERjAyNzAwOTBENzgxIC8qIENoYXJh
Y3RlckRhdGEuY3BwICovLAogCQkJCTY1NTBCNjk2MDk5REYwMjcwMDkwRDc4MSAvKiBDaGFyYWN0
ZXJEYXRhLmggKi8sCiAJCQkJOTNFRUMxRTYwOUMyODc3NzAwQzUxNUQxIC8qIENoYXJhY3RlckRh
dGEuaWRsICovLApAQCAtNTUwNSw2ICs1OTkyLDcgQEAKIAkJCQk4NTAzMUIyQTBBNDRFRkM3MDBG
OTkyRTAgLyogQ2xpcGJvYXJkRXZlbnQuaCAqLywKIAkJCQk2NTUwQjY5NzA5OURGMDI3MDA5MEQ3
ODEgLyogQ29tbWVudC5jcHAgKi8sCiAJCQkJNjU1MEI2OTgwOTlERjAyNzAwOTBENzgxIC8qIENv
bW1lbnQuaCAqLywKKwkJCQk4NTA4OUNDNzBBOThDMjI2MDBBMjc1QUEgLyogQ29tbWVudC5pZGwg
Ki8sCiAJCQkJQTgxODcyMTQwOTc3RDNDMDAwNTgyNkQ5IC8qIENvbnRhaW5lck5vZGUuY3BwICov
LAogCQkJCUE4MTg3MjExMDk3N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmggKi8sCiAJ
CQkJQThDNEE3RjgwOUQ1NjMyNzAwMDNBQzhEIC8qIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0
aW9uLmNwcCAqLywKQEAgLTU1MzMsNiArNjAyMSw3IEBACiAJCQkJOTNFRUMxRUIwOUMyODc3NzAw
QzUxNUQxIC8qIEVudGl0eS5pZGwgKi8sCiAJCQkJQThFQTdFQjkwQTE5NDVEMDAwQThFRjVGIC8q
IEVudGl0eVJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJQThFQTdFQjgwQTE5NDVEMDAwQThFRjVGIC8q
IEVudGl0eVJlZmVyZW5jZS5oICovLAorCQkJCTg1MDg5Q0NCMEE5OEMzM0EwMEEyNzVBQSAvKiBF
bnRpdHlSZWZlcmVuY2UuaWRsICovLAogCQkJCTg1MDMxQjJCMEE0NEVGQzcwMEY5OTJFMCAvKiBF
dmVudC5jcHAgKi8sCiAJCQkJODUwMzFCMkMwQTQ0RUZDNzAwRjk5MkUwIC8qIEV2ZW50LmggKi8s
CiAJCQkJMTRFODM2RDIwOUY4NTEyMDAwQjg1QUU0IC8qIEV2ZW50LmlkbCAqLywKQEAgLTYzOTks
NiArNjg4OCw3MyBAQAogCQkJCUJDQUE5MEEwMEE3RUIwM0EwMDhCMTIyOSAvKiBQbGF0Zm9ybVNj
cm9sbEJhci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFQzlBRkEwQTcxQTJDNjAwRUVFQUVEIC8q
IEZvbnREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUVDOUFGQjBBNzFBMkM2MDBFRUVBRUQg
LyogTGFuZ3VhZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1RjkyQUU4MEE4QkM3N0IwMDc4RjlE
NCAvKiBET01IVE1MRGl2RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU5QjdGQzIwQThE
MjhGMjAwQTVGMUVBIC8qIERPTUhUTUxIZWFkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
ODU5QjdGQzQwQThEMjhGMjAwQTVGMUVBIC8qIERPTUhUTUxIdG1sRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJODU5QjdGQ0EwQThEMjhGODAwQTVGMUVBIC8qIERPTUhUTUxNb2RFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTlCODAzNzBBOEQzMUE2MDBBNUYxRUEgLyogRE9NSFRN
TFRpdGxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU2NzJBMkIwQThENERGNDAwQjI0
MUU1IC8qIERPTUhUTUxNZXRhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU2NzJBM0Qw
QThENEUzQzAwQjI0MUU1IC8qIERPTUhUTUxCYXNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJODU2NzJBOTgwQThENTEyMjAwQjI0MUU1IC8qIERPTUhUTUxVTGlzdEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTg1NjcyQUEwMEE4RDUxRDQwMEIyNDFFNSAvKiBET01IVE1MUXVvdGVF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTY3MkFEOTBBOEQ1MkYxMDBCMjQxRTUgLyog
RE9NSFRNTFBhcmFtRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU2NzJBRjQwQThENTM4
MTAwQjI0MUU1IC8qIERPTUhUTUxQYXJhZ3JhcGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4NTY3MkIwQTBBOEQ1M0UwMDBCMjQxRTUgLyogRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJODU2NzJCMjUwQThENTRCMzAwQjI0MUU1IC8qIERPTUhUTUxPTGlz
dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1NjcyQjJCMEE4RDU1MDMwMEIyNDFFNSAv
KiBET01IVE1MTWVudUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1NjcyQjc3MEE4RDU2
RjgwMEIyNDFFNSAvKiBET01IVE1MTElFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTY3
MkI4NDBBOEQ1NzkxMDBCMjQxRTUgLyogRE9NSFRNTEhSRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJODU2NzJCOTIwQThENTdGNTAwQjI0MUU1IC8qIERPTUhUTUxIZWFkaW5nRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJODU2NzJCOUUwQThENTg3RjAwQjI0MUU1IC8qIERPTUhUTUxG
b250RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU2NzJCQjEwQThENTk1RDAwQjI0MUU1
IC8qIERPTUhUTUxETGlzdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1QTVDOEMyMEE4
RDVEOEIwMEEzQ0Y5MCAvKiBET01IVE1MQmFzZUZvbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQk4NUE1QzhDQTBBOEQ1REI5MDBBM0NGOTAgLyogRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTg1QTVDOEQwMEE4RDVERTUwMEEzQ0Y5MCAvKiBET01IVE1M
QlJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTI2RDVGMTBBOEZEQjJFMDA5MjM0QjEg
LyogRE9NVGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODUyNkQ2NUUwQThGRTU1QTAwOTIzNEIx
IC8qIERPTUNoYXJhY3RlckRhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1MjZENzY0MEE4RkYz
OTIwMDkyMzRCMSAvKiBET01OYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1QTg1
QUY5MEE5MDI5MDQwMEE1Q0YzQSAvKiBET01Ob2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
ODVBNUM1NTgwQTkwMzBCQjAwRjkxRjJDIC8qIERPTUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTg1MzlCNTA4MEE5MDNENDUwMDM2NkMyRCAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJODU2Qzg5NkMwQTkwRTE4NDAwNUM2ODdCIC8qIERPTURvY3VtZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTZDODlGQzBBOTBGMDY4MDA1QzY4N0IgLyogRE9NTm9k
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU2QzhBRTQwQTkxMjY0OTAwNUM2ODdCIC8qIERPTU9i
amVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU2RTA1REYwQTkzOTUwNjAwQTI0NzM5IC8qIERP
TUhUTUxFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUZEMTdBMTBBOTNDM0JGMDA2QzA4
NDIgLyogRE9NSFRNTFN0eWxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODVGRDE4OTQw
QTkzRUQ1MDAwNkMwODQyIC8qIERPTUhUTUxTY3JpcHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQk4NUZEMThFMDBBOTNFRUY5MDA2QzA4NDIgLyogRE9NSFRNTFByZUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTg1RDk4MzZBMEE5M0ZCNjgwMDdBOEE5OCAvKiBET01IVE1MTGlua0Vs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1RDk4M0RCMEE5M0ZEODcwMDdBOEE5OCAvKiBE
T01IVE1MSW1hZ2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTBFNjFEQzBBOTQwNkYw
MDBFRkI3M0EgLyogRE9NSFRNTERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTBFNjNE
MzBBOTQxODg3MDBFRkI3M0EgLyogRE9NSFRNTEJvZHlFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQk4NTBFNjQwNTBBOTQxQzI0MDBFRkI3M0EgLyogRE9NSFRNTEFyZWFFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQk4NTBFNjUyNzBBOTQzNzdCMDBFRkI3M0EgLyogRE9NSFRNTElGcmFt
ZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1MEU2NTVBMEE5NDNBRjQwMEVGQjczQSAv
KiBET01IVE1MRnJhbWVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTBFNjU1QzBBOTQz
QUY0MDBFRkI3M0EgLyogRE9NSFRNTEZyYW1lU2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJODUwRTY1QTgwQTk0OEY0MDAwRUZCNzNBIC8qIERPTUhUTUxBcHBsZXRFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQk4NTBFNjVENjBBOTQ5M0VEMDBFRkI3M0EgLyogRE9NSFRNTE9iamVj
dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1MEU2NzQwMEE5NTBGNTIwMEVGQjczQSAv
KiBET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTg1Q0E5NkI4
MEE5NjIxQTYwMDY5MENDRiAvKiBET01FbnRpdHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1Q0E5
NkVBMEE5NjI0RTkwMDY5MENDRiAvKiBET01Ob3RhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
ODVDQTk3NUMwQTk2MkU1NDAwNjkwQ0NGIC8qIERPTURvY3VtZW50VHlwZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJODVDQTk4QUYwQTk2NjAyMTAwNjkwQ0NGIC8qIERPTUhUTUxBbmNob3JFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUNBOTkzRTBBOTY2NjNEMDA2OTBDQ0YgLyogRE9NSFRN
TE1hcEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1Q0E5OTgwMEE5NjY3RTAwMDY5MEND
RiAvKiBET01IVE1MSXNJbmRleEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1Q0E5QTA5
MEE5Njk3QTgwMDY5MENDRiAvKiBET01IVE1MSW5wdXRFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQk4NUNBOUE0QTBBOTY5QTE1MDA2OTBDQ0YgLyogRE9NSFRNTEJ1dHRvbkVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTg1Q0E5QUU1MEE5NkEwOUIwMDY5MENDRiAvKiBET01IVE1MTGFi
ZWxFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTM5NTREMDBBOTZBRjU3MDBGQTNEMEUg
LyogRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODUzOTU0RDIw
QTk2QUY1NzAwRkEzRDBFIC8qIERPTUhUTUxMZWdlbmRFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQk4NTVDMkRBNTBBOTZCQjhCMDAwNEYxNzEgLyogRE9NSFRNTEZvcm1FbGVtZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQk4NTVDMkRFNzBBOTZDRjBBMDAwNEYxNzEgLyogRE9NSFRNTFRleHRB
cmVhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU0NDg5QzQwQTk3NjkwQTAwQjhCQTg5
IC8qIERPTUhUTUxTZWxlY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUQ2MzAwRjBB
OTdCNzg0MDAzMzI0NDMgLyogRE9NSFRNTE9wdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTg1QkVCQUQyMEE5N0VBNjcwMDcwMkNCNiAvKiBET01IVE1MVGFibGVFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQk4NUJFQkFGMjBBOTdFRjFEMDA3MDJDQjYgLyogRE9NSFRNTFRhYmxl
Q2FwdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1QkVCQjFCMEE5N0YwOEIwMDcw
MkNCNiAvKiBET01IVE1MVGFibGVDb2xFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUJF
QkIzMDBBOTdGMjgwMDA3MDJDQjYgLyogRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTg1QkVCQjRDMEE5N0Y0NjQwMDcwMkNCNiAvKiBET01IVE1MVGFibGVS
b3dFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUJFQkI2MDBBOTdGNjFDMDA3MDJDQjYg
LyogRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjdGQzY5
MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFCN0ZDNkMwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFCN0ZDNkYwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbk5vZGUu
aCBpbiBIZWFkZXJzICovLApAQCAtNjQxOSw2ICs2OTc1LDE2IEBACiAJCQkJMUFDRTUzRjcwQThE
MTk0NzAwMjI5NDdEIC8qIEpTWE1MU2VyaWFsaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE3
NTBENUQwQTkwREVFMTAwMEZGMjE1IC8qIEpTVHJlZVdhbGtlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUE3NTBEOEUwQTkwRTUyMTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk4NTA4OUNENzBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk4NTA4OUNEOTBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ29tbWVu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODUwODlDREIwQTk4QzQyODAwQTI3NUFBIC8qIERPTURv
Y3VtZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1MDg5Q0REMEE5OEM0MjgwMEEy
NzVBQSAvKiBET01FbnRpdHlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1RjU2QTdB
MEE5OENFMzcwMEFEQjYwQSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTg1RDM4OUIyMEE5OTFBN0YwMDI4MjE0NSAvKiBET01BdHRyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk4NUQzODlGQzBBOTk0MTE3MDAyODIxNDUgLyogRE9NSFRNTENvbGxlY3Rpb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCTg1RDM4QTA2MEE5OTQyREMwMDI4MjE0NSAvKiBET01DU1NQ
cmltaXRpdmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODUwN0MwODkwQTlBMzAwRjAwRkJD
ODk1IC8qIERPTUNTU1ZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUZCRTlGNjBBOUE0MjQ2
MDAwQTJBNEUgLyogRE9NQ1NTUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC02NDUyLDEyICs3MDE4
LDYgQEAKIAkJMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0g
ewogCQkJaXNhID0gUEJYUHJvamVjdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDlD
Mjg0MzA4OTAyQjExMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQ
cm9qZWN0ICJXZWJDb3JlIiAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQl9OwotCQkJYnVp
bGRTdHlsZXMgPSAoCi0JCQkJQkNEMzE4ODYwQTkyOTA5NDAwQkYxRDVGIC8qIERldmVsb3BtZW50
ICovLAotCQkJCUJDRDMxODg3MEE5MjkwOTQwMEJGMUQ1RiAvKiBEZXBsb3ltZW50ICovLAotCQkJ
KTsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0gKAog
CQkJCUVuZ2xpc2gsCkBAIC02NTE2LDYgKzcwNzYsOSBAQAogCQkJCTFDRDQ0MThGMEE0Q0U3NkYw
MEEwMDdBQiAvKiBub3J0aFNvdXRoUmVzaXplQ3Vyc29yLnRpZmYgaW4gUmVzb3VyY2VzICovLAog
CQkJCTFDRDQ0MTkwMEE0Q0U3NkYwMEEwMDdBQiAvKiBub3J0aFdlc3RTb3V0aEVhc3RSZXNpemVD
dXJzb3IudGlmZiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUE3NTBEODgwQTkwRTM5NDAwMEZGMjE1
IC8qIE5vZGVJdGVyYXRvci5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCTg1MDg5Q0M4MEE5OEMy
MjYwMEEyNzVBQSAvKiBDb21tZW50LmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJODUwODlDQ0Ew
QTk4QzJBQjAwQTI3NUFBIC8qIENEQVRBU2VjdGlvbi5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJ
CTg1MDg5Q0NDMEE5OEMzM0EwMEEyNzVBQSAvKiBFbnRpdHlSZWZlcmVuY2UuaWRsIGluIFJlc291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTcyNzUsNiArNzgzOCw3MyBAQAogCQkJCUJDQUE5MEMzMEE3RUJBNjAwMDhC
MTIyOSAvKiBTY3JvbGxCYXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNCMEZEOEEwQTc1OUJF
RDAwODBBRDQ0IC8qIFN0cmluZ0ltcGxNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0IwRkQ4
QjBBNzU5QkVEMDA4MEFENDQgLyogU3RyaW5nTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODVG
OTJBRTkwQThCQzc3QjAwNzhGOUQ0IC8qIERPTUhUTUxEaXZFbGVtZW50Lm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJODU5QjdGQzMwQThEMjhGMjAwQTVGMUVBIC8qIERPTUhUTUxIZWFkRWxlbWVudC5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTg1OUI3RkM1MEE4RDI4RjIwMEE1RjFFQSAvKiBET01IVE1M
SHRtbEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTlCN0ZDQjBBOEQyOEY4MDBBNUYx
RUEgLyogRE9NSFRNTE1vZEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTlCODAzODBB
OEQzMUE2MDBBNUYxRUEgLyogRE9NSFRNTFRpdGxlRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTg1NjcyQTJDMEE4RDRERjQwMEIyNDFFNSAvKiBET01IVE1MTWV0YUVsZW1lbnQubW0gaW4g
U291cmNlcyAqLywKKwkJCQk4NTY3MkEzRTBBOEQ0RTNDMDBCMjQxRTUgLyogRE9NSFRNTEJhc2VF
bGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODU2NzJBOTkwQThENTEyMjAwQjI0MUU1IC8q
IERPTUhUTUxVTGlzdEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTY3MkFBMTBBOEQ1
MUQ0MDBCMjQxRTUgLyogRE9NSFRNTFF1b3RlRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTg1NjcyQURBMEE4RDUyRjEwMEIyNDFFNSAvKiBET01IVE1MUGFyYW1FbGVtZW50Lm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJODU2NzJBRjUwQThENTM4MTAwQjI0MUU1IC8qIERPTUhUTUxQYXJhZ3Jh
cGhFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODU2NzJCMEIwQThENTNFMDAwQjI0MUU1
IC8qIERPTUhUTUxPcHRHcm91cEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTY3MkIy
NjBBOEQ1NEIzMDBCMjQxRTUgLyogRE9NSFRNTE9MaXN0RWxlbWVudC5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTg1NjcyQjJDMEE4RDU1MDMwMEIyNDFFNSAvKiBET01IVE1MTWVudUVsZW1lbnQubW0g
aW4gU291cmNlcyAqLywKKwkJCQk4NTY3MkI3ODBBOEQ1NkY4MDBCMjQxRTUgLyogRE9NSFRNTExJ
RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1NjcyQjg1MEE4RDU3OTEwMEIyNDFFNSAv
KiBET01IVE1MSFJFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODU2NzJCOTMwQThENTdG
NTAwQjI0MUU1IC8qIERPTUhUTUxIZWFkaW5nRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTg1NjcyQjlGMEE4RDU4N0YwMEIyNDFFNSAvKiBET01IVE1MRm9udEVsZW1lbnQubW0gaW4gU291
cmNlcyAqLywKKwkJCQk4NTY3MkJCMjBBOEQ1OTVEMDBCMjQxRTUgLyogRE9NSFRNTERMaXN0RWxl
bWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1QTVDOEMzMEE4RDVEOEIwMEEzQ0Y5MCAvKiBE
T01IVE1MQmFzZUZvbnRFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODVBNUM4Q0IwQThE
NURCOTAwQTNDRjkwIC8qIERPTUhUTUxEaXJlY3RvcnlFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJODVBNUM4RDEwQThENURFNTAwQTNDRjkwIC8qIERPTUhUTUxCUkVsZW1lbnQubW0gaW4g
U291cmNlcyAqLywKKwkJCQk4NTI2RDVGMjBBOEZEQjJFMDA5MjM0QjEgLyogRE9NVGV4dC5tbSBp
biBTb3VyY2VzICovLAorCQkJCTg1MjZENjVGMEE4RkU1NUEwMDkyMzRCMSAvKiBET01DaGFyYWN0
ZXJEYXRhLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODUyNkQ3NjUwQThGRjM5MjAwOTIzNEIxIC8q
IERPTU5hbWVkTm9kZU1hcC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1QTg1QUZBMEE5MDI5MDUw
MEE1Q0YzQSAvKiBET01Ob2RlTGlzdC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1QTVDNTU5MEE5
MDMwQkIwMEY5MUYyQyAvKiBET01FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODUzOUI1
MDkwQTkwM0Q0NTAwMzY2QzJEIC8qIERPTURPTUltcGxlbWVudGF0aW9uLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJODU2Qzg5NkQwQTkwRTE4NDAwNUM2ODdCIC8qIERPTURvY3VtZW50Lm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJODU2Qzg5RkQwQTkwRjA2ODAwNUM2ODdCIC8qIERPTU5vZGUubW0gaW4g
U291cmNlcyAqLywKKwkJCQk4NTZDOEFFNTBBOTEyNjQ5MDA1QzY4N0IgLyogRE9NT2JqZWN0Lm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJODU2RTA1RTAwQTkzOTUwNjAwQTI0NzM5IC8qIERPTUhUTUxF
bGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODVGRDE3QTIwQTkzQzNCRjAwNkMwODQyIC8q
IERPTUhUTUxTdHlsZUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NUZEMTg5NTBBOTNF
RDUwMDA2QzA4NDIgLyogRE9NSFRNTFNjcmlwdEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJ
CQk4NUZEMThFMTBBOTNFRUY5MDA2QzA4NDIgLyogRE9NSFRNTFByZUVsZW1lbnQubW0gaW4gU291
cmNlcyAqLywKKwkJCQk4NUQ5ODM2QjBBOTNGQjY4MDA3QThBOTggLyogRE9NSFRNTExpbmtFbGVt
ZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODVEOTgzREMwQTkzRkQ4NzAwN0E4QTk4IC8qIERP
TUhUTUxJbWFnZUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTBFNjFERDBBOTQwNkYw
MDBFRkI3M0EgLyogRE9NSFRNTERvY3VtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODUwRTYz
RDQwQTk0MTg4NzAwRUZCNzNBIC8qIERPTUhUTUxCb2R5RWxlbWVudC5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTg1MEU2NDA2MEE5NDFDMjQwMEVGQjczQSAvKiBET01IVE1MQXJlYUVsZW1lbnQubW0g
aW4gU291cmNlcyAqLywKKwkJCQk4NTBFNjUyODBBOTQzNzdCMDBFRkI3M0EgLyogRE9NSFRNTElG
cmFtZUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTBFNjU1QjBBOTQzQUY0MDBFRkI3
M0EgLyogRE9NSFRNTEZyYW1lRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1MEU2NTVE
MEE5NDNBRjQwMEVGQjczQSAvKiBET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJODUwRTY1QTkwQTk0OEY0MDAwRUZCNzNBIC8qIERPTUhUTUxBcHBsZXRFbGVtZW50
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODUwRTY1RDcwQTk0OTNFRDAwRUZCNzNBIC8qIERPTUhU
TUxPYmplY3RFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODUwRTY3NDEwQTk1MEY1MjAw
RUZCNzNBIC8qIERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTg1Q0E5NkI5MEE5NjIxQTYwMDY5MENDRiAvKiBET01FbnRpdHkubW0gaW4gU291cmNlcyAqLywK
KwkJCQk4NUNBOTZFQjBBOTYyNEU5MDA2OTBDQ0YgLyogRE9NTm90YXRpb24ubW0gaW4gU291cmNl
cyAqLywKKwkJCQk4NUNBOTc1RDBBOTYyRTU0MDA2OTBDQ0YgLyogRE9NRG9jdW1lbnRUeXBlLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJODVDQTk4QjAwQTk2NjAyMTAwNjkwQ0NGIC8qIERPTUhUTUxB
bmNob3JFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODVDQTk5M0YwQTk2NjYzRDAwNjkw
Q0NGIC8qIERPTUhUTUxNYXBFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODVDQTk5ODEw
QTk2NjdFMDAwNjkwQ0NGIC8qIERPTUhUTUxJc0luZGV4RWxlbWVudC5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTg1Q0E5QTBBMEE5Njk3QTgwMDY5MENDRiAvKiBET01IVE1MSW5wdXRFbGVtZW50Lm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJODVDQTlBNEIwQTk2OUExNTAwNjkwQ0NGIC8qIERPTUhUTUxC
dXR0b25FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODVDQTlBRTYwQTk2QTA5QjAwNjkw
Q0NGIC8qIERPTUhUTUxMYWJlbEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTM5NTRE
MTBBOTZBRjU3MDBGQTNEMEUgLyogRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTg1Mzk1NEQzMEE5NkFGNTcwMEZBM0QwRSAvKiBET01IVE1MTGVnZW5kRWxlbWVu
dC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1NUMyREE2MEE5NkJCOEIwMDA0RjE3MSAvKiBET01I
VE1MRm9ybUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTVDMkRFODBBOTZDRjBBMDAw
NEYxNzEgLyogRE9NSFRNTFRleHRBcmVhRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1
NDQ4OUM1MEE5NzY5MEIwMEI4QkE4OSAvKiBET01IVE1MU2VsZWN0RWxlbWVudC5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTg1RDYzMDEwMEE5N0I3ODQwMDMzMjQ0MyAvKiBET01IVE1MT3B0aW9uRWxl
bWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1QkVCQUQzMEE5N0VBNjcwMDcwMkNCNiAvKiBE
T01IVE1MVGFibGVFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODVCRUJBRjMwQTk3RUYx
RDAwNzAyQ0I2IC8qIERPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJODVCRUJCMUMwQTk3RjA4QjAwNzAyQ0I2IC8qIERPTUhUTUxUYWJsZUNvbEVsZW1lbnQu
bW0gaW4gU291cmNlcyAqLywKKwkJCQk4NUJFQkIzMTBBOTdGMjgwMDA3MDJDQjYgLyogRE9NSFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NUJFQkI0RDBBOTdG
NDY0MDA3MDJDQjYgLyogRE9NSFRNTFRhYmxlUm93RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTg1QkVCQjYxMEE5N0Y2MUMwMDcwMkNCNiAvKiBET01IVE1MVGFibGVDZWxsRWxlbWVudC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdGQzY4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2
YWx1YXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RkM2QjBBOEI5MkVDMDBEOUQzN0Ig
LyogWFBhdGhFeHByZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdGQzZFMEE4Qjky
RUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb25Ob2RlLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
NzI5Nyw2ICs3OTI3LDE2IEBACiAJCQkJMUE3NTBEOEQwQTkwRTUyMTAwMEZGMjE1IC8qIEpTTm9k
ZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNzUwREQ0MEE5MEU3MjkwMDBGRjIx
NSAvKiBKU05vZGVJdGVyYXRvckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTc1MEUz
NDBBOTBGODlGMDAwRkYyMTUgLyogSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTg1MDg5Q0Q4MEE5OEM0MjgwMEEyNzVBQSAvKiBET01DREFUQVNlY3Rpb24ubW0gaW4g
U291cmNlcyAqLywKKwkJCQk4NTA4OUNEQTBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ29tbWVudC5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTg1MDg5Q0RDMEE5OEM0MjgwMEEyNzVBQSAvKiBET01Eb2N1
bWVudEZyYWdtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODUwODlDREUwQTk4QzQyODAwQTI3
NUFBIC8qIERPTUVudGl0eVJlZmVyZW5jZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1RjU2QTdC
MEE5OENFMzcwMEFEQjYwQSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0gaW4gU291cmNl
cyAqLywKKwkJCQk4NUQzODlCMzBBOTkxQTdGMDAyODIxNDUgLyogRE9NQXR0ci5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTg1RDM4OUZEMEE5OTQxMTcwMDI4MjE0NSAvKiBET01IVE1MQ29sbGVjdGlv
bi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1RDM4QTA3MEE5OTQyREMwMDI4MjE0NSAvKiBET01D
U1NQcmltaXRpdmVWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1MDdDMDhBMEE5QTMwMEYw
MEZCQzg5NSAvKiBET01DU1NWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1RkJFOUY3MEE5
QTQyNDYwMDBBMkE0RSAvKiBET01DU1NSdWxlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET00ubW0JKHJldmlzaW9uIDE1OTQ1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TS5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDQtMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAwNiBKYW1lcyBHLiBTcGV0aCAoc3BldGhAZW5kLmNvbSkKKyAqIENv
cHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNiArNTksOTMgQEAKICNpbXBvcnQg
IlJlbmRlckltYWdlLmgiCiAjaW1wb3J0ICJUcmVlV2Fsa2VyLmgiCiAjaW1wb3J0ICJXZWJTY3Jp
cHRPYmplY3RQcml2YXRlLmgiCisKKworLy8gRnJvbSBvbGQgRE9NQ29yZS5oCisjaW1wb3J0ICJE
T01BdHRyLmgiCisjaW1wb3J0ICJET01DaGFyYWN0ZXJEYXRhLmgiCisjaW1wb3J0ICJET01ET01J
bXBsZW1lbnRhdGlvbi5oIgorI2ltcG9ydCAiRE9NRG9jdW1lbnQuaCIKKyNpbXBvcnQgIkRPTUVs
ZW1lbnQuaCIKKyNpbXBvcnQgIkRPTU5hbWVkTm9kZU1hcC5oIgorI2ltcG9ydCAiRE9NTm9kZS5o
IgorI2ltcG9ydCAiRE9NTm9kZUxpc3QuaCIKKyNpbXBvcnQgIkRPTU9iamVjdC5oIgorI2ltcG9y
dCAiRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCisjaW1wb3J0ICJET01UZXh0LmgiCisKKy8v
IEdlbmVyYXRlZCBPYmplY3RpdmUtQyBCaW5kaW5ncworI2ltcG9ydCAiRE9NQ0RBVEFTZWN0aW9u
LmgiCisjaW1wb3J0ICJET01Db21tZW50LmgiCisjaW1wb3J0ICJET01Eb2N1bWVudEZyYWdtZW50
LmgiCisjaW1wb3J0ICJET01Eb2N1bWVudFR5cGUuaCIKKyNpbXBvcnQgIkRPTUVudGl0eS5oIgor
I2ltcG9ydCAiRE9NRW50aXR5UmVmZXJlbmNlLmgiCisjaW1wb3J0ICJET01Ob3RhdGlvbi5oIgor
CisKKy8vIEZyb20gb2xkIERPTUhUTUwuaAorI2ltcG9ydCAiRE9NSFRNTEFuY2hvckVsZW1lbnQu
aCIKKyNpbXBvcnQgIkRPTUhUTUxBcHBsZXRFbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1MQ29s
bGVjdGlvbi5oIgorI2ltcG9ydCAiRE9NSFRNTERvY3VtZW50LmgiCisjaW1wb3J0ICJET01IVE1M
RWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTEZyYW1lRWxlbWVudC5oIgorI2ltcG9ydCAiRE9N
SFRNTEZyYW1lU2V0RWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTElGcmFtZUVsZW1lbnQuaCIK
KyNpbXBvcnQgIkRPTUhUTUxPYmplY3RFbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1MT3B0aW9u
RWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCisjaW1wb3J0
ICJET01IVE1MU2VsZWN0RWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTFRhYmxlQ2FwdGlvbkVs
ZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxUYWJsZUNlbGxFbGVtZW50LmgiCisjaW1wb3J0ICJE
T01IVE1MVGFibGVDb2xFbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1MVGFibGVFbGVtZW50Lmgi
CisjaW1wb3J0ICJET01IVE1MVGFibGVSb3dFbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1MVGFi
bGVTZWN0aW9uRWxlbWVudC5oIgorCisvLyBHZW5lcmF0ZWQgT2JqZWN0aXZlLUMgQmluZGluZ3MK
KyNpbXBvcnQgIkRPTUhUTUxBcmVhRWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTEJSRWxlbWVu
dC5oIgorI2ltcG9ydCAiRE9NSFRNTEJhc2VFbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1MQmFz
ZUZvbnRFbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1MQm9keUVsZW1lbnQuaCIKKyNpbXBvcnQg
IkRPTUhUTUxCdXR0b25FbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1MRExpc3RFbGVtZW50Lmgi
CisjaW1wb3J0ICJET01IVE1MRGlyZWN0b3J5RWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTERp
dkVsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxGaWVsZFNldEVsZW1lbnQuaCIKKyNpbXBvcnQg
IkRPTUhUTUxGb250RWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTEZvcm1FbGVtZW50LmgiCisj
aW1wb3J0ICJET01IVE1MSFJFbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1MSGVhZEVsZW1lbnQu
aCIKKyNpbXBvcnQgIkRPTUhUTUxIZWFkaW5nRWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTEh0
bWxFbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1MSW1hZ2VFbGVtZW50LmgiCisjaW1wb3J0ICJE
T01IVE1MSW5wdXRFbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1MSXNJbmRleEVsZW1lbnQuaCIK
KyNpbXBvcnQgIkRPTUhUTUxMSUVsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxMYWJlbEVsZW1l
bnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxMZWdlbmRFbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1M
TGlua0VsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxNYXBFbGVtZW50LmgiCisjaW1wb3J0ICJE
T01IVE1MTWVudUVsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxNZXRhRWxlbWVudC5oIgorI2lt
cG9ydCAiRE9NSFRNTE1vZEVsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxPTGlzdEVsZW1lbnQu
aCIKKyNpbXBvcnQgIkRPTUhUTUxPYmplY3RFbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1MT3B0
R3JvdXBFbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1MUGFyYWdyYXBoRWxlbWVudC5oIgorI2lt
cG9ydCAiRE9NSFRNTFBhcmFtRWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTFByZUVsZW1lbnQu
aCIKKyNpbXBvcnQgIkRPTUhUTUxRdW90ZUVsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxTY3Jp
cHRFbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1MU3R5bGVFbGVtZW50LmgiCisjaW1wb3J0ICJE
T01IVE1MVGV4dEFyZWFFbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1MVGl0bGVFbGVtZW50Lmgi
CisjaW1wb3J0ICJET01IVE1MVUxpc3RFbGVtZW50LmgiCisKKwogI2ltcG9ydCA8b2JqYy9vYmpj
LWNsYXNzLmg+CiAKIHVzaW5nIFdlYkNvcmU6OkF0b21pY1N0cmluZzsKQEAgLTk3LDIwICsxODUs
NiBAQCB1c2luZyBXZWJDb3JlOjpUcmVlV2Fsa2VyOwogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTo6SFRNTE5hbWVzOwogCi1AaW50ZXJmYWNlIERPTUF0dHIgKFdlYkNvcmVJbnRlcm5hbCkKLSsg
KERPTUF0dHIgKilfYXR0cldpdGg6KEF0dHIgKilpbXBsOwotLSAoQXR0ciAqKV9hdHRyOwotQGVu
ZAotCi1AaW50ZXJmYWNlIERPTURvY3VtZW50VHlwZSAoV2ViQ29yZUludGVybmFsKQotLSAoRG9j
dW1lbnRUeXBlICopX2RvY3VtZW50VHlwZTsKLUBlbmQKLQotQGludGVyZmFjZSBET01JbXBsZW1l
bnRhdGlvbiAoV2ViQ29yZUludGVybmFsKQotKyAoRE9NSW1wbGVtZW50YXRpb24gKilfRE9NSW1w
bGVtZW50YXRpb25XaXRoOihET01JbXBsZW1lbnRhdGlvbkZyb250ICopaW1wbDsKLS0gKERPTUlt
cGxlbWVudGF0aW9uRnJvbnQgKilfRE9NSW1wbGVtZW50YXRpb247Ci1AZW5kCi0KIGNsYXNzIE9i
akNFdmVudExpc3RlbmVyIDogcHVibGljIEV2ZW50TGlzdGVuZXIgewogcHVibGljOgogICAgIHN0
YXRpYyBPYmpDRXZlbnRMaXN0ZW5lciAqZmluZChpZCA8RE9NRXZlbnRMaXN0ZW5lcj4pOwpAQCAt
MTM0LDM5ICsyMDgsNiBAQCBzdGF0aWMgTGlzdGVuZXJNYXAqIGxpc3RlbmVyTWFwOwogLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTU9iamVjdAogCi1AaW1wbGVtZW50
YXRpb24gRE9NT2JqZWN0Ci0KLS8vIFByZXZlbnQgY3JlYXRpb24gb2YgRE9NIG9iamVjdHMgYnkg
Y2xpZW50cyB3aG8ganVzdCAiW1t4eHggYWxsb2NdIGluaXRdIi4KLS0gKGlkKWluaXQKLXsKLSAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1hdDpAIitbJUAgaW5p
dF06IHNob3VsZCBuZXZlciBiZSB1c2VkIiwgTlNTdHJpbmdGcm9tQ2xhc3MoW3NlbGYgY2xhc3Nd
KV07Ci0gICAgW3NlbGYgcmVsZWFzZV07Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAodm9pZClk
ZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICByZW1vdmVET01XcmFwcGVy
KF9pbnRlcm5hbCk7Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClm
aW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgcmVtb3ZlRE9NV3JhcHBl
cihfaW50ZXJuYWwpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChpZClj
b3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKLXsKLSAgICByZXR1cm4gW3NlbGYgcmV0YWluXTsK
LX0KLQotQGVuZAotCiBAaW1wbGVtZW50YXRpb24gRE9NT2JqZWN0IChXZWJDb3JlSW50ZXJuYWwp
CiAKIC0gKGlkKV9pbml0CkBAIC0xNzksMjY4ICsyMjAsNiBAQCBzdGF0aWMgTGlzdGVuZXJNYXAq
IGxpc3RlbmVyTWFwOwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERP
TU5vZGUKIAotQGltcGxlbWVudGF0aW9uIERPTU5vZGUKLQotLSAodm9pZClkZWFsbG9jCi17Ci0g
ICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkt
PmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5h
bGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZSAqPihf
aW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0t
IChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCi17Ci0gICAgaWYgKCFfaW50ZXJuYWwpIHsKLSAgICAg
ICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiBudWxsPiIsCi0gICAg
ICAgICAgICBbW3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9uXSwgc2VsZl07Ci0gICAgfQotICAgIE5T
U3RyaW5nICp2YWx1ZSA9IFtzZWxmIG5vZGVWYWx1ZV07Ci0gICAgaWYgKHZhbHVlKSB7Ci0gICAg
ICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQCBbJUBdOiAlcCAnJUAn
PiIsCi0gICAgICAgICAgICBbW3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9uXSwgW3NlbGYgbm9kZU5h
bWVdLCBfaW50ZXJuYWwsIHZhbHVlXTsKLSAgICB9Ci0gICAgcmV0dXJuIFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiPCVAIFslQF06ICVwPiIsCi0gICAgICAgIFtbc2VsZiBjbGFzc10gZGVz
Y3JpcHRpb25dLCBbc2VsZiBub2RlTmFtZV0sIF9pbnRlcm5hbF07Ci19Ci0KLS0gKE5TU3RyaW5n
ICopbm9kZU5hbWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2RlTmFtZSgpOwotfQot
Ci0tIChOU1N0cmluZyAqKW5vZGVWYWx1ZQotewotICAgIC8vIERvY3VtZW50YXRpb24gc2F5cyB3
ZSBjYW4gcmFpc2UgYSBET01TVFJJTkdfU0laRV9FUlIuCi0gICAgLy8gSG93ZXZlciwgdGhlIGxv
d2VyIGxheWVyIGRvZXMgbm90IHJlcG9ydCB0aGF0IGVycm9yIHVwIHRvIHVzLgotICAgIHJldHVy
biBbc2VsZiBfbm9kZV0tPm5vZGVWYWx1ZSgpOwotfQotCi0tICh2b2lkKXNldE5vZGVWYWx1ZToo
TlNTdHJpbmcgKilzdHJpbmcKLXsKLSAgICBBU1NFUlQoc3RyaW5nKTsKLSAgICAKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfbm9kZV0tPnNldE5vZGVWYWx1ZShzdHJpbmcs
IGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh1bnNpZ25lZCBzaG9ydClu
b2RlVHlwZQotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPm5vZGVUeXBlKCk7Ci19Ci0KLS0g
KERPTU5vZGUgKilwYXJlbnROb2RlCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpb
c2VsZiBfbm9kZV0tPnBhcmVudE5vZGUoKV07Ci19Ci0KLS0gKERPTU5vZGVMaXN0ICopY2hpbGRO
b2RlcwotewotICAgIHJldHVybiBbRE9NTm9kZUxpc3QgX25vZGVMaXN0V2l0aDpbc2VsZiBfbm9k
ZV0tPmNoaWxkTm9kZXMoKS5nZXQoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilmaXJzdENoaWxkCi17
Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPmZpcnN0Q2hpbGQo
KV07Ci19Ci0KLS0gKERPTU5vZGUgKilsYXN0Q2hpbGQKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUg
X25vZGVXaXRoOltzZWxmIF9ub2RlXS0+bGFzdENoaWxkKCldOwotfQotCi0tIChET01Ob2RlICop
cHJldmlvdXNTaWJsaW5nCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBf
bm9kZV0tPnByZXZpb3VzU2libGluZygpXTsKLX0KLQotLSAoRE9NTm9kZSAqKW5leHRTaWJsaW5n
Ci17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPm5leHRTaWJs
aW5nKCldOwotfQotCi0tIChET01OYW1lZE5vZGVNYXAgKilhdHRyaWJ1dGVzCi17Ci0gICAgLy8g
RE9NIGxldmVsIDIgY29yZSBzcGVjaWZpY2F0aW9uIHNheXM6IAotICAgIC8vIEEgTmFtZWROb2Rl
TWFwIGNvbnRhaW5pbmcgdGhlIGF0dHJpYnV0ZXMgb2YgdGhpcyBub2RlIChpZiBpdCBpcyBhbiBF
bGVtZW50KSBvciBudWxsIG90aGVyd2lzZS4KLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChET01E
b2N1bWVudCAqKW93bmVyRG9jdW1lbnQKLXsKLSAgICByZXR1cm4gW0RPTURvY3VtZW50IF9kb2N1
bWVudFdpdGg6W3NlbGYgX25vZGVdLT5kb2N1bWVudCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKWlu
c2VydEJlZm9yZTooRE9NTm9kZSAqKW5ld0NoaWxkIDooRE9NTm9kZSAqKXJlZkNoaWxkCi17Ci0g
ICAgQVNTRVJUKG5ld0NoaWxkKTsKLSAgICBBU1NFUlQocmVmQ2hpbGQpOwotCi0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKFtzZWxmIF9ub2RlXS0+aW5zZXJ0QmVmb3JlKFtuZXdD
aGlsZCBfbm9kZV0sIFtyZWZDaGlsZCBfbm9kZV0sIGVjKSkKLSAgICAgICAgcmV0dXJuIG5ld0No
aWxkOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAo
RE9NTm9kZSAqKXJlcGxhY2VDaGlsZDooRE9NTm9kZSAqKW5ld0NoaWxkIDooRE9NTm9kZSAqKW9s
ZENoaWxkCi17Ci0gICAgQVNTRVJUKG5ld0NoaWxkKTsKLSAgICBBU1NFUlQob2xkQ2hpbGQpOwot
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKFtzZWxmIF9ub2RlXS0+cmVwbGFj
ZUNoaWxkKFtuZXdDaGlsZCBfbm9kZV0sIFtvbGRDaGlsZCBfbm9kZV0sIGVjKSkKLSAgICAgICAg
cmV0dXJuIG9sZENoaWxkOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIG5p
bDsKLX0KLQotLSAoRE9NTm9kZSAqKXJlbW92ZUNoaWxkOihET01Ob2RlICopb2xkQ2hpbGQKLXsK
LSAgICBBU1NFUlQob2xkQ2hpbGQpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
aWYgKFtzZWxmIF9ub2RlXS0+cmVtb3ZlQ2hpbGQoW29sZENoaWxkIF9ub2RlXSwgZWMpKQotICAg
ICAgICByZXR1cm4gb2xkQ2hpbGQ7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1
cm4gbmlsOwotfQotCi0tIChET01Ob2RlICopYXBwZW5kQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGls
ZAotewotICAgIEFTU0VSVChuZXdDaGlsZCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBpZiAoW3NlbGYgX25vZGVdLT5hcHBlbmRDaGlsZChbbmV3Q2hpbGQgX25vZGVdLCBlYykp
Ci0gICAgICAgIHJldHVybiBuZXdDaGlsZDsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAg
IHJldHVybiBuaWw7Ci19Ci0KLS0gKEJPT0wpaGFzQ2hpbGROb2RlcwotewotICAgIHJldHVybiBb
c2VsZiBfbm9kZV0tPmhhc0NoaWxkTm9kZXMoKTsKLX0KLQotLSAoRE9NTm9kZSAqKWNsb25lTm9k
ZTooQk9PTClkZWVwCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9k
ZV0tPmNsb25lTm9kZShkZWVwKS5nZXQoKV07Ci19Ci0KLS0gKHZvaWQpbm9ybWFsaXplCi17Ci0g
ICAgW3NlbGYgX25vZGVdLT5ub3JtYWxpemUoKTsKLX0KLQotLSAoQk9PTClpc1N1cHBvcnRlZDoo
TlNTdHJpbmcgKilmZWF0dXJlIDooTlNTdHJpbmcgKil2ZXJzaW9uCi17Ci0gICAgQVNTRVJUKGZl
YXR1cmUpOwotICAgIEFTU0VSVCh2ZXJzaW9uKTsKLQotICAgIHJldHVybiBbc2VsZiBfbm9kZV0t
PmlzU3VwcG9ydGVkKGZlYXR1cmUsIHZlcnNpb24pOwotfQotCi0tIChOU1N0cmluZyAqKW5hbWVz
cGFjZVVSSQotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPm5hbWVzcGFjZVVSSSgpOwotfQot
Ci0tIChOU1N0cmluZyAqKXByZWZpeAotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPnByZWZp
eCgpOwotfQotCi0tICh2b2lkKXNldFByZWZpeDooTlNTdHJpbmcgKilwcmVmaXgKLXsKLSAgICBB
U1NFUlQocHJlZml4KTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFN0cmluZyBw
cmVmaXhTdHIocHJlZml4KTsKLSAgICBbc2VsZiBfbm9kZV0tPnNldFByZWZpeChwcmVmaXhTdHIu
aW1wbCgpLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoTlNTdHJpbmcg
Kilsb2NhbE5hbWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5sb2NhbE5hbWUoKTsKLX0K
LQotLSAoQk9PTCloYXNBdHRyaWJ1dGVzCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aGFz
QXR0cmlidXRlcygpOwotfQotCi0tIChCT09MKWlzU2FtZU5vZGU6KERPTU5vZGUgKilvdGhlcgot
ewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmlzU2FtZU5vZGUoW290aGVyIF9ub2RlXSk7Ci19
Ci0KLS0gKEJPT0wpaXNFcXVhbE5vZGU6KERPTU5vZGUgKilvdGhlcgotewotICAgIHJldHVybiBb
c2VsZiBfbm9kZV0tPmlzRXF1YWxOb2RlKFtvdGhlciBfbm9kZV0pOwotfQotCi0tIChCT09MKWlz
RGVmYXVsdE5hbWVzcGFjZTooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkKLXsKLSAgICByZXR1cm4g
W3NlbGYgX25vZGVdLT5pc0RlZmF1bHROYW1lc3BhY2UobmFtZXNwYWNlVVJJKTsKLX0KLQotLSAo
TlNTdHJpbmcgKilsb29rdXBQcmVmaXg6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJCi17Ci0gICAg
cmV0dXJuIFtzZWxmIF9ub2RlXS0+bG9va3VwUHJlZml4KG5hbWVzcGFjZVVSSSk7Ci19Ci0KLS0g
KE5TU3RyaW5nICopbG9va3VwTmFtZXNwYWNlVVJJOihOU1N0cmluZyAqKXByZWZpeAotewotICAg
IHJldHVybiBbc2VsZiBfbm9kZV0tPmxvb2t1cE5hbWVzcGFjZVVSSShwcmVmaXgpOwotfQotCi0t
IChOU1N0cmluZyAqKXRleHRDb250ZW50Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+dGV4
dENvbnRlbnQoKTsKLX0KLQotLSAodm9pZClzZXRUZXh0Q29udGVudDooTlNTdHJpbmcgKil0ZXh0
Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX25vZGVdLT5zZXRUZXh0
Q29udGVudCh0ZXh0LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoTlNS
ZWN0KWJvdW5kaW5nQm94Ci17Ci0gICAgV2ViQ29yZTo6UmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9
IFtzZWxmIF9ub2RlXS0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIpCi0gICAgICAgIHJl
dHVybiByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKLSAgICByZXR1cm4gTlNa
ZXJvUmVjdDsKLX0KLQotLSAoTlNBcnJheSAqKWxpbmVCb3hSZWN0cwotewotICAgIFdlYkNvcmU6
OlJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBbc2VsZiBfbm9kZV0tPnJlbmRlcmVyKCk7Ci0gICAg
aWYgKHJlbmRlcmVyKSB7Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5ICpyZXN1bHRzID0gW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF07Ci0gICAgICAgIERlcHJlY2F0ZWRWYWx1ZUxpc3Q8SW50
UmVjdD4gcmVjdHMgPSByZW5kZXJlci0+bGluZUJveFJlY3RzKCk7Ci0gICAgICAgIGlmICghcmVj
dHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBmb3IgKERlcHJlY2F0ZWRWYWx1ZUxpc3Q8SW50
UmVjdD46OkNvbnN0SXRlcmF0b3IgaXQgPSByZWN0cy5iZWdpbigpOyBpdCAhPSByZWN0cy5lbmQo
KTsgKytpdCkKLSAgICAgICAgICAgICAgICBbcmVzdWx0cyBhZGRPYmplY3Q6W05TVmFsdWUgdmFs
dWVXaXRoUmVjdDoqaXRdXTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gW3Jlc3VsdHMgYXV0
b3JlbGVhc2VdOwotICAgIH0KLSAgICByZXR1cm4gbmlsOwotfQotCi1AZW5kCi0KIHN0YXRpYyB2
b2lkIGFkZEVsZW1lbnRDbGFzcyhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWcsIENsYXNzIG9iakND
bGFzcykKIHsKICAgICBlbGVtZW50Q2xhc3NNYXAtPnNldCh0YWcubG9jYWxOYW1lKCkuaW1wbCgp
LCBvYmpDQ2xhc3MpOwpAQCAtNjY0LDk4ICs0NDMsNiBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENs
YXNzKGNvbnN0IEF0b21pY1N0CiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ly8gRE9NTmFtZWROb2RlTWFwCiAKLUBpbXBsZW1lbnRhdGlvbiBET01OYW1lZE5vZGVNYXAKLQot
LSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2Fz
dDxOYW1lZE5vZGVNYXAgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVy
IGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkg
ewotICAgICAgICBET01fY2FzdDxOYW1lZE5vZGVNYXAgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsK
LSAgICB9Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQotLSAoTmFtZWROb2RlTWFwICopX25h
bWVkTm9kZU1hcAotewotICAgIHJldHVybiBET01fY2FzdDxOYW1lZE5vZGVNYXAgKj4oX2ludGVy
bmFsKTsKLX0KLQotLSAoRE9NTm9kZSAqKWdldE5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1lCi17
Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2Vs
ZiBfbmFtZWROb2RlTWFwXS0+Z2V0TmFtZWRJdGVtKG5hbWUpLmdldCgpXTsKLX0KLQotLSAoRE9N
Tm9kZSAqKXNldE5hbWVkSXRlbTooRE9NTm9kZSAqKWFyZwotewotICAgIEFTU0VSVChhcmcpOwot
Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUg
X25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5zZXROYW1lZEl0ZW0oW2FyZyBfbm9kZV0s
IGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUgKilyZW1vdmVOYW1lZEl0ZW06KE5TU3Ry
aW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLQotICAgIGludCBleGNlcHRpb24gPSAw
OwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWRO
b2RlTWFwXS0+cmVtb3ZlTmFtZWRJdGVtKG5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJh
aXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERP
TU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPml0ZW0oaW5kZXgpLmdldCgpXTsKLX0KLQotLSAo
dW5zaWduZWQpbGVuZ3RoCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9uYW1lZE5vZGVNYXBdLT5sZW5n
dGgoKTsKLX0KLQotLSAoRE9NTm9kZSAqKWdldE5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVz
cGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgaWYgKCFuYW1lc3BhY2VVUkkg
fHwgIWxvY2FsTmFtZSkgewotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIHJldHVy
biBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPmdldE5hbWVkSXRlbU5T
KG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKS5nZXQoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilzZXRO
YW1lZEl0ZW1OUzooRE9NTm9kZSAqKWFyZwotewotICAgIEFTU0VSVChhcmcpOwotCi0gICAgaW50
IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRo
OltzZWxmIF9uYW1lZE5vZGVNYXBdLT5zZXROYW1lZEl0ZW1OUyhbYXJnIF9ub2RlXSwgZXhjZXB0
aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbU5TOihOU1N0cmluZyAq
KW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVz
cGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0g
MDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVk
Tm9kZU1hcF0tPnJlbW92ZU5hbWVkSXRlbU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCBleGNl
cHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi1AZW5kCi0KIEBpbXBsZW1lbnRhdGlvbiBET01OYW1lZE5vZGVNYXAg
KFdlYkNvcmVJbnRlcm5hbCkKIAogLSAoaWQpX2luaXRXaXRoTmFtZWROb2RlTWFwOihOYW1lZE5v
ZGVNYXAgKilpbXBsCkBAIC03ODcsNDQgKzQ3NCw5IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xh
c3MoY29uc3QgQXRvbWljU3QKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAv
LyBET01Ob2RlTGlzdAogCi1AaW1wbGVtZW50YXRpb24gRE9NTm9kZUxpc3QKK0BpbXBsZW1lbnRh
dGlvbiBET01Ob2RlTGlzdCAoV2ViQ29yZUludGVybmFsKQogCi0tICh2b2lkKWRlYWxsb2MKLXsK
LSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5vZGVMaXN0ICo+KF9pbnRl
cm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9p
ZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9k
ZUxpc3QgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGZpbmFsaXpl
XTsKLX0KLQotLSAoTm9kZUxpc3QgKilfbm9kZUxpc3QKLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8
Tm9kZUxpc3QgKj4oX2ludGVybmFsKTsKLX0KLQotLSAoRE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVk
KWluZGV4Ci17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZUxpc3Rd
LT5pdGVtKGluZGV4KV07Ci19Ci0KLS0gKHVuc2lnbmVkKWxlbmd0aAotewotICAgIHJldHVybiBb
c2VsZiBfbm9kZUxpc3RdLT5sZW5ndGgoKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24g
RE9NTm9kZUxpc3QgKFdlYkNvcmVJbnRlcm5hbCkKLQotLSAoaWQpX2luaXRXaXRoTm9kZUxpc3Q6
KE5vZGVMaXN0ICopaW1wbAorLSAoaWQpX2luaXRXaXRoTm9kZUxpc3Q6KE5vZGVMaXN0ICopaW1w
bAogewogICAgIEFTU0VSVChpbXBsKTsKIApAQCAtODUzLDU5ICs1MDUsNiBAQCBzdGF0aWMgQ2xh
c3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogLy8gRE9NSW1wbGVtZW50YXRpb24KIAotQGltcGxlbWVudGF0aW9uIERPTUlt
cGxlbWVudGF0aW9uCi0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpCi0g
ICAgICAgIERPTV9jYXN0PERPTUltcGxlbWVudGF0aW9uRnJvbnQgKj4oX2ludGVybmFsKS0+ZGVy
ZWYoKTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAg
ICBpZiAoX2ludGVybmFsKQotICAgICAgICBET01fY2FzdDxET01JbXBsZW1lbnRhdGlvbkZyb250
ICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQotLSAo
Qk9PTCloYXNGZWF0dXJlOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0cmluZyAqKXZlcnNpb24K
LXsKLSAgICBBU1NFUlQoZmVhdHVyZSk7Ci0gICAgQVNTRVJUKHZlcnNpb24pOwotCi0gICAgcmV0
dXJuIFtzZWxmIF9ET01JbXBsZW1lbnRhdGlvbl0tPmhhc0ZlYXR1cmUoZmVhdHVyZSwgdmVyc2lv
bik7Ci19Ci0KLS0gKERPTURvY3VtZW50VHlwZSAqKWNyZWF0ZURvY3VtZW50VHlwZTooTlNTdHJp
bmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKilwdWJsaWNJZCA6KE5TU3RyaW5nICopc3lz
dGVtSWQKLXsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7Ci0gICAgQVNTRVJUKHB1YmxpY0lk
KTsKLSAgICBBU1NFUlQoc3lzdGVtSWQpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgUmVmUHRyPERvY3VtZW50VHlwZT4gaW1wbCA9IFtzZWxmIF9ET01JbXBsZW1lbnRhdGlvbl0t
PmNyZWF0ZURvY3VtZW50VHlwZShxdWFsaWZpZWROYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQsIGVj
KTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01E
b2N1bWVudFR5cGUgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGwuZ2V0KCldKTsKLX0KLQotLSAo
RE9NRG9jdW1lbnQgKiljcmVhdGVEb2N1bWVudDooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihO
U1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlCi17Ci0g
ICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotCi0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPERvY3VtZW50PiBpbXBsID0gW3Nl
bGYgX0RPTUltcGxlbWVudGF0aW9uXS0+Y3JlYXRlRG9jdW1lbnQobmFtZXNwYWNlVVJJLCBxdWFs
aWZpZWROYW1lLCBbZG9jdHlwZSBfZG9jdW1lbnRUeXBlXSwgZWMpOwotICAgIHJhaXNlT25ET01F
cnJvcihlYyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURvY3VtZW50ICo+KFtET01Ob2Rl
IF9ub2RlV2l0aDppbXBsLmdldCgpXSk7Ci19Ci0KLS0gKERPTUhUTUxEb2N1bWVudCAqKWNyZWF0
ZUhUTUxEb2N1bWVudDooTlNTdHJpbmcgKil0aXRsZQotewotICAgIFJlZlB0cjxIVE1MRG9jdW1l
bnQ+IGltcGwgPSBbc2VsZiBfRE9NSW1wbGVtZW50YXRpb25dLT5jcmVhdGVIVE1MRG9jdW1lbnQo
dGl0bGUpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01IVE1MRG9jdW1lbnQgKj4oW0RPTU5v
ZGUgX25vZGVXaXRoOmltcGwuZ2V0KCldKTsKLX0KLUBlbmQKIAogQGltcGxlbWVudGF0aW9uIERP
TUltcGxlbWVudGF0aW9uIChET01JbXBsZW1lbnRhdGlvbkNTUykKIApAQCAtOTU4LDEwICs1NTcs
NiBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRE9NRG9jdW1lbnRGcmFnbWVudAogCi1AaW1w
bGVtZW50YXRpb24gRE9NRG9jdW1lbnRGcmFnbWVudAotCi1AZW5kCi0KIEBpbXBsZW1lbnRhdGlv
biBET01Eb2N1bWVudEZyYWdtZW50IChXZWJDb3JlSW50ZXJuYWwpCiAKICsgKERPTURvY3VtZW50
RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVudFdpdGg6KERvY3VtZW50RnJhZ21lbnQgKilpbXBs
CkBAIC05NzksMTQ4ICs1NzQsNiBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0
b21pY1N0CiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRE9NRG9jdW1l
bnQKIAotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50Ci0KLS0gKERPTU5vZGUgKilhZG9wdE5v
ZGU6KERPTU5vZGUgKilzb3VyY2UKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBE
T01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+YWRv
cHROb2RlKFtzb3VyY2UgX25vZGVdLCBlYykuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRG9jdW1lbnRUeXBlICopZG9jdHlw
ZQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudFR5cGUgKj4oW0RPTU5vZGUg
X25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmRvY3R5cGUoKV0pOwotfQotCi0tIChET01JbXBs
ZW1lbnRhdGlvbiAqKWltcGxlbWVudGF0aW9uCi17Ci0gICAgcmV0dXJuIFtET01JbXBsZW1lbnRh
dGlvbiBfRE9NSW1wbGVtZW50YXRpb25XaXRoOmltcGxlbWVudGF0aW9uRnJvbnQoW3NlbGYgX2Rv
Y3VtZW50XSldOwotfQotCi0tIChET01FbGVtZW50ICopZG9jdW1lbnRFbGVtZW50Ci17Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxm
IF9kb2N1bWVudF0tPmRvY3VtZW50RWxlbWVudCgpXSk7Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilj
cmVhdGVFbGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWUKLXsKLSAgICBBU1NFUlQodGFnTmFtZSk7
Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01FbGVtZW50ICpyZXN1bHQgPSBz
dGF0aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1l
bnRdLT5jcmVhdGVFbGVtZW50KHRhZ05hbWUsIGVjKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01F
cnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRG9jdW1lbnRGcmFnbWVu
dCAqKWNyZWF0ZURvY3VtZW50RnJhZ21lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9N
RG9jdW1lbnRGcmFnbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLmdldCgpXSk7Ci19Ci0KLS0gKERPTVRleHQgKiljcmVh
dGVUZXh0Tm9kZTooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxET01UZXh0ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9j
dW1lbnRdLT5jcmVhdGVUZXh0Tm9kZShkYXRhKS5nZXQoKV0pOwotfQotCi0tIChET01Db21tZW50
ICopY3JlYXRlQ29tbWVudDooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Db21tZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpb
c2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDb21tZW50KGRhdGEpLmdldCgpXSk7Ci19Ci0KLS0gKERP
TUNEQVRBU2VjdGlvbiAqKWNyZWF0ZUNEQVRBU2VjdGlvbjooTlNTdHJpbmcgKilkYXRhCi17Ci0g
ICAgQVNTRVJUKGRhdGEpOwotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTUNEQVRBU2Vj
dGlvbiAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RE9NQ0RBVEFTZWN0aW9uICo+KFtET01Ob2RlIF9u
b2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDREFUQVNlY3Rpb24oZGF0YSwgZXhjZXB0
aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLS0gKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKWNyZWF0ZVByb2Nl
c3NpbmdJbnN0cnVjdGlvbjooTlNTdHJpbmcgKil0YXJnZXQgOihOU1N0cmluZyAqKWRhdGEKLXsK
LSAgICBBU1NFUlQodGFyZ2V0KTsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgaW50IGV4Y2VwdGlv
biA9IDA7Ci0gICAgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICpyZXN1bHQgPSBzdGF0aWNfY2Fz
dDxET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9k
b2N1bWVudF0tPmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbih0YXJnZXQsIGRhdGEsIGV4Y2Vw
dGlvbikuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0tIChET01BdHRyICopY3JlYXRlQXR0cmlidXRlOihOU1N0cmluZyAq
KW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAg
RE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNy
ZWF0ZUF0dHJpYnV0ZShuYW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01FbnRpdHlSZWZl
cmVuY2UgKiljcmVhdGVFbnRpdHlSZWZlcmVuY2U6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFT
U0VSVChuYW1lKTsKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01FbnRpdHlSZWZlcmVu
Y2UgKnJlc3VsdCA9IHN0YXRpY19jYXN0PERPTUVudGl0eVJlZmVyZW5jZSAqPihbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRW50aXR5UmVmZXJlbmNlKG5hbWUsIGV4
Y2VwdGlvbikuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1l
OihOU1N0cmluZyAqKXRhZ25hbWUKLXsKLSAgICBBU1NFUlQodGFnbmFtZSk7Ci0gICAgcmV0dXJu
IFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOltzZWxmIF9kb2N1bWVudF0tPmdldEVsZW1lbnRz
QnlUYWdOYW1lKHRhZ25hbWUpLmdldCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKWltcG9ydE5vZGU6
KERPTU5vZGUgKilpbXBvcnRlZE5vZGUgOihCT09MKWRlZXAKLXsKLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYg
X2RvY3VtZW50XS0+aW1wb3J0Tm9kZShbaW1wb3J0ZWROb2RlIF9ub2RlXSwgZGVlcCwgZWMpLmdl
dCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LS0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50TlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJ
IDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7
Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVu
dF0tPmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGVjKS5nZXQo
KV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9N
RWxlbWVudCAqPihyZXN1bHQpOwotfQotCi0tIChET01BdHRyICopY3JlYXRlQXR0cmlidXRlTlM6
KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lCi17Ci0g
ICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotCi0g
ICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0
dHJXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwg
cXVhbGlmaWVkTmFtZSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4
Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZUxpc3QgKilnZXRF
bGVtZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICop
bG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2Fs
TmFtZSk7Ci0KLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX2Rv
Y3VtZW50XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSku
Z2V0KCldOwotfQotCi0tIChET01FbGVtZW50ICopZ2V0RWxlbWVudEJ5SWQ6KE5TU3RyaW5nICop
ZWxlbWVudElkCi17Ci0gICAgQVNTRVJUKGVsZW1lbnRJZCk7Ci0KLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RE9NRWxlbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+
Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKV0pOwotfQotCi1AZW5kCi0KIEBpbXBsZW1lbnRhdGlv
biBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRSYW5nZSkKIAogLSAoRE9NUmFuZ2UgKiljcmVhdGVS
YW5nZQpAQCAtMTE3OCwxMjIgKzYzMSwxMCBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNv
bnN0IEF0b21pY1N0CiAKIEBlbmQKIAotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS8vIERPTUNoYXJhY3RlckRhdGEKLQotQGltcGxlbWVudGF0aW9uIERPTUNoYXJhY3RlckRh
dGEKLQotLSAoQ2hhcmFjdGVyRGF0YSAqKV9jaGFyYWN0ZXJEYXRhCi17Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PENoYXJhY3RlckRhdGEgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsK
LX0KLQotLSAoTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgLy8gRG9jdW1lbnRhdGlvbiBzYXlzIHdl
IGNhbiByYWlzZSBhIERPTVNUUklOR19TSVpFX0VSUi4KLSAgICAvLyBIb3dldmVyLCB0aGUgbG93
ZXIgbGF5ZXIgZG9lcyBub3QgcmVwb3J0IHRoYXQgZXJyb3IgdXAgdG8gdXMuCi0gICAgcmV0dXJu
IFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+ZGF0YSgpOwotfQotCi0tICh2b2lkKXNldERhdGE6KE5T
U3RyaW5nICopZGF0YQotewotICAgIEFTU0VSVChkYXRhKTsKLSAgICAKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPnNldERhdGEoZGF0YSwgZWMp
OwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHVuc2lnbmVkKWxlbmd0aAotewot
ICAgIHJldHVybiBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPmxlbmd0aCgpOwotfQotCi0tIChOU1N0
cmluZyAqKXN1YnN0cmluZ0RhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKWNvdW50Ci17
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgTlNTdHJpbmcgKnJlc3VsdCA9IFtzZWxm
IF9jaGFyYWN0ZXJEYXRhXS0+c3Vic3RyaW5nRGF0YShvZmZzZXQsIGNvdW50LCBlYyk7Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKWFw
cGVuZERhdGE6KE5TU3RyaW5nICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7Ci0gICAgCi0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5hcHBlbmRE
YXRhKGFyZywgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpaW5z
ZXJ0RGF0YToodW5zaWduZWQpb2Zmc2V0IDooTlNTdHJpbmcgKilhcmcKLXsKLSAgICBBU1NFUlQo
YXJnKTsKLSAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFj
dGVyRGF0YV0tPmluc2VydERhdGEob2Zmc2V0LCBhcmcsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwotfQotCi0tICh2b2lkKWRlbGV0ZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2ln
bmVkKSBjb3VudAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9jaGFy
YWN0ZXJEYXRhXS0+ZGVsZXRlRGF0YShvZmZzZXQsIGNvdW50LCBlYyk7Ci0gICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClyZXBsYWNlRGF0YToodW5zaWduZWQpb2Zmc2V0IDoo
dW5zaWduZWQpY291bnQgOihOU1N0cmluZyAqKWFyZwotewotICAgIEFTU0VSVChhcmcpOwotCi0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5yZXBs
YWNlRGF0YShvZmZzZXQsIGNvdW50LCBhcmcsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OwotfQotCi1AZW5kCiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBE
T01BdHRyCiAKLUBpbXBsZW1lbnRhdGlvbiBET01BdHRyCi0KLS0gKE5TU3RyaW5nICopbmFtZQot
ewotICAgIHJldHVybiBbc2VsZiBfYXR0cl0tPm5vZGVOYW1lKCk7Ci19Ci0KLS0gKEJPT0wpc3Bl
Y2lmaWVkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9hdHRyXS0+c3BlY2lmaWVkKCk7Ci19Ci0KLS0g
KE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2F0dHJdLT5ub2RlVmFsdWUo
KTsKLX0KLQotLSAodm9pZClzZXRWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZQotewotICAgIEFTU0VS
VCh2YWx1ZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfYXR0cl0t
PnNldFZhbHVlKHZhbHVlLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAo
RE9NRWxlbWVudCAqKW93bmVyRWxlbWVudAotewotICAgIHJldHVybiBbRE9NRWxlbWVudCBfZWxl
bWVudFdpdGg6W3NlbGYgX2F0dHJdLT5vd25lckVsZW1lbnQoKV07Ci19Ci0KLS0gKERPTUNTU1N0
eWxlRGVjbGFyYXRpb24gKilzdHlsZQotewotICAgIHJldHVybiBbRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6IFtzZWxmIF9hdHRyXS0+c3R5bGUoKV07Ci19Ci0K
LUBlbmQKLQogQGltcGxlbWVudGF0aW9uIERPTUF0dHIgKFdlYkNvcmVJbnRlcm5hbCkKIAogKyAo
RE9NQXR0ciAqKV9hdHRyV2l0aDooQXR0ciAqKWltcGwKQEAgLTEzMDgsMTYyICs2NDksMTggQEAg
c3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogCiBAZW5kCiAKLS8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01FbGVtZW50Ci0KLUBpbXBsZW1l
bnRhdGlvbiBET01FbGVtZW50CitAaW1wbGVtZW50YXRpb24gRE9NQXR0ciAoRE9NQXR0ckV4dGVu
c2lvbnMpCiAKLS0gKE5TU3RyaW5nICopdGFnTmFtZQotewotICAgIHJldHVybiBbc2VsZiBfZWxl
bWVudF0tPm5vZGVOYW1lKCk7Ci19Ci0KLS0gKERPTU5hbWVkTm9kZU1hcCAqKWF0dHJpYnV0ZXMK
LXsKLSAgICByZXR1cm4gW0RPTU5hbWVkTm9kZU1hcCBfbmFtZWROb2RlTWFwV2l0aDpbc2VsZiBf
ZWxlbWVudF0tPmF0dHJpYnV0ZXMoKV07Ci19Ci0KLS0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRl
OihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0gICAgcmV0dXJuIFtzZWxm
IF9lbGVtZW50XS0+Z2V0QXR0cmlidXRlKG5hbWUpOwotfQotCi0tICh2b2lkKXNldEF0dHJpYnV0
ZTooTlNTdHJpbmcgKiluYW1lIDooTlNTdHJpbmcgKil2YWx1ZQotewotICAgIEFTU0VSVChuYW1l
KTsKLSAgICBBU1NFUlQodmFsdWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3Nl
bGYgX2VsZW1lbnRdLT5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIGV4Y2VwdGlvbik7Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci19Ci0KLS0gKHZvaWQpcmVtb3ZlQXR0cmlidXRl
OihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0
aW9uID0gMDsKLSAgICBbc2VsZiBfZWxlbWVudF0tPnJlbW92ZUF0dHJpYnV0ZShuYW1lLCBleGNl
cHRpb24pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotfQotCi0tIChET01BdHRy
ICopZ2V0QXR0cmlidXRlTm9kZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUp
OwotCi0gICAgcmV0dXJuIFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEF0
dHJpYnV0ZU5vZGUobmFtZSkuZ2V0KCldOwotfQotCi0tIChET01BdHRyICopc2V0QXR0cmlidXRl
Tm9kZTooRE9NQXR0ciAqKW5ld0F0dHIKLXsKLSAgICBBU1NFUlQobmV3QXR0cik7Ci0KLSAgICBp
bnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldp
dGg6W3NlbGYgX2VsZW1lbnRdLT5zZXRBdHRyaWJ1dGVOb2RlKFtuZXdBdHRyIF9hdHRyXSwgZXhj
ZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NQXR0ciAqKXJlbW92ZUF0dHJpYnV0ZU5vZGU6KERPTUF0
dHIgKilvbGRBdHRyCi17Ci0gICAgQVNTRVJUKG9sZEF0dHIpOwotCi0gICAgaW50IGV4Y2VwdGlv
biA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9l
bGVtZW50XS0+cmVtb3ZlQXR0cmlidXRlTm9kZShbb2xkQXR0ciBfYXR0cl0sIGV4Y2VwdGlvbiku
Z2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWU6KE5TU3RyaW5n
ICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLQotICAgIHJldHVybiBbRE9NTm9kZUxpc3Qg
X25vZGVMaXN0V2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEVsZW1lbnRzQnlUYWdOYW1lKG5hbWUp
LmdldCgpXTsKLX0KLQotLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKilu
YW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VSVChuYW1lc3Bh
Y2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtzZWxmIF9lbGVt
ZW50XS0+Z2V0QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwotfQotCi0tICh2
b2lkKXNldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICop
cXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNl
VVJJKTsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7Ci0gICAgQVNTRVJUKHZhbHVlKTsKLQot
ICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIFtzZWxmIF9lbGVtZW50XS0+c2V0QXR0cmlidXRl
TlMobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCB2YWx1ZSwgZXhjZXB0aW9uKTsKLSAgICBy
YWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLX0KLQotLSAodm9pZClyZW1vdmVBdHRyaWJ1dGVO
UzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAg
IEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgaW50
IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5yZW1vdmVBdHRyaWJ1dGVOUyhu
YW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgZXhjZXB0aW9uKTsKLSAgICByYWlzZU9uRE9NRXJyb3Io
ZXhjZXB0aW9uKTsKLX0KLQotLSAoRE9NQXR0ciAqKWdldEF0dHJpYnV0ZU5vZGVOUzooTlNTdHJp
bmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VSVChu
YW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtET01B
dHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0ZU5vZGVOUyhuYW1lc3Bh
Y2VVUkksIGxvY2FsTmFtZSkuZ2V0KCldOwotfQotCi0tIChET01BdHRyICopc2V0QXR0cmlidXRl
Tm9kZU5TOihET01BdHRyICopbmV3QXR0cgotewotICAgIEFTU0VSVChuZXdBdHRyKTsKLQotICAg
IGludCBleGNlcHRpb24gPSAwOwotICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRy
V2l0aDpbc2VsZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZU5vZGVOUyhbbmV3QXR0ciBfYXR0cl0s
IGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05h
bWVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewot
ICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAg
cmV0dXJuIFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0RWxl
bWVudHNCeVRhZ05hbWVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkuZ2V0KCldOwotfQotCi0t
IChCT09MKWhhc0F0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUp
OwotCi0gICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50XS0+aGFzQXR0cmlidXRlKG5hbWUpOwotfQot
Ci0tIChCT09MKWhhc0F0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3Ry
aW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJU
KGxvY2FsTmFtZSk7Ci0KLSAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5oYXNBdHRyaWJ1dGVO
UyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7Ci19Ci0KLS0gKHZvaWQpZm9jdXMKLXsKLSAgICBb
c2VsZiBfZWxlbWVudF0tPmZvY3VzKCk7Ci19Ci0KLS0gKHZvaWQpYmx1cgorLSAoRE9NQ1NTU3R5
bGVEZWNsYXJhdGlvbiAqKXN0eWxlCiB7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5ibHVyKCk7Cisg
ICAgcmV0dXJuIFtET01DU1NTdHlsZURlY2xhcmF0aW9uIF9zdHlsZURlY2xhcmF0aW9uV2l0aDog
W3NlbGYgX2F0dHJdLT5zdHlsZSgpXTsKIH0KIAogQGVuZAogCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8gRE9NRWxlbWVudAorCiBAaW1wbGVtZW50YXRpb24gRE9NRWxl
bWVudCAoRE9NRWxlbWVudENTU0lubGluZVN0eWxlKQogCiAtIChET01DU1NTdHlsZURlY2xhcmF0
aW9uICopc3R5bGUKQEAgLTE1NjEsMTcyICs3NTgsMTggQEAgc3RhdGljIENsYXNzIGVsZW1lbnRD
bGFzcyhjb25zdCBBdG9taWNTdAogCiBAZW5kCiAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyBET01UZXh0Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01UZXh0Ci0KLS0gKFRl
eHQgKilfdGV4dAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0ICo+KERPTV9jYXN0PE5v
ZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKERPTVRleHQgKilzcGxpdFRleHQ6KHVuc2lnbmVk
KW9mZnNldAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3Vs
dCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfdGV4dF0tPnNwbGl0VGV4dChvZmZzZXQsIGVj
KV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9N
VGV4dCAqPihyZXN1bHQpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyBET01Db21tZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Db21tZW50Ci0K
LUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUNEQVRB
U2VjdGlvbgotCi1AaW1wbGVtZW50YXRpb24gRE9NQ0RBVEFTZWN0aW9uCi0KLUBlbmQKIAogLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTURvY3VtZW50VHlwZQogCi1A
aW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnRUeXBlCi0KLS0gKE5TU3RyaW5nICopbmFtZQotewot
ICAgIHJldHVybiBbc2VsZiBfZG9jdW1lbnRUeXBlXS0+cHVibGljSWQoKTsKLX0KLQotLSAoRE9N
TmFtZWROb2RlTWFwICopZW50aXRpZXMKLXsKLSAgICByZXR1cm4gW0RPTU5hbWVkTm9kZU1hcCBf
bmFtZWROb2RlTWFwV2l0aDpbc2VsZiBfZG9jdW1lbnRUeXBlXS0+ZW50aXRpZXMoKV07Ci19Ci0K
LS0gKERPTU5hbWVkTm9kZU1hcCAqKW5vdGF0aW9ucwotewotICAgIHJldHVybiBbRE9NTmFtZWRO
b2RlTWFwIF9uYW1lZE5vZGVNYXBXaXRoOltzZWxmIF9kb2N1bWVudFR5cGVdLT5ub3RhdGlvbnMo
KV07Ci19Ci0KLS0gKE5TU3RyaW5nICopcHVibGljSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2Rv
Y3VtZW50VHlwZV0tPnB1YmxpY0lkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopc3lzdGVtSWQKLXsK
LSAgICByZXR1cm4gW3NlbGYgX2RvY3VtZW50VHlwZV0tPnN5c3RlbUlkKCk7Ci19Ci0KLS0gKE5T
U3RyaW5nICopaW50ZXJuYWxTdWJzZXQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2RvY3VtZW50VHlw
ZV0tPmludGVybmFsU3Vic2V0KCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURv
Y3VtZW50VHlwZSAoV2ViQ29yZUludGVybmFsKQotCi0tIChEb2N1bWVudFR5cGUgKilfZG9jdW1l
bnRUeXBlCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50VHlwZSAqPihET01fY2Fz
dDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0vLyBET01Ob3RhdGlvbgotCi1AaW1wbGVtZW50YXRpb24gRE9NTm90
YXRpb24KLQotLSAoTm90YXRpb24gKilfbm90YXRpb24KLXsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Tm90YXRpb24gKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNT
dHJpbmcgKilwdWJsaWNJZAotewotICAgIHJldHVybiBbc2VsZiBfbm90YXRpb25dLT5wdWJsaWNJ
ZCgpOwotfQotCi0tIChOU1N0cmluZyAqKXN5c3RlbUlkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9u
b3RhdGlvbl0tPnN5c3RlbUlkKCk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS8vIERPTUVudGl0eQotCi1AaW1wbGVtZW50YXRpb24gRE9NRW50aXR5
Ci0KLS0gKEVudGl0eSAqKV9lbnRpdHkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RW50aXR5
ICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopcHVi
bGljSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2VudGl0eV0tPnB1YmxpY0lkKCk7Ci19Ci0KLS0g
KE5TU3RyaW5nICopc3lzdGVtSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2VudGl0eV0tPnN5c3Rl
bUlkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbm90YXRpb25OYW1lCi17Ci0gICAgcmV0dXJuIFtz
ZWxmIF9lbnRpdHldLT5ub3RhdGlvbk5hbWUoKTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NRW50aXR5UmVmZXJlbmNlCi0KLUBpbXBsZW1l
bnRhdGlvbiBET01FbnRpdHlSZWZlcmVuY2UKLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uCi0KLUBpbXBsZW1l
bnRhdGlvbiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KLQotLSAoUHJvY2Vzc2luZ0luc3RydWN0
aW9uICopX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbgotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0K
LQotLSAoTlNTdHJpbmcgKil0YXJnZXQKLXsKLSAgICByZXR1cm4gW3NlbGYgX3Byb2Nlc3NpbmdJ
bnN0cnVjdGlvbl0tPnRhcmdldCgpOwotfQotCi0tIChOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBy
ZXR1cm4gW3NlbGYgX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbl0tPmRhdGEoKTsKLX0KLQotLSAodm9p
ZClzZXREYXRhOihOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQoZGF0YSk7Ci0KLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcHJvY2Vzc2luZ0luc3RydWN0aW9uXS0+
c2V0RGF0YShkYXRhLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotQGVuZAor
Ly9AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnRUeXBlIChXZWJDb3JlSW50ZXJuYWwpCisvLwor
Ly8tIChEb2N1bWVudFR5cGUgKilfZG9jdW1lbnRUeXBlCisvL3sKKy8vICAgIHJldHVybiBzdGF0
aWNfY2FzdDxEb2N1bWVudFR5cGUgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKKy8v
fQorLy8KKy8vQGVuZAogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8g
RE9NUmFuZ2UKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DU1MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLmgJKHJldmlzaW9uIDE1OTQ1KQorKysg
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxz
YW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjMsNDAgKzI0LDI4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW1wb3J0IDxXZWJDb3Jl
L0RPTURPTUltcGxlbWVudGF0aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTURvY3VtZW50Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL0RPTUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NT2Jq
ZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTVN0eWxlc2hlZXRzLmg+CiAKLUBjbGFzcyBET01D
b3VudGVyOworI2ltcG9ydCA8V2ViQ29yZS9ET01DU1NQcmltaXRpdmVWYWx1ZS5oPgorI2ltcG9y
dCA8V2ViQ29yZS9ET01DU1NWYWx1ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01DU1NSdWxlLmg+
CisKIEBjbGFzcyBET01DU1NSdWxlOwogQGNsYXNzIERPTUNTU1N0eWxlRGVjbGFyYXRpb247CiBA
Y2xhc3MgRE9NQ1NTU3R5bGVTaGVldDsKLUBjbGFzcyBET01DU1NWYWx1ZTsKLUBjbGFzcyBET01S
ZWN0OworQGNsYXNzIERPTUNvdW50ZXI7CiBAY2xhc3MgRE9NUkdCQ29sb3I7CitAY2xhc3MgRE9N
UmVjdDsKIAogQGludGVyZmFjZSBET01DU1NSdWxlTGlzdCA6IERPTU9iamVjdAogLSAodW5zaWdu
ZWQpbGVuZ3RoOwogLSAoRE9NQ1NTUnVsZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4OwogQGVuZAog
Ci1lbnVtIHsKLSAgICAvLyBET01DU1NSdWxlIFJ1bGVUeXBlCi0gICAgRE9NX1VOS05PV05fUlVM
RSAgICAgICAgICAgICAgID0gMCwKLSAgICBET01fU1RZTEVfUlVMRSAgICAgICAgICAgICAgICAg
PSAxLAotICAgIERPTV9DSEFSU0VUX1JVTEUgICAgICAgICAgICAgICA9IDIsCi0gICAgRE9NX0lN
UE9SVF9SVUxFICAgICAgICAgICAgICAgID0gMywKLSAgICBET01fTUVESUFfUlVMRSAgICAgICAg
ICAgICAgICAgPSA0LAotICAgIERPTV9GT05UX0ZBQ0VfUlVMRSAgICAgICAgICAgICA9IDUsCi0g
ICAgRE9NX1BBR0VfUlVMRSAgICAgICAgICAgICAgICAgID0gNgotfTsKLQotQGludGVyZmFjZSBE
T01DU1NSdWxlIDogRE9NT2JqZWN0Ci0tICh1bnNpZ25lZCBzaG9ydCl0eXBlOwotLSAoTlNTdHJp
bmcgKiljc3NUZXh0OwotLSAodm9pZClzZXRDc3NUZXh0OihOU1N0cmluZyAqKWNzc1RleHQ7Ci0t
IChET01DU1NTdHlsZVNoZWV0ICopcGFyZW50U3R5bGVTaGVldDsKLS0gKERPTUNTU1J1bGUgKilw
YXJlbnRSdWxlOwotQGVuZAotCiBAaW50ZXJmYWNlIERPTUNTU1N0eWxlUnVsZSA6IERPTUNTU1J1
bGUKIC0gKE5TU3RyaW5nICopc2VsZWN0b3JUZXh0OwogLSAodm9pZClzZXRTZWxlY3RvclRleHQ6
KE5TU3RyaW5nICopc2VsZWN0b3JUZXh0OwpAQCAtMTA2LDYwICs5NSw3IEBAIGVudW0gewogLSAo
RE9NQ1NTUnVsZSAqKXBhcmVudFJ1bGU7CiBAZW5kCiAKLWVudW0gewotICAgIC8vIERPTUNTU1Zh
bHVlIFVuaXRUeXBlcwotICAgIERPTV9DU1NfSU5IRVJJVCA9IDAsCi0gICAgRE9NX0NTU19QUklN
SVRJVkVfVkFMVUUgPSAxLAotICAgIERPTV9DU1NfVkFMVUVfTElTVCA9IDIsCi0gICAgRE9NX0NT
U19DVVNUT00gPSAzCi19OwogCi1AaW50ZXJmYWNlIERPTUNTU1ZhbHVlIDogRE9NT2JqZWN0Ci0t
IChOU1N0cmluZyAqKWNzc1RleHQ7Ci0tICh2b2lkKXNldENzc1RleHQ6KE5TU3RyaW5nICopY3Nz
VGV4dDsKLS0gKHVuc2lnbmVkIHNob3J0KWNzc1ZhbHVlVHlwZTsKLUBlbmQKLQotZW51bSB7Ci0g
ICAgLy8gRE9NQ1NTUHJpbWl0aXZlVmFsdWUgVW5pdFR5cGVzCi0gICAgRE9NX0NTU19VTktOT1dO
ICAgICAgICAgICAgICAgICAgICA9IDAsCi0gICAgRE9NX0NTU19OVU1CRVIgICAgICAgICAgICAg
ICAgICAgICA9IDEsCi0gICAgRE9NX0NTU19QRVJDRU5UQUdFICAgICAgICAgICAgICAgICA9IDIs
Ci0gICAgRE9NX0NTU19FTVMgICAgICAgICAgICAgICAgICAgICAgICA9IDMsCi0gICAgRE9NX0NT
U19FWFMgICAgICAgICAgICAgICAgICAgICAgICA9IDQsCi0gICAgRE9NX0NTU19QWCAgICAgICAg
ICAgICAgICAgICAgICAgICA9IDUsCi0gICAgRE9NX0NTU19DTSAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDYsCi0gICAgRE9NX0NTU19NTSAgICAgICAgICAgICAgICAgICAgICAgICA9IDcsCi0g
ICAgRE9NX0NTU19JTiAgICAgICAgICAgICAgICAgICAgICAgICA9IDgsCi0gICAgRE9NX0NTU19Q
VCAgICAgICAgICAgICAgICAgICAgICAgICA9IDksCi0gICAgRE9NX0NTU19QQyAgICAgICAgICAg
ICAgICAgICAgICAgICA9IDEwLAotICAgIERPTV9DU1NfREVHICAgICAgICAgICAgICAgICAgICAg
ICAgPSAxMSwKLSAgICBET01fQ1NTX1JBRCAgICAgICAgICAgICAgICAgICAgICAgID0gMTIsCi0g
ICAgRE9NX0NTU19HUkFEICAgICAgICAgICAgICAgICAgICAgICA9IDEzLAotICAgIERPTV9DU1Nf
TVMgICAgICAgICAgICAgICAgICAgICAgICAgPSAxNCwKLSAgICBET01fQ1NTX1MgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gMTUsCi0gICAgRE9NX0NTU19IWiAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDE2LAotICAgIERPTV9DU1NfS0haICAgICAgICAgICAgICAgICAgICAgICAgPSAxNywK
LSAgICBET01fQ1NTX0RJTUVOU0lPTiAgICAgICAgICAgICAgICAgID0gMTgsCi0gICAgRE9NX0NT
U19TVFJJTkcgICAgICAgICAgICAgICAgICAgICA9IDE5LAotICAgIERPTV9DU1NfVVJJICAgICAg
ICAgICAgICAgICAgICAgICAgPSAyMCwKLSAgICBET01fQ1NTX0lERU5UICAgICAgICAgICAgICAg
ICAgICAgID0gMjEsCi0gICAgRE9NX0NTU19BVFRSICAgICAgICAgICAgICAgICAgICAgICA9IDIy
LAotICAgIERPTV9DU1NfQ09VTlRFUiAgICAgICAgICAgICAgICAgICAgPSAyMywKLSAgICBET01f
Q1NTX1JFQ1QgICAgICAgICAgICAgICAgICAgICAgID0gMjQsCi0gICAgRE9NX0NTU19SR0JDT0xP
UiAgICAgICAgICAgICAgICAgICA9IDI1Ci19OwotCi1AaW50ZXJmYWNlIERPTUNTU1ByaW1pdGl2
ZVZhbHVlIDogRE9NQ1NTVmFsdWUKLS0gKHVuc2lnbmVkIHNob3J0KXByaW1pdGl2ZVR5cGU7Ci0t
ICh2b2lkKXNldEZsb2F0VmFsdWU6KHVuc2lnbmVkIHNob3J0KXVuaXRUeXBlIDooZmxvYXQpZmxv
YXRWYWx1ZTsKLS0gKGZsb2F0KWdldEZsb2F0VmFsdWU6KHVuc2lnbmVkIHNob3J0KXVuaXRUeXBl
OwotLSAodm9pZClzZXRTdHJpbmdWYWx1ZToodW5zaWduZWQgc2hvcnQpc3RyaW5nVHlwZSA6KE5T
U3RyaW5nICopc3RyaW5nVmFsdWU7Ci0tIChOU1N0cmluZyAqKWdldFN0cmluZ1ZhbHVlOwotLSAo
RE9NQ291bnRlciAqKWdldENvdW50ZXJWYWx1ZTsKLS0gKERPTVJlY3QgKilnZXRSZWN0VmFsdWU7
Ci0tIChET01SR0JDb2xvciAqKWdldFJHQkNvbG9yVmFsdWU7Ci1AZW5kCiAKIEBpbnRlcmZhY2Ug
RE9NQ1NTVmFsdWVMaXN0IDogRE9NQ1NTVmFsdWUKIC0gKHVuc2lnbmVkKWxlbmd0aDsKQEAgLTQ0
Myw2ICszNzksOCBAQCBlbnVtIHsKIC0gKHZvaWQpZGVsZXRlUnVsZToodW5zaWduZWQpaW5kZXg7
CiBAZW5kCiAKKworCiBAaW50ZXJmYWNlIERPTURvY3VtZW50IChET01WaWV3Q1NTKQogLSAoRE9N
Q1NTU3R5bGVEZWNsYXJhdGlvbiAqKWdldENvbXB1dGVkU3R5bGU6KERPTUVsZW1lbnQgKillbHQg
OihOU1N0cmluZyAqKXBzZXVkb0VsdDsKIEBlbmQKQEAgLTQ1NCwzICszOTIsOTAgQEAgZW51bSB7
CiBAaW50ZXJmYWNlIERPTUltcGxlbWVudGF0aW9uIChET01JbXBsZW1lbnRhdGlvbkNTUykKIC0g
KERPTUNTU1N0eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNoZWV0OihOU1N0cmluZyAqKXRpdGxl
IDooTlNTdHJpbmcgKiltZWRpYTsKIEBlbmQKKworCisKKy8vIFNwbGl0LU91dAorCisvLyBhdXRv
LWdlbmVyYXRlZAorCisvL2VudW0geworLy8gICAgLy8gRE9NQ1NTUHJpbWl0aXZlVmFsdWUgVW5p
dFR5cGVzCisvLyAgICBET01fQ1NTX1VOS05PV04gICAgICAgICAgICAgICAgICAgID0gMCwKKy8v
ICAgIERPTV9DU1NfTlVNQkVSICAgICAgICAgICAgICAgICAgICAgPSAxLAorLy8gICAgRE9NX0NT
U19QRVJDRU5UQUdFICAgICAgICAgICAgICAgICA9IDIsCisvLyAgICBET01fQ1NTX0VNUyAgICAg
ICAgICAgICAgICAgICAgICAgID0gMywKKy8vICAgIERPTV9DU1NfRVhTICAgICAgICAgICAgICAg
ICAgICAgICAgPSA0LAorLy8gICAgRE9NX0NTU19QWCAgICAgICAgICAgICAgICAgICAgICAgICA9
IDUsCisvLyAgICBET01fQ1NTX0NNICAgICAgICAgICAgICAgICAgICAgICAgID0gNiwKKy8vICAg
IERPTV9DU1NfTU0gICAgICAgICAgICAgICAgICAgICAgICAgPSA3LAorLy8gICAgRE9NX0NTU19J
TiAgICAgICAgICAgICAgICAgICAgICAgICA9IDgsCisvLyAgICBET01fQ1NTX1BUICAgICAgICAg
ICAgICAgICAgICAgICAgID0gOSwKKy8vICAgIERPTV9DU1NfUEMgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAxMCwKKy8vICAgIERPTV9DU1NfREVHICAgICAgICAgICAgICAgICAgICAgICAgPSAx
MSwKKy8vICAgIERPTV9DU1NfUkFEICAgICAgICAgICAgICAgICAgICAgICAgPSAxMiwKKy8vICAg
IERPTV9DU1NfR1JBRCAgICAgICAgICAgICAgICAgICAgICAgPSAxMywKKy8vICAgIERPTV9DU1Nf
TVMgICAgICAgICAgICAgICAgICAgICAgICAgPSAxNCwKKy8vICAgIERPTV9DU1NfUyAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxNSwKKy8vICAgIERPTV9DU1NfSFogICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxNiwKKy8vICAgIERPTV9DU1NfS0haICAgICAgICAgICAgICAgICAgICAgICAg
PSAxNywKKy8vICAgIERPTV9DU1NfRElNRU5TSU9OICAgICAgICAgICAgICAgICAgPSAxOCwKKy8v
ICAgIERPTV9DU1NfU1RSSU5HICAgICAgICAgICAgICAgICAgICAgPSAxOSwKKy8vICAgIERPTV9D
U1NfVVJJICAgICAgICAgICAgICAgICAgICAgICAgPSAyMCwKKy8vICAgIERPTV9DU1NfSURFTlQg
ICAgICAgICAgICAgICAgICAgICAgPSAyMSwKKy8vICAgIERPTV9DU1NfQVRUUiAgICAgICAgICAg
ICAgICAgICAgICAgPSAyMiwKKy8vICAgIERPTV9DU1NfQ09VTlRFUiAgICAgICAgICAgICAgICAg
ICAgPSAyMywKKy8vICAgIERPTV9DU1NfUkVDVCAgICAgICAgICAgICAgICAgICAgICAgPSAyNCwK
Ky8vICAgIERPTV9DU1NfUkdCQ09MT1IgICAgICAgICAgICAgICAgICAgPSAyNQorLy99OworCisv
L0BpbnRlcmZhY2UgRE9NQ1NTUHJpbWl0aXZlVmFsdWUgOiBET01DU1NWYWx1ZQorLy8tICh1bnNp
Z25lZCBzaG9ydClwcmltaXRpdmVUeXBlOworLy8tICh2b2lkKXNldEZsb2F0VmFsdWU6KHVuc2ln
bmVkIHNob3J0KXVuaXRUeXBlIDooZmxvYXQpZmxvYXRWYWx1ZTsKKy8vLSAoZmxvYXQpZ2V0Rmxv
YXRWYWx1ZToodW5zaWduZWQgc2hvcnQpdW5pdFR5cGU7CisvLy0gKHZvaWQpc2V0U3RyaW5nVmFs
dWU6KHVuc2lnbmVkIHNob3J0KXN0cmluZ1R5cGUgOihOU1N0cmluZyAqKXN0cmluZ1ZhbHVlOwor
Ly8tIChOU1N0cmluZyAqKWdldFN0cmluZ1ZhbHVlOworLy8tIChET01Db3VudGVyICopZ2V0Q291
bnRlclZhbHVlOworLy8tIChET01SZWN0ICopZ2V0UmVjdFZhbHVlOworLy8tIChET01SR0JDb2xv
ciAqKWdldFJHQkNvbG9yVmFsdWU7CisvL0BlbmQKKworCisKKworLy8gTk9UIGF1dG8tZ2VuZXJh
dGVkCisKKworLy9lbnVtIHsKKy8vICAgIC8vIERPTUNTU1ZhbHVlIFVuaXRUeXBlcworLy8gICAg
RE9NX0NTU19JTkhFUklUICAgICAgICAgPSAwLAorLy8gICAgRE9NX0NTU19QUklNSVRJVkVfVkFM
VUUgPSAxLAorLy8gICAgRE9NX0NTU19WQUxVRV9MSVNUICAgICAgPSAyLAorLy8gICAgRE9NX0NT
U19DVVNUT00gICAgICAgICAgPSAzCisvL307CisKKy8vQGludGVyZmFjZSBET01DU1NWYWx1ZSA6
IERPTU9iamVjdAorLy8tIChOU1N0cmluZyAqKWNzc1RleHQ7CisvLy0gKHZvaWQpc2V0Q3NzVGV4
dDooTlNTdHJpbmcgKiljc3NUZXh0OworLy8tICh1bnNpZ25lZCBzaG9ydCljc3NWYWx1ZVR5cGU7
CisvL0BlbmQKKworCisvL2VudW0geworLy8gICAgLy8gRE9NQ1NTUnVsZSBSdWxlVHlwZQorLy8g
ICAgRE9NX1VOS05PV05fUlVMRSAgICAgICAgICAgICAgID0gMCwKKy8vICAgIERPTV9TVFlMRV9S
VUxFICAgICAgICAgICAgICAgICA9IDEsCisvLyAgICBET01fQ0hBUlNFVF9SVUxFICAgICAgICAg
ICAgICAgPSAyLAorLy8gICAgRE9NX0lNUE9SVF9SVUxFICAgICAgICAgICAgICAgID0gMywKKy8v
ICAgIERPTV9NRURJQV9SVUxFICAgICAgICAgICAgICAgICA9IDQsCisvLyAgICBET01fRk9OVF9G
QUNFX1JVTEUgICAgICAgICAgICAgPSA1LAorLy8gICAgRE9NX1BBR0VfUlVMRSAgICAgICAgICAg
ICAgICAgID0gNgorLy99OworLy8KKy8vQGludGVyZmFjZSBET01DU1NSdWxlIDogRE9NT2JqZWN0
CisvLy0gKHVuc2lnbmVkIHNob3J0KXR5cGU7CisvLy0gKE5TU3RyaW5nICopY3NzVGV4dDsKKy8v
LSAodm9pZClzZXRDc3NUZXh0OihOU1N0cmluZyAqKWNzc1RleHQ7CisvLy0gKERPTUNTU1N0eWxl
U2hlZXQgKilwYXJlbnRTdHlsZVNoZWV0OworLy8tIChET01DU1NSdWxlICopcGFyZW50UnVsZTsK
Ky8vQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTUy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLm1tCShyZXZpc2lvbiAxNTk0NSkKKysr
IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DU1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgSmFtZXMgRy4g
U3BldGggKHNwZXRoQGVuZC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5p
ZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI3LDcgKzI4LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRE9NQ1NTLmgi
CiAKLSNpbXBvcnQgIkRPTUNTU0ludGVybmFsLmgiCiAjaW1wb3J0ICJDU1NDaGFyc2V0UnVsZS5o
IgogI2ltcG9ydCAiQ1NTRm9udEZhY2VSdWxlLmgiCiAjaW1wb3J0ICJDU1NJbXBvcnRSdWxlLmgi
CkBAIC0zOSw2ICszOSw4IEBACiAjaW1wb3J0ICJDU1NTdHlsZVNoZWV0LmgiCiAjaW1wb3J0ICJD
U1NWYWx1ZUxpc3QuaCIKICNpbXBvcnQgIkNvdW50ZXIuaCIKKyNpbXBvcnQgIkRPTUNTU0ludGVy
bmFsLmgiCisjaW1wb3J0ICJET01IVE1MU3R5bGVFbGVtZW50LmgiCiAjaW1wb3J0ICJET01JbnRl
cm5hbC5oIgogI2ltcG9ydCAiRE9NV2luZG93LmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgpAQCAt
NTEsOCArNTMsMTggQEAKICNpbXBvcnQgIlN0eWxlU2hlZXQuaCIKICNpbXBvcnQgIlN0eWxlU2hl
ZXRMaXN0LmgiCiAKKy8vIEZyb20gb2xkIERPTUNTUy5oCisjaW1wb3J0ICJET01DU1NSdWxlLmgi
CisjaW1wb3J0ICJET01DU1NWYWx1ZS5oIgorCisvLyBhdXRvZ2VuZXJhdGVkIGZpbGVzCisjaW1w
b3J0ICJET01DU1NQcmltaXRpdmVWYWx1ZS5oIgorCisKICNpbXBvcnQgPG9iamMvb2JqYy1jbGFz
cy5oPgogCisKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHR5cGVkZWYgRE9NV2luZG93
IEFic3RyYWN0VmlldzsKQEAgLTQyMCw1OSArNDMyLDEwIEBAIHR5cGVkZWYgRE9NV2luZG93IEFi
c3RyYWN0VmlldzsKIAogQGVuZAogCisKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAvLyBET01DU1NSdWxlCiAKLUBpbXBsZW1lbnRhdGlvbiBET01DU1NSdWxlCi0KLS0gKHZv
aWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8Q1NT
UnVsZSo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsK
LX0KLQotLSAodm9pZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAg
RE9NX2Nhc3Q8Q1NTUnVsZSo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBl
ciBmaW5hbGl6ZV07Ci19Ci0KLS0gKENTU1J1bGUgKilfcnVsZQotewotICAgIHJldHVybiBET01f
Y2FzdDxDU1NSdWxlKj4oX2ludGVybmFsKTsKLX0KLQotLSAodW5zaWduZWQgc2hvcnQpdHlwZQot
ewotICAgIHJldHVybiBbc2VsZiBfcnVsZV0tPnR5cGUoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilj
c3NUZXh0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9ydWxlXS0+Y3NzVGV4dCgpOwotfQotCi0tICh2
b2lkKXNldENzc1RleHQ6KE5TU3RyaW5nICopY3NzVGV4dAotewotICAgIFtzZWxmIF9ydWxlXS0+
c2V0Q3NzVGV4dChjc3NUZXh0KTsKLX0KLQotLSAoRE9NQ1NTU3R5bGVTaGVldCAqKXBhcmVudFN0
eWxlU2hlZXQKLXsKLSAgICByZXR1cm4gW0RPTUNTU1N0eWxlU2hlZXQgX0NTU1N0eWxlU2hlZXRX
aXRoOltzZWxmIF9ydWxlXS0+cGFyZW50U3R5bGVTaGVldCgpXTsKLX0KLQotLSAoRE9NQ1NTUnVs
ZSAqKXBhcmVudFJ1bGUKLXsKLSAgICByZXR1cm4gW0RPTUNTU1J1bGUgX3J1bGVXaXRoOltzZWxm
IF9ydWxlXS0+cGFyZW50UnVsZSgpXTsKLX0KLQotQGVuZAotCiBAaW1wbGVtZW50YXRpb24gRE9N
Q1NTUnVsZSAoV2ViQ29yZUludGVybmFsKQogCiAtIChpZClfaW5pdFdpdGhSdWxlOihDU1NSdWxl
ICopaW1wbApAQCAtNjg0LDE3ICs2NDcsMTUgQEAgdHlwZWRlZiBET01XaW5kb3cgQWJzdHJhY3RW
aWV3OwogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAg
IERPTV9jYXN0PENTU1N0eWxlRGVjbGFyYXRpb24qPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAg
IH0KKyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICBET01fY2FzdDxXZWJDb3JlOjpDU1NTdHls
ZURlY2xhcmF0aW9uKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKICAgICBbc3VwZXIgZGVhbGxvY107
CiB9CiAKIC0gKHZvaWQpZmluYWxpemUKIHsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAg
IERPTV9jYXN0PENTU1N0eWxlRGVjbGFyYXRpb24qPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAg
IH0KKyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICBET01fY2FzdDxXZWJDb3JlOjpDU1NTdHls
ZURlY2xhcmF0aW9uKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKICAgICBbc3VwZXIgZmluYWxpemVd
OwogfQogCkBAIC03MTAsNyArNjcxLDcgQEAgdHlwZWRlZiBET01XaW5kb3cgQWJzdHJhY3RWaWV3
OwogCiAtICh2b2lkKXNldENzc1RleHQ6KE5TU3RyaW5nICopY3NzVGV4dAogewotICAgIEV4Y2Vw
dGlvbkNvZGUgZWM7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYzsKICAgICBbc2VsZiBf
c3R5bGVEZWNsYXJhdGlvbl0tPnNldENzc1RleHQoY3NzVGV4dCwgZWMpOwogICAgIHJhaXNlT25E
T01FcnJvcihlYyk7CiB9CkBAIC03MjcsNyArNjg4LDcgQEAgdHlwZWRlZiBET01XaW5kb3cgQWJz
dHJhY3RWaWV3OwogCiAtIChOU1N0cmluZyAqKXJlbW92ZVByb3BlcnR5OihOU1N0cmluZyAqKXBy
b3BlcnR5TmFtZQogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFN0cmluZyByZXN1bHQgPSBbc2VsZiBfc3R5bGVEZWNs
YXJhdGlvbl0tPnJlbW92ZVByb3BlcnR5KHByb3BlcnR5TmFtZSwgZWMpOwogICAgIHJhaXNlT25E
T01FcnJvcihlYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTc1MCw3ICs3MTEsNyBAQCB0eXBl
ZGVmIERPTVdpbmRvdyBBYnN0cmFjdFZpZXc7CiAKIC0gKHZvaWQpc2V0UHJvcGVydHk6KE5TU3Ry
aW5nICopcHJvcGVydHlOYW1lIDooTlNTdHJpbmcgKil2YWx1ZSA6KE5TU3RyaW5nICopcHJpb3Jp
dHkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWM7CiAgICAgW3NlbGYgX3N0eWxlRGVjbGFyYXRpb25dLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBwcmlvcml0eSwgZWMpOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiB9CkBA
IC04MDYsNDYgKzc2Nyw2IEBAIHR5cGVkZWYgRE9NV2luZG93IEFic3RyYWN0VmlldzsKIC8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBET01DU1NWYWx1ZQogCi1AaW1wbGVt
ZW50YXRpb24gRE9NQ1NTVmFsdWUKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRl
cm5hbCkgewotICAgICAgICBET01fY2FzdDxDU1NWYWx1ZSo+KF9pbnRlcm5hbCktPmRlcmVmKCk7
Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6ZQotewot
ICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8Q1NTVmFsdWUqPihfaW50ZXJu
YWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChDU1NW
YWx1ZSAqKV92YWx1ZQotewotICAgIHJldHVybiBET01fY2FzdDxDU1NWYWx1ZSo+KF9pbnRlcm5h
bCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopY3NzVGV4dAotewotICAgIHJldHVybiBbc2VsZiBfdmFs
dWVdLT5jc3NUZXh0KCk7Ci19Ci0KLS0gKHZvaWQpc2V0Q3NzVGV4dDooTlNTdHJpbmcgKiljc3NU
ZXh0Ci17Ci0gICAgW3NlbGYgX3ZhbHVlXS0+c2V0Q3NzVGV4dChjc3NUZXh0KTsKLX0KLQotLSAo
dW5zaWduZWQgc2hvcnQpY3NzVmFsdWVUeXBlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF92YWx1ZV0t
PmNzc1ZhbHVlVHlwZSgpOwotfQotCi1AZW5kCi0KIEBpbXBsZW1lbnRhdGlvbiBET01DU1NWYWx1
ZSAoV2ViQ29yZUludGVybmFsKQogCiAtIChpZClfaW5pdFdpdGhWYWx1ZTooQ1NTVmFsdWUgKilp
bXBsCkBAIC04ODcsNjggKzgwOCwyMCBAQCB0eXBlZGVmIERPTVdpbmRvdyBBYnN0cmFjdFZpZXc7
CiAKIEBlbmQKIAorCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRE9N
Q1NTUHJpbWl0aXZlVmFsdWUKIAotQGltcGxlbWVudGF0aW9uIERPTUNTU1ByaW1pdGl2ZVZhbHVl
CitAaW1wbGVtZW50YXRpb24gRE9NQ1NTUHJpbWl0aXZlVmFsdWUgKFdlYkNvcmVJbnRlcm5hbCkK
IAogKyAoRE9NQ1NTUHJpbWl0aXZlVmFsdWUgKilfdmFsdWVXaXRoOihDU1NWYWx1ZSAqKWltcGwK
IHsKICAgICByZXR1cm4gKERPTUNTU1ByaW1pdGl2ZVZhbHVlICopKFtET01DU1NWYWx1ZSBfdmFs
dWVXaXRoOiBpbXBsXSk7CiB9CiAKLS0gKENTU1ByaW1pdGl2ZVZhbHVlICopX3ByaW1pdGl2ZVZh
bHVlCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oRE9NX2Nh
c3Q8Q1NTVmFsdWUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAodW5zaWduZWQgc2hvcnQpcHJpbWl0
aXZlVHlwZQotewotICAgIHJldHVybiBbc2VsZiBfcHJpbWl0aXZlVmFsdWVdLT5wcmltaXRpdmVU
eXBlKCk7Ci19Ci0KLS0gKHZvaWQpc2V0RmxvYXRWYWx1ZToodW5zaWduZWQgc2hvcnQpdW5pdFR5
cGUgOihmbG9hdClmbG9hdFZhbHVlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICBbc2Vs
ZiBfcHJpbWl0aXZlVmFsdWVdLT5zZXRGbG9hdFZhbHVlKHVuaXRUeXBlLCBmbG9hdFZhbHVlLCBl
Yyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoZmxvYXQpZ2V0RmxvYXRWYWx1
ZToodW5zaWduZWQgc2hvcnQpdW5pdFR5cGUKLXsKLSAgICByZXR1cm4gW3NlbGYgX3ByaW1pdGl2
ZVZhbHVlXS0+Z2V0RmxvYXRWYWx1ZSh1bml0VHlwZSk7Ci19Ci0KLS0gKHZvaWQpc2V0U3RyaW5n
VmFsdWU6KHVuc2lnbmVkIHNob3J0KXN0cmluZ1R5cGUgOihOU1N0cmluZyAqKXN0cmluZ1ZhbHVl
Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICBTdHJpbmcgc3RyaW5nKHN0cmluZ1ZhbHVl
KTsKLSAgICBbc2VsZiBfcHJpbWl0aXZlVmFsdWVdLT5zZXRTdHJpbmdWYWx1ZShzdHJpbmdUeXBl
LCBzdHJpbmcsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tIChOU1N0cmlu
ZyAqKWdldFN0cmluZ1ZhbHVlCi17Ci0gICAgcmV0dXJuIFN0cmluZyhbc2VsZiBfcHJpbWl0aXZl
VmFsdWVdLT5nZXRTdHJpbmdWYWx1ZSgpKTsKLX0KLQotLSAoRE9NQ291bnRlciAqKWdldENvdW50
ZXJWYWx1ZQotewotICAgIHJldHVybiBbRE9NQ291bnRlciBfY291bnRlcldpdGg6W3NlbGYgX3By
aW1pdGl2ZVZhbHVlXS0+Z2V0Q291bnRlclZhbHVlKCldOwotfQotCi0tIChET01SZWN0ICopZ2V0
UmVjdFZhbHVlCi17Ci0gICAgcmV0dXJuIFtET01SZWN0IF9yZWN0V2l0aDpbc2VsZiBfcHJpbWl0
aXZlVmFsdWVdLT5nZXRSZWN0VmFsdWUoKV07Ci19Ci0KLS0gKERPTVJHQkNvbG9yICopZ2V0UkdC
Q29sb3JWYWx1ZQotewotICAgIHJldHVybiBbRE9NUkdCQ29sb3IgX1JHQkNvbG9yV2l0aFJHQjpb
c2VsZiBfcHJpbWl0aXZlVmFsdWVdLT5nZXRSR0JDb2xvclZhbHVlKCldOwotfQotCiBAZW5kCiAK
KwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTUNTU1ZhbHVlTGlz
dAogCkBAIC0xMDk5LDIzICs5NzIsMjEgQEAgdm9pZCByZW1vdmVXcmFwcGVyRm9yUkdCKFJHQkEz
MiB2YWx1ZSkKIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAg
ICAgICBET01fY2FzdDxSZWN0SW1wbCo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQorICAg
IGlmIChfaW50ZXJuYWwpCisgICAgICAgIERPTV9jYXN0PFdlYkNvcmU6OlJlY3RJbXBsICo+KF9p
bnRlcm5hbCktPmRlcmVmKCk7CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAtICh2b2lkKWZp
bmFsaXplCiB7Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxSZWN0SW1w
bCo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQorICAgIGlmIChfaW50ZXJuYWwpCisgICAg
ICAgIERPTV9jYXN0PFdlYkNvcmU6OlJlY3RJbXBsICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7CiAg
ICAgW3N1cGVyIGZpbmFsaXplXTsKIH0KIAotLSAoUmVjdEltcGwgKilfcmVjdAorLSAoV2ViQ29y
ZTo6UmVjdEltcGwgKilfcmVjdAogewotICAgIHJldHVybiBET01fY2FzdDxSZWN0SW1wbCo+KF9p
bnRlcm5hbCk7CisgICAgcmV0dXJuIERPTV9jYXN0PFdlYkNvcmU6OlJlY3RJbXBsKj4oX2ludGVy
bmFsKTsKIH0KIAogLSAoRE9NQ1NTUHJpbWl0aXZlVmFsdWUgKil0b3AKQEAgLTExNzgsMjMgKzEw
NDksMjEgQEAgdm9pZCByZW1vdmVXcmFwcGVyRm9yUkdCKFJHQkEzMiB2YWx1ZSkKIAogLSAodm9p
ZClkZWFsbG9jCiB7Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxDb3Vu
dGVyKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9CisgICAgaWYgKF9pbnRlcm5hbCkKKyAg
ICAgICAgRE9NX2Nhc3Q8V2ViQ29yZTo6Q291bnRlciAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwog
ICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAodm9pZClmaW5hbGl6ZQogewotICAgIGlmIChf
aW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8Q291bnRlcio+KF9pbnRlcm5hbCktPmRlcmVm
KCk7Ci0gICAgfQorICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIERPTV9jYXN0PFdlYkNvcmU6
OkNvdW50ZXIgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKICAgICBbc3VwZXIgZmluYWxpemVdOwog
fQogCi0tIChDb3VudGVyICopX2NvdW50ZXIKKy0gKFdlYkNvcmU6OkNvdW50ZXIgKilfY291bnRl
cgogewotICAgIHJldHVybiBET01fY2FzdDxDb3VudGVyKj4oX2ludGVybmFsKTsKKyAgICByZXR1
cm4gRE9NX2Nhc3Q8V2ViQ29yZTo6Q291bnRlciAqPihfaW50ZXJuYWwpOwogfQogCiAtIChOU1N0
cmluZyAqKWlkZW50aWZpZXIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DU1NJbnRl
cm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DU1NJbnRlcm5h
bC5oCShyZXZpc2lvbiAxNTk0NSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DU1NJbnRl
cm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAwNiBKYW1lcyBHLiBTcGV0aCAoc3BldGhAZW5kLmNvbSkKKyAqIENvcHly
aWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsOCArMjUsMTIgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAogICovCiAKLSNpbXBvcnQgIkRPTUNTUy5oIgogI2ltcG9ydCAiQ29sb3IuaCIKKyNpbXBv
cnQgIkRPTUNTUy5oIgorCisjaW1wb3J0ICJET01DU1NQcmltaXRpdmVWYWx1ZS5oIgorI2ltcG9y
dCAiRE9NQ1NTUnVsZS5oIgorI2ltcG9ydCAiRE9NQ1NTVmFsdWUuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIFN0eWxlU2hlZXQ7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NQ1NTUnVsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01D
U1NSdWxlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTUnVs
ZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgorCitAY2xhc3MgRE9NQ1NTU3R5bGVTaGVl
dDsKKworZW51bSB7CisgICAgLy8gRE9NQ1NTUnVsZSBSdWxlVHlwZQorICAgIERPTV9VTktOT1dO
X1JVTEUgICAgICAgICAgICAgICA9IDAsCisgICAgRE9NX1NUWUxFX1JVTEUgICAgICAgICAgICAg
ICAgID0gMSwKKyAgICBET01fQ0hBUlNFVF9SVUxFICAgICAgICAgICAgICAgPSAyLAorICAgIERP
TV9JTVBPUlRfUlVMRSAgICAgICAgICAgICAgICA9IDMsCisgICAgRE9NX01FRElBX1JVTEUgICAg
ICAgICAgICAgICAgID0gNCwKKyAgICBET01fRk9OVF9GQUNFX1JVTEUgICAgICAgICAgICAgPSA1
LAorICAgIERPTV9QQUdFX1JVTEUgICAgICAgICAgICAgICAgICA9IDYKK307CisKK0BpbnRlcmZh
Y2UgRE9NQ1NTUnVsZSA6IERPTU9iamVjdAorLSAodW5zaWduZWQgc2hvcnQpdHlwZTsKKy0gKE5T
U3RyaW5nICopY3NzVGV4dDsKKy0gKHZvaWQpc2V0Q3NzVGV4dDooTlNTdHJpbmcgKiljc3NUZXh0
OworLSAoRE9NQ1NTU3R5bGVTaGVldCAqKXBhcmVudFN0eWxlU2hlZXQ7CistIChET01DU1NSdWxl
ICopcGFyZW50UnVsZTsKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DU1NS
dWxlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DU1NSdWxlLm1t
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTU1J1bGUubW0JKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBKYW1lcyBHLiBTcGV0aCAoc3BldGhAZW5kLmNvbSkKKyAqIENvcHlyaWdodCAo
QykgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRPTUNTU1J1bGUuaCIKKworI2ltcG9ydCAiRE9NSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUNTU0ludGVybmFsLmgiCisjaW1wb3J0ICJDU1NSdWxlLmgi
CisKKyNpbXBvcnQgIkNTU1N0eWxlU2hlZXQuaCIKKyNpbXBvcnQgIkRPTUNTUy5oIiAvLyJET01D
U1NTdHlsZVNoZWV0LmgiCisjaW1wb3J0ICJQbGF0Zm9ybVN0cmluZy5oIgorCitAaW1wbGVtZW50
YXRpb24gRE9NQ1NTUnVsZQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBpZiAoX2ludGVybmFs
KQorICAgICAgICBET01fY2FzdDxXZWJDb3JlOjpDU1NSdWxlICo+KF9pbnRlcm5hbCktPmRlcmVm
KCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWZpbmFsaXplCit7CisgICAg
aWYgKF9pbnRlcm5hbCkKKyAgICAgICAgRE9NX2Nhc3Q8V2ViQ29yZTo6Q1NTUnVsZSAqPihfaW50
ZXJuYWwpLT5kZXJlZigpOworICAgIFtzdXBlciBmaW5hbGl6ZV07Cit9CisKKy0gKFdlYkNvcmU6
OkNTU1J1bGUgKilfcnVsZQoreworICAgIHJldHVybiBET01fY2FzdDxXZWJDb3JlOjpDU1NSdWxl
ICo+KF9pbnRlcm5hbCk7Cit9CisKKy0gKHVuc2lnbmVkIHNob3J0KXR5cGUKK3sKKyAgICByZXR1
cm4gW3NlbGYgX3J1bGVdLT50eXBlKCk7Cit9CisKKy0gKE5TU3RyaW5nICopY3NzVGV4dAorewor
ICAgIHJldHVybiBbc2VsZiBfcnVsZV0tPmNzc1RleHQoKTsKK30KKworLSAodm9pZClzZXRDc3NU
ZXh0OihOU1N0cmluZyAqKWNzc1RleHQKK3sKKyAgICBbc2VsZiBfcnVsZV0tPnNldENzc1RleHQo
Y3NzVGV4dCk7Cit9CisKKy0gKERPTUNTU1N0eWxlU2hlZXQgKilwYXJlbnRTdHlsZVNoZWV0Cit7
CisgICAgcmV0dXJuIFtET01DU1NTdHlsZVNoZWV0IF9DU1NTdHlsZVNoZWV0V2l0aDpbc2VsZiBf
cnVsZV0tPnBhcmVudFN0eWxlU2hlZXQoKV07Cit9CisKKy0gKERPTUNTU1J1bGUgKilwYXJlbnRS
dWxlCit7CisgICAgcmV0dXJuIFtET01DU1NSdWxlIF9ydWxlV2l0aDpbc2VsZiBfcnVsZV0tPnBh
cmVudFJ1bGUoKV07Cit9CisKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01D
U1NWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DU1NWYWx1
ZS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTU1ZhbHVlLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CisKK2VudW0geworICAgIC8vIERPTUNTU1ZhbHVl
IFVuaXRUeXBlcworICAgIERPTV9DU1NfSU5IRVJJVCAgICAgICAgID0gMCwKKyAgICBET01fQ1NT
X1BSSU1JVElWRV9WQUxVRSA9IDEsCisgICAgRE9NX0NTU19WQUxVRV9MSVNUICAgICAgPSAyLAor
ICAgIERPTV9DU1NfQ1VTVE9NICAgICAgICAgID0gMworfTsKKworQGludGVyZmFjZSBET01DU1NW
YWx1ZSA6IERPTU9iamVjdAorLSAoTlNTdHJpbmcgKiljc3NUZXh0OworLSAodm9pZClzZXRDc3NU
ZXh0OihOU1N0cmluZyAqKWNzc1RleHQ7CistICh1bnNpZ25lZCBzaG9ydCljc3NWYWx1ZVR5cGU7
CitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTVmFsdWUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTU1ZhbHVlLm1tCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTU1ZhbHVlLm1tCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMDYgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
SmFtZXMgRy4gU3BldGggKHNwZXRoQGVuZC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2Ft
dWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJET01DU1NWYWx1ZS5oIgorCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgor
I2ltcG9ydCAiRE9NQ1NTSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkNTU1ZhbHVlLmgiCisjaW1wb3J0
ICJQbGF0Zm9ybVN0cmluZy5oIgorCitAaW1wbGVtZW50YXRpb24gRE9NQ1NTVmFsdWUKKworLSAo
dm9pZClkZWFsbG9jCit7CisgICBpZiAoX2ludGVybmFsKQorICAgICAgIERPTV9jYXN0PFdlYkNv
cmU6OkNTU1ZhbHVlICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7CisgICBbc3VwZXIgZGVhbGxvY107
Cit9CisKKy0gKHZvaWQpZmluYWxpemUKK3sKKyAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgRE9N
X2Nhc3Q8V2ViQ29yZTo6Q1NTVmFsdWUgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKKyAgIFtzdXBl
ciBmaW5hbGl6ZV07Cit9CisKKy0gKFdlYkNvcmU6OkNTU1ZhbHVlICopX3ZhbHVlCit7CisgICBy
ZXR1cm4gRE9NX2Nhc3Q8V2ViQ29yZTo6Q1NTVmFsdWUgKj4oX2ludGVybmFsKTsKK30KKworLSAo
TlNTdHJpbmcgKiljc3NUZXh0Cit7CisgICByZXR1cm4gW3NlbGYgX3ZhbHVlXS0+Y3NzVGV4dCgp
OworfQorCistICh2b2lkKXNldENzc1RleHQ6KE5TU3RyaW5nICopY3NzVGV4dAoreworICAgW3Nl
bGYgX3ZhbHVlXS0+c2V0Q3NzVGV4dChjc3NUZXh0KTsKK30KKworLSAodW5zaWduZWQgc2hvcnQp
Y3NzVmFsdWVUeXBlCit7CisgICByZXR1cm4gW3NlbGYgX3ZhbHVlXS0+Y3NzVmFsdWVUeXBlKCk7
Cit9CisKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DaGFyYWN0ZXJEYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNoYXJhY3RlckRhdGEu
aAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DaGFyYWN0ZXJEYXRh
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+Cisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NTm9kZS5oPgorCitAaW50ZXJmYWNlIERPTUNoYXJh
Y3RlckRhdGEgOiBET01Ob2RlCistIChOU1N0cmluZyAqKWRhdGE7CistICh2b2lkKXNldERhdGE6
KE5TU3RyaW5nICopZGF0YTsKKy0gKHVuc2lnbmVkKWxlbmd0aDsKKy0gKE5TU3RyaW5nICopc3Vi
c3RyaW5nRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpY291bnQ7CistICh2b2lkKWFw
cGVuZERhdGE6KE5TU3RyaW5nICopYXJnOworLSAodm9pZClpbnNlcnREYXRhOih1bnNpZ25lZClv
ZmZzZXQgOihOU1N0cmluZyAqKWFyZzsKKy0gKHZvaWQpZGVsZXRlRGF0YToodW5zaWduZWQpb2Zm
c2V0IDoodW5zaWduZWQpIGNvdW50OworLSAodm9pZClyZXBsYWNlRGF0YToodW5zaWduZWQpb2Zm
c2V0IDoodW5zaWduZWQpY291bnQgOihOU1N0cmluZyAqKWFyZzsKK0BlbmQKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01DaGFyYWN0ZXJEYXRhLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01DaGFyYWN0ZXJEYXRhLm1tCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTUNoYXJhY3RlckRhdGEubW0JKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMDYgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgSmFt
ZXMgRy4gU3BldGggPHNwZXRoQGVuZC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVs
IFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiRE9NQ2hhcmFjdGVyRGF0YS5oIgorCisjaW1wb3J0ICJET01JbnRlcm5hbC5o
IgorI2ltcG9ydCAiQ2hhcmFjdGVyRGF0YS5oIgorCitAaW1wbGVtZW50YXRpb24gRE9NQ2hhcmFj
dGVyRGF0YQorCistIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhICopX2NoYXJhY3RlckRhdGEKK3sK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q2hhcmFjdGVyRGF0YSAqPihET01fY2Fz
dDxXZWJDb3JlOjpOb2RlICo+KF9pbnRlcm5hbCkpOworfQorCistIChOU1N0cmluZyAqKWRhdGEK
K3sKKyAgICAvLyBEb2N1bWVudGF0aW9uIHNheXMgd2UgY2FuIHJhaXNlIGEgRE9NU1RSSU5HX1NJ
WkVfRVJSLgorICAgIC8vIEhvd2V2ZXIsIHRoZSBsb3dlciBsYXllciBkb2VzIG5vdCByZXBvcnQg
dGhhdCBlcnJvciB1cCB0byB1cy4KKyAgICByZXR1cm4gW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5k
YXRhKCk7Cit9CisKKy0gKHZvaWQpc2V0RGF0YTooTlNTdHJpbmcgKilkYXRhCit7CisgICAgQVNT
RVJUKGRhdGEpOworICAgIAorICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+c2V0RGF0YShkYXRhLCBlYyk7CisgICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKK30KKworLSAodW5zaWduZWQpbGVuZ3RoCit7CisgICAgcmV0dXJuIFtzZWxm
IF9jaGFyYWN0ZXJEYXRhXS0+bGVuZ3RoKCk7Cit9CisKKy0gKE5TU3RyaW5nICopc3Vic3RyaW5n
RGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpY291bnQKK3sKKyAgICBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBOU1N0cmluZyAqcmVzdWx0ID0gW3NlbGYgX2NoYXJh
Y3RlckRhdGFdLT5zdWJzdHJpbmdEYXRhKG9mZnNldCwgY291bnQsIGVjKTsKKyAgICByYWlzZU9u
RE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKHZvaWQpYXBwZW5kRGF0
YTooTlNTdHJpbmcgKilhcmcKK3sKKyAgICBBU1NFUlQoYXJnKTsKKyAgICAKKyAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPmFwcGVu
ZERhdGEoYXJnLCBlYyk7CisgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKworLSAodm9pZClp
bnNlcnREYXRhOih1bnNpZ25lZClvZmZzZXQgOihOU1N0cmluZyAqKWFyZworeworICAgIEFTU0VS
VChhcmcpOworICAgIAorICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFtz
ZWxmIF9jaGFyYWN0ZXJEYXRhXS0+aW5zZXJ0RGF0YShvZmZzZXQsIGFyZywgZWMpOworICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Cit9CisKKy0gKHZvaWQpZGVsZXRlRGF0YToodW5zaWduZWQpb2Zm
c2V0IDoodW5zaWduZWQpIGNvdW50Cit7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5kZWxldGVEYXRhKG9mZnNldCwgY291bnQs
IGVjKTsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworfQorCistICh2b2lkKXJlcGxhY2VEYXRh
Oih1bnNpZ25lZClvZmZzZXQgOih1bnNpZ25lZCljb3VudCA6KE5TU3RyaW5nICopYXJnCit7Cisg
ICAgQVNTRVJUKGFyZyk7CisKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPnJlcGxhY2VEYXRhKG9mZnNldCwgY291bnQsIGFyZywg
ZWMpOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7Cit9CisKK0BlbmQKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01Db3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUNvcmUuaAkocmV2aXNpb24gMTU5NDUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NQ29yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWls
LmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjE4ICsyNCwyMSBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmpl
Y3QuaD4KLQotQGNsYXNzIERPTURvY3VtZW50OyAKLUBjbGFzcyBET01Eb2N1bWVudFR5cGU7Ci1A
Y2xhc3MgRE9NRWxlbWVudDsKLUBjbGFzcyBET01OYW1lZE5vZGVNYXA7Ci1AY2xhc3MgRE9NTm9k
ZUxpc3Q7Ci0KLXR5cGVkZWYgc3RydWN0IERPTU9iamVjdEludGVybmFsIERPTU9iamVjdEludGVy
bmFsOwotCi1AaW50ZXJmYWNlIERPTU9iamVjdCA6IFdlYlNjcmlwdE9iamVjdCA8TlNDb3B5aW5n
PgotewotICAgIERPTU9iamVjdEludGVybmFsICpfaW50ZXJuYWw7Ci19Ci1AZW5kCi0KLXR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBsb25nIERPTVRpbWVTdGFtcDsKLQotZXh0ZXJuIE5TU3RyaW5nICog
Y29uc3QgRE9NRXhjZXB0aW9uOwotCi1lbnVtIHsKLSAgICAvLwotICAgIC8vIERPTSBleGNlcHRp
b24gY29kZXMKLSAgICAvLwotICAgIERPTV9JTkRFWF9TSVpFX0VSUiAgICAgICAgICAgICAgICA9
IDEsCi0gICAgRE9NX0RPTVNUUklOR19TSVpFX0VSUiAgICAgICAgICAgID0gMiwKLSAgICBET01f
SElFUkFSQ0hZX1JFUVVFU1RfRVJSICAgICAgICAgPSAzLAotICAgIERPTV9XUk9OR19ET0NVTUVO
VF9FUlIgICAgICAgICAgICA9IDQsCi0gICAgRE9NX0lOVkFMSURfQ0hBUkFDVEVSX0VSUiAgICAg
ICAgID0gNSwKLSAgICBET01fTk9fREFUQV9BTExPV0VEX0VSUiAgICAgICAgICAgPSA2LAotICAg
IERPTV9OT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIgICA9IDcsCi0gICAgRE9NX05PVF9GT1VO
RF9FUlIgICAgICAgICAgICAgICAgID0gOCwKLSAgICBET01fTk9UX1NVUFBPUlRFRF9FUlIgICAg
ICAgICAgICAgPSA5LAotICAgIERPTV9JTlVTRV9BVFRSSUJVVEVfRVJSICAgICAgICAgICA9IDEw
LAotICAgIERPTV9JTlZBTElEX1NUQVRFX0VSUiAgICAgICAgICAgICA9IDExLAotICAgIERPTV9T
WU5UQVhfRVJSICAgICAgICAgICAgICAgICAgICA9IDEyLAotICAgIERPTV9JTlZBTElEX01PRElG
SUNBVElPTl9FUlIgICAgICA9IDEzLAotICAgIERPTV9OQU1FU1BBQ0VfRVJSICAgICAgICAgICAg
ICAgICA9IDE0LAotICAgIERPTV9JTlZBTElEX0FDQ0VTU19FUlIgICAgICAgICAgICA9IDE1Ci19
OwotCi1AaW50ZXJmYWNlIERPTUltcGxlbWVudGF0aW9uIDogRE9NT2JqZWN0Ci0tIChCT09MKWhh
c0ZlYXR1cmU6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbjsKLS0gKERP
TURvY3VtZW50VHlwZSAqKWNyZWF0ZURvY3VtZW50VHlwZTooTlNTdHJpbmcgKilxdWFsaWZpZWRO
YW1lIDooTlNTdHJpbmcgKilwdWJsaWNJZCA6KE5TU3RyaW5nICopc3lzdGVtSWQ7Ci0tIChET01E
b2N1bWVudCAqKWNyZWF0ZURvY3VtZW50OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3Ry
aW5nICopcXVhbGlmaWVkTmFtZSA6KERPTURvY3VtZW50VHlwZSAqKWRvY3R5cGU7Ci1AZW5kCi0K
LWVudW0gewotICAgIC8vCi0gICAgLy8gRE9NIG5vZGUgdHlwZXMKLSAgICAvLwotICAgIERPTV9F
TEVNRU5UX05PREUgICAgICAgICAgICAgICAgICA9IDEsCi0gICAgRE9NX0FUVFJJQlVURV9OT0RF
ICAgICAgICAgICAgICAgID0gMiwKLSAgICBET01fVEVYVF9OT0RFICAgICAgICAgICAgICAgICAg
ICAgPSAzLAotICAgIERPTV9DREFUQV9TRUNUSU9OX05PREUgICAgICAgICAgICA9IDQsCi0gICAg
RE9NX0VOVElUWV9SRUZFUkVOQ0VfTk9ERSAgICAgICAgID0gNSwKLSAgICBET01fRU5USVRZX05P
REUgICAgICAgICAgICAgICAgICAgPSA2LAotICAgIERPTV9QUk9DRVNTSU5HX0lOU1RSVUNUSU9O
X05PREUgICA9IDcsCi0gICAgRE9NX0NPTU1FTlRfTk9ERSAgICAgICAgICAgICAgICAgID0gOCwK
LSAgICBET01fRE9DVU1FTlRfTk9ERSAgICAgICAgICAgICAgICAgPSA5LAotICAgIERPTV9ET0NV
TUVOVF9UWVBFX05PREUgICAgICAgICAgICA9IDEwLAotICAgIERPTV9ET0NVTUVOVF9GUkFHTUVO
VF9OT0RFICAgICAgICA9IDExLAotICAgIERPTV9OT1RBVElPTl9OT0RFICAgICAgICAgICAgICAg
ICA9IDEyCi19OwotCi1AaW50ZXJmYWNlIERPTU5vZGUgOiBET01PYmplY3QKLS0gKE5TU3RyaW5n
ICopbm9kZU5hbWU7Ci0tIChOU1N0cmluZyAqKW5vZGVWYWx1ZTsKLS0gKHZvaWQpc2V0Tm9kZVZh
bHVlOihOU1N0cmluZyAqKXN0cmluZzsKLS0gKHVuc2lnbmVkIHNob3J0KW5vZGVUeXBlOwotLSAo
RE9NTm9kZSAqKXBhcmVudE5vZGU7Ci0tIChET01Ob2RlTGlzdCAqKWNoaWxkTm9kZXM7Ci0tIChE
T01Ob2RlICopZmlyc3RDaGlsZDsKLS0gKERPTU5vZGUgKilsYXN0Q2hpbGQ7Ci0tIChET01Ob2Rl
ICopcHJldmlvdXNTaWJsaW5nOwotLSAoRE9NTm9kZSAqKW5leHRTaWJsaW5nOwotLSAoRE9NTmFt
ZWROb2RlTWFwICopYXR0cmlidXRlczsKLS0gKERPTURvY3VtZW50ICopb3duZXJEb2N1bWVudDsK
LS0gKERPTU5vZGUgKilpbnNlcnRCZWZvcmU6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUg
KilyZWZDaGlsZDsKLS0gKERPTU5vZGUgKilyZXBsYWNlQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGls
ZCA6KERPTU5vZGUgKilvbGRDaGlsZDsKLS0gKERPTU5vZGUgKilyZW1vdmVDaGlsZDooRE9NTm9k
ZSAqKW9sZENoaWxkOwotLSAoRE9NTm9kZSAqKWFwcGVuZENoaWxkOihET01Ob2RlICopbmV3Q2hp
bGQ7Ci0tIChCT09MKWhhc0NoaWxkTm9kZXM7Ci0tIChET01Ob2RlICopY2xvbmVOb2RlOihCT09M
KWRlZXA7Ci0tICh2b2lkKW5vcm1hbGl6ZTsKLS0gKEJPT0wpaXNTdXBwb3J0ZWQ6KE5TU3RyaW5n
ICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbjsKLS0gKE5TU3RyaW5nICopbmFtZXNwYWNl
VVJJOwotLSAoTlNTdHJpbmcgKilwcmVmaXg7Ci0tICh2b2lkKXNldFByZWZpeDooTlNTdHJpbmcg
KilwcmVmaXg7Ci0tIChOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKEJPT0wpaGFzQXR0cmlidXRl
czsKLS0gKEJPT0wpaXNTYW1lTm9kZTooRE9NTm9kZSAqKW90aGVyOwotLSAoQk9PTClpc0VxdWFs
Tm9kZTooRE9NTm9kZSAqKW90aGVyOwotLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudDsKLS0gKHZv
aWQpc2V0VGV4dENvbnRlbnQ6KE5TU3RyaW5nICopdGV4dDsKLUBlbmQKLQotQGludGVyZmFjZSBE
T01Ob2RlTGlzdCA6IERPTU9iamVjdAotLSAoRE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4
OwotLSAodW5zaWduZWQpbGVuZ3RoOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTU5hbWVkTm9kZU1h
cCA6IERPTU9iamVjdAotLSAoRE9NTm9kZSAqKWdldE5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1l
OwotLSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbTooRE9NTm9kZSAqKWFyZzsKLS0gKERPTU5vZGUg
KilyZW1vdmVOYW1lZEl0ZW06KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTU5vZGUgKilpdGVtOih1
bnNpZ25lZClpbmRleDsKLS0gKHVuc2lnbmVkKWxlbmd0aDsKLS0gKERPTU5vZGUgKilnZXROYW1l
ZEl0ZW1OUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsK
LS0gKERPTU5vZGUgKilzZXROYW1lZEl0ZW1OUzooRE9NTm9kZSAqKWFyZzsKLS0gKERPTU5vZGUg
KilyZW1vdmVOYW1lZEl0ZW1OUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAq
KWxvY2FsTmFtZTsKLUBlbmQKLQotQGludGVyZmFjZSBET01DaGFyYWN0ZXJEYXRhIDogRE9NTm9k
ZQotLSAoTlNTdHJpbmcgKilkYXRhOwotLSAodm9pZClzZXREYXRhOihOU1N0cmluZyAqKWRhdGE7
Ci0tICh1bnNpZ25lZClsZW5ndGg7Ci0tIChOU1N0cmluZyAqKXN1YnN0cmluZ0RhdGE6KHVuc2ln
bmVkKW9mZnNldCA6KHVuc2lnbmVkKWNvdW50OwotLSAodm9pZClhcHBlbmREYXRhOihOU1N0cmlu
ZyAqKWFyZzsKLS0gKHZvaWQpaW5zZXJ0RGF0YToodW5zaWduZWQpb2Zmc2V0IDooTlNTdHJpbmcg
Kilhcmc7Ci0tICh2b2lkKWRlbGV0ZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKSBj
b3VudDsKLS0gKHZvaWQpcmVwbGFjZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKWNv
dW50IDooTlNTdHJpbmcgKilhcmc7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NQXR0ciA6IERPTU5v
ZGUKLS0gKE5TU3RyaW5nICopbmFtZTsKLS0gKEJPT0wpc3BlY2lmaWVkOwotLSAoTlNTdHJpbmcg
Kil2YWx1ZTsKLS0gKHZvaWQpc2V0VmFsdWU6KE5TU3RyaW5nICopdmFsdWU7Ci0tIChET01FbGVt
ZW50ICopb3duZXJFbGVtZW50OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUVsZW1lbnQgOiBET01O
b2RlCi0tIChOU1N0cmluZyAqKXRhZ05hbWU7Ci0tIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZToo
TlNTdHJpbmcgKiluYW1lOwotLSAodm9pZClzZXRBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZSA6
KE5TU3RyaW5nICopdmFsdWU7Ci0tICh2b2lkKXJlbW92ZUF0dHJpYnV0ZTooTlNTdHJpbmcgKilu
YW1lOwotLSAoRE9NQXR0ciAqKWdldEF0dHJpYnV0ZU5vZGU6KE5TU3RyaW5nICopbmFtZTsKLS0g
KERPTUF0dHIgKilzZXRBdHRyaWJ1dGVOb2RlOihET01BdHRyICopbmV3QXR0cjsKLS0gKERPTUF0
dHIgKilyZW1vdmVBdHRyaWJ1dGVOb2RlOihET01BdHRyICopb2xkQXR0cjsKLS0gKERPTU5vZGVM
aXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWU6KE5TU3RyaW5nICopbmFtZTsKLS0gKE5TU3RyaW5n
ICopZ2V0QXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKils
b2NhbE5hbWU7Ci0tICh2b2lkKXNldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVS
SSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICopdmFsdWU7Ci0tICh2b2lk
KXJlbW92ZUF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICop
bG9jYWxOYW1lOwotLSAoRE9NQXR0ciAqKWdldEF0dHJpYnV0ZU5vZGVOUzooTlNTdHJpbmcgKilu
YW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKERPTUF0dHIgKilzZXRBdHRy
aWJ1dGVOb2RlTlM6KERPTUF0dHIgKiluZXdBdHRyOwotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVt
ZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9j
YWxOYW1lOwotLSAoQk9PTCloYXNBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKEJPT0wp
aGFzQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2Nh
bE5hbWU7Ci0tICh2b2lkKWZvY3VzOwotLSAodm9pZClibHVyOwotQGVuZAotCi1AaW50ZXJmYWNl
IERPTVRleHQgOiBET01DaGFyYWN0ZXJEYXRhCi0tIChET01UZXh0ICopc3BsaXRUZXh0Oih1bnNp
Z25lZClvZmZzZXQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NQ29tbWVudCA6IERPTUNoYXJhY3Rl
ckRhdGEKLUBlbmQKLQotQGludGVyZmFjZSBET01DREFUQVNlY3Rpb24gOiBET01UZXh0Ci1AZW5k
Ci0KLUBpbnRlcmZhY2UgRE9NRG9jdW1lbnRUeXBlIDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKilu
YW1lOwotLSAoRE9NTmFtZWROb2RlTWFwICopZW50aXRpZXM7Ci0tIChET01OYW1lZE5vZGVNYXAg
Kilub3RhdGlvbnM7Ci0tIChOU1N0cmluZyAqKXB1YmxpY0lkOwotLSAoTlNTdHJpbmcgKilzeXN0
ZW1JZDsKLS0gKE5TU3RyaW5nICopaW50ZXJuYWxTdWJzZXQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2Ug
RE9NTm90YXRpb24gOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKXB1YmxpY0lkOwotLSAoTlNTdHJp
bmcgKilzeXN0ZW1JZDsKLUBlbmQKLQotQGludGVyZmFjZSBET01FbnRpdHkgOiBET01Ob2RlCi0t
IChOU1N0cmluZyAqKXB1YmxpY0lkOwotLSAoTlNTdHJpbmcgKilzeXN0ZW1JZDsKLS0gKE5TU3Ry
aW5nICopbm90YXRpb25OYW1lOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUVudGl0eVJlZmVyZW5j
ZSA6IERPTU5vZGUKLUBlbmQKLQotQGludGVyZmFjZSBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24g
OiBET01Ob2RlCi0tIChOU1N0cmluZyAqKXRhcmdldDsKLS0gKE5TU3RyaW5nICopZGF0YTsKLS0g
KHZvaWQpc2V0RGF0YTooTlNTdHJpbmcgKilkYXRhOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTURv
Y3VtZW50RnJhZ21lbnQgOiBET01Ob2RlCi1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRG9jdW1lbnQg
OiBET01Ob2RlCi0tIChET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlOwotLSAoRE9NSW1wbGVtZW50
YXRpb24gKilpbXBsZW1lbnRhdGlvbjsKLS0gKERPTUVsZW1lbnQgKilkb2N1bWVudEVsZW1lbnQ7
Ci0tIChET01FbGVtZW50ICopY3JlYXRlRWxlbWVudDooTlNTdHJpbmcgKil0YWdOYW1lOwotLSAo
RE9NRG9jdW1lbnRGcmFnbWVudCAqKWNyZWF0ZURvY3VtZW50RnJhZ21lbnQ7Ci0tIChET01UZXh0
ICopY3JlYXRlVGV4dE5vZGU6KE5TU3RyaW5nICopZGF0YTsKLS0gKERPTUNvbW1lbnQgKiljcmVh
dGVDb21tZW50OihOU1N0cmluZyAqKWRhdGE7Ci0tIChET01DREFUQVNlY3Rpb24gKiljcmVhdGVD
REFUQVNlY3Rpb246KE5TU3RyaW5nICopZGF0YTsKLS0gKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlv
biAqKWNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbjooTlNTdHJpbmcgKil0YXJnZXQgOihOU1N0
cmluZyAqKWRhdGE7Ci0tIChET01BdHRyICopY3JlYXRlQXR0cmlidXRlOihOU1N0cmluZyAqKW5h
bWU7Ci0tIChET01FbnRpdHlSZWZlcmVuY2UgKiljcmVhdGVFbnRpdHlSZWZlcmVuY2U6KE5TU3Ry
aW5nICopbmFtZTsKLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWU6KE5TU3Ry
aW5nICopdGFnbmFtZTsKLS0gKERPTU5vZGUgKilpbXBvcnROb2RlOihET01Ob2RlICopaW1wb3J0
ZWROb2RlIDooQk9PTClkZWVwOwotLSAoRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnROUzooTlNT
dHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWU7Ci0tIChET01B
dHRyICopY3JlYXRlQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJp
bmcgKilxdWFsaWZpZWROYW1lOwotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFt
ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAo
RE9NRWxlbWVudCAqKWdldEVsZW1lbnRCeUlkOihOU1N0cmluZyAqKWVsZW1lbnRJZDsKLS0gKERP
TU5vZGUgKilhZG9wdE5vZGU6KERPTU5vZGUgKilzb3VyY2U7Ci1AZW5kCisjaW1wb3J0IDxXZWJD
b3JlL0RPTUF0dHIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NQ0RBVEFTZWN0aW9uLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0RPTUNoYXJhY3RlckRhdGEuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NQ29t
bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01ET01JbXBsZW1lbnRhdGlvbi5oPgorI2ltcG9y
dCA8V2ViQ29yZS9ET01Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Eb2N1bWVudEZy
YWdtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTURvY3VtZW50VHlwZS5oPgorI2ltcG9ydCA8
V2ViQ29yZS9ET01FbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUVudGl0eS5oPgorI2lt
cG9ydCA8V2ViQ29yZS9ET01FbnRpdHlSZWZlcmVuY2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9N
TmFtZWROb2RlTWFwLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU5vZGUuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvRE9NTm9kZUxpc3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NTm90YXRpb24uaD4KKyNp
bXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTVByb2Nlc3Np
bmdJbnN0cnVjdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01UZXh0Lmg+CkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NRE9NSW1wbGVtZW50YXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRE9NSW1wbGVtZW50YXRpb24uaAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01ET01JbXBsZW1lbnRhdGlvbi5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1w
b3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgorCitAY2xhc3MgRE9NRG9jdW1lbnQ7IAorQGNsYXNz
IERPTURvY3VtZW50VHlwZTsgCisKK0BpbnRlcmZhY2UgRE9NSW1wbGVtZW50YXRpb24gOiBET01P
YmplY3QKKy0gKEJPT0wpaGFzRmVhdHVyZTooTlNTdHJpbmcgKilmZWF0dXJlIDooTlNTdHJpbmcg
Kil2ZXJzaW9uOworLSAoRE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBlOihOU1N0
cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXB1YmxpY0lkIDooTlNTdHJpbmcgKilz
eXN0ZW1JZDsKKy0gKERPTURvY3VtZW50ICopY3JlYXRlRG9jdW1lbnQ6KE5TU3RyaW5nICopbmFt
ZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooRE9NRG9jdW1lbnRUeXBlICop
ZG9jdHlwZTsKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01ET01JbXBsZW1l
bnRhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRE9NSW1w
bGVtZW50YXRpb24ubW0JKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
RE9NSW1wbGVtZW50YXRpb24ubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBKYW1lcyBHLiBTcGV0aCA8c3BldGhA
ZW5kLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2Vpbmln
QGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJET01ET01J
bXBsZW1lbnRhdGlvbi5oIgorI2ltcG9ydCAiRE9NSW1wbGVtZW50YXRpb25Gcm9udC5oIgorCisj
aW1wb3J0ICJET01JbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NSW1wbGVtZW50YXRpb24uaCIKKwor
I2ltcG9ydCAiRE9NRG9jdW1lbnQuaCIKKyNpbXBvcnQgIkRPTURvY3VtZW50VHlwZS5oIgorI2lt
cG9ydCAiRE9NSFRNTERvY3VtZW50LmgiCisjaW1wb3J0ICJET01Ob2RlLmgiCisjaW1wb3J0ICJE
b2N1bWVudC5oIgorI2ltcG9ydCAiRG9jdW1lbnRUeXBlLmgiCisjaW1wb3J0ICJIVE1MRG9jdW1l
bnQuaCIKKyNpbXBvcnQgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9u
cy5oPgorCitAaW1wbGVtZW50YXRpb24gRE9NSW1wbGVtZW50YXRpb24KKworLSAodm9pZClkZWFs
bG9jCit7CisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAgRE9NX2Nhc3Q8V2ViQ29yZTo6RE9N
SW1wbGVtZW50YXRpb25Gcm9udCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOworICAgIFtzdXBlciBk
ZWFsbG9jXTsKK30KKworLSAodm9pZClmaW5hbGl6ZQoreworICAgIGlmIChfaW50ZXJuYWwpCisg
ICAgICAgIERPTV9jYXN0PFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uRnJvbnQgKj4oX2ludGVy
bmFsKS0+ZGVyZWYoKTsKKyAgICBbc3VwZXIgZmluYWxpemVdOworfQorCistIChCT09MKWhhc0Zl
YXR1cmU6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbgoreworICAgIEFT
U0VSVChmZWF0dXJlKTsKKyAgICBBU1NFUlQodmVyc2lvbik7CisKKyAgICByZXR1cm4gW3NlbGYg
X0RPTUltcGxlbWVudGF0aW9uXS0+aGFzRmVhdHVyZShmZWF0dXJlLCB2ZXJzaW9uKTsKK30KKwor
LSAoRE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBlOihOU1N0cmluZyAqKXF1YWxp
ZmllZE5hbWUgOihOU1N0cmluZyAqKXB1YmxpY0lkIDooTlNTdHJpbmcgKilzeXN0ZW1JZAorewor
ICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsKKyAgICBBU1NFUlQocHVibGljSWQpOworICAgIEFT
U0VSVChzeXN0ZW1JZCk7CisKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRUeXBlPiBpbXBsID0gW3NlbGYgX0RPTUltcGxlbWVu
dGF0aW9uXS0+Y3JlYXRlRG9jdW1lbnRUeXBlKHF1YWxpZmllZE5hbWUsIHB1YmxpY0lkLCBzeXN0
ZW1JZCwgZWMpOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PERPTURvY3VtZW50VHlwZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQoKV0pOwor
fQorCistIChET01Eb2N1bWVudCAqKWNyZWF0ZURvY3VtZW50OihOU1N0cmluZyAqKW5hbWVzcGFj
ZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KERPTURvY3VtZW50VHlwZSAqKWRvY3R5
cGUKK3sKKyAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKKyAgICBBU1NFUlQocXVhbGlmaWVkTmFt
ZSk7CisKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6RG9jdW1lbnQ+IGltcGwgPSBbc2VsZiBfRE9NSW1wbGVtZW50YXRpb25dLT5jcmVhdGVE
b2N1bWVudChuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIFtkb2N0eXBlIF9Eb2N1bWVudFR5
cGVdLCBlYyk7CisgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RE9NRG9jdW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGwuZ2V0KCldKTsKK30KKwor
LSAoRE9NSFRNTERvY3VtZW50ICopY3JlYXRlSFRNTERvY3VtZW50OihOU1N0cmluZyAqKXRpdGxl
Cit7CisgICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxEb2N1bWVudD4gaW1wbCA9IFtzZWxmIF9ET01J
bXBsZW1lbnRhdGlvbl0tPmNyZWF0ZUhUTUxEb2N1bWVudCh0aXRsZSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PERPTUhUTUxEb2N1bWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQo
KV0pOworfQorCitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRG9jdW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRG9jdW1lbnQuaAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Eb2N1bWVudC5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1w
b3J0IDxXZWJDb3JlL0RPTU5vZGUuaD4KKworQGNsYXNzIERPTUF0dHI7CitAY2xhc3MgRE9NQ0RB
VEFTZWN0aW9uOworQGNsYXNzIERPTUNvbW1lbnQ7CitAY2xhc3MgRE9NRG9jdW1lbnRGcmFnbWVu
dDsKK0BjbGFzcyBET01Eb2N1bWVudFR5cGU7CitAY2xhc3MgRE9NRWxlbWVudDsKK0BjbGFzcyBE
T01FbnRpdHlSZWZlcmVuY2U7CitAY2xhc3MgRE9NSW1wbGVtZW50YXRpb247CitAY2xhc3MgRE9N
Tm9kZUxpc3Q7CitAY2xhc3MgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uOworQGNsYXNzIERPTVRl
eHQ7CisKK0BpbnRlcmZhY2UgRE9NRG9jdW1lbnQgOiBET01Ob2RlCistIChET01Eb2N1bWVudFR5
cGUgKilkb2N0eXBlOworLSAoRE9NSW1wbGVtZW50YXRpb24gKilpbXBsZW1lbnRhdGlvbjsKKy0g
KERPTUVsZW1lbnQgKilkb2N1bWVudEVsZW1lbnQ7CistIChET01FbGVtZW50ICopY3JlYXRlRWxl
bWVudDooTlNTdHJpbmcgKil0YWdOYW1lOworLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWNyZWF0
ZURvY3VtZW50RnJhZ21lbnQ7CistIChET01UZXh0ICopY3JlYXRlVGV4dE5vZGU6KE5TU3RyaW5n
ICopZGF0YTsKKy0gKERPTUNvbW1lbnQgKiljcmVhdGVDb21tZW50OihOU1N0cmluZyAqKWRhdGE7
CistIChET01DREFUQVNlY3Rpb24gKiljcmVhdGVDREFUQVNlY3Rpb246KE5TU3RyaW5nICopZGF0
YTsKKy0gKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKWNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVj
dGlvbjooTlNTdHJpbmcgKil0YXJnZXQgOihOU1N0cmluZyAqKWRhdGE7CistIChET01BdHRyICop
Y3JlYXRlQXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWU7CistIChET01FbnRpdHlSZWZlcmVuY2Ug
KiljcmVhdGVFbnRpdHlSZWZlcmVuY2U6KE5TU3RyaW5nICopbmFtZTsKKy0gKERPTU5vZGVMaXN0
ICopZ2V0RWxlbWVudHNCeVRhZ05hbWU6KE5TU3RyaW5nICopdGFnbmFtZTsKKy0gKERPTU5vZGUg
KilpbXBvcnROb2RlOihET01Ob2RlICopaW1wb3J0ZWROb2RlIDooQk9PTClkZWVwOworLSAoRE9N
RWxlbWVudCAqKWNyZWF0ZUVsZW1lbnROUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0
cmluZyAqKXF1YWxpZmllZE5hbWU7CistIChET01BdHRyICopY3JlYXRlQXR0cmlidXRlTlM6KE5T
U3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lOworLSAoRE9N
Tm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVS
SSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOworLSAoRE9NRWxlbWVudCAqKWdldEVsZW1lbnRCeUlk
OihOU1N0cmluZyAqKWVsZW1lbnRJZDsKKy0gKERPTU5vZGUgKilhZG9wdE5vZGU6KERPTU5vZGUg
Kilzb3VyY2U7CitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRG9jdW1lbnQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURvY3VtZW50Lm1tCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURvY3VtZW50Lm1tCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDIwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2
IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2IEphbWVzIEcuIFNwZXRoIDxzcGV0aEBlbmQuY29tPgorICogQ29weXJpZ2h0IChD
KSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRPTURvY3VtZW50LmgiCisKKyNpbXBvcnQgIkRPTUlu
dGVybmFsLmgiIC8vIGZvciBET01fY2FzdDw+CisjaW1wb3J0ICJEb2N1bWVudC5oIiAvLyBJbXBs
ZW1lbnRhdGlvbgorCisjaW1wb3J0ICJBdHRyLmgiCisjaW1wb3J0ICJDREFUQVNlY3Rpb24uaCIK
KyNpbXBvcnQgIkNvbW1lbnQuaCIKKyNpbXBvcnQgIkRPTUF0dHIuaCIKKyNpbXBvcnQgIkRPTUNE
QVRBU2VjdGlvbi5oIgorI2ltcG9ydCAiRE9NQ29tbWVudC5oIgorI2ltcG9ydCAiRE9NRE9NSW1w
bGVtZW50YXRpb24uaCIKKyNpbXBvcnQgIkRPTURvY3VtZW50RnJhZ21lbnQuaCIKKyNpbXBvcnQg
IkRPTURvY3VtZW50VHlwZS5oIgorI2ltcG9ydCAiRE9NRWxlbWVudC5oIgorI2ltcG9ydCAiRE9N
RW50aXR5UmVmZXJlbmNlLmgiCisjaW1wb3J0ICJET01JbXBsZW1lbnRhdGlvbi5oIgorI2ltcG9y
dCAiRE9NSW1wbGVtZW50YXRpb25Gcm9udC5oIgorI2ltcG9ydCAiRE9NTm9kZS5oIgorI2ltcG9y
dCAiRE9NTm9kZUxpc3QuaCIKKyNpbXBvcnQgIkRPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgor
I2ltcG9ydCAiRE9NVGV4dC5oIgorI2ltcG9ydCAiRG9jdW1lbnRGcmFnbWVudC5oIgorI2ltcG9y
dCAiRG9jdW1lbnRUeXBlLmgiCisjaW1wb3J0ICJFbGVtZW50LmgiCisjaW1wb3J0ICJFbnRpdHlS
ZWZlcmVuY2UuaCIKKyNpbXBvcnQgIk5vZGVMaXN0LmgiCisjaW1wb3J0ICJQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uaCIKKyNpbXBvcnQgIlRleHQuaCIKKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+
CisKK0BpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudAorCistIChET01Ob2RlICopYWRvcHROb2Rl
OihET01Ob2RlICopc291cmNlCit7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVu
dF0tPmFkb3B0Tm9kZShbc291cmNlIF9ub2RlXSwgZWMpLmdldCgpXTsKKyAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKERPTURvY3VtZW50VHlwZSAq
KWRvY3R5cGUKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnRUeXBlICo+KFtE
T01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5kb2N0eXBlKCldKTsKK30KKworLSAo
RE9NSW1wbGVtZW50YXRpb24gKilpbXBsZW1lbnRhdGlvbgoreworICAgIHJldHVybiBbRE9NSW1w
bGVtZW50YXRpb24gX0RPTUltcGxlbWVudGF0aW9uV2l0aDppbXBsZW1lbnRhdGlvbkZyb250KFtz
ZWxmIF9kb2N1bWVudF0pXTsKK30KKworLSAoRE9NRWxlbWVudCAqKWRvY3VtZW50RWxlbWVudAor
eworICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0
aDpbc2VsZiBfZG9jdW1lbnRdLT5kb2N1bWVudEVsZW1lbnQoKV0pOworfQorCistIChET01FbGVt
ZW50ICopY3JlYXRlRWxlbWVudDooTlNTdHJpbmcgKil0YWdOYW1lCit7CisgICAgQVNTRVJUKHRh
Z05hbWUpOworCisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9NRWxl
bWVudCAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihbRE9NTm9kZSBfbm9kZVdp
dGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRWxlbWVudCh0YWdOYW1lLCBlYykuZ2V0KCldKTsK
KyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKERP
TURvY3VtZW50RnJhZ21lbnQgKiljcmVhdGVEb2N1bWVudEZyYWdtZW50Cit7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PERPTURvY3VtZW50RnJhZ21lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOltz
ZWxmIF9kb2N1bWVudF0tPmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKS5nZXQoKV0pOworfQorCist
IChET01UZXh0ICopY3JlYXRlVGV4dE5vZGU6KE5TU3RyaW5nICopZGF0YQoreworICAgIEFTU0VS
VChkYXRhKTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01UZXh0ICo+KFtET01Ob2RlIF9u
b2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVUZXh0Tm9kZShkYXRhKS5nZXQoKV0pOwor
fQorCistIChET01Db21tZW50ICopY3JlYXRlQ29tbWVudDooTlNTdHJpbmcgKilkYXRhCit7Cisg
ICAgQVNTRVJUKGRhdGEpOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUNvbW1lbnQgKj4o
W0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNvbW1lbnQoZGF0YSku
Z2V0KCldKTsKK30KKworLSAoRE9NQ0RBVEFTZWN0aW9uICopY3JlYXRlQ0RBVEFTZWN0aW9uOihO
U1N0cmluZyAqKWRhdGEKK3sKKyAgICBBU1NFUlQoZGF0YSk7CisKKyAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBET01DREFUQVNlY3Rpb24gKnJlc3VsdCA9IHN0YXRpY19j
YXN0PERPTUNEQVRBU2VjdGlvbiAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50
XS0+Y3JlYXRlQ0RBVEFTZWN0aW9uKGRhdGEsIGVjKS5nZXQoKV0pOworICAgIHJhaXNlT25ET01F
cnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAoRE9NUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uICopY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uOihOU1N0cmluZyAqKXRhcmdldCA6
KE5TU3RyaW5nICopZGF0YQoreworICAgIEFTU0VSVCh0YXJnZXQpOworICAgIEFTU0VSVChkYXRh
KTsKKworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTVByb2Nlc3Np
bmdJbnN0cnVjdGlvbiAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RE9NUHJvY2Vzc2luZ0luc3RydWN0
aW9uICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24odGFyZ2V0LCBkYXRhLCBlYykuZ2V0KCldKTsKKyAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKERPTUF0dHIgKiljcmVhdGVB
dHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZQoreworICAgIEFTU0VSVChuYW1lKTsKKworICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01B
dHRyIF9hdHRyV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVBdHRyaWJ1dGUobmFtZSwgZWMp
LmdldCgpXTsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKKy0gKERPTUVudGl0eVJlZmVyZW5jZSAqKWNyZWF0ZUVudGl0eVJlZmVyZW5jZTooTlNTdHJp
bmcgKiluYW1lCit7CisgICAgQVNTRVJUKG5hbWUpOworCisgICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgRE9NRW50aXR5UmVmZXJlbmNlICpyZXN1bHQgPSBzdGF0aWNfY2Fz
dDxET01FbnRpdHlSZWZlcmVuY2UgKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVu
dF0tPmNyZWF0ZUVudGl0eVJlZmVyZW5jZShuYW1lLCBlYykuZ2V0KCldKTsKKyAgICByYWlzZU9u
RE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKERPTU5vZGVMaXN0ICop
Z2V0RWxlbWVudHNCeVRhZ05hbWU6KE5TU3RyaW5nICopdGFnbmFtZQoreworICAgIEFTU0VSVCh0
YWduYW1lKTsKKworICAgIHJldHVybiBbRE9NTm9kZUxpc3QgX25vZGVMaXN0V2l0aDpbc2VsZiBf
ZG9jdW1lbnRdLT5nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWduYW1lKS5nZXQoKV07Cit9CisKKy0g
KERPTU5vZGUgKilpbXBvcnROb2RlOihET01Ob2RlICopaW1wb3J0ZWROb2RlIDooQk9PTClkZWVw
Cit7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9NTm9kZSAqcmVz
dWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmltcG9ydE5vZGUoW2lt
cG9ydGVkTm9kZSBfbm9kZV0sIGRlZXAsIGVjKS5nZXQoKV07CisgICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChET01FbGVtZW50ICopY3JlYXRlRWxl
bWVudE5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFt
ZQoreworICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOworICAgIEFTU0VSVChxdWFsaWZpZWROYW1l
KTsKKworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTU5vZGUgKnJl
c3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVFbGVtZW50
TlMobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCBlYykuZ2V0KCldOworICAgIHJhaXNlT25E
T01FcnJvcihlYyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUVsZW1lbnQgKj4ocmVzdWx0
KTsKK30KKworLSAoRE9NQXR0ciAqKWNyZWF0ZUF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVz
cGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZQoreworICAgIEFTU0VSVChuYW1lc3Bh
Y2VVUkkpOworICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsKKworICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0
aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIHF1YWxp
ZmllZE5hbWUsIGVjKS5nZXQoKV07CisgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCistIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6
KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKK3sKKyAgICBB
U1NFUlQobmFtZXNwYWNlVVJJKTsKKyAgICBBU1NFUlQobG9jYWxOYW1lKTsKKworICAgIHJldHVy
biBbRE9NTm9kZUxpc3QgX25vZGVMaXN0V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5nZXRFbGVtZW50
c0J5VGFnTmFtZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKS5nZXQoKV07Cit9CisKKy0gKERP
TUVsZW1lbnQgKilnZXRFbGVtZW50QnlJZDooTlNTdHJpbmcgKillbGVtZW50SWQKK3sKKyAgICBB
U1NFUlQoZWxlbWVudElkKTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+
KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5nZXRFbGVtZW50QnlJZChlbGVt
ZW50SWQpXSk7Cit9CisKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUVsZW1lbnQuaAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FbGVtZW50LmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bXBvcnQgPFdlYkNvcmUvRE9NTm9kZS5oPgorCitAY2xhc3MgRE9NQXR0cjsKK0BjbGFzcyBET01O
b2RlTGlzdDsKKworQGludGVyZmFjZSBET01FbGVtZW50IDogRE9NTm9kZQorLSAoTlNTdHJpbmcg
Kil0YWdOYW1lOworLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsK
Ky0gKHZvaWQpc2V0QXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUgOihOU1N0cmluZyAqKXZhbHVl
OworLSAodm9pZClyZW1vdmVBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKKy0gKERPTUF0dHIg
KilnZXRBdHRyaWJ1dGVOb2RlOihOU1N0cmluZyAqKW5hbWU7CistIChET01BdHRyICopc2V0QXR0
cmlidXRlTm9kZTooRE9NQXR0ciAqKW5ld0F0dHI7CistIChET01BdHRyICopcmVtb3ZlQXR0cmli
dXRlTm9kZTooRE9NQXR0ciAqKW9sZEF0dHI7CistIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRz
QnlUYWdOYW1lOihOU1N0cmluZyAqKW5hbWU7CistIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZU5T
OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOworLSAodm9p
ZClzZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1
YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXZhbHVlOworLSAodm9pZClyZW1vdmVBdHRyaWJ1dGVO
UzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKKy0gKERP
TUF0dHIgKilnZXRBdHRyaWJ1dGVOb2RlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNT
dHJpbmcgKilsb2NhbE5hbWU7CistIChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZU5TOihET01B
dHRyICopbmV3QXR0cjsKKy0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWVOUzoo
TlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKKy0gKEJPT0wp
aGFzQXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWU7CistIChCT09MKWhhc0F0dHJpYnV0ZU5TOihO
U1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOworLSAodm9pZClm
b2N1czsKKy0gKHZvaWQpYmx1cjsKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01FbGVtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FbGVt
ZW50Lm1tCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUVsZW1lbnQu
bW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA0LTIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgSmFtZXMgRy4gU3BldGggPHNwZXRoQGVuZC5jb20+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRE9NRWxlbWVudC5oIgorCisjaW1wb3J0
ICJET01BdHRyLmgiCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorCisjaW1wb3J0ICJET01OYW1l
ZE5vZGVNYXAuaCIKKyNpbXBvcnQgIkRPTU5vZGVMaXN0LmgiCisjaW1wb3J0ICJFbGVtZW50Lmgi
CisjaW1wb3J0ICJOYW1lZEF0dHJNYXAuaCIKKyNpbXBvcnQgIk5vZGVMaXN0LmgiCisjaW1wb3J0
IDx3dGYvQXNzZXJ0aW9ucy5oPgorCitAaW1wbGVtZW50YXRpb24gRE9NRWxlbWVudAorCistIChO
U1N0cmluZyAqKXRhZ05hbWUKK3sKKyAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5ub2RlTmFt
ZSgpOworfQorCistIChET01OYW1lZE5vZGVNYXAgKilhdHRyaWJ1dGVzCit7CisgICAgcmV0dXJu
IFtET01OYW1lZE5vZGVNYXAgX25hbWVkTm9kZU1hcFdpdGg6W3NlbGYgX2VsZW1lbnRdLT5hdHRy
aWJ1dGVzKCldOworfQorCistIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZTooTlNTdHJpbmcgKilu
YW1lCit7CisgICAgQVNTRVJUKG5hbWUpOworCisgICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50XS0+
Z2V0QXR0cmlidXRlKG5hbWUpOworfQorCistICh2b2lkKXNldEF0dHJpYnV0ZTooTlNTdHJpbmcg
KiluYW1lIDooTlNTdHJpbmcgKil2YWx1ZQoreworICAgIEFTU0VSVChuYW1lKTsKKyAgICBBU1NF
UlQodmFsdWUpOworCisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgW3Nl
bGYgX2VsZW1lbnRdLT5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIGVjKTsKKyAgICByYWlzZU9u
RE9NRXJyb3IoZWMpOworfQorCistICh2b2lkKXJlbW92ZUF0dHJpYnV0ZTooTlNTdHJpbmcgKilu
YW1lCit7CisgICAgQVNTRVJUKG5hbWUpOworCisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgW3NlbGYgX2VsZW1lbnRdLT5yZW1vdmVBdHRyaWJ1dGUobmFtZSwgZWMpOwor
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7Cit9CisKKy0gKERPTUF0dHIgKilnZXRBdHRyaWJ1dGVO
b2RlOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICBBU1NFUlQobmFtZSk7CisKKyAgICByZXR1cm4g
W0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0QXR0cmlidXRlTm9kZShuYW1l
KS5nZXQoKV07Cit9CisKKy0gKERPTUF0dHIgKilzZXRBdHRyaWJ1dGVOb2RlOihET01BdHRyICop
bmV3QXR0cgoreworICAgIEFTU0VSVChuZXdBdHRyKTsKKworICAgIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0aDpb
c2VsZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZU5vZGUoW25ld0F0dHIgX2F0dHJdLCBlYykuZ2V0
KCldOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
LSAoRE9NQXR0ciAqKXJlbW92ZUF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKilvbGRBdHRyCit7Cisg
ICAgQVNTRVJUKG9sZEF0dHIpOworCisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVtZW50
XS0+cmVtb3ZlQXR0cmlidXRlTm9kZShbb2xkQXR0ciBfYXR0cl0sIGVjKS5nZXQoKV07CisgICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChET01Ob2Rl
TGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICBBU1NF
UlQobmFtZSk7CisKKyAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYg
X2VsZW1lbnRdLT5nZXRFbGVtZW50c0J5VGFnTmFtZShuYW1lKS5nZXQoKV07Cit9CisKKy0gKE5T
U3RyaW5nICopZ2V0QXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJp
bmcgKilsb2NhbE5hbWUKK3sKKyAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKKyAgICBBU1NFUlQo
bG9jYWxOYW1lKTsKKworICAgIHJldHVybiBbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0ZU5T
KG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKK30KKworLSAodm9pZClzZXRBdHRyaWJ1dGVOUzoo
TlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0
cmluZyAqKXZhbHVlCit7CisgICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7CisgICAgQVNTRVJUKHF1
YWxpZmllZE5hbWUpOworICAgIEFTU0VSVCh2YWx1ZSk7CisKKyAgICBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICBbc2VsZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZU5TKG5hbWVz
cGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgdmFsdWUsIGVjKTsKKyAgICByYWlzZU9uRE9NRXJyb3Io
ZWMpOworfQorCistICh2b2lkKXJlbW92ZUF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFj
ZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCit7CisgICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7
CisgICAgQVNTRVJUKGxvY2FsTmFtZSk7CisKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVj
ID0gMDsKKyAgICBbc2VsZiBfZWxlbWVudF0tPnJlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVS
SSwgbG9jYWxOYW1lLCBlYyk7CisgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKworLSAoRE9N
QXR0ciAqKWdldEF0dHJpYnV0ZU5vZGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0
cmluZyAqKWxvY2FsTmFtZQoreworICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOworICAgIEFTU0VS
VChsb2NhbE5hbWUpOworCisgICAgcmV0dXJuIFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxl
bWVudF0tPmdldEF0dHJpYnV0ZU5vZGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkuZ2V0KCld
OworfQorCistIChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZU5TOihET01BdHRyICopbmV3QXR0
cgoreworICAgIEFTU0VSVChuZXdBdHRyKTsKKworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBf
ZWxlbWVudF0tPnNldEF0dHJpYnV0ZU5vZGVOUyhbbmV3QXR0ciBfYXR0cl0sIGVjKS5nZXQoKV07
CisgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChE
T01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNl
VVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKK3sKKyAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsK
KyAgICBBU1NFUlQobG9jYWxOYW1lKTsKKworICAgIHJldHVybiBbRE9NTm9kZUxpc3QgX25vZGVM
aXN0V2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEVsZW1lbnRzQnlUYWdOYW1lTlMobmFtZXNwYWNl
VVJJLCBsb2NhbE5hbWUpLmdldCgpXTsKK30KKworLSAoQk9PTCloYXNBdHRyaWJ1dGU6KE5TU3Ry
aW5nICopbmFtZQoreworICAgIEFTU0VSVChuYW1lKTsKKworICAgIHJldHVybiBbc2VsZiBfZWxl
bWVudF0tPmhhc0F0dHJpYnV0ZShuYW1lKTsKK30KKworLSAoQk9PTCloYXNBdHRyaWJ1dGVOUzoo
TlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQoreworICAgIEFT
U0VSVChuYW1lc3BhY2VVUkkpOworICAgIEFTU0VSVChsb2NhbE5hbWUpOworCisgICAgcmV0dXJu
IFtzZWxmIF9lbGVtZW50XS0+aGFzQXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUp
OworfQorCistICh2b2lkKWZvY3VzCit7CisgICAgW3NlbGYgX2VsZW1lbnRdLT5mb2N1cygpOwor
fQorCistICh2b2lkKWJsdXIKK3sKKyAgICBbc2VsZiBfZWxlbWVudF0tPmJsdXIoKTsKK30KKwor
QGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FdmVudHMuaAkocmV2aXNpb24gMTU5NDUpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZlbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFwcGxlIENvbXB1dGVy
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVl
bCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMyw2ICsyNCw4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW1wb3J0
IDxXZWJDb3JlL0RPTU5vZGUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0RPTVZpZXdzLmg+CiAKIEBjbGFzcyBET01FdmVudDsKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01FeHRlbnNpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTUV4dGVuc2lvbnMuaAkocmV2aXNpb24gMTU5NDUpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NRXh0ZW5zaW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vp
bmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjMsMTIgKzI0LDI4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW1wb3J0IDxX
ZWJDb3JlL0RPTUF0dHIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NQ1NTLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0RPTURPTUltcGxlbWVudGF0aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTURvY3Vt
ZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUVsZW1lbnQuaD4KKwogI2ltcG9ydCA8V2ViQ29y
ZS9ET01IVE1MLmg+CisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTEFuY2hvckVsZW1lbnQuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTEFyZWFFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0RPTUhUTUxEb2N1bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MRWxlbWVudC5oPgor
I2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MSW1hZ2VFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0RPTUhUTUxMaW5rRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MT2JqZWN0RWxl
bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MSW5wdXRFbGVtZW50Lmg+CisjaW1wb3J0
IDxXZWJDb3JlL0RPTU5vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NUmFuZ2UuaD4KIAogQGNs
YXNzIE5TQ29sb3I7CiBAY2xhc3MgTlNJbWFnZTsKK0BjbGFzcyBET01IVE1MQ29sbGVjdGlvbjsK
IAogQGludGVyZmFjZSBET01JbXBsZW1lbnRhdGlvbiAoRE9NSW1wbGVtZW50YXRpb25FeHRlbnNp
b25zKQogLSAoRE9NSFRNTERvY3VtZW50ICopY3JlYXRlSFRNTERvY3VtZW50OihOU1N0cmluZyAq
KXRpdGxlOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTC5oCShyZXZpc2lvbiAxNTk0NSkKKysr
IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcg
PHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMyw3NjIgKzI0LDU5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW1wb3J0IDxXZWJD
b3JlL0RPTUNvcmUuaD4KLQotQGNsYXNzIERPTUhUTUxFbGVtZW50OwotQGNsYXNzIERPTUhUTUxG
b3JtRWxlbWVudDsKLUBjbGFzcyBET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudDsKLUBjbGFzcyBE
T01IVE1MVGFibGVTZWN0aW9uRWxlbWVudDsKLQotQGludGVyZmFjZSBET01IVE1MQ29sbGVjdGlv
biA6IERPTU9iamVjdAotLSAodW5zaWduZWQpbGVuZ3RoOwotLSAoRE9NTm9kZSAqKWl0ZW06KHVu
c2lnbmVkKWluZGV4OwotLSAoRE9NTm9kZSAqKW5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1lOwot
QGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbiA6IERPTU9iamVjdAot
LSAodW5zaWduZWQpbGVuZ3RoOwotLSAodm9pZClzZXRMZW5ndGg6KHVuc2lnbmVkKWxlbmd0aDsK
LS0gKERPTU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleDsKLS0gKERPTU5vZGUgKiluYW1lZEl0
ZW06KE5TU3RyaW5nICopbmFtZTsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MRG9jdW1lbnQg
OiBET01Eb2N1bWVudAotLSAoTlNTdHJpbmcgKil0aXRsZTsKLS0gKHZvaWQpc2V0VGl0bGU6KE5T
U3RyaW5nICopdGl0bGU7Ci0tIChOU1N0cmluZyAqKXJlZmVycmVyOwotLSAoTlNTdHJpbmcgKilk
b21haW47Ci0tIChOU1N0cmluZyAqKVVSTDsKLS0gKERPTUhUTUxFbGVtZW50ICopYm9keTsKLS0g
KHZvaWQpc2V0Qm9keTooRE9NSFRNTEVsZW1lbnQgKilib2R5OwotLSAoRE9NSFRNTENvbGxlY3Rp
b24gKilpbWFnZXM7Ci0tIChET01IVE1MQ29sbGVjdGlvbiAqKWFwcGxldHM7Ci0tIChET01IVE1M
Q29sbGVjdGlvbiAqKWxpbmtzOwotLSAoRE9NSFRNTENvbGxlY3Rpb24gKilmb3JtczsKLS0gKERP
TUhUTUxDb2xsZWN0aW9uICopYW5jaG9yczsKLS0gKE5TU3RyaW5nICopY29va2llOwotLSAodm9p
ZClzZXRDb29raWU6KE5TU3RyaW5nICopY29va2llOwotLSAodm9pZClvcGVuOwotLSAodm9pZClj
bG9zZTsKLS0gKHZvaWQpd3JpdGU6KE5TU3RyaW5nICopdGV4dDsKLS0gKHZvaWQpd3JpdGVsbjoo
TlNTdHJpbmcgKil0ZXh0OwotLSAoRE9NRWxlbWVudCAqKWdldEVsZW1lbnRCeUlkOihOU1N0cmlu
ZyAqKWVsZW1lbnRJZDsKLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeU5hbWU6KE5TU3Ry
aW5nICopZWxlbWVudE5hbWU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTEVsZW1lbnQgOiBE
T01FbGVtZW50Ci0tIChOU1N0cmluZyAqKWlkTmFtZTsKLS0gKHZvaWQpc2V0SWROYW1lOihOU1N0
cmluZyAqKWlkTmFtZTsKLS0gKE5TU3RyaW5nICopdGl0bGU7Ci0tICh2b2lkKXNldFRpdGxlOihO
U1N0cmluZyAqKXRpdGxlOwotLSAoTlNTdHJpbmcgKilsYW5nOwotLSAodm9pZClzZXRMYW5nOihO
U1N0cmluZyAqKWxhbmc7Ci0tIChOU1N0cmluZyAqKWRpcjsKLS0gKHZvaWQpc2V0RGlyOihOU1N0
cmluZyAqKWRpcjsKLS0gKE5TU3RyaW5nICopY2xhc3NOYW1lOwotLSAodm9pZClzZXRDbGFzc05h
bWU6KE5TU3RyaW5nICopY2xhc3NOYW1lOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxIdG1s
RWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChOU1N0cmluZyAqKXZlcnNpb247Ci0tICh2b2lk
KXNldFZlcnNpb246KE5TU3RyaW5nICopdmVyc2lvbjsKLUBlbmQKLQotQGludGVyZmFjZSBET01I
VE1MSGVhZEVsZW1lbnQgOiBET01IVE1MRWxlbWVudAotLSAoTlNTdHJpbmcgKilwcm9maWxlOwot
LSAodm9pZClzZXRQcm9maWxlOihOU1N0cmluZyAqKXByb2ZpbGU7Ci1AZW5kCi0KLUBpbnRlcmZh
Y2UgRE9NSFRNTExpbmtFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKEJPT0wpZGlzYWJsZWQ7
Ci0tICh2b2lkKXNldERpc2FibGVkOihCT09MKWRpc2FibGVkOwotLSAoTlNTdHJpbmcgKiljaGFy
c2V0OwotLSAodm9pZClzZXRDaGFyc2V0OihOU1N0cmluZyAqKWNoYXJzZXQ7Ci0tIChOU1N0cmlu
ZyAqKWhyZWY7Ci0tICh2b2lkKXNldEhyZWY6KE5TU3RyaW5nICopaHJlZjsKLS0gKE5TU3RyaW5n
ICopaHJlZmxhbmc7Ci0tICh2b2lkKXNldEhyZWZsYW5nOihOU1N0cmluZyAqKWhyZWZsYW5nOwot
LSAoTlNTdHJpbmcgKiltZWRpYTsKLS0gKHZvaWQpc2V0TWVkaWE6KE5TU3RyaW5nICopbWVkaWE7
Ci0tIChOU1N0cmluZyAqKXJlbDsKLS0gKHZvaWQpc2V0UmVsOihOU1N0cmluZyAqKXJlbDsKLS0g
KE5TU3RyaW5nICopcmV2OwotLSAodm9pZClzZXRSZXY6KE5TU3RyaW5nICopcmV2OwotLSAoTlNT
dHJpbmcgKil0YXJnZXQ7Ci0tICh2b2lkKXNldFRhcmdldDooTlNTdHJpbmcgKil0YXJnZXQ7Ci0t
IChOU1N0cmluZyAqKXR5cGU7Ci0tICh2b2lkKXNldFR5cGU6KE5TU3RyaW5nICopdHlwZTsKLUBl
bmQKLQotQGludGVyZmFjZSBET01IVE1MVGl0bGVFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0g
KE5TU3RyaW5nICopdGV4dDsKLS0gKHZvaWQpc2V0VGV4dDooTlNTdHJpbmcgKil0ZXh0OwotQGVu
ZAotCi1AaW50ZXJmYWNlIERPTUhUTUxNZXRhRWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChO
U1N0cmluZyAqKWNvbnRlbnQ7Ci0tICh2b2lkKXNldENvbnRlbnQ6KE5TU3RyaW5nICopY29udGVu
dDsKLS0gKE5TU3RyaW5nICopaHR0cEVxdWl2OwotLSAodm9pZClzZXRIdHRwRXF1aXY6KE5TU3Ry
aW5nICopaHR0cEVxdWl2OwotLSAoTlNTdHJpbmcgKiluYW1lOwotLSAodm9pZClzZXROYW1lOihO
U1N0cmluZyAqKW5hbWU7Ci0tIChOU1N0cmluZyAqKXNjaGVtZTsKLS0gKHZvaWQpc2V0U2NoZW1l
OihOU1N0cmluZyAqKXNjaGVtZTsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MQmFzZUVsZW1l
bnQgOiBET01IVE1MRWxlbWVudAotLSAoTlNTdHJpbmcgKilocmVmOwotLSAodm9pZClzZXRIcmVm
OihOU1N0cmluZyAqKWhyZWY7Ci0tIChOU1N0cmluZyAqKXRhcmdldDsKLS0gKHZvaWQpc2V0VGFy
Z2V0OihOU1N0cmluZyAqKXRhcmdldDsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MSXNJbmRl
eEVsZW1lbnQgOiBET01IVE1MRWxlbWVudAotLSAoRE9NSFRNTEZvcm1FbGVtZW50ICopZm9ybTsK
LS0gKE5TU3RyaW5nICopcHJvbXB0OwotLSAodm9pZClzZXRQcm9tcHQ6KE5TU3RyaW5nICopcHJv
bXB0OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxTdHlsZUVsZW1lbnQgOiBET01IVE1MRWxl
bWVudAotLSAoQk9PTClkaXNhYmxlZDsKLS0gKHZvaWQpc2V0RGlzYWJsZWQ6KEJPT0wpZGlzYWJs
ZWQ7Ci0tIChOU1N0cmluZyAqKW1lZGlhOwotLSAodm9pZClzZXRNZWRpYTooTlNTdHJpbmcgKilt
ZWRpYTsKLS0gKE5TU3RyaW5nICopdHlwZTsKLS0gKHZvaWQpc2V0VHlwZTooTlNTdHJpbmcgKil0
eXBlOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxCb2R5RWxlbWVudCA6IERPTUhUTUxFbGVt
ZW50Ci0tIChOU1N0cmluZyAqKWFMaW5rOwotLSAodm9pZClzZXRBTGluazooTlNTdHJpbmcgKilh
TGluazsKLS0gKE5TU3RyaW5nICopYmFja2dyb3VuZDsKLS0gKHZvaWQpc2V0QmFja2dyb3VuZDoo
TlNTdHJpbmcgKiliYWNrZ3JvdW5kOwotLSAoTlNTdHJpbmcgKiliZ0NvbG9yOwotLSAodm9pZClz
ZXRCZ0NvbG9yOihOU1N0cmluZyAqKWJnQ29sb3I7Ci0tIChOU1N0cmluZyAqKWxpbms7Ci0tICh2
b2lkKXNldExpbms6KE5TU3RyaW5nICopbGluazsKLS0gKE5TU3RyaW5nICopdGV4dDsKLS0gKHZv
aWQpc2V0VGV4dDooTlNTdHJpbmcgKil0ZXh0OwotLSAoTlNTdHJpbmcgKil2TGluazsKLS0gKHZv
aWQpc2V0Vkxpbms6KE5TU3RyaW5nICopdkxpbms7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRN
TEZvcm1FbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKERPTUhUTUxDb2xsZWN0aW9uICopZWxl
bWVudHM7Ci0tIChpbnQpbGVuZ3RoOwotLSAoTlNTdHJpbmcgKiluYW1lOwotLSAodm9pZClzZXRO
YW1lOihOU1N0cmluZyAqKW5hbWU7Ci0tIChOU1N0cmluZyAqKWFjY2VwdENoYXJzZXQ7Ci0tICh2
b2lkKXNldEFjY2VwdENoYXJzZXQ6KE5TU3RyaW5nICopYWNjZXB0Q2hhcnNldDsKLS0gKE5TU3Ry
aW5nICopYWN0aW9uOwotLSAodm9pZClzZXRBY3Rpb246KE5TU3RyaW5nICopYWN0aW9uOwotLSAo
TlNTdHJpbmcgKillbmN0eXBlOwotLSAodm9pZClzZXRFbmN0eXBlOihOU1N0cmluZyAqKWVuY3R5
cGU7Ci0tIChOU1N0cmluZyAqKW1ldGhvZDsKLS0gKHZvaWQpc2V0TWV0aG9kOihOU1N0cmluZyAq
KW1ldGhvZDsKLS0gKE5TU3RyaW5nICopdGFyZ2V0OwotLSAodm9pZClzZXRUYXJnZXQ6KE5TU3Ry
aW5nICopdGFyZ2V0OwotLSAodm9pZClzdWJtaXQ7Ci0tICh2b2lkKXJlc2V0OwotQGVuZAotCi1A
aW50ZXJmYWNlIERPTUhUTUxTZWxlY3RFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKE5TU3Ry
aW5nICopdHlwZTsKLS0gKGludClzZWxlY3RlZEluZGV4OwotLSAodm9pZClzZXRTZWxlY3RlZElu
ZGV4OihpbnQpc2VsZWN0ZWRJbmRleDsKLS0gKE5TU3RyaW5nICopdmFsdWU7Ci0tICh2b2lkKXNl
dFZhbHVlOihOU1N0cmluZyAqKXZhbHVlOwotLSAoaW50KWxlbmd0aDsKLS0gKERPTUhUTUxGb3Jt
RWxlbWVudCAqKWZvcm07Ci0tIChET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24gKilvcHRpb25zOwot
LSAoQk9PTClkaXNhYmxlZDsKLS0gKHZvaWQpc2V0RGlzYWJsZWQ6KEJPT0wpZGlzYWJsZWQ7Ci0t
IChCT09MKW11bHRpcGxlOwotLSAodm9pZClzZXRNdWx0aXBsZTooQk9PTCltdWx0aXBsZTsKLS0g
KE5TU3RyaW5nICopbmFtZTsKLS0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcgKiluYW1lOwotLSAo
aW50KXNpemU7Ci0tICh2b2lkKXNldFNpemU6KGludClzaXplOwotLSAoaW50KXRhYkluZGV4Owot
LSAodm9pZClzZXRUYWJJbmRleDooaW50KXRhYkluZGV4OwotLSAodm9pZClhZGQ6KERPTUhUTUxF
bGVtZW50ICopZWxlbWVudCA6KERPTUhUTUxFbGVtZW50ICopYmVmb3JlOwotLSAodm9pZClyZW1v
dmU6KGludClpbmRleDsKLS0gKHZvaWQpYmx1cjsKLS0gKHZvaWQpZm9jdXM7Ci1AZW5kCi0KLUBp
bnRlcmZhY2UgRE9NSFRNTE9wdEdyb3VwRWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChCT09M
KWRpc2FibGVkOwotLSAodm9pZClzZXREaXNhYmxlZDooQk9PTClkaXNhYmxlZDsKLS0gKE5TU3Ry
aW5nICopbGFiZWw7Ci0tICh2b2lkKXNldExhYmVsOihOU1N0cmluZyAqKWxhYmVsOwotQGVuZAot
Ci1AaW50ZXJmYWNlIERPTUhUTUxPcHRpb25FbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKERP
TUhUTUxGb3JtRWxlbWVudCAqKWZvcm07Ci0tIChCT09MKWRlZmF1bHRTZWxlY3RlZDsKLS0gKHZv
aWQpc2V0RGVmYXVsdFNlbGVjdGVkOihCT09MKWRlZmF1bHRTZWxlY3RlZDsKLS0gKE5TU3RyaW5n
ICopdGV4dDsKLS0gKGludClpbmRleDsKLS0gKEJPT0wpZGlzYWJsZWQ7Ci0tICh2b2lkKXNldERp
c2FibGVkOihCT09MKWRpc2FibGVkOwotLSAoTlNTdHJpbmcgKilsYWJlbDsKLS0gKHZvaWQpc2V0
TGFiZWw6KE5TU3RyaW5nICopbGFiZWw7Ci0tIChCT09MKXNlbGVjdGVkOwotLSAodm9pZClzZXRT
ZWxlY3RlZDooQk9PTClzZWxlY3RlZDsKLS0gKE5TU3RyaW5nICopdmFsdWU7Ci0tICh2b2lkKXNl
dFZhbHVlOihOU1N0cmluZyAqKXZhbHVlOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxJbnB1
dEVsZW1lbnQgOiBET01IVE1MRWxlbWVudAotLSAoTlNTdHJpbmcgKilkZWZhdWx0VmFsdWU7Ci0t
ICh2b2lkKXNldERlZmF1bHRWYWx1ZTooTlNTdHJpbmcgKilkZWZhdWx0VmFsdWU7Ci0tIChCT09M
KWRlZmF1bHRDaGVja2VkOwotLSAodm9pZClzZXREZWZhdWx0Q2hlY2tlZDooQk9PTClkZWZhdWx0
Q2hlY2tlZDsKLS0gKERPTUhUTUxGb3JtRWxlbWVudCAqKWZvcm07Ci0tIChOU1N0cmluZyAqKWFj
Y2VwdDsKLS0gKHZvaWQpc2V0QWNjZXB0OihOU1N0cmluZyAqKWFjY2VwdDsKLS0gKE5TU3RyaW5n
ICopYWNjZXNzS2V5OwotLSAodm9pZClzZXRBY2Nlc3NLZXk6KE5TU3RyaW5nICopYWNjZXNzS2V5
OwotLSAoTlNTdHJpbmcgKilhbGlnbjsKLS0gKHZvaWQpc2V0QWxpZ246KE5TU3RyaW5nICopYWxp
Z247Ci0tIChOU1N0cmluZyAqKWFsdDsKLS0gKHZvaWQpc2V0QWx0OihOU1N0cmluZyAqKWFsdDsK
LS0gKEJPT0wpY2hlY2tlZDsKLS0gKHZvaWQpc2V0Q2hlY2tlZDooQk9PTCljaGVja2VkOwotLSAo
Qk9PTClkaXNhYmxlZDsKLS0gKHZvaWQpc2V0RGlzYWJsZWQ6KEJPT0wpZGlzYWJsZWQ7Ci0tIChp
bnQpbWF4TGVuZ3RoOwotLSAodm9pZClzZXRNYXhMZW5ndGg6KGludCltYXhMZW5ndGg7Ci0tIChO
U1N0cmluZyAqKW5hbWU7Ci0tICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZTsKLS0gKEJP
T0wpcmVhZE9ubHk7Ci0tICh2b2lkKXNldFJlYWRPbmx5OihCT09MKXJlYWRPbmx5OwotLSAodW5z
aWduZWQpc2l6ZTsKLS0gKHZvaWQpc2V0U2l6ZToodW5zaWduZWQpc2l6ZTsKLS0gKE5TU3RyaW5n
ICopc3JjOwotLSAodm9pZClzZXRTcmM6KE5TU3RyaW5nICopc3JjOwotLSAoaW50KXRhYkluZGV4
OwotLSAodm9pZClzZXRUYWJJbmRleDooaW50KXRhYkluZGV4OwotLSAoTlNTdHJpbmcgKil0eXBl
OwotLSAodm9pZClzZXRUeXBlOihOU1N0cmluZyAqKXR5cGU7Ci0tIChOU1N0cmluZyAqKXVzZU1h
cDsKLS0gKHZvaWQpc2V0VXNlTWFwOihOU1N0cmluZyAqKXVzZU1hcDsKLS0gKE5TU3RyaW5nICop
dmFsdWU7Ci0tICh2b2lkKXNldFZhbHVlOihOU1N0cmluZyAqKXZhbHVlOwotLSAodm9pZClibHVy
OwotLSAodm9pZClmb2N1czsKLS0gKHZvaWQpc2VsZWN0OwotLSAodm9pZCljbGljazsKLUBlbmQK
LQotQGludGVyZmFjZSBET01IVE1MVGV4dEFyZWFFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0g
KE5TU3RyaW5nICopZGVmYXVsdFZhbHVlOwotLSAodm9pZClzZXREZWZhdWx0VmFsdWU6KE5TU3Ry
aW5nICopZGVmYXVsdFZhbHVlOwotLSAoRE9NSFRNTEZvcm1FbGVtZW50ICopZm9ybTsKLS0gKE5T
U3RyaW5nICopYWNjZXNzS2V5OwotLSAodm9pZClzZXRBY2Nlc3NLZXk6KE5TU3RyaW5nICopYWNj
ZXNzS2V5OwotLSAoaW50KWNvbHM7Ci0tICh2b2lkKXNldENvbHM6KGludCljb2xzOwotLSAoQk9P
TClkaXNhYmxlZDsKLS0gKHZvaWQpc2V0RGlzYWJsZWQ6KEJPT0wpZGlzYWJsZWQ7Ci0tIChOU1N0
cmluZyAqKW5hbWU7Ci0tICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZTsKLS0gKEJPT0wp
cmVhZE9ubHk7Ci0tICh2b2lkKXNldFJlYWRPbmx5OihCT09MKXJlYWRPbmx5OwotLSAoaW50KXJv
d3M7Ci0tICh2b2lkKXNldFJvd3M6KGludClyb3dzOwotLSAoaW50KXRhYkluZGV4OwotLSAodm9p
ZClzZXRUYWJJbmRleDooaW50KXRhYkluZGV4OwotLSAoTlNTdHJpbmcgKil0eXBlOwotLSAoTlNT
dHJpbmcgKil2YWx1ZTsKLS0gKHZvaWQpc2V0VmFsdWU6KE5TU3RyaW5nICopdmFsdWU7Ci0tICh2
b2lkKWJsdXI7Ci0tICh2b2lkKWZvY3VzOwotLSAodm9pZClzZWxlY3Q7Ci1AZW5kCi0KLUBpbnRl
cmZhY2UgRE9NSFRNTEJ1dHRvbkVsZW1lbnQgOiBET01IVE1MRWxlbWVudAotLSAoRE9NSFRNTEZv
cm1FbGVtZW50ICopZm9ybTsKLS0gKE5TU3RyaW5nICopYWNjZXNzS2V5OwotLSAodm9pZClzZXRB
Y2Nlc3NLZXk6KE5TU3RyaW5nICopYWNjZXNzS2V5OwotLSAoQk9PTClkaXNhYmxlZDsKLS0gKHZv
aWQpc2V0RGlzYWJsZWQ6KEJPT0wpZGlzYWJsZWQ7Ci0tIChOU1N0cmluZyAqKW5hbWU7Ci0tICh2
b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZTsKLS0gKGludCl0YWJJbmRleDsKLS0gKHZvaWQp
c2V0VGFiSW5kZXg6KGludCl0YWJJbmRleDsKLS0gKE5TU3RyaW5nICopdHlwZTsKLS0gKE5TU3Ry
aW5nICopdmFsdWU7Ci0tICh2b2lkKXNldFZhbHVlOihOU1N0cmluZyAqKXZhbHVlOwotQGVuZAot
Ci1AaW50ZXJmYWNlIERPTUhUTUxMYWJlbEVsZW1lbnQgOiBET01IVE1MRWxlbWVudAotLSAoRE9N
SFRNTEZvcm1FbGVtZW50ICopZm9ybTsKLS0gKE5TU3RyaW5nICopYWNjZXNzS2V5OwotLSAodm9p
ZClzZXRBY2Nlc3NLZXk6KE5TU3RyaW5nICopYWNjZXNzS2V5OwotLSAoTlNTdHJpbmcgKilodG1s
Rm9yOwotLSAodm9pZClzZXRIdG1sRm9yOihOU1N0cmluZyAqKWh0bWxGb3I7Ci1AZW5kCi0KLUBp
bnRlcmZhY2UgRE9NSFRNTEZpZWxkU2V0RWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChET01I
VE1MRm9ybUVsZW1lbnQgKilmb3JtOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxMZWdlbmRF
bGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKERPTUhUTUxGb3JtRWxlbWVudCAqKWZvcm07Ci0t
IChOU1N0cmluZyAqKWFjY2Vzc0tleTsKLS0gKHZvaWQpc2V0QWNjZXNzS2V5OihOU1N0cmluZyAq
KWFjY2Vzc0tleTsKLS0gKE5TU3RyaW5nICopYWxpZ247Ci0tICh2b2lkKXNldEFsaWduOihOU1N0
cmluZyAqKWFsaWduOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxVTGlzdEVsZW1lbnQgOiBE
T01IVE1MRWxlbWVudAotLSAoQk9PTCljb21wYWN0OwotLSAodm9pZClzZXRDb21wYWN0OihCT09M
KWNvbXBhY3Q7Ci0tIChOU1N0cmluZyAqKXR5cGU7Ci0tICh2b2lkKXNldFR5cGU6KE5TU3RyaW5n
ICopdHlwZTsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MT0xpc3RFbGVtZW50IDogRE9NSFRN
TEVsZW1lbnQKLS0gKEJPT0wpY29tcGFjdDsKLS0gKHZvaWQpc2V0Q29tcGFjdDooQk9PTCljb21w
YWN0OwotLSAoaW50KXN0YXJ0OwotLSAodm9pZClzZXRTdGFydDooaW50KXN0YXJ0OwotLSAoTlNT
dHJpbmcgKil0eXBlOwotLSAodm9pZClzZXRUeXBlOihOU1N0cmluZyAqKXR5cGU7Ci1AZW5kCi0K
LUBpbnRlcmZhY2UgRE9NSFRNTERMaXN0RWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChCT09M
KWNvbXBhY3Q7Ci0tICh2b2lkKXNldENvbXBhY3Q6KEJPT0wpY29tcGFjdDsKLUBlbmQKLQotQGlu
dGVyZmFjZSBET01IVE1MRGlyZWN0b3J5RWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChCT09M
KWNvbXBhY3Q7Ci0tICh2b2lkKXNldENvbXBhY3Q6KEJPT0wpY29tcGFjdDsKLUBlbmQKLQotQGlu
dGVyZmFjZSBET01IVE1MTWVudUVsZW1lbnQgOiBET01IVE1MRWxlbWVudAotLSAoQk9PTCljb21w
YWN0OwotLSAodm9pZClzZXRDb21wYWN0OihCT09MKWNvbXBhY3Q7Ci1AZW5kCi0KLUBpbnRlcmZh
Y2UgRE9NSFRNTExJRWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChOU1N0cmluZyAqKXR5cGU7
Ci0tICh2b2lkKXNldFR5cGU6KE5TU3RyaW5nICopdHlwZTsKLS0gKGludCl2YWx1ZTsKLS0gKHZv
aWQpc2V0VmFsdWU6KGludCl2YWx1ZTsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MRGl2RWxl
bWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChOU1N0cmluZyAqKWFsaWduOwotLSAodm9pZClzZXRB
bGlnbjooTlNTdHJpbmcgKilhbGlnbjsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MUGFyYWdy
YXBoRWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChOU1N0cmluZyAqKWFsaWduOwotLSAodm9p
ZClzZXRBbGlnbjooTlNTdHJpbmcgKilhbGlnbjsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1M
SGVhZGluZ0VsZW1lbnQgOiBET01IVE1MRWxlbWVudAotLSAoTlNTdHJpbmcgKilhbGlnbjsKLS0g
KHZvaWQpc2V0QWxpZ246KE5TU3RyaW5nICopYWxpZ247Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9N
SFRNTFF1b3RlRWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChOU1N0cmluZyAqKWNpdGU7Ci0t
ICh2b2lkKXNldENpdGU6KE5TU3RyaW5nICopY2l0ZTsKLUBlbmQKLQotQGludGVyZmFjZSBET01I
VE1MUHJlRWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChpbnQpd2lkdGg7Ci0tICh2b2lkKXNl
dFdpZHRoOihpbnQpd2lkdGg7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTEJSRWxlbWVudCA6
IERPTUhUTUxFbGVtZW50Ci0tIChOU1N0cmluZyAqKWNsZWFyOwotLSAodm9pZClzZXRDbGVhcjoo
TlNTdHJpbmcgKiljbGVhcjsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MQmFzZUZvbnRFbGVt
ZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKE5TU3RyaW5nICopY29sb3I7Ci0tICh2b2lkKXNldENv
bG9yOihOU1N0cmluZyAqKWNvbG9yOwotLSAoTlNTdHJpbmcgKilmYWNlOwotLSAodm9pZClzZXRG
YWNlOihOU1N0cmluZyAqKWZhY2U7Ci0tIChOU1N0cmluZyAqKXNpemU7Ci0tICh2b2lkKXNldFNp
emU6KE5TU3RyaW5nICopc2l6ZTsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MRm9udEVsZW1l
bnQgOiBET01IVE1MRWxlbWVudAotLSAoTlNTdHJpbmcgKiljb2xvcjsKLS0gKHZvaWQpc2V0Q29s
b3I6KE5TU3RyaW5nICopY29sb3I7Ci0tIChOU1N0cmluZyAqKWZhY2U7Ci0tICh2b2lkKXNldEZh
Y2U6KE5TU3RyaW5nICopZmFjZTsKLS0gKE5TU3RyaW5nICopc2l6ZTsKLS0gKHZvaWQpc2V0U2l6
ZTooTlNTdHJpbmcgKilzaXplOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxIUkVsZW1lbnQg
OiBET01IVE1MRWxlbWVudAotLSAoTlNTdHJpbmcgKilhbGlnbjsKLS0gKHZvaWQpc2V0QWxpZ246
KE5TU3RyaW5nICopYWxpZ247Ci0tIChCT09MKW5vU2hhZGU7Ci0tICh2b2lkKXNldE5vU2hhZGU6
KEJPT0wpbm9TaGFkZTsKLS0gKE5TU3RyaW5nICopc2l6ZTsKLS0gKHZvaWQpc2V0U2l6ZTooTlNT
dHJpbmcgKilzaXplOwotLSAoTlNTdHJpbmcgKil3aWR0aDsKLS0gKHZvaWQpc2V0V2lkdGg6KE5T
U3RyaW5nICopd2lkdGg7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTE1vZEVsZW1lbnQgOiBE
T01IVE1MRWxlbWVudAotLSAoTlNTdHJpbmcgKiljaXRlOwotLSAodm9pZClzZXRDaXRlOihOU1N0
cmluZyAqKWNpdGU7Ci0tIChOU1N0cmluZyAqKWRhdGVUaW1lOwotLSAodm9pZClzZXREYXRlVGlt
ZTooTlNTdHJpbmcgKilkYXRlVGltZTsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MQW5jaG9y
RWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChOU1N0cmluZyAqKWFjY2Vzc0tleTsKLS0gKHZv
aWQpc2V0QWNjZXNzS2V5OihOU1N0cmluZyAqKWFjY2Vzc0tleTsKLS0gKE5TU3RyaW5nICopY2hh
cnNldDsKLS0gKHZvaWQpc2V0Q2hhcnNldDooTlNTdHJpbmcgKiljaGFyc2V0OwotLSAoTlNTdHJp
bmcgKiljb29yZHM7Ci0tICh2b2lkKXNldENvb3JkczooTlNTdHJpbmcgKiljb29yZHM7Ci0tIChO
U1N0cmluZyAqKWhyZWY7Ci0tICh2b2lkKXNldEhyZWY6KE5TU3RyaW5nICopaHJlZjsKLS0gKE5T
U3RyaW5nICopaHJlZmxhbmc7Ci0tICh2b2lkKXNldEhyZWZsYW5nOihOU1N0cmluZyAqKWhyZWZs
YW5nOwotLSAoTlNTdHJpbmcgKiluYW1lOwotLSAodm9pZClzZXROYW1lOihOU1N0cmluZyAqKW5h
bWU7Ci0tIChOU1N0cmluZyAqKXJlbDsKLS0gKHZvaWQpc2V0UmVsOihOU1N0cmluZyAqKXJlbDsK
LS0gKE5TU3RyaW5nICopcmV2OwotLSAodm9pZClzZXRSZXY6KE5TU3RyaW5nICopcmV2OwotLSAo
TlNTdHJpbmcgKilzaGFwZTsKLS0gKHZvaWQpc2V0U2hhcGU6KE5TU3RyaW5nICopc2hhcGU7Ci0t
IChpbnQpdGFiSW5kZXg7Ci0tICh2b2lkKXNldFRhYkluZGV4OihpbnQpdGFiSW5kZXg7Ci0tIChO
U1N0cmluZyAqKXRhcmdldDsKLS0gKHZvaWQpc2V0VGFyZ2V0OihOU1N0cmluZyAqKXRhcmdldDsK
LS0gKE5TU3RyaW5nICopdHlwZTsKLS0gKHZvaWQpc2V0VHlwZTooTlNTdHJpbmcgKil0eXBlOwot
LSAodm9pZClibHVyOwotLSAodm9pZClmb2N1czsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1M
SW1hZ2VFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKE5TU3RyaW5nICopbmFtZTsKLS0gKHZv
aWQpc2V0TmFtZTooTlNTdHJpbmcgKiluYW1lOwotLSAoTlNTdHJpbmcgKilhbGlnbjsKLS0gKHZv
aWQpc2V0QWxpZ246KE5TU3RyaW5nICopYWxpZ247Ci0tIChOU1N0cmluZyAqKWFsdDsKLS0gKHZv
aWQpc2V0QWx0OihOU1N0cmluZyAqKWFsdDsKLS0gKE5TU3RyaW5nICopYm9yZGVyOwotLSAodm9p
ZClzZXRCb3JkZXI6KE5TU3RyaW5nICopYm9yZGVyOwotLSAoaW50KWhlaWdodDsKLS0gKHZvaWQp
c2V0SGVpZ2h0OihpbnQpaGVpZ2h0OwotLSAoaW50KWhzcGFjZTsKLS0gKHZvaWQpc2V0SHNwYWNl
OihpbnQpaHNwYWNlOwotLSAoQk9PTClpc01hcDsKLS0gKHZvaWQpc2V0SXNNYXA6KEJPT0wpaXNN
YXA7Ci0tIChOU1N0cmluZyAqKWxvbmdEZXNjOwotLSAodm9pZClzZXRMb25nRGVzYzooTlNTdHJp
bmcgKilsb25nRGVzYzsKLS0gKE5TU3RyaW5nICopc3JjOwotLSAodm9pZClzZXRTcmM6KE5TU3Ry
aW5nICopc3JjOwotLSAoTlNTdHJpbmcgKil1c2VNYXA7Ci0tICh2b2lkKXNldFVzZU1hcDooTlNT
dHJpbmcgKil1c2VNYXA7Ci0tIChpbnQpdnNwYWNlOwotLSAodm9pZClzZXRWc3BhY2U6KGludCl2
c3BhY2U7Ci0tIChpbnQpd2lkdGg7Ci0tICh2b2lkKXNldFdpZHRoOihpbnQpd2lkdGg7Ci1AZW5k
Ci0KLUBpbnRlcmZhY2UgRE9NSFRNTE9iamVjdEVsZW1lbnQgOiBET01IVE1MRWxlbWVudAotLSAo
RE9NSFRNTEZvcm1FbGVtZW50ICopZm9ybTsKLS0gKE5TU3RyaW5nICopY29kZTsKLS0gKHZvaWQp
c2V0Q29kZTooTlNTdHJpbmcgKiljb2RlOwotLSAoTlNTdHJpbmcgKilhbGlnbjsKLS0gKHZvaWQp
c2V0QWxpZ246KE5TU3RyaW5nICopYWxpZ247Ci0tIChOU1N0cmluZyAqKWFyY2hpdmU7Ci0tICh2
b2lkKXNldEFyY2hpdmU6KE5TU3RyaW5nICopYXJjaGl2ZTsKLS0gKE5TU3RyaW5nICopYm9yZGVy
OwotLSAodm9pZClzZXRCb3JkZXI6KE5TU3RyaW5nICopYm9yZGVyOwotLSAoTlNTdHJpbmcgKilj
b2RlQmFzZTsKLS0gKHZvaWQpc2V0Q29kZUJhc2U6KE5TU3RyaW5nICopY29kZUJhc2U7Ci0tIChO
U1N0cmluZyAqKWNvZGVUeXBlOwotLSAodm9pZClzZXRDb2RlVHlwZTooTlNTdHJpbmcgKiljb2Rl
VHlwZTsKLS0gKE5TU3RyaW5nICopZGF0YTsKLS0gKHZvaWQpc2V0RGF0YTooTlNTdHJpbmcgKilk
YXRhOwotLSAoQk9PTClkZWNsYXJlOwotLSAodm9pZClzZXREZWNsYXJlOihCT09MKWRlY2xhcmU7
Ci0tIChOU1N0cmluZyAqKWhlaWdodDsKLS0gKHZvaWQpc2V0SGVpZ2h0OihOU1N0cmluZyAqKWhl
aWdodDsKLS0gKGludCloc3BhY2U7Ci0tICh2b2lkKXNldEhzcGFjZTooaW50KWhzcGFjZTsKLS0g
KE5TU3RyaW5nICopbmFtZTsKLS0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcgKiluYW1lOwotLSAo
TlNTdHJpbmcgKilzdGFuZGJ5OwotLSAodm9pZClzZXRTdGFuZGJ5OihOU1N0cmluZyAqKXN0YW5k
Ynk7Ci0tIChpbnQpdGFiSW5kZXg7Ci0tICh2b2lkKXNldFRhYkluZGV4OihpbnQpdGFiSW5kZXg7
Ci0tIChOU1N0cmluZyAqKXR5cGU7Ci0tICh2b2lkKXNldFR5cGU6KE5TU3RyaW5nICopdHlwZTsK
LS0gKE5TU3RyaW5nICopdXNlTWFwOwotLSAodm9pZClzZXRVc2VNYXA6KE5TU3RyaW5nICopdXNl
TWFwOwotLSAoaW50KXZzcGFjZTsKLS0gKHZvaWQpc2V0VnNwYWNlOihpbnQpdnNwYWNlOwotLSAo
TlNTdHJpbmcgKil3aWR0aDsKLS0gKHZvaWQpc2V0V2lkdGg6KE5TU3RyaW5nICopd2lkdGg7Ci0t
IChET01Eb2N1bWVudCAqKWNvbnRlbnREb2N1bWVudDsKLUBlbmQKLQotQGludGVyZmFjZSBET01I
VE1MUGFyYW1FbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKE5TU3RyaW5nICopbmFtZTsKLS0g
KHZvaWQpc2V0TmFtZTooTlNTdHJpbmcgKiluYW1lOwotLSAoTlNTdHJpbmcgKil0eXBlOwotLSAo
dm9pZClzZXRUeXBlOihOU1N0cmluZyAqKXR5cGU7Ci0tIChOU1N0cmluZyAqKXZhbHVlOwotLSAo
dm9pZClzZXRWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZTsKLS0gKE5TU3RyaW5nICopdmFsdWVUeXBl
OwotLSAodm9pZClzZXRWYWx1ZVR5cGU6KE5TU3RyaW5nICopdmFsdWVUeXBlOwotQGVuZAotCi1A
aW50ZXJmYWNlIERPTUhUTUxBcHBsZXRFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKE5TU3Ry
aW5nICopYWxpZ247Ci0tICh2b2lkKXNldEFsaWduOihOU1N0cmluZyAqKWFsaWduOwotLSAoTlNT
dHJpbmcgKilhbHQ7Ci0tICh2b2lkKXNldEFsdDooTlNTdHJpbmcgKilhbHQ7Ci0tIChOU1N0cmlu
ZyAqKWFyY2hpdmU7Ci0tICh2b2lkKXNldEFyY2hpdmU6KE5TU3RyaW5nICopYXJjaGl2ZTsKLS0g
KE5TU3RyaW5nICopY29kZTsKLS0gKHZvaWQpc2V0Q29kZTooTlNTdHJpbmcgKiljb2RlOwotLSAo
TlNTdHJpbmcgKiljb2RlQmFzZTsKLS0gKHZvaWQpc2V0Q29kZUJhc2U6KE5TU3RyaW5nICopY29k
ZUJhc2U7Ci0tIChOU1N0cmluZyAqKWhlaWdodDsKLS0gKHZvaWQpc2V0SGVpZ2h0OihOU1N0cmlu
ZyAqKWhlaWdodDsKLS0gKGludCloc3BhY2U7Ci0tICh2b2lkKXNldEhzcGFjZTooaW50KWhzcGFj
ZTsKLS0gKE5TU3RyaW5nICopbmFtZTsKLS0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcgKiluYW1l
OwotLSAoTlNTdHJpbmcgKilvYmplY3Q7Ci0tICh2b2lkKXNldE9iamVjdDooTlNTdHJpbmcgKilv
YmplY3Q7Ci0tIChpbnQpdnNwYWNlOwotLSAodm9pZClzZXRWc3BhY2U6KGludCl2c3BhY2U7Ci0t
IChOU1N0cmluZyAqKXdpZHRoOwotLSAodm9pZClzZXRXaWR0aDooTlNTdHJpbmcgKil3aWR0aDsK
LUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MTWFwRWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0t
IChET01IVE1MQ29sbGVjdGlvbiAqKWFyZWFzOwotLSAoTlNTdHJpbmcgKiluYW1lOwotLSAodm9p
ZClzZXROYW1lOihOU1N0cmluZyAqKW5hbWU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTEFy
ZWFFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKE5TU3RyaW5nICopYWNjZXNzS2V5OwotLSAo
dm9pZClzZXRBY2Nlc3NLZXk6KE5TU3RyaW5nICopYWNjZXNzS2V5OwotLSAoTlNTdHJpbmcgKilh
bHQ7Ci0tICh2b2lkKXNldEFsdDooTlNTdHJpbmcgKilhbHQ7Ci0tIChOU1N0cmluZyAqKWNvb3Jk
czsKLS0gKHZvaWQpc2V0Q29vcmRzOihOU1N0cmluZyAqKWNvb3JkczsKLS0gKE5TU3RyaW5nICop
aHJlZjsKLS0gKHZvaWQpc2V0SHJlZjooTlNTdHJpbmcgKilocmVmOwotLSAoQk9PTClub0hyZWY7
Ci0tICh2b2lkKXNldE5vSHJlZjooQk9PTClub0hyZWY7Ci0tIChOU1N0cmluZyAqKXNoYXBlOwot
LSAodm9pZClzZXRTaGFwZTooTlNTdHJpbmcgKilzaGFwZTsKLS0gKGludCl0YWJJbmRleDsKLS0g
KHZvaWQpc2V0VGFiSW5kZXg6KGludCl0YWJJbmRleDsKLS0gKE5TU3RyaW5nICopdGFyZ2V0Owot
LSAodm9pZClzZXRUYXJnZXQ6KE5TU3RyaW5nICopdGFyZ2V0OwotQGVuZAotCi1AaW50ZXJmYWNl
IERPTUhUTUxTY3JpcHRFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKE5TU3RyaW5nICopdGV4
dDsKLS0gKHZvaWQpc2V0VGV4dDooTlNTdHJpbmcgKil0ZXh0OwotLSAoTlNTdHJpbmcgKilodG1s
Rm9yOwotLSAodm9pZClzZXRIdG1sRm9yOihOU1N0cmluZyAqKWh0bWxGb3I7Ci0tIChOU1N0cmlu
ZyAqKWV2ZW50OwotLSAodm9pZClzZXRFdmVudDooTlNTdHJpbmcgKilldmVudDsKLS0gKE5TU3Ry
aW5nICopY2hhcnNldDsKLS0gKHZvaWQpc2V0Q2hhcnNldDooTlNTdHJpbmcgKiljaGFyc2V0Owot
LSAoQk9PTClkZWZlcjsKLS0gKHZvaWQpc2V0RGVmZXI6KEJPT0wpZGVmZXI7Ci0tIChOU1N0cmlu
ZyAqKXNyYzsKLS0gKHZvaWQpc2V0U3JjOihOU1N0cmluZyAqKXNyYzsKLS0gKE5TU3RyaW5nICop
dHlwZTsKLS0gKHZvaWQpc2V0VHlwZTooTlNTdHJpbmcgKil0eXBlOwotQGVuZAotCi1AaW50ZXJm
YWNlIERPTUhUTUxUYWJsZUVsZW1lbnQgOiBET01IVE1MRWxlbWVudAotLSAoRE9NSFRNTFRhYmxl
Q2FwdGlvbkVsZW1lbnQgKiljYXB0aW9uOwotLSAodm9pZClzZXRDYXB0aW9uOihET01IVE1MVGFi
bGVDYXB0aW9uRWxlbWVudCAqKWNhcHRpb247Ci0tIChET01IVE1MVGFibGVTZWN0aW9uRWxlbWVu
dCAqKXRIZWFkOwotLSAodm9pZClzZXRUSGVhZDooRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQg
Kil0SGVhZDsKLS0gKERPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50ICopdEZvb3Q7Ci0tICh2b2lk
KXNldFRGb290OihET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCAqKXRGb290OwotLSAoRE9NSFRN
TENvbGxlY3Rpb24gKilyb3dzOwotLSAoRE9NSFRNTENvbGxlY3Rpb24gKil0Qm9kaWVzOwotLSAo
TlNTdHJpbmcgKilhbGlnbjsKLS0gKHZvaWQpc2V0QWxpZ246KE5TU3RyaW5nICopYWxpZ247Ci0t
IChOU1N0cmluZyAqKWJnQ29sb3I7Ci0tICh2b2lkKXNldEJnQ29sb3I6KE5TU3RyaW5nICopYmdD
b2xvcjsKLS0gKE5TU3RyaW5nICopYm9yZGVyOwotLSAodm9pZClzZXRCb3JkZXI6KE5TU3RyaW5n
ICopYm9yZGVyOwotLSAoTlNTdHJpbmcgKiljZWxsUGFkZGluZzsKLS0gKHZvaWQpc2V0Q2VsbFBh
ZGRpbmc6KE5TU3RyaW5nICopY2VsbFBhZGRpbmc7Ci0tIChOU1N0cmluZyAqKWNlbGxTcGFjaW5n
OwotLSAodm9pZClzZXRDZWxsU3BhY2luZzooTlNTdHJpbmcgKiljZWxsU3BhY2luZzsKLS8vIGZy
YW1lQm9yZGVycyBjb3JyZXNwb25kcyB0byB0aGUgZnJhbWUgbWV0aG9kCi0tIChOU1N0cmluZyAq
KWZyYW1lQm9yZGVyczsgCi0tICh2b2lkKXNldEZyYW1lQm9yZGVyczooTlNTdHJpbmcgKilmcmFt
ZUJvcmRlcnM7Ci0tIChOU1N0cmluZyAqKXJ1bGVzOwotLSAodm9pZClzZXRSdWxlczooTlNTdHJp
bmcgKilydWxlczsKLS0gKE5TU3RyaW5nICopc3VtbWFyeTsKLS0gKHZvaWQpc2V0U3VtbWFyeToo
TlNTdHJpbmcgKilzdW1tYXJ5OwotLSAoTlNTdHJpbmcgKil3aWR0aDsKLS0gKHZvaWQpc2V0V2lk
dGg6KE5TU3RyaW5nICopd2lkdGg7Ci0tIChET01IVE1MRWxlbWVudCAqKWNyZWF0ZVRIZWFkOwot
LSAodm9pZClkZWxldGVUSGVhZDsKLS0gKERPTUhUTUxFbGVtZW50ICopY3JlYXRlVEZvb3Q7Ci0t
ICh2b2lkKWRlbGV0ZVRGb290OwotLSAoRE9NSFRNTEVsZW1lbnQgKiljcmVhdGVDYXB0aW9uOwot
LSAodm9pZClkZWxldGVDYXB0aW9uOwotLSAoRE9NSFRNTEVsZW1lbnQgKilpbnNlcnRSb3c6KGlu
dClpbmRleDsKLS0gKHZvaWQpZGVsZXRlUm93OihpbnQpaW5kZXg7Ci1AZW5kCi0KLUBpbnRlcmZh
Y2UgRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQgOiBET01IVE1MRWxlbWVudAotLSAoTlNTdHJp
bmcgKilhbGlnbjsKLS0gKHZvaWQpc2V0QWxpZ246KE5TU3RyaW5nICopYWxpZ247Ci1AZW5kCi0K
LUBpbnRlcmZhY2UgRE9NSFRNTFRhYmxlQ29sRWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChO
U1N0cmluZyAqKWFsaWduOwotLSAodm9pZClzZXRBbGlnbjooTlNTdHJpbmcgKilhbGlnbjsKLS0g
KE5TU3RyaW5nICopY2g7Ci0tICh2b2lkKXNldENoOihOU1N0cmluZyAqKWNoOwotLSAoTlNTdHJp
bmcgKiljaE9mZjsKLS0gKHZvaWQpc2V0Q2hPZmY6KE5TU3RyaW5nICopY2hPZmY7Ci0tIChpbnQp
c3BhbjsKLS0gKHZvaWQpc2V0U3BhbjooaW50KXNwYW47Ci0tIChOU1N0cmluZyAqKXZBbGlnbjsK
LS0gKHZvaWQpc2V0VkFsaWduOihOU1N0cmluZyAqKXZBbGlnbjsKLS0gKE5TU3RyaW5nICopd2lk
dGg7Ci0tICh2b2lkKXNldFdpZHRoOihOU1N0cmluZyAqKXdpZHRoOwotQGVuZAotCi1AaW50ZXJm
YWNlIERPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKE5TU3Ry
aW5nICopYWxpZ247Ci0tICh2b2lkKXNldEFsaWduOihOU1N0cmluZyAqKWFsaWduOwotLSAoTlNT
dHJpbmcgKiljaDsKLS0gKHZvaWQpc2V0Q2g6KE5TU3RyaW5nICopY2g7Ci0tIChOU1N0cmluZyAq
KWNoT2ZmOwotLSAodm9pZClzZXRDaE9mZjooTlNTdHJpbmcgKiljaE9mZjsKLS0gKE5TU3RyaW5n
ICopdkFsaWduOwotLSAodm9pZClzZXRWQWxpZ246KE5TU3RyaW5nICopdkFsaWduOwotLSAoRE9N
SFRNTENvbGxlY3Rpb24gKilyb3dzOwotLSAoRE9NSFRNTEVsZW1lbnQgKilpbnNlcnRSb3c6KGlu
dClpbmRleDsKLS0gKHZvaWQpZGVsZXRlUm93OihpbnQpaW5kZXg7Ci1AZW5kCi0KLUBpbnRlcmZh
Y2UgRE9NSFRNTFRhYmxlUm93RWxlbWVudCA6IERPTUhUTUxFbGVtZW50Ci0tIChpbnQpcm93SW5k
ZXg7Ci0tIChpbnQpc2VjdGlvblJvd0luZGV4OwotLSAoRE9NSFRNTENvbGxlY3Rpb24gKiljZWxs
czsKLS0gKE5TU3RyaW5nICopYWxpZ247Ci0tICh2b2lkKXNldEFsaWduOihOU1N0cmluZyAqKWFs
aWduOwotLSAoTlNTdHJpbmcgKiliZ0NvbG9yOwotLSAodm9pZClzZXRCZ0NvbG9yOihOU1N0cmlu
ZyAqKWJnQ29sb3I7Ci0tIChOU1N0cmluZyAqKWNoOwotLSAodm9pZClzZXRDaDooTlNTdHJpbmcg
KiljaDsKLS0gKE5TU3RyaW5nICopY2hPZmY7Ci0tICh2b2lkKXNldENoT2ZmOihOU1N0cmluZyAq
KWNoT2ZmOwotLSAoTlNTdHJpbmcgKil2QWxpZ247Ci0tICh2b2lkKXNldFZBbGlnbjooTlNTdHJp
bmcgKil2QWxpZ247Ci0tIChET01IVE1MRWxlbWVudCAqKWluc2VydENlbGw6KGludClpbmRleDsK
LS0gKHZvaWQpZGVsZXRlQ2VsbDooaW50KWluZGV4OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhU
TUxUYWJsZUNlbGxFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKLS0gKGludCljZWxsSW5kZXg7Ci0t
IChOU1N0cmluZyAqKWFiYnI7Ci0tICh2b2lkKXNldEFiYnI6KE5TU3RyaW5nICopYWJicjsKLS0g
KE5TU3RyaW5nICopYWxpZ247Ci0tICh2b2lkKXNldEFsaWduOihOU1N0cmluZyAqKWFsaWduOwot
LSAoTlNTdHJpbmcgKilheGlzOwotLSAodm9pZClzZXRBeGlzOihOU1N0cmluZyAqKWF4aXM7Ci0t
IChOU1N0cmluZyAqKWJnQ29sb3I7Ci0tICh2b2lkKXNldEJnQ29sb3I6KE5TU3RyaW5nICopYmdD
b2xvcjsKLS0gKE5TU3RyaW5nICopY2g7Ci0tICh2b2lkKXNldENoOihOU1N0cmluZyAqKWNoOwot
LSAoTlNTdHJpbmcgKiljaE9mZjsKLS0gKHZvaWQpc2V0Q2hPZmY6KE5TU3RyaW5nICopY2hPZmY7
Ci0tIChpbnQpY29sU3BhbjsKLS0gKHZvaWQpc2V0Q29sU3BhbjooaW50KWNvbFNwYW47Ci0tIChO
U1N0cmluZyAqKWhlYWRlcnM7Ci0tICh2b2lkKXNldEhlYWRlcnM6KE5TU3RyaW5nICopaGVhZGVy
czsKLS0gKE5TU3RyaW5nICopaGVpZ2h0OwotLSAodm9pZClzZXRIZWlnaHQ6KE5TU3RyaW5nICop
aGVpZ2h0OwotLSAoQk9PTClub1dyYXA7Ci0tICh2b2lkKXNldE5vV3JhcDooQk9PTClub1dyYXA7
Ci0tIChpbnQpcm93U3BhbjsKLS0gKHZvaWQpc2V0Um93U3BhbjooaW50KXJvd1NwYW47Ci0tIChO
U1N0cmluZyAqKXNjb3BlOwotLSAodm9pZClzZXRTY29wZTooTlNTdHJpbmcgKilzY29wZTsKLS0g
KE5TU3RyaW5nICopdkFsaWduOwotLSAodm9pZClzZXRWQWxpZ246KE5TU3RyaW5nICopdkFsaWdu
OwotLSAoTlNTdHJpbmcgKil3aWR0aDsKLS0gKHZvaWQpc2V0V2lkdGg6KE5TU3RyaW5nICopd2lk
dGg7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTEZyYW1lU2V0RWxlbWVudCA6IERPTUhUTUxF
bGVtZW50Ci0tIChOU1N0cmluZyAqKWNvbHM7Ci0tICh2b2lkKXNldENvbHM6KE5TU3RyaW5nICop
Y29sczsKLS0gKE5TU3RyaW5nICopcm93czsKLS0gKHZvaWQpc2V0Um93czooTlNTdHJpbmcgKily
b3dzOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxGcmFtZUVsZW1lbnQgOiBET01IVE1MRWxl
bWVudAotLSAoTlNTdHJpbmcgKilmcmFtZUJvcmRlcjsKLS0gKHZvaWQpc2V0RnJhbWVCb3JkZXI6
KE5TU3RyaW5nICopZnJhbWVCb3JkZXI7Ci0tIChOU1N0cmluZyAqKWxvbmdEZXNjOwotLSAodm9p
ZClzZXRMb25nRGVzYzooTlNTdHJpbmcgKilsb25nRGVzYzsKLS0gKE5TU3RyaW5nICopbWFyZ2lu
SGVpZ2h0OwotLSAodm9pZClzZXRNYXJnaW5IZWlnaHQ6KE5TU3RyaW5nICopbWFyZ2luSGVpZ2h0
OwotLSAoTlNTdHJpbmcgKiltYXJnaW5XaWR0aDsKLS0gKHZvaWQpc2V0TWFyZ2luV2lkdGg6KE5T
U3RyaW5nICopbWFyZ2luV2lkdGg7Ci0tIChOU1N0cmluZyAqKW5hbWU7Ci0tICh2b2lkKXNldE5h
bWU6KE5TU3RyaW5nICopbmFtZTsKLS0gKEJPT0wpbm9SZXNpemU7Ci0tICh2b2lkKXNldE5vUmVz
aXplOihCT09MKW5vUmVzaXplOwotLSAoTlNTdHJpbmcgKilzY3JvbGxpbmc7Ci0tICh2b2lkKXNl
dFNjcm9sbGluZzooTlNTdHJpbmcgKilzY3JvbGxpbmc7Ci0tIChOU1N0cmluZyAqKXNyYzsKLS0g
KHZvaWQpc2V0U3JjOihOU1N0cmluZyAqKXNyYzsKLS0gKERPTURvY3VtZW50ICopY29udGVudERv
Y3VtZW50OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxJRnJhbWVFbGVtZW50IDogRE9NSFRN
TEVsZW1lbnQKLS0gKE5TU3RyaW5nICopYWxpZ247Ci0tICh2b2lkKXNldEFsaWduOihOU1N0cmlu
ZyAqKWFsaWduOwotLSAoTlNTdHJpbmcgKilmcmFtZUJvcmRlcjsKLS0gKHZvaWQpc2V0RnJhbWVC
b3JkZXI6KE5TU3RyaW5nICopZnJhbWVCb3JkZXI7Ci0tIChOU1N0cmluZyAqKWhlaWdodDsKLS0g
KHZvaWQpc2V0SGVpZ2h0OihOU1N0cmluZyAqKWhlaWdodDsKLS0gKE5TU3RyaW5nICopbG9uZ0Rl
c2M7Ci0tICh2b2lkKXNldExvbmdEZXNjOihOU1N0cmluZyAqKWxvbmdEZXNjOwotLSAoTlNTdHJp
bmcgKiltYXJnaW5IZWlnaHQ7Ci0tICh2b2lkKXNldE1hcmdpbkhlaWdodDooTlNTdHJpbmcgKilt
YXJnaW5IZWlnaHQ7Ci0tIChOU1N0cmluZyAqKW1hcmdpbldpZHRoOwotLSAodm9pZClzZXRNYXJn
aW5XaWR0aDooTlNTdHJpbmcgKiltYXJnaW5XaWR0aDsKLS0gKE5TU3RyaW5nICopbmFtZTsKLS0g
KHZvaWQpc2V0TmFtZTooTlNTdHJpbmcgKiluYW1lOwotLSAoTlNTdHJpbmcgKilzY3JvbGxpbmc7
Ci0tICh2b2lkKXNldFNjcm9sbGluZzooTlNTdHJpbmcgKilzY3JvbGxpbmc7Ci0tIChOU1N0cmlu
ZyAqKXNyYzsKLS0gKHZvaWQpc2V0U3JjOihOU1N0cmluZyAqKXNyYzsKLS0gKE5TU3RyaW5nICop
d2lkdGg7Ci0tICh2b2lkKXNldFdpZHRoOihOU1N0cmluZyAqKXdpZHRoOwotLSAoRE9NRG9jdW1l
bnQgKiljb250ZW50RG9jdW1lbnQ7Ci1AZW5kCisjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxBbmNo
b3JFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxBcHBsZXRFbGVtZW50Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxBcmVhRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9E
T01IVE1MQlJFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxCYXNlRWxlbWVudC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MQmFzZUZvbnRFbGVtZW50Lmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0RPTUhUTUxCb2R5RWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MQnV0
dG9uRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MQ29sbGVjdGlvbi5oPgorI2lt
cG9ydCA8V2ViQ29yZS9ET01IVE1MRExpc3RFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RP
TUhUTUxEaXJlY3RvcnlFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxEaXZFbGVt
ZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxEb2N1bWVudC5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9ET01IVE1MRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MRmllbGRTZXRF
bGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxGb250RWxlbWVudC5oPgorI2ltcG9y
dCA8V2ViQ29yZS9ET01IVE1MRm9ybUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRN
TEZyYW1lRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MRnJhbWVTZXRFbGVtZW50
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxIUkVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvRE9NSFRNTEhlYWRFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxIZWFkaW5n
RWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MSHRtbEVsZW1lbnQuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvRE9NSFRNTElGcmFtZUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9N
SFRNTEltYWdlRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MSW5wdXRFbGVtZW50
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxJc0luZGV4RWxlbWVudC5oPgorI2ltcG9ydCA8
V2ViQ29yZS9ET01IVE1MTElFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxMYWJl
bEVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTExlZ2VuZEVsZW1lbnQuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvRE9NSFRNTExpbmtFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RP
TUhUTUxNYXBFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxNZW51RWxlbWVudC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MTWV0YUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvRE9NSFRNTE1vZEVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTE9MaXN0RWxl
bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MT2JqZWN0RWxlbWVudC5oPgorI2ltcG9y
dCA8V2ViQ29yZS9ET01IVE1MT3B0R3JvdXBFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RP
TUhUTUxPcHRpb25FbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxPcHRpb25zQ29s
bGVjdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MUGFyYWdyYXBoRWxlbWVudC5oPgor
I2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MUGFyYW1FbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0RPTUhUTUxQcmVFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxRdW90ZUVsZW1l
bnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTFNjcmlwdEVsZW1lbnQuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvRE9NSFRNTFNlbGVjdEVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRN
TFN0eWxlRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MVGFibGVDYXB0aW9uRWxl
bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MVGFibGVDZWxsRWxlbWVudC5oPgorI2lt
cG9ydCA8V2ViQ29yZS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0RPTUhUTUxUYWJsZUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTFRhYmxlUm93
RWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MVGV4dEFyZWFFbGVtZW50Lmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0RPTUhUTUxUaXRsZUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTFVM
aXN0RWxlbWVudC5oPgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0JKHJldmlzaW9uIDE1
OTQ1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0JKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVy
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVl
bCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNiw3ICsyNywxMyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJE
T01IVE1MLmgiCiAKKyNpbXBvcnQgIkRPTURvY3VtZW50LmgiCiAjaW1wb3J0ICJET01FeHRlbnNp
b25zLmgiCisjaW1wb3J0ICJET01IVE1MQXJlYUVsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxD
b2xsZWN0aW9uLmgiCisjaW1wb3J0ICJET01IVE1MRG9jdW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhU
TUxGb3JtRWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTEltYWdlRWxlbWVudC5oIgogI2ltcG9y
dCAiRE9NSFRNTEludGVybmFsLmgiCiAjaW1wb3J0ICJET01JbnRlcm5hbC5oIgogI2ltcG9ydCAi
RE9NUHJpdmF0ZS5oIgpAQCAtMzUsMTQzICs0MiwzNCBAQAogI2ltcG9ydCAiRnJhbWVWaWV3Lmgi
CiAjaW1wb3J0ICJIVE1MQXBwbGV0RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTEFyZWFFbGVtZW50
LmgiCi0jaW1wb3J0ICJIVE1MQlJFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MQmFzZUVsZW1lbnQu
aCIKLSNpbXBvcnQgIkhUTUxCYXNlRm9udEVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxCb2R5RWxl
bWVudC5oIgotI2ltcG9ydCAiSFRNTEJ1dHRvbkVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxETGlz
dEVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxEaXJlY3RvcnlFbGVtZW50LmgiCi0jaW1wb3J0ICJI
VE1MRGl2RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTERvY3VtZW50LmgiCiAjaW1wb3J0ICJIVE1M
RW1iZWRFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCi0jaW1wb3J0
ICJIVE1MRm9udEVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxGb3JtQ29sbGVjdGlvbi5oIgogI2lt
cG9ydCAiSFRNTEZvcm1FbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MRnJhbWVTZXRFbGVtZW50Lmgi
Ci0jaW1wb3J0ICJIVE1MSFJFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MSGVhZEVsZW1lbnQuaCIK
LSNpbXBvcnQgIkhUTUxIZWFkaW5nRWxlbWVudC5oIgotI2ltcG9ydCAiSFRNTEh0bWxFbGVtZW50
LmgiCi0jaW1wb3J0ICJIVE1MSUZyYW1lRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTEltYWdlRWxl
bWVudC5oIgotI2ltcG9ydCAiSFRNTElzSW5kZXhFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MTElF
bGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MTGFiZWxFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MTGVn
ZW5kRWxlbWVudC5oIgotI2ltcG9ydCAiSFRNTExpbmtFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1M
TWFwRWxlbWVudC5oIgotI2ltcG9ydCAiSFRNTE1lbnVFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1M
TWV0YUVsZW1lbnQuaCIKKyNpbXBvcnQgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbXBvcnQgIkhU
TUxOYW1lcy5oIgotI2ltcG9ydCAiSFRNTE9MaXN0RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE9i
amVjdEVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxPcHRHcm91cEVsZW1lbnQuaCIKLSNpbXBvcnQg
IkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIK
LSNpbXBvcnQgIkhUTUxQYXJhZ3JhcGhFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MUGFyYW1FbGVt
ZW50LmgiCi0jaW1wb3J0ICJIVE1MUHJlRWxlbWVudC5oIgotI2ltcG9ydCAiSFRNTFNjcmlwdEVs
ZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxTZWxlY3RFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MU3R5
bGVFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oIgogI2ltcG9y
dCAiSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxUYWJsZUNvbEVsZW1lbnQu
aCIKICNpbXBvcnQgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxUYWJsZVJvd0Vs
ZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgiCi0jaW1wb3J0ICJI
VE1MVGV4dEFyZWFFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MVGl0bGVFbGVtZW50LmgiCi0jaW1w
b3J0ICJIVE1MVUxpc3RFbGVtZW50LmgiCiAjaW1wb3J0ICJLVVJMLmgiCi0jaW1wb3J0ICJOYW1l
Tm9kZUxpc3QuaCIKICNpbXBvcnQgIlJhbmdlLmgiCiAjaW1wb3J0ICJSZW5kZXJUZXh0Q29udHJv
bC5oIgogI2ltcG9ydCAiY3NzaGVscGVyLmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIKIAorCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLS8vIEZJ
WE1FOiBUaGlzIGNvZGUgc2hvdWxkIGJlIHVzaW5nIHRoZSBpbXBsIG1ldGhvZHMgaW5zdGVhZCBv
ZiBkb2luZyBzbyBtYW55IGdldC9zZXRBdHRyaWJ1dGUgY2FsbHMuCi0vLyBGSVhNRTogVGhpcyBj
b2RlIHNob3VsZCBiZSBnZW5lcmF0ZWQuCi0KLUBpbnRlcmZhY2UgRE9NSFRNTENvbGxlY3Rpb24g
KFdlYkNvcmVJbnRlcm5hbCkKLSsgKERPTUhUTUxDb2xsZWN0aW9uICopX2NvbGxlY3Rpb25XaXRo
OihIVE1MQ29sbGVjdGlvbiAqKWltcGw7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTEVsZW1l
bnQgKFdlYkNvcmVJbnRlcm5hbCkKLSsgKERPTUhUTUxFbGVtZW50ICopX2VsZW1lbnRXaXRoOihI
VE1MRWxlbWVudCAqKWltcGw7Ci0tIChIVE1MRWxlbWVudCAqKV9IVE1MRWxlbWVudDsKLUBlbmQK
LQotQGludGVyZmFjZSBET01IVE1MRm9ybUVsZW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKLSsgKERP
TUhUTUxGb3JtRWxlbWVudCAqKV9mb3JtRWxlbWVudFdpdGg6KEhUTUxGb3JtRWxlbWVudCAqKWlt
cGw7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQgKFdlYkNv
cmVJbnRlcm5hbCkKLSsgKERPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50ICopX3RhYmxlQ2FwdGlv
bkVsZW1lbnRXaXRoOihIVE1MVGFibGVDYXB0aW9uRWxlbWVudCAqKWltcGw7Ci0tIChIVE1MVGFi
bGVDYXB0aW9uRWxlbWVudCAqKV90YWJsZUNhcHRpb25FbGVtZW50OwotQGVuZAotCi1AaW50ZXJm
YWNlIERPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50IChXZWJDb3JlSW50ZXJuYWwpCi0rIChET01I
VE1MVGFibGVTZWN0aW9uRWxlbWVudCAqKV90YWJsZVNlY3Rpb25FbGVtZW50V2l0aDooSFRNTFRh
YmxlU2VjdGlvbkVsZW1lbnQgKilpbXBsOwotLSAoSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgKilf
dGFibGVTZWN0aW9uRWxlbWVudDsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MVGFibGVFbGVt
ZW50IChXZWJDb3JlSW50ZXJuYWwpCi0rIChET01IVE1MVGFibGVFbGVtZW50ICopX3RhYmxlRWxl
bWVudFdpdGg6KEhUTUxUYWJsZUVsZW1lbnQgKilpbXBsOwotLSAoSFRNTFRhYmxlRWxlbWVudCAq
KV90YWJsZUVsZW1lbnQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTFRhYmxlQ2VsbEVsZW1l
bnQgKFdlYkNvcmVJbnRlcm5hbCkKLSsgKERPTUhUTUxUYWJsZUNlbGxFbGVtZW50ICopX3RhYmxl
Q2VsbEVsZW1lbnRXaXRoOihIVE1MVGFibGVDZWxsRWxlbWVudCAqKWltcGw7Ci0tIChIVE1MVGFi
bGVDZWxsRWxlbWVudCAqKV90YWJsZUNlbGxFbGVtZW50OwotQGVuZAogCiAvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1AaW1wbGVtZW50YXRpb24gRE9NSFRNTENvbGxlY3Rp
b24KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBE
T01fY2FzdDxIVE1MQ29sbGVjdGlvbio+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAg
IFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50
ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8SFRNTENvbGxlY3Rpb24qPihfaW50ZXJuYWwpLT5k
ZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChIVE1MQ29sbGVj
dGlvbiAqKV9jb2xsZWN0aW9uCi17Ci0gICAgcmV0dXJuIERPTV9jYXN0PEhUTUxDb2xsZWN0aW9u
Kj4oX2ludGVybmFsKTsKLX0KLQotLSAodW5zaWduZWQpbGVuZ3RoCi17Ci0gICAgcmV0dXJuIFtz
ZWxmIF9jb2xsZWN0aW9uXS0+bGVuZ3RoKCk7Ci19Ci0KLS0gKERPTU5vZGUgKilpdGVtOih1bnNp
Z25lZClpbmRleAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2NvbGxl
Y3Rpb25dLT5pdGVtKGluZGV4KV07Ci19Ci0KLS0gKERPTU5vZGUgKiluYW1lZEl0ZW06KE5TU3Ry
aW5nICopbmFtZQotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2NvbGxl
Y3Rpb25dLT5uYW1lZEl0ZW0obmFtZSldOwotfQotCi1AZW5kCisvLyBET01IVE1MQ29sbGVjdGlv
bgogCiBAaW1wbGVtZW50YXRpb24gRE9NSFRNTENvbGxlY3Rpb24gKFdlYkNvcmVJbnRlcm5hbCkK
IApAQCAtMjAxLDIzICs5OSwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBAZW5k
CiAKLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24KIAotLSAodm9pZClk
ZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxIVE1MT3B0
aW9uc0NvbGxlY3Rpb24qPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIg
ZGVhbGxvY107Ci19CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRE9N
SFRNTE9wdGlvbnNDb2xsZWN0aW9uCiAKLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAoX2lu
dGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PEhUTUxPcHRpb25zQ29sbGVjdGlvbio+KF9pbnRl
cm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19CitAaW1wbGVt
ZW50YXRpb24gRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uIChXZWJDb3JlSW50ZXJuYWwpCiAKIC0g
KGlkKV9pbml0V2l0aE9wdGlvbnNDb2xsZWN0aW9uOihIVE1MT3B0aW9uc0NvbGxlY3Rpb24gKilp
bXBsCiB7CkBAIC0yNDMsODggKzEyOSwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
ICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhPcHRpb25zQ29sbGVjdGlvbjppbXBs
XSBhdXRvcmVsZWFzZV07CiB9CiAKLS0gKEhUTUxPcHRpb25zQ29sbGVjdGlvbiAqKV9vcHRpb25z
Q29sbGVjdGlvbgotewotICAgIHJldHVybiBET01fY2FzdDxIVE1MT3B0aW9uc0NvbGxlY3Rpb24q
PihfaW50ZXJuYWwpOwotfQotCi0tICh1bnNpZ25lZClsZW5ndGgKLXsKLSAgICByZXR1cm4gW3Nl
bGYgX29wdGlvbnNDb2xsZWN0aW9uXS0+bGVuZ3RoKCk7Ci19Ci0KLS0gKHZvaWQpc2V0TGVuZ3Ro
Oih1bnNpZ25lZClsZW5ndGgKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgIFtzZWxmIF9v
cHRpb25zQ29sbGVjdGlvbl0tPnNldExlbmd0aChsZW5ndGgsIGVjKTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOwotfQotCi0tIChET01Ob2RlICopaXRlbToodW5zaWduZWQpaW5kZXgKLXsKLSAg
ICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9vcHRpb25zQ29sbGVjdGlvbl0tPml0
ZW0oaW5kZXgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKW5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1l
Ci17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfb3B0aW9uc0NvbGxlY3Rp
b25dLT5uYW1lZEl0ZW0obmFtZSldOwotfQotCiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBET01I
VE1MRWxlbWVudAotCi0tIChOU1N0cmluZyAqKWlkTmFtZQotewotICAgIHJldHVybiBbc2VsZiBf
SFRNTEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoaWRBdHRyKTsKLX0KLQotLSAodm9pZClzZXRJZE5h
bWU6KE5TU3RyaW5nICopaWROYW1lCi17Ci0gICAgW3NlbGYgX0hUTUxFbGVtZW50XS0+c2V0QXR0
cmlidXRlKGlkQXR0ciwgaWROYW1lKTsKLX0KLQotLSAoTlNTdHJpbmcgKil0aXRsZQotewotICAg
IHJldHVybiBbc2VsZiBfSFRNTEVsZW1lbnRdLT50aXRsZSgpOwotfQotCi0tICh2b2lkKXNldFRp
dGxlOihOU1N0cmluZyAqKXRpdGxlCi17Ci0gICAgW3NlbGYgX0hUTUxFbGVtZW50XS0+c2V0VGl0
bGUodGl0bGUpOwotfQotCi0tIChOU1N0cmluZyAqKWxhbmcKLXsKLSAgICByZXR1cm4gW3NlbGYg
X0hUTUxFbGVtZW50XS0+bGFuZygpOwotfQotCi0tICh2b2lkKXNldExhbmc6KE5TU3RyaW5nICop
bGFuZwotewotICAgIFtzZWxmIF9IVE1MRWxlbWVudF0tPnNldExhbmcobGFuZyk7Ci19Ci0KLS0g
KE5TU3RyaW5nICopZGlyCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9IVE1MRWxlbWVudF0tPmRpcigp
OwotfQotCi0tICh2b2lkKXNldERpcjooTlNTdHJpbmcgKilkaXIKLXsKLSAgICBbc2VsZiBfSFRN
TEVsZW1lbnRdLT5zZXREaXIoZGlyKTsKLX0KLQotLSAoTlNTdHJpbmcgKiljbGFzc05hbWUKLXsK
LSAgICByZXR1cm4gW3NlbGYgX0hUTUxFbGVtZW50XS0+Y2xhc3NOYW1lKCk7Ci19Ci0KLS0gKHZv
aWQpc2V0Q2xhc3NOYW1lOihOU1N0cmluZyAqKWNsYXNzTmFtZQotewotICAgIFtzZWxmIF9IVE1M
RWxlbWVudF0tPnNldENsYXNzTmFtZShjbGFzc05hbWUpOwotfQogCi1AZW5kCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRE9NSFRNTEVsZW1lbnQKIAogQGltcGxlbWVu
dGF0aW9uIERPTUhUTUxFbGVtZW50IChXZWJDb3JlSW50ZXJuYWwpCiAKQEAgLTQ4MywzNTEyICsy
OTIsMjQ1IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEBlbmQKIAotQGltcGxlbWVu
dGF0aW9uIERPTUhUTUxEb2N1bWVudAogCi0tIChIVE1MRG9jdW1lbnQgKilfSFRNTERvY3VtZW50
Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KERPTV9jYXN0PE5vZGUq
PihfaW50ZXJuYWwpKTsKLX0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LyBET01IVE1MRG9jdW1lbnQKIAotLSAoTlNTdHJpbmcgKil0aXRsZQotewotICAgIHJldHVybiBb
c2VsZiBfSFRNTERvY3VtZW50XS0+dGl0bGUoKTsKLX0KK0BpbXBsZW1lbnRhdGlvbiBET01IVE1M
RG9jdW1lbnQgKERPTUhUTUxEb2N1bWVudEV4dGVuc2lvbnMpCiAKLS0gKHZvaWQpc2V0VGl0bGU6
KE5TU3RyaW5nICopdGl0bGUKKy0gKERPTURvY3VtZW50RnJhZ21lbnQgKiljcmVhdGVEb2N1bWVu
dEZyYWdtZW50V2l0aE1hcmt1cFN0cmluZzooTlNTdHJpbmcgKiltYXJrdXBTdHJpbmcgYmFzZVVS
TDooTlNVUkwgKiliYXNlVVJMCiB7Ci0gICAgW3NlbGYgX0hUTUxEb2N1bWVudF0tPnNldFRpdGxl
KHRpdGxlKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVG
cmFnbWVudEZyb21NYXJrdXAoW3NlbGYgX2RvY3VtZW50XSwgbWFya3VwU3RyaW5nLCBbYmFzZVVS
TCBhYnNvbHV0ZVN0cmluZ10pOworICAgIHJldHVybiBbRE9NRG9jdW1lbnRGcmFnbWVudCBfZG9j
dW1lbnRGcmFnbWVudFdpdGg6ZnJhZ21lbnQuZ2V0KCldOwogfQogCi0tIChOU1N0cmluZyAqKXJl
ZmVycmVyCistIChET01Eb2N1bWVudEZyYWdtZW50ICopY3JlYXRlRG9jdW1lbnRGcmFnbWVudFdp
dGhUZXh0OihOU1N0cmluZyAqKXRleHQKIHsKLSAgICAgcmV0dXJuIFtzZWxmIF9IVE1MRG9jdW1l
bnRdLT5yZWZlcnJlcigpOworICAgIC8vIEZJWE1FOiBTaW5jZSB0aGlzIGlzIG5vdCBhIGNvbnRl
eHR1YWwgZnJhZ21lbnQsIGl0IHdvbid0IGhhbmRsZSB3aGl0ZXNwYWNlIHByb3Blcmx5LgorICAg
IHJldHVybiBbRE9NRG9jdW1lbnRGcmFnbWVudCBfZG9jdW1lbnRGcmFnbWVudFdpdGg6Y3JlYXRl
RnJhZ21lbnRGcm9tVGV4dChbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVSYW5nZSgpLmdldCgpLCB0
ZXh0KS5nZXQoKV07CiB9CiAKLS0gKE5TU3RyaW5nICopZG9tYWluCi17Ci0gICAgIHJldHVybiBb
c2VsZiBfSFRNTERvY3VtZW50XS0+ZG9tYWluKCk7Ci19CitAZW5kCiAKLS0gKE5TU3RyaW5nICop
VVJMCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9IVE1MRG9jdW1lbnRdLT5VUkwoKS5nZXROU1N0cmlu
ZygpOwotfQorQGltcGxlbWVudGF0aW9uIERPTUhUTUxEb2N1bWVudCAoV2ViUHJpdmF0ZSkKIAot
LSAoRE9NSFRNTEVsZW1lbnQgKilib2R5CistIChET01Eb2N1bWVudEZyYWdtZW50ICopX2NyZWF0
ZURvY3VtZW50RnJhZ21lbnRXaXRoTWFya3VwU3RyaW5nOihOU1N0cmluZyAqKW1hcmt1cFN0cmlu
ZyBiYXNlVVJMU3RyaW5nOihOU1N0cmluZyAqKWJhc2VVUkxTdHJpbmcKIHsKLSAgICByZXR1cm4g
W0RPTUhUTUxFbGVtZW50IF9lbGVtZW50V2l0aDpbc2VsZiBfSFRNTERvY3VtZW50XS0+Ym9keSgp
XTsKKyAgICBOU1VSTCAqYmFzZVVSTCA9IEtVUkwoW3NlbGYgX2RvY3VtZW50XS0+Y29tcGxldGVV
UkwocGFyc2VVUkwoYmFzZVVSTFN0cmluZykpLmRlcHJlY2F0ZWRTdHJpbmcoKSkuZ2V0TlNVUkwo
KTsKKyAgICByZXR1cm4gW3NlbGYgY3JlYXRlRG9jdW1lbnRGcmFnbWVudFdpdGhNYXJrdXBTdHJp
bmc6bWFya3VwU3RyaW5nIGJhc2VVUkw6YmFzZVVSTF07CiB9CiAKLS0gKERPTUhUTUxDb2xsZWN0
aW9uICopaW1hZ2VzCistIChET01Eb2N1bWVudEZyYWdtZW50ICopX2NyZWF0ZURvY3VtZW50RnJh
Z21lbnRXaXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0CiB7Ci0gICAgSFRNTENvbGxlY3Rpb24gKmNv
bGxlY3Rpb24gPSBuZXcgSFRNTENvbGxlY3Rpb24oW3NlbGYgX0hUTUxEb2N1bWVudF0sIEhUTUxD
b2xsZWN0aW9uOjpEb2NJbWFnZXMpOwotICAgIHJldHVybiBbRE9NSFRNTENvbGxlY3Rpb24gX2Nv
bGxlY3Rpb25XaXRoOmNvbGxlY3Rpb25dOworICAgIHJldHVybiBbc2VsZiBjcmVhdGVEb2N1bWVu
dEZyYWdtZW50V2l0aFRleHQ6dGV4dF07CiB9CiAKLS0gKERPTUhUTUxDb2xsZWN0aW9uICopYXBw
bGV0cwotewotICAgIEhUTUxDb2xsZWN0aW9uICpjb2xsZWN0aW9uID0gbmV3IEhUTUxDb2xsZWN0
aW9uKFtzZWxmIF9IVE1MRG9jdW1lbnRdLCBIVE1MQ29sbGVjdGlvbjo6RG9jQXBwbGV0cyk7Ci0g
ICAgcmV0dXJuIFtET01IVE1MQ29sbGVjdGlvbiBfY29sbGVjdGlvbldpdGg6Y29sbGVjdGlvbl07
Ci19CitAZW5kCiAKLS0gKERPTUhUTUxDb2xsZWN0aW9uICopbGlua3MKLXsKLSAgICBIVE1MQ29s
bGVjdGlvbiAqY29sbGVjdGlvbiA9IG5ldyBIVE1MQ29sbGVjdGlvbihbc2VsZiBfSFRNTERvY3Vt
ZW50XSwgSFRNTENvbGxlY3Rpb246OkRvY0xpbmtzKTsKLSAgICByZXR1cm4gW0RPTUhUTUxDb2xs
ZWN0aW9uIF9jb2xsZWN0aW9uV2l0aDpjb2xsZWN0aW9uXTsKLX0KIAotLSAoRE9NSFRNTENvbGxl
Y3Rpb24gKilmb3JtcwotewotICAgIEhUTUxDb2xsZWN0aW9uICpjb2xsZWN0aW9uID0gbmV3IEhU
TUxDb2xsZWN0aW9uKFtzZWxmIF9IVE1MRG9jdW1lbnRdLCBIVE1MQ29sbGVjdGlvbjo6RG9jRm9y
bXMpOwotICAgIHJldHVybiBbRE9NSFRNTENvbGxlY3Rpb24gX2NvbGxlY3Rpb25XaXRoOmNvbGxl
Y3Rpb25dOwotfQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIERPTUhU
TUxMaW5rRWxlbWVudAogCi0tIChET01IVE1MQ29sbGVjdGlvbiAqKWFuY2hvcnMKLXsKLSAgICBI
VE1MQ29sbGVjdGlvbiAqY29sbGVjdGlvbiA9IG5ldyBIVE1MQ29sbGVjdGlvbihbc2VsZiBfSFRN
TERvY3VtZW50XSwgSFRNTENvbGxlY3Rpb246OkRvY0FuY2hvcnMpOwotICAgIHJldHVybiBbRE9N
SFRNTENvbGxlY3Rpb24gX2NvbGxlY3Rpb25XaXRoOmNvbGxlY3Rpb25dOwotfQorQGltcGxlbWVu
dGF0aW9uIERPTUhUTUxMaW5rRWxlbWVudCAoRE9NSFRNTExpbmtFbGVtZW50RXh0ZW5zaW9ucykK
IAotLSAodm9pZClzZXRCb2R5OihET01IVE1MRWxlbWVudCAqKWJvZHkKKy0gKE5TVVJMICopYWJz
b2x1dGVMaW5rVVJMCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX0hU
TUxEb2N1bWVudF0tPnNldEJvZHkoW2JvZHkgX0hUTUxFbGVtZW50XSwgZWMpOwotICAgIHJhaXNl
T25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIFtzZWxmIF9nZXRVUkxBdHRyaWJ1dGU6QCJocmVm
Il07CiB9CiAKLS0gKE5TU3RyaW5nICopY29va2llCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9IVE1M
RG9jdW1lbnRdLT5jb29raWUoKTsKLX0KK0BlbmQKIAotLSAodm9pZClzZXRDb29raWU6KE5TU3Ry
aW5nICopY29va2llCi17Ci0gICAgW3NlbGYgX0hUTUxEb2N1bWVudF0tPnNldENvb2tpZShjb29r
aWUpOwotfQogCi0tICh2b2lkKW9wZW4KLXsKLSAgICBbc2VsZiBfSFRNTERvY3VtZW50XS0+b3Bl
bigpOwotfQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIERPTUhUTUxG
b3JtRWxlbWVudAogCi0tICh2b2lkKWNsb3NlCi17Ci0gICAgW3NlbGYgX0hUTUxEb2N1bWVudF0t
PmNsb3NlKCk7Ci19CitAaW1wbGVtZW50YXRpb24gRE9NSFRNTEZvcm1FbGVtZW50IChXZWJDb3Jl
SW50ZXJuYWwpCiAKLS0gKHZvaWQpd3JpdGU6KE5TU3RyaW5nICopdGV4dAorKyAoRE9NSFRNTEZv
cm1FbGVtZW50ICopX2Zvcm1FbGVtZW50V2l0aDooSFRNTEZvcm1FbGVtZW50ICopaW1wbAogewot
ICAgIFtzZWxmIF9IVE1MRG9jdW1lbnRdLT53cml0ZSh0ZXh0KTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RE9NSFRNTEZvcm1FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7CiB9
CiAKLS0gKHZvaWQpd3JpdGVsbjooTlNTdHJpbmcgKil0ZXh0Ci17Ci0gICAgW3NlbGYgX0hUTUxE
b2N1bWVudF0tPndyaXRlbG4odGV4dCk7Ci19CitAZW5kCiAKLS0gKERPTUVsZW1lbnQgKilnZXRF
bGVtZW50QnlJZDooTlNTdHJpbmcgKillbGVtZW50SWQKLXsKLSAgICByZXR1cm4gW0RPTUVsZW1l
bnQgX2VsZW1lbnRXaXRoOltzZWxmIF9IVE1MRG9jdW1lbnRdLT5nZXRFbGVtZW50QnlJZChlbGVt
ZW50SWQpXTsKLX0KIAotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5TmFtZTooTlNTdHJp
bmcgKillbGVtZW50TmFtZQotewotICAgIE5hbWVOb2RlTGlzdCAqbm9kZUxpc3QgPSBuZXcgTmFt
ZU5vZGVMaXN0KFtzZWxmIF9IVE1MRG9jdW1lbnRdLCBlbGVtZW50TmFtZSk7Ci0gICAgcmV0dXJu
IFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOm5vZGVMaXN0XTsKLX0KKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBET01IVE1MSW5wdXRFbGVtZW50CiAKLS0gKERPTURv
Y3VtZW50RnJhZ21lbnQgKiljcmVhdGVEb2N1bWVudEZyYWdtZW50V2l0aE1hcmt1cFN0cmluZzoo
TlNTdHJpbmcgKiltYXJrdXBTdHJpbmcgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMCitAaW1wbGVt
ZW50YXRpb24gRE9NSFRNTElucHV0RWxlbWVudCAoRE9NSFRNTElucHV0RWxlbWVudEV4dGVuc2lv
bnMpCisKKy0gKE5TU3RyaW5nICopYWx0RGlzcGxheVN0cmluZwogewotICAgIFJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChbc2VsZiBf
ZG9jdW1lbnRdLCBtYXJrdXBTdHJpbmcsIFtiYXNlVVJMIGFic29sdXRlU3RyaW5nXSk7Ci0gICAg
cmV0dXJuIFtET01Eb2N1bWVudEZyYWdtZW50IF9kb2N1bWVudEZyYWdtZW50V2l0aDpmcmFnbWVu
dC5nZXQoKV07CisgICAgcmV0dXJuIFtzZWxmIF9IVE1MSW5wdXRFbGVtZW50XS0+YWx0KCkucmVw
bGFjZSgnXFwnLCBbc2VsZiBfZWxlbWVudF0tPmRvY3VtZW50KCktPmJhY2tzbGFzaEFzQ3VycmVu
Y3lTeW1ib2woKSk7CiB9CiAKLS0gKERPTURvY3VtZW50RnJhZ21lbnQgKiljcmVhdGVEb2N1bWVu
dEZyYWdtZW50V2l0aFRleHQ6KE5TU3RyaW5nICopdGV4dAorLSAoTlNVUkwgKilhYnNvbHV0ZUlt
YWdlVVJMCiB7Ci0gICAgLy8gRklYTUU6IFNpbmNlIHRoaXMgaXMgbm90IGEgY29udGV4dHVhbCBm
cmFnbWVudCwgaXQgd29uJ3QgaGFuZGxlIHdoaXRlc3BhY2UgcHJvcGVybHkuCi0gICAgcmV0dXJu
IFtET01Eb2N1bWVudEZyYWdtZW50IF9kb2N1bWVudEZyYWdtZW50V2l0aDpjcmVhdGVGcmFnbWVu
dEZyb21UZXh0KFtzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVJhbmdlKCkuZ2V0KCksIHRleHQpLmdl
dCgpXTsKKyAgICBpZiAoIVtzZWxmIF9IVE1MSW5wdXRFbGVtZW50XS0+cmVuZGVyZXIoKSB8fCAh
W3NlbGYgX0hUTUxJbnB1dEVsZW1lbnRdLT5yZW5kZXJlcigpLT5pc0ltYWdlKCkpCisgICAgICAg
IHJldHVybiBuaWw7CisgICAgcmV0dXJuIFtzZWxmIF9nZXRVUkxBdHRyaWJ1dGU6QCJzcmMiXTsK
IH0KIAogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gRE9NSFRNTERvY3VtZW50IChXZWJQcml2YXRl
KQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIERPTUhUTUxBbmNob3JF
bGVtZW50CiAKLS0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfY3JlYXRlRG9jdW1lbnRGcmFnbWVu
dFdpdGhNYXJrdXBTdHJpbmc6KE5TU3RyaW5nICopbWFya3VwU3RyaW5nIGJhc2VVUkxTdHJpbmc6
KE5TU3RyaW5nICopYmFzZVVSTFN0cmluZwotewotICAgIE5TVVJMICpiYXNlVVJMID0gS1VSTChb
c2VsZiBfZG9jdW1lbnRdLT5jb21wbGV0ZVVSTChwYXJzZVVSTChiYXNlVVJMU3RyaW5nKSkuZGVw
cmVjYXRlZFN0cmluZygpKS5nZXROU1VSTCgpOwotICAgIHJldHVybiBbc2VsZiBjcmVhdGVEb2N1
bWVudEZyYWdtZW50V2l0aE1hcmt1cFN0cmluZzptYXJrdXBTdHJpbmcgYmFzZVVSTDpiYXNlVVJM
XTsKLX0KK0BpbXBsZW1lbnRhdGlvbiBET01IVE1MQW5jaG9yRWxlbWVudCAoRE9NSFRNTEFuY2hv
ckVsZW1lbnRFeHRlbnNpb25zKQogCi0tIChET01Eb2N1bWVudEZyYWdtZW50ICopX2NyZWF0ZURv
Y3VtZW50RnJhZ21lbnRXaXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0CistIChOU1VSTCAqKWFic29s
dXRlTGlua1VSTAogewotICAgIHJldHVybiBbc2VsZiBjcmVhdGVEb2N1bWVudEZyYWdtZW50V2l0
aFRleHQ6dGV4dF07CisgICAgcmV0dXJuIFtzZWxmIF9nZXRVUkxBdHRyaWJ1dGU6QCJocmVmIl07
CiB9CiAKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIERPTUhUTUxIdG1sRWxlbWVudAogCi0tIChI
VE1MSHRtbEVsZW1lbnQgKilfSFRNTEh0bWxFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PEhUTUxIdG1sRWxlbWVudCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBET01IVE1MSW1hZ2VFbGVtZW50
CiAKLS0gKE5TU3RyaW5nICopdmVyc2lvbgorQGltcGxlbWVudGF0aW9uIERPTUhUTUxJbWFnZUVs
ZW1lbnQgKERPTUhUTUxJbWFnZUVsZW1lbnRFeHRlbnNpb25zKQorCistIChOU1N0cmluZyAqKWFs
dERpc3BsYXlTdHJpbmcKIHsKLSAgICByZXR1cm4gW3NlbGYgX0hUTUxIdG1sRWxlbWVudF0tPnZl
cnNpb24oKTsKKyAgICBTdHJpbmcgYWx0ID0gW3NlbGYgX0hUTUxJbWFnZUVsZW1lbnRdLT5hbHQo
KTsKKyAgICByZXR1cm4gYWx0LnJlcGxhY2UoJ1xcJywgW3NlbGYgX2VsZW1lbnRdLT5kb2N1bWVu
dCgpLT5iYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sKCkpOwogfQogCi0tICh2b2lkKXNldFZlcnNp
b246KE5TU3RyaW5nICopdmVyc2lvbgorLSAoTlNVUkwgKilhYnNvbHV0ZUltYWdlVVJMCiB7Ci0g
ICAgW3NlbGYgX0hUTUxIdG1sRWxlbWVudF0tPnNldFZlcnNpb24odmVyc2lvbik7CisgICAgcmV0
dXJuIFtzZWxmIF9nZXRVUkxBdHRyaWJ1dGU6QCJzcmMiXTsKIH0KIAogQGVuZAogCi1AaW1wbGVt
ZW50YXRpb24gRE9NSFRNTEhlYWRFbGVtZW50CiAKLS0gKEhUTUxIZWFkRWxlbWVudCAqKV9oZWFk
RWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MSGVhZEVsZW1lbnQqPihET01f
Y2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8gRE9NSFRNTE9iamVjdEVsZW1lbnQKIAotLSAoTlNTdHJpbmcgKilwcm9maWxl
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9oZWFkRWxlbWVudF0tPnByb2ZpbGUoKTsKLX0KK0BpbXBs
ZW1lbnRhdGlvbiBET01IVE1MT2JqZWN0RWxlbWVudCAoRE9NSFRNTE9iamVjdEVsZW1lbnRFeHRl
bnNpb25zKQogCi0tICh2b2lkKXNldFByb2ZpbGU6KE5TU3RyaW5nICopcHJvZmlsZQorLSAoTlNV
UkwgKilhYnNvbHV0ZUltYWdlVVJMCiB7Ci0gICAgW3NlbGYgX2hlYWRFbGVtZW50XS0+c2V0UHJv
ZmlsZShwcm9maWxlKTsKKyAgICBpZiAoIVtzZWxmIF9vYmplY3RFbGVtZW50XS0+cmVuZGVyZXIo
KSB8fCAhW3NlbGYgX29iamVjdEVsZW1lbnRdLT5yZW5kZXJlcigpLT5pc0ltYWdlKCkpCisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIFtzZWxmIF9nZXRVUkxBdHRyaWJ1dGU6QCJkYXRh
Il07CiB9CiAKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIERPTUhUTUxMaW5rRWxlbWVudAogCi0t
IChIVE1MTGlua0VsZW1lbnQgKilfbGlua0VsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SFRNTExpbmtFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQorLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIERPTUhUTUxBcHBsZXRFbGVtZW50
CiAKLS0gKEJPT0wpZGlzYWJsZWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2xpbmtFbGVtZW50XS0+
ZGlzYWJsZWQoKTsKLX0KKy8vQGltcGxlbWVudGF0aW9uIERPTUhUTUxBcHBsZXRFbGVtZW50IAor
Ly8KKy8vLy9GSVhNRTogVGhlcmUgZG9lcyBub3Qgc2VlbSB0byBiZSBhbnkgaW50ZWZhY2UgZGVj
bGFyYXRpb24gb3IgdXNlIG9mIHRoaXMgZnVuY3Rpb24uCisvLy0gKE5TU3RyaW5nICopYWx0RGlz
cGxheVN0cmluZworLy97CisvLyAgICBTdHJpbmcgYWx0ID0gW3NlbGYgX2FwcGxldEVsZW1lbnRd
LT5nZXRBdHRyaWJ1dGUoYWx0QXR0cik7CisvLyAgICByZXR1cm4gYWx0LnJlcGxhY2UoJ1xcJywg
W3NlbGYgX2VsZW1lbnRdLT5kb2N1bWVudCgpLT5iYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sKCkp
OworLy99CisvLworLy9AZW5kCiAKLS0gKHZvaWQpc2V0RGlzYWJsZWQ6KEJPT0wpZGlzYWJsZWQK
LXsKLSAgICBbc2VsZiBfbGlua0VsZW1lbnRdLT5zZXREaXNhYmxlZChkaXNhYmxlZCk7Ci19CiAK
LS0gKE5TU3RyaW5nICopY2hhcnNldAotewotICAgIHJldHVybiBbc2VsZiBfbGlua0VsZW1lbnRd
LT5jaGFyc2V0KCk7Ci19CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8g
RE9NSFRNTEFyZWFFbGVtZW50CiAKLS0gKHZvaWQpc2V0Q2hhcnNldDooTlNTdHJpbmcgKiljaGFy
c2V0Ci17Ci0gICAgW3NlbGYgX2xpbmtFbGVtZW50XS0+c2V0Q2hhcnNldChjaGFyc2V0KTsKLX0K
K0BpbXBsZW1lbnRhdGlvbiBET01IVE1MQXJlYUVsZW1lbnQgKERPTUhUTUxBcmVhRWxlbWVudEV4
dGVuc2lvbnMpCisKKy8vIEZJWE1FOiB0aGVyZSBpcyBubyBpbnRlcmZhY2UgZGVjbGFyYXRpb24g
Zm9yIHRoaXMgbWV0aG9kIGFueXdoZXJlIGFuZCBpdCBkb2VzIG5vdCBzZWVtIHRvIGdldCB1c2Vk
LgorLy8tIChOU1N0cmluZyAqKWFsdERpc3BsYXlTdHJpbmcKKy8veworLy8gICAgU3RyaW5nIGFs
dCA9IFtzZWxmIF9hcmVhRWxlbWVudF0tPmdldEF0dHJpYnV0ZShhbHRBdHRyKTsKKy8vICAgIHJl
dHVybiBhbHQucmVwbGFjZSgnXFwnLCBbc2VsZiBfZWxlbWVudF0tPmRvY3VtZW50KCktPmJhY2tz
bGFzaEFzQ3VycmVuY3lTeW1ib2woKSk7CisvL30KIAogLSAoTlNVUkwgKilhYnNvbHV0ZUxpbmtV
UkwKIHsKICAgICByZXR1cm4gW3NlbGYgX2dldFVSTEF0dHJpYnV0ZTpAImhyZWYiXTsKIH0KIAot
LSAoTlNTdHJpbmcgKilocmVmCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9saW5rRWxlbWVudF0tPmhy
ZWYoKTsKLX0KK0BlbmQKIAotLSAodm9pZClzZXRIcmVmOihOU1N0cmluZyAqKWhyZWYKLXsKLSAg
ICBbc2VsZiBfbGlua0VsZW1lbnRdLT5ocmVmKCk7Ci19CiAKLS0gKE5TU3RyaW5nICopaHJlZmxh
bmcKLXsKLSAgICByZXR1cm4gW3NlbGYgX2xpbmtFbGVtZW50XS0+aHJlZmxhbmcoKTsKLX0KKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBET01IVE1MVGFibGVDYXB0aW9u
RWxlbWVudAogCi0tICh2b2lkKXNldEhyZWZsYW5nOihOU1N0cmluZyAqKWhyZWZsYW5nCi17Ci0g
ICAgW3NlbGYgX2xpbmtFbGVtZW50XS0+c2V0SHJlZmxhbmcoaHJlZmxhbmcpOwotfQorQGltcGxl
bWVudGF0aW9uIERPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50IChXZWJDb3JlSW50ZXJuYWwpCiAK
LS0gKE5TU3RyaW5nICopbWVkaWEKKysgKERPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50ICopX3Rh
YmxlQ2FwdGlvbkVsZW1lbnRXaXRoOihIVE1MVGFibGVDYXB0aW9uRWxlbWVudCAqKWltcGwKIHsK
LSAgICByZXR1cm4gW3NlbGYgX2xpbmtFbGVtZW50XS0+Z2V0QXR0cmlidXRlKG1lZGlhQXR0cik7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50Kj4oW0RP
TU5vZGUgX25vZGVXaXRoOmltcGxdKTsKIH0KIAotLSAodm9pZClzZXRNZWRpYTooTlNTdHJpbmcg
KiltZWRpYQorLSAoSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQgKilfdGFibGVDYXB0aW9uRWxlbWVu
dAogewotICAgIFtzZWxmIF9saW5rRWxlbWVudF0tPnNldEF0dHJpYnV0ZShtZWRpYUF0dHIsIG1l
ZGlhKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQqPihE
T01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7CiB9CiAKLS0gKE5TU3RyaW5nICopcmVsCi17Ci0g
ICAgcmV0dXJuIFtzZWxmIF9saW5rRWxlbWVudF0tPmdldEF0dHJpYnV0ZShyZWxBdHRyKTsKLX0K
K0BlbmQKIAotLSAodm9pZClzZXRSZWw6KE5TU3RyaW5nICopcmVsCi17Ci0gICAgW3NlbGYgX2xp
bmtFbGVtZW50XS0+c2V0QXR0cmlidXRlKHJlbEF0dHIsIHJlbCk7Ci19CiAKLS0gKE5TU3RyaW5n
ICopcmV2Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9saW5rRWxlbWVudF0tPmdldEF0dHJpYnV0ZShy
ZXZBdHRyKTsKLX0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBET01I
VE1MVGFibGVTZWN0aW9uRWxlbWVudAogCi0tICh2b2lkKXNldFJldjooTlNTdHJpbmcgKilyZXYK
LXsKLSAgICBbc2VsZiBfbGlua0VsZW1lbnRdLT5zZXRBdHRyaWJ1dGUocmV2QXR0ciwgcmV2KTsK
LX0KK0BpbXBsZW1lbnRhdGlvbiBET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCAoV2ViQ29yZUlu
dGVybmFsKQogCi0tIChOU1N0cmluZyAqKXRhcmdldAorKyAoRE9NSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQgKilfdGFibGVTZWN0aW9uRWxlbWVudFdpdGg6KEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50
ICopaW1wbAogewotICAgIHJldHVybiBbc2VsZiBfbGlua0VsZW1lbnRdLT5nZXRBdHRyaWJ1dGUo
dGFyZ2V0QXR0cik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUhUTUxUYWJsZVNlY3Rpb25F
bGVtZW50Kj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTsKIH0KIAotLSAodm9pZClzZXRUYXJn
ZXQ6KE5TU3RyaW5nICopdGFyZ2V0CistIChIVE1MVGFibGVTZWN0aW9uRWxlbWVudCAqKV90YWJs
ZVNlY3Rpb25FbGVtZW50CiB7Ci0gICAgW3NlbGYgX2xpbmtFbGVtZW50XS0+c2V0QXR0cmlidXRl
KHRhcmdldEF0dHIsIHRhcmdldCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwogfQogCi0tIChOU1N0
cmluZyAqKXR5cGUKK0BlbmQKKworCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLyBET01IVE1MVGFibGVFbGVtZW50CisKK0BpbXBsZW1lbnRhdGlvbiBET01IVE1MVGFi
bGVFbGVtZW50IChXZWJDb3JlSW50ZXJuYWwpCisKKysgKERPTUhUTUxUYWJsZUVsZW1lbnQgKilf
dGFibGVFbGVtZW50V2l0aDooSFRNTFRhYmxlRWxlbWVudCAqKWltcGwKIHsKLSAgICByZXR1cm4g
W3NlbGYgX2xpbmtFbGVtZW50XS0+Z2V0QXR0cmlidXRlKHR5cGVBdHRyKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RE9NSFRNTFRhYmxlRWxlbWVudCo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBs
XSk7CiB9CiAKLS0gKHZvaWQpc2V0VHlwZTooTlNTdHJpbmcgKil0eXBlCistIChIVE1MVGFibGVF
bGVtZW50ICopX3RhYmxlRWxlbWVudAogewotICAgIFtzZWxmIF9saW5rRWxlbWVudF0tPnNldEF0
dHJpYnV0ZSh0eXBlQXR0ciwgdHlwZSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxUYWJs
ZUVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7CiB9CiAKIEBlbmQKIAotQGlt
cGxlbWVudGF0aW9uIERPTUhUTUxUaXRsZUVsZW1lbnQKIAotLSAoSFRNTFRpdGxlRWxlbWVudCAq
KV90aXRsZUVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFRpdGxlRWxlbWVu
dCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLyBET01IVE1MVGFibGVDZWxsRWxlbWVudAorCitAaW1wbGVtZW50
YXRpb24gRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKIAotLSAoTlNT
dHJpbmcgKil0ZXh0CisrIChET01IVE1MVGFibGVDZWxsRWxlbWVudCAqKV90YWJsZUNlbGxFbGVt
ZW50V2l0aDooSFRNTFRhYmxlQ2VsbEVsZW1lbnQgKilpbXBsCiB7Ci0gICAgcmV0dXJuIFtzZWxm
IF90aXRsZUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUodGV4dEF0dHIpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxET01IVE1MVGFibGVDZWxsRWxlbWVudCo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBs
XSk7CiB9CiAKLS0gKHZvaWQpc2V0VGV4dDooTlNTdHJpbmcgKil0ZXh0CistIChIVE1MVGFibGVD
ZWxsRWxlbWVudCAqKV90YWJsZUNlbGxFbGVtZW50CiB7Ci0gICAgW3NlbGYgX3RpdGxlRWxlbWVu
dF0tPnNldEF0dHJpYnV0ZSh0ZXh0QXR0ciwgdGV4dCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEhUTUxUYWJsZUNlbGxFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwogfQog
CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MTWV0YUVsZW1lbnQKIAotLSAoSFRNTE1l
dGFFbGVtZW50ICopX21ldGFFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxN
ZXRhRWxlbWVudCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJp
bmcgKiljb250ZW50Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9tZXRhRWxlbWVudF0tPmdldEF0dHJp
YnV0ZShjb250ZW50QXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0Q29udGVudDooTlNTdHJpbmcgKilj
b250ZW50Ci17Ci0gICAgW3NlbGYgX21ldGFFbGVtZW50XS0+c2V0QXR0cmlidXRlKGNvbnRlbnRB
dHRyLCBjb250ZW50KTsKLX0KLQotLSAoTlNTdHJpbmcgKilodHRwRXF1aXYKLXsKLSAgICByZXR1
cm4gW3NlbGYgX21ldGFFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGh0dHBfZXF1aXZBdHRyKTsKLX0K
LQotLSAodm9pZClzZXRIdHRwRXF1aXY6KE5TU3RyaW5nICopaHR0cEVxdWl2Ci17Ci0gICAgW3Nl
bGYgX21ldGFFbGVtZW50XS0+c2V0QXR0cmlidXRlKGh0dHBfZXF1aXZBdHRyLCBodHRwRXF1aXYp
OwotfQotCi0tIChOU1N0cmluZyAqKW5hbWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX21ldGFFbGVt
ZW50XS0+Z2V0QXR0cmlidXRlKG5hbWVBdHRyKTsKLX0KLQotLSAodm9pZClzZXROYW1lOihOU1N0
cmluZyAqKW5hbWUKLXsKLSAgICBbc2VsZiBfbWV0YUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUobmFt
ZUF0dHIsIG5hbWUpOwotfQotCi0tIChOU1N0cmluZyAqKXNjaGVtZQotewotICAgIHJldHVybiBb
c2VsZiBfbWV0YUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoc2NoZW1lQXR0cik7Ci19Ci0KLS0gKHZv
aWQpc2V0U2NoZW1lOihOU1N0cmluZyAqKXNjaGVtZQotewotICAgIFtzZWxmIF9tZXRhRWxlbWVu
dF0tPnNldEF0dHJpYnV0ZShzY2hlbWVBdHRyLCBzY2hlbWUpOwotfQotCi1AZW5kCi0KLUBpbXBs
ZW1lbnRhdGlvbiBET01IVE1MQmFzZUVsZW1lbnQKLQotLSAoSFRNTEJhc2VFbGVtZW50ICopX2Jh
c2VFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxCYXNlRWxlbWVudCo+KERP
TV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKilocmVmCi17Ci0g
ICAgcmV0dXJuIFtzZWxmIF9iYXNlRWxlbWVudF0tPmhyZWYoKTsKLX0KLQotLSAodm9pZClzZXRI
cmVmOihOU1N0cmluZyAqKWhyZWYKLXsKLSAgICBbc2VsZiBfYmFzZUVsZW1lbnRdLT5zZXRBdHRy
aWJ1dGUoaHJlZkF0dHIsIGhyZWYpOwotfQotCi0tIChOU1N0cmluZyAqKXRhcmdldAotewotICAg
IHJldHVybiBbc2VsZiBfYmFzZUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUodGFyZ2V0QXR0cik7Ci19
Ci0KLS0gKHZvaWQpc2V0VGFyZ2V0OihOU1N0cmluZyAqKXRhcmdldAotewotICAgIFtzZWxmIF9i
YXNlRWxlbWVudF0tPnNldEF0dHJpYnV0ZShzY2hlbWVBdHRyLCB0YXJnZXQpOwotfQotCi1AZW5k
Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MU3R5bGVFbGVtZW50Ci0KLS0gKEhUTUxTdHlsZUVs
ZW1lbnQgKilfc3R5bGVFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxTdHls
ZUVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKEJPT0wpZGlz
YWJsZWQKLXsKLSAgICByZXR1cm4gIVtzZWxmIF9zdHlsZUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUo
ZGlzYWJsZWRBdHRyKS5pc051bGwoKTsKLX0KLQotLSAodm9pZClzZXREaXNhYmxlZDooQk9PTClk
aXNhYmxlZAotewotICAgIFtzZWxmIF9zdHlsZUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoZGlzYWJs
ZWRBdHRyLCBkaXNhYmxlZCA/ICIiIDogMCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbWVkaWEKLXsK
LSAgICByZXR1cm4gW3NlbGYgX3N0eWxlRWxlbWVudF0tPmdldEF0dHJpYnV0ZShtZWRpYUF0dHIp
OwotfQotCi0tICh2b2lkKXNldE1lZGlhOihOU1N0cmluZyAqKW1lZGlhCi17Ci0gICAgW3NlbGYg
X3N0eWxlRWxlbWVudF0tPnNldEF0dHJpYnV0ZShtZWRpYUF0dHIsIG1lZGlhKTsKLX0KLQotLSAo
TlNTdHJpbmcgKil0eXBlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9zdHlsZUVsZW1lbnRdLT5nZXRB
dHRyaWJ1dGUodHlwZUF0dHIpOwotfQotCi0tICh2b2lkKXNldFR5cGU6KE5TU3RyaW5nICopdHlw
ZQotewotICAgIFtzZWxmIF9zdHlsZUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUodHlwZUF0dHIsIHR5
cGUpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MQm9keUVsZW1lbnQKLQot
LSAoSFRNTEJvZHlFbGVtZW50ICopX2JvZHlFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PEhUTUxCb2R5RWxlbWVudCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQot
LSAoTlNTdHJpbmcgKilhTGluawotewotICAgIHJldHVybiBbc2VsZiBfYm9keUVsZW1lbnRdLT5n
ZXRBdHRyaWJ1dGUoYWxpbmtBdHRyKTsKLX0KLQotLSAodm9pZClzZXRBTGluazooTlNTdHJpbmcg
KilhTGluawotewotICAgIFtzZWxmIF9ib2R5RWxlbWVudF0tPnNldEF0dHJpYnV0ZShhbGlua0F0
dHIsIGFMaW5rKTsKLX0KLQotLSAoTlNTdHJpbmcgKiliYWNrZ3JvdW5kCi17Ci0gICAgcmV0dXJu
IFtzZWxmIF9ib2R5RWxlbWVudF0tPmdldEF0dHJpYnV0ZShiYWNrZ3JvdW5kQXR0cik7Ci19Ci0K
LS0gKHZvaWQpc2V0QmFja2dyb3VuZDooTlNTdHJpbmcgKiliYWNrZ3JvdW5kCi17Ci0gICAgW3Nl
bGYgX2JvZHlFbGVtZW50XS0+c2V0QXR0cmlidXRlKGJhY2tncm91bmRBdHRyLCBiYWNrZ3JvdW5k
KTsKLX0KLQotLSAoTlNTdHJpbmcgKiliZ0NvbG9yCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ib2R5
RWxlbWVudF0tPmdldEF0dHJpYnV0ZShiZ2NvbG9yQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0QmdD
b2xvcjooTlNTdHJpbmcgKiliZ0NvbG9yCi17Ci0gICAgW3NlbGYgX2JvZHlFbGVtZW50XS0+c2V0
QXR0cmlidXRlKGJnY29sb3JBdHRyLCBiZ0NvbG9yKTsKLX0KLQotLSAoTlNTdHJpbmcgKilsaW5r
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9ib2R5RWxlbWVudF0tPmdldEF0dHJpYnV0ZShsaW5rQXR0
cik7Ci19Ci0KLS0gKHZvaWQpc2V0TGluazooTlNTdHJpbmcgKilsaW5rCi17Ci0gICAgW3NlbGYg
X2JvZHlFbGVtZW50XS0+c2V0QXR0cmlidXRlKGxpbmtBdHRyLCBsaW5rKTsKLX0KLQotLSAoTlNT
dHJpbmcgKil0ZXh0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9ib2R5RWxlbWVudF0tPmdldEF0dHJp
YnV0ZSh0ZXh0QXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0VGV4dDooTlNTdHJpbmcgKil0ZXh0Ci17
Ci0gICAgW3NlbGYgX2JvZHlFbGVtZW50XS0+c2V0QXR0cmlidXRlKHRleHRBdHRyLCB0ZXh0KTsK
LX0KLQotLSAoTlNTdHJpbmcgKil2TGluawotewotICAgIHJldHVybiBbc2VsZiBfYm9keUVsZW1l
bnRdLT5nZXRBdHRyaWJ1dGUodmxpbmtBdHRyKTsKLX0KLQotLSAodm9pZClzZXRWTGluazooTlNT
dHJpbmcgKil2TGluawotewotICAgIFtzZWxmIF9ib2R5RWxlbWVudF0tPnNldEF0dHJpYnV0ZSh2
bGlua0F0dHIsIHZMaW5rKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NSFRNTEZv
cm1FbGVtZW50Ci0KLS0gKEhUTUxGb3JtRWxlbWVudCAqKV9mb3JtRWxlbWVudAotewotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVy
bmFsKSk7Ci19Ci0KLS0gKERPTUhUTUxDb2xsZWN0aW9uICopZWxlbWVudHMKLXsKLSAgICBIVE1M
Q29sbGVjdGlvbiAqY29sbGVjdGlvbiA9IG5ldyBIVE1MRm9ybUNvbGxlY3Rpb24oW3NlbGYgX2Zv
cm1FbGVtZW50XSk7Ci0gICAgcmV0dXJuIFtET01IVE1MQ29sbGVjdGlvbiBfY29sbGVjdGlvbldp
dGg6Y29sbGVjdGlvbl07Ci19Ci0KLS0gKGludClsZW5ndGgKLXsKLSAgICByZXR1cm4gW3NlbGYg
X2Zvcm1FbGVtZW50XS0+bGVuZ3RoKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbmFtZQotewotICAg
IHJldHVybiBbc2VsZiBfZm9ybUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUobmFtZUF0dHIpOwotfQot
Ci0tICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZQotewotICAgIFtzZWxmIF9mb3JtRWxl
bWVudF0tPnNldEF0dHJpYnV0ZShuYW1lQXR0ciwgbmFtZSk7Ci19Ci0KLS0gKE5TU3RyaW5nICop
YWNjZXB0Q2hhcnNldAotewotICAgIHJldHVybiBbc2VsZiBfZm9ybUVsZW1lbnRdLT5nZXRBdHRy
aWJ1dGUoYWNjZXB0X2NoYXJzZXRBdHRyKTsKLX0KLQotLSAodm9pZClzZXRBY2NlcHRDaGFyc2V0
OihOU1N0cmluZyAqKWFjY2VwdENoYXJzZXQKLXsKLSAgICBbc2VsZiBfZm9ybUVsZW1lbnRdLT5z
ZXRBdHRyaWJ1dGUoYWNjZXB0X2NoYXJzZXRBdHRyLCBhY2NlcHRDaGFyc2V0KTsKLX0KLQotLSAo
TlNTdHJpbmcgKilhY3Rpb24KLXsKLSAgICByZXR1cm4gW3NlbGYgX2Zvcm1FbGVtZW50XS0+Z2V0
QXR0cmlidXRlKGFjdGlvbkF0dHIpOwotfQotCi0tICh2b2lkKXNldEFjdGlvbjooTlNTdHJpbmcg
KilhY3Rpb24KLXsKLSAgICBbc2VsZiBfZm9ybUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoYWN0aW9u
QXR0ciwgYWN0aW9uKTsKLX0KLQotLSAoTlNTdHJpbmcgKillbmN0eXBlCi17Ci0gICAgcmV0dXJu
IFtzZWxmIF9mb3JtRWxlbWVudF0tPmdldEF0dHJpYnV0ZShlbmN0eXBlQXR0cik7Ci19Ci0KLS0g
KHZvaWQpc2V0RW5jdHlwZTooTlNTdHJpbmcgKillbmN0eXBlCi17Ci0gICAgW3NlbGYgX2Zvcm1F
bGVtZW50XS0+c2V0QXR0cmlidXRlKGVuY3R5cGVBdHRyLCBlbmN0eXBlKTsKLX0KLQotLSAoTlNT
dHJpbmcgKiltZXRob2QKLXsKLSAgICByZXR1cm4gW3NlbGYgX2Zvcm1FbGVtZW50XS0+Z2V0QXR0
cmlidXRlKG1ldGhvZEF0dHIpOwotfQotCi0tICh2b2lkKXNldE1ldGhvZDooTlNTdHJpbmcgKilt
ZXRob2QKLXsKLSAgICBbc2VsZiBfZm9ybUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUobWV0aG9kQXR0
ciwgbWV0aG9kKTsKLX0KLQotLSAoTlNTdHJpbmcgKil0YXJnZXQKLXsKLSAgICByZXR1cm4gW3Nl
bGYgX2Zvcm1FbGVtZW50XS0+Z2V0QXR0cmlidXRlKHRhcmdldEF0dHIpOwotfQotCi0tICh2b2lk
KXNldFRhcmdldDooTlNTdHJpbmcgKil0YXJnZXQKLXsKLSAgICBbc2VsZiBfZm9ybUVsZW1lbnRd
LT5zZXRBdHRyaWJ1dGUodGFyZ2V0QXR0ciwgdGFyZ2V0KTsKLX0KLQotLSAodm9pZClzdWJtaXQK
LXsKLSAgICBbc2VsZiBfZm9ybUVsZW1lbnRdLT5zdWJtaXQoZmFsc2UpOwotfQotCi0tICh2b2lk
KXJlc2V0Ci17Ci0gICAgW3NlbGYgX2Zvcm1FbGVtZW50XS0+cmVzZXQoKTsKLX0KLQotQGVuZAot
Ci1AaW1wbGVtZW50YXRpb24gRE9NSFRNTEZvcm1FbGVtZW50IChXZWJDb3JlSW50ZXJuYWwpCi0K
LSsgKERPTUhUTUxGb3JtRWxlbWVudCAqKV9mb3JtRWxlbWVudFdpdGg6KEhUTUxGb3JtRWxlbWVu
dCAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NSFRNTEZvcm1FbGVtZW50Kj4o
W0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24g
RE9NSFRNTElzSW5kZXhFbGVtZW50Ci0KLS0gKEhUTUxJc0luZGV4RWxlbWVudCAqKV9pc0luZGV4
RWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MSXNJbmRleEVsZW1lbnQqPihE
T01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKERPTUhUTUxGb3JtRWxlbWVudCAq
KWZvcm0KLXsKLSAgICByZXR1cm4gW0RPTUhUTUxGb3JtRWxlbWVudCBfZm9ybUVsZW1lbnRXaXRo
OltzZWxmIF9pc0luZGV4RWxlbWVudF0tPmZvcm0oKV07Ci19Ci0KLS0gKE5TU3RyaW5nICopcHJv
bXB0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9pc0luZGV4RWxlbWVudF0tPnByb21wdCgpOwotfQot
Ci0tICh2b2lkKXNldFByb21wdDooTlNTdHJpbmcgKilwcm9tcHQKLXsKLSAgICBbc2VsZiBfaXNJ
bmRleEVsZW1lbnRdLT5zZXRQcm9tcHQocHJvbXB0KTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gRE9NSFRNTFNlbGVjdEVsZW1lbnQKLQotLSAoSFRNTFNlbGVjdEVsZW1lbnQgKilfc2Vs
ZWN0RWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+
KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKil0eXBlCi17
Ci0gICAgcmV0dXJuIFtzZWxmIF9zZWxlY3RFbGVtZW50XS0+dHlwZSgpOwotfQotCi0tIChpbnQp
c2VsZWN0ZWRJbmRleAotewotICAgIHJldHVybiBbc2VsZiBfc2VsZWN0RWxlbWVudF0tPnNlbGVj
dGVkSW5kZXgoKTsKLX0KLQotLSAodm9pZClzZXRTZWxlY3RlZEluZGV4OihpbnQpc2VsZWN0ZWRJ
bmRleAotewotICAgIFtzZWxmIF9zZWxlY3RFbGVtZW50XS0+c2V0U2VsZWN0ZWRJbmRleChzZWxl
Y3RlZEluZGV4KTsKLX0KLQotLSAoTlNTdHJpbmcgKil2YWx1ZQotewotICAgIHJldHVybiBbc2Vs
ZiBfc2VsZWN0RWxlbWVudF0tPnZhbHVlKCk7Ci19Ci0KLS0gKHZvaWQpc2V0VmFsdWU6KE5TU3Ry
aW5nICopdmFsdWUKLXsKLSAgICBTdHJpbmcgcyh2YWx1ZSk7Ci0gICAgW3NlbGYgX3NlbGVjdEVs
ZW1lbnRdLT5zZXRWYWx1ZShzLmltcGwoKSk7Ci19Ci0KLS0gKGludClsZW5ndGgKLXsKLSAgICBy
ZXR1cm4gW3NlbGYgX3NlbGVjdEVsZW1lbnRdLT5sZW5ndGgoKTsKLX0KLQotLSAodm9pZClzZXRM
ZW5ndGg6KGludClsZW5ndGgKLXsKLSAgICAvLyBGSVhNRTogTm90IHlldCBjbGVhciB3aGF0IHRv
IGRvIGFib3V0IHRoaXMgb25lLgotICAgIC8vIFRoZXJlJ3Mgc29tZSBKYXZhU2NyaXB0LXNwZWNp
ZmljIGhhY2tlcnkgaW4gdGhlIEphdmFTY3JpcHQgYmluZGluZ3MgZm9yIHRoaXMuCi0gICAgLy9b
c2VsZiBfc2VsZWN0RWxlbWVudF0tPnNldExlbmd0aChsZW5ndGgpOwotfQotCi0tIChET01IVE1M
Rm9ybUVsZW1lbnQgKilmb3JtCi17Ci0gICAgcmV0dXJuIFtET01IVE1MRm9ybUVsZW1lbnQgX2Zv
cm1FbGVtZW50V2l0aDpbc2VsZiBfc2VsZWN0RWxlbWVudF0tPmZvcm0oKV07Ci19Ci0KLS0gKERP
TUhUTUxPcHRpb25zQ29sbGVjdGlvbiAqKW9wdGlvbnMKLXsKLSAgICByZXR1cm4gW0RPTUhUTUxP
cHRpb25zQ29sbGVjdGlvbiBfb3B0aW9uc0NvbGxlY3Rpb25XaXRoOltzZWxmIF9zZWxlY3RFbGVt
ZW50XS0+b3B0aW9ucygpLmdldCgpXTsKLX0KLQotLSAoQk9PTClkaXNhYmxlZAotewotICAgIHJl
dHVybiBbc2VsZiBfc2VsZWN0RWxlbWVudF0tPmRpc2FibGVkKCk7Ci19Ci0KLS0gKHZvaWQpc2V0
RGlzYWJsZWQ6KEJPT0wpZGlzYWJsZWQKLXsKLSAgICBbc2VsZiBfc2VsZWN0RWxlbWVudF0tPnNl
dERpc2FibGVkKGRpc2FibGVkKTsKLX0KLQotLSAoQk9PTCltdWx0aXBsZQotewotICAgIHJldHVy
biBbc2VsZiBfc2VsZWN0RWxlbWVudF0tPm11bHRpcGxlKCk7Ci19Ci0KLS0gKHZvaWQpc2V0TXVs
dGlwbGU6KEJPT0wpbXVsdGlwbGUKLXsKLSAgICBbc2VsZiBfc2VsZWN0RWxlbWVudF0tPnNldE11
bHRpcGxlKG11bHRpcGxlKTsKLX0KLQotLSAoTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgcmV0dXJu
IFtzZWxmIF9zZWxlY3RFbGVtZW50XS0+bmFtZSgpOwotfQotCi0tICh2b2lkKXNldE5hbWU6KE5T
U3RyaW5nICopbmFtZQotewotICAgIFtzZWxmIF9zZWxlY3RFbGVtZW50XS0+c2V0TmFtZShuYW1l
KTsKLX0KLQotLSAoaW50KXNpemUKLXsKLSAgICByZXR1cm4gW3NlbGYgX3NlbGVjdEVsZW1lbnRd
LT5zaXplKCk7Ci19Ci0KLS0gKHZvaWQpc2V0U2l6ZTooaW50KXNpemUKLXsKLSAgICBbc2VsZiBf
c2VsZWN0RWxlbWVudF0tPnNldFNpemUoc2l6ZSk7Ci19Ci0KLS0gKGludCl0YWJJbmRleAotewot
ICAgIHJldHVybiBbc2VsZiBfc2VsZWN0RWxlbWVudF0tPnRhYkluZGV4KCk7Ci19Ci0KLS0gKHZv
aWQpc2V0VGFiSW5kZXg6KGludCl0YWJJbmRleAotewotICAgIFtzZWxmIF9zZWxlY3RFbGVtZW50
XS0+c2V0VGFiSW5kZXgodGFiSW5kZXgpOwotfQotCi0tICh2b2lkKWFkZDooRE9NSFRNTEVsZW1l
bnQgKillbGVtZW50IDooRE9NSFRNTEVsZW1lbnQgKiliZWZvcmUKLXsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBbc2VsZiBfc2VsZWN0RWxlbWVudF0tPmFkZChbZWxlbWVudCBfSFRN
TEVsZW1lbnRdLCBbYmVmb3JlIF9IVE1MRWxlbWVudF0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwotfQotCi0tICh2b2lkKXJlbW92ZTooaW50KWluZGV4Ci17Ci0gICAgW3NlbGYgX3Nl
bGVjdEVsZW1lbnRdLT5yZW1vdmUoaW5kZXgpOwotfQotCi0tICh2b2lkKWJsdXIKLXsKLSAgICBb
c2VsZiBfc2VsZWN0RWxlbWVudF0tPmJsdXIoKTsKLX0KLQotLSAodm9pZClmb2N1cwotewotICAg
IFtzZWxmIF9zZWxlY3RFbGVtZW50XS0+Zm9jdXMoKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gRE9NSFRNTE9wdEdyb3VwRWxlbWVudAotCi0tIChIVE1MT3B0R3JvdXBFbGVtZW50ICop
X29wdEdyb3VwRWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MT3B0R3JvdXBF
bGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChCT09MKWRpc2Fi
bGVkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9vcHRHcm91cEVsZW1lbnRdLT5kaXNhYmxlZCgpOwot
fQotCi0tICh2b2lkKXNldERpc2FibGVkOihCT09MKWRpc2FibGVkCi17Ci0gICAgW3NlbGYgX29w
dEdyb3VwRWxlbWVudF0tPnNldERpc2FibGVkKGRpc2FibGVkKTsKLX0KLQotLSAoTlNTdHJpbmcg
KilsYWJlbAotewotICAgIHJldHVybiBbc2VsZiBfb3B0R3JvdXBFbGVtZW50XS0+bGFiZWwoKTsK
LX0KLQotLSAodm9pZClzZXRMYWJlbDooTlNTdHJpbmcgKilsYWJlbAotewotICAgIFtzZWxmIF9v
cHRHcm91cEVsZW1lbnRdLT5zZXRMYWJlbChsYWJlbCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVu
dGF0aW9uIERPTUhUTUxPcHRpb25FbGVtZW50Ci0KLS0gKEhUTUxPcHRpb25FbGVtZW50ICopX29w
dGlvbkVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQq
PihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKERPTUhUTUxGb3JtRWxlbWVu
dCAqKWZvcm0KLXsKLSAgICByZXR1cm4gW0RPTUhUTUxGb3JtRWxlbWVudCBfZm9ybUVsZW1lbnRX
aXRoOltzZWxmIF9vcHRpb25FbGVtZW50XS0+Zm9ybSgpXTsKLX0KLQotLSAoQk9PTClkZWZhdWx0
U2VsZWN0ZWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX29wdGlvbkVsZW1lbnRdLT5kZWZhdWx0U2Vs
ZWN0ZWQoKTsKLX0KLQotLSAodm9pZClzZXREZWZhdWx0U2VsZWN0ZWQ6KEJPT0wpZGVmYXVsdFNl
bGVjdGVkCi17Ci0gICAgW3NlbGYgX29wdGlvbkVsZW1lbnRdLT5zZXREZWZhdWx0U2VsZWN0ZWQo
ZGVmYXVsdFNlbGVjdGVkKTsKLX0KLQotLSAoTlNTdHJpbmcgKil0ZXh0Ci17Ci0gICAgcmV0dXJu
IFtzZWxmIF9vcHRpb25FbGVtZW50XS0+dGV4dCgpOwotfQotCi0tIChpbnQpaW5kZXgKLXsKLSAg
ICByZXR1cm4gW3NlbGYgX29wdGlvbkVsZW1lbnRdLT5pbmRleCgpOwotfQotCi0tIChCT09MKWRp
c2FibGVkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9vcHRpb25FbGVtZW50XS0+ZGlzYWJsZWQoKTsK
LX0KLQotLSAodm9pZClzZXREaXNhYmxlZDooQk9PTClkaXNhYmxlZAotewotICAgIFtzZWxmIF9v
cHRpb25FbGVtZW50XS0+c2V0RGlzYWJsZWQoZGlzYWJsZWQpOwotfQotCi0tIChOU1N0cmluZyAq
KWxhYmVsCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9vcHRpb25FbGVtZW50XS0+bGFiZWwoKTsKLX0K
LQotLSAodm9pZClzZXRMYWJlbDooTlNTdHJpbmcgKilsYWJlbAotewotICAgIFtzZWxmIF9vcHRp
b25FbGVtZW50XS0+c2V0TGFiZWwobGFiZWwpOwotfQotCi0tIChCT09MKXNlbGVjdGVkCi17Ci0g
ICAgcmV0dXJuIFtzZWxmIF9vcHRpb25FbGVtZW50XS0+c2VsZWN0ZWQoKTsKLX0KLQotLSAodm9p
ZClzZXRTZWxlY3RlZDooQk9PTClzZWxlY3RlZAotewotICAgIFtzZWxmIF9vcHRpb25FbGVtZW50
XS0+c2V0U2VsZWN0ZWQoc2VsZWN0ZWQpOwotfQotCi0tIChOU1N0cmluZyAqKXZhbHVlCi17Ci0g
ICAgcmV0dXJuIFtzZWxmIF9vcHRpb25FbGVtZW50XS0+dmFsdWUoKTsKLX0KLQotLSAodm9pZClz
ZXRWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZQotewotICAgIFN0cmluZyBzdHJpbmcgPSB2YWx1ZTsK
LSAgICBbc2VsZiBfb3B0aW9uRWxlbWVudF0tPnNldFZhbHVlKHN0cmluZy5pbXBsKCkpOwotfQot
Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MSW5wdXRFbGVtZW50Ci0KLS0gKEhUTUxJ
bnB1dEVsZW1lbnQgKilfaW5wdXRFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhU
TUxJbnB1dEVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5T
U3RyaW5nICopZGVmYXVsdFZhbHVlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9pbnB1dEVsZW1lbnRd
LT5kZWZhdWx0VmFsdWUoKTsKLX0KLQotLSAodm9pZClzZXREZWZhdWx0VmFsdWU6KE5TU3RyaW5n
ICopZGVmYXVsdFZhbHVlCi17Ci0gICAgW3NlbGYgX2lucHV0RWxlbWVudF0tPnNldERlZmF1bHRW
YWx1ZShkZWZhdWx0VmFsdWUpOwotfQotCi0tIChCT09MKWRlZmF1bHRDaGVja2VkCi17Ci0gICAg
cmV0dXJuIFtzZWxmIF9pbnB1dEVsZW1lbnRdLT5kZWZhdWx0Q2hlY2tlZCgpOwotfQotCi0tICh2
b2lkKXNldERlZmF1bHRDaGVja2VkOihCT09MKWRlZmF1bHRDaGVja2VkCi17Ci0gICAgW3NlbGYg
X2lucHV0RWxlbWVudF0tPnNldERlZmF1bHRDaGVja2VkKGRlZmF1bHRDaGVja2VkKTsKLX0KLQot
LSAoRE9NSFRNTEZvcm1FbGVtZW50ICopZm9ybQotewotICAgIHJldHVybiBbRE9NSFRNTEZvcm1F
bGVtZW50IF9mb3JtRWxlbWVudFdpdGg6W3NlbGYgX2lucHV0RWxlbWVudF0tPmZvcm0oKV07Ci19
Ci0KLS0gKE5TU3RyaW5nICopYWNjZXB0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9pbnB1dEVsZW1l
bnRdLT5hY2NlcHQoKTsKLX0KLQotLSAodm9pZClzZXRBY2NlcHQ6KE5TU3RyaW5nICopYWNjZXB0
Ci17Ci0gICAgW3NlbGYgX2lucHV0RWxlbWVudF0tPnNldEFjY2VwdChhY2NlcHQpOwotfQotCi0t
IChOU1N0cmluZyAqKWFjY2Vzc0tleQotewotICAgIHJldHVybiBbc2VsZiBfaW5wdXRFbGVtZW50
XS0+YWNjZXNzS2V5KCk7Ci19Ci0KLS0gKHZvaWQpc2V0QWNjZXNzS2V5OihOU1N0cmluZyAqKWFj
Y2Vzc0tleQotewotICAgIFtzZWxmIF9pbnB1dEVsZW1lbnRdLT5zZXRBY2Nlc3NLZXkoYWNjZXNz
S2V5KTsKLX0KLQotLSAoTlNTdHJpbmcgKilhbGlnbgotewotICAgIHJldHVybiBbc2VsZiBfaW5w
dXRFbGVtZW50XS0+YWxpZ24oKTsKLX0KLQotLSAodm9pZClzZXRBbGlnbjooTlNTdHJpbmcgKilh
bGlnbgotewotICAgIFtzZWxmIF9pbnB1dEVsZW1lbnRdLT5zZXRBbGlnbihhbGlnbik7Ci19Ci0K
LS0gKE5TU3RyaW5nICopYWx0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9pbnB1dEVsZW1lbnRdLT5h
bHQoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilhbHREaXNwbGF5U3RyaW5nCi17Ci0gICAgcmV0dXJu
IFtzZWxmIF9pbnB1dEVsZW1lbnRdLT5hbHQoKS5yZXBsYWNlKCdcXCcsIFtzZWxmIF9lbGVtZW50
XS0+ZG9jdW1lbnQoKS0+YmFja3NsYXNoQXNDdXJyZW5jeVN5bWJvbCgpKTsKLX0KLQotLSAodm9p
ZClzZXRBbHQ6KE5TU3RyaW5nICopYWx0Ci17Ci0gICAgW3NlbGYgX2lucHV0RWxlbWVudF0tPnNl
dEFsdChhbHQpOwotfQotCi0tIChCT09MKWNoZWNrZWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2lu
cHV0RWxlbWVudF0tPmNoZWNrZWQoKTsKLX0KLQotLSAodm9pZClzZXRDaGVja2VkOihCT09MKWNo
ZWNrZWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2lucHV0RWxlbWVudF0tPnNldENoZWNrZWQoY2hl
Y2tlZCk7Ci19Ci0KLS0gKEJPT0wpZGlzYWJsZWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2lucHV0
RWxlbWVudF0tPmRpc2FibGVkKCk7Ci19Ci0KLS0gKHZvaWQpc2V0RGlzYWJsZWQ6KEJPT0wpZGlz
YWJsZWQKLXsKLSAgICBbc2VsZiBfaW5wdXRFbGVtZW50XS0+c2V0RGlzYWJsZWQoZGlzYWJsZWQp
OwotfQotCi0tIChpbnQpbWF4TGVuZ3RoCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9pbnB1dEVsZW1l
bnRdLT5tYXhMZW5ndGgoKTsKLX0KLQotLSAodm9pZClzZXRNYXhMZW5ndGg6KGludCltYXhMZW5n
dGgKLXsKLSAgICBbc2VsZiBfaW5wdXRFbGVtZW50XS0+c2V0TWF4TGVuZ3RoKG1heExlbmd0aCk7
Ci19Ci0KLS0gKE5TU3RyaW5nICopbmFtZQotewotICAgIHJldHVybiBbc2VsZiBfaW5wdXRFbGVt
ZW50XS0+bmFtZSgpOwotfQotCi0tICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZQotewot
ICAgIFtzZWxmIF9pbnB1dEVsZW1lbnRdLT5zZXROYW1lKG5hbWUpOwotfQotCi0tIChCT09MKXJl
YWRPbmx5Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9pbnB1dEVsZW1lbnRdLT5yZWFkT25seSgpOwot
fQotCi0tICh2b2lkKXNldFJlYWRPbmx5OihCT09MKXJlYWRPbmx5Ci17Ci0gICAgW3NlbGYgX2lu
cHV0RWxlbWVudF0tPnNldFJlYWRPbmx5KHJlYWRPbmx5KTsKLX0KLQotLSAodW5zaWduZWQpc2l6
ZQotewotICAgIHJldHVybiBbc2VsZiBfaW5wdXRFbGVtZW50XS0+c2l6ZSgpOwotfQotCi0tICh2
b2lkKXNldFNpemU6KHVuc2lnbmVkKXNpemUKLXsKLSAgICBbc2VsZiBfaW5wdXRFbGVtZW50XS0+
c2V0U2l6ZShzaXplKTsKLX0KLQotLSAoTlNVUkwgKilhYnNvbHV0ZUltYWdlVVJMCi17Ci0gICAg
aWYgKCFbc2VsZiBfaW5wdXRFbGVtZW50XS0+cmVuZGVyZXIoKSB8fCAhW3NlbGYgX2lucHV0RWxl
bWVudF0tPnJlbmRlcmVyKCktPmlzSW1hZ2UoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBy
ZXR1cm4gW3NlbGYgX2dldFVSTEF0dHJpYnV0ZTpAInNyYyJdOwotfQotCi0tIChOU1N0cmluZyAq
KXNyYwotewotICAgIHJldHVybiBbc2VsZiBfaW5wdXRFbGVtZW50XS0+c3JjKCk7Ci19Ci0KLS0g
KHZvaWQpc2V0U3JjOihOU1N0cmluZyAqKXNyYwotewotICAgIFtzZWxmIF9pbnB1dEVsZW1lbnRd
LT5zZXRTcmMoc3JjKTsKLX0KLQotLSAoaW50KXRhYkluZGV4Ci17Ci0gICAgcmV0dXJuIFtzZWxm
IF9pbnB1dEVsZW1lbnRdLT50YWJJbmRleCgpOwotfQotCi0tICh2b2lkKXNldFRhYkluZGV4Oihp
bnQpdGFiSW5kZXgKLXsKLSAgICBbc2VsZiBfaW5wdXRFbGVtZW50XS0+c2V0VGFiSW5kZXgodGFi
SW5kZXgpOwotfQotCi0tIChOU1N0cmluZyAqKXR5cGUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2lu
cHV0RWxlbWVudF0tPnR5cGUoKTsKLX0KLQotLSAodm9pZClzZXRUeXBlOihOU1N0cmluZyAqKXR5
cGUKLXsKLSAgICBbc2VsZiBfaW5wdXRFbGVtZW50XS0+c2V0VHlwZSh0eXBlKTsKLX0KLQotLSAo
TlNTdHJpbmcgKil1c2VNYXAKLXsKLSAgICByZXR1cm4gW3NlbGYgX2lucHV0RWxlbWVudF0tPnVz
ZU1hcCgpOwotfQotCi0tICh2b2lkKXNldFVzZU1hcDooTlNTdHJpbmcgKil1c2VNYXAKLXsKLSAg
ICBbc2VsZiBfaW5wdXRFbGVtZW50XS0+c2V0VXNlTWFwKHVzZU1hcCk7Ci19Ci0KLS0gKE5TU3Ry
aW5nICopdmFsdWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2lucHV0RWxlbWVudF0tPnZhbHVlKCk7
Ci19Ci0KLS0gKHZvaWQpc2V0VmFsdWU6KE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICBbc2VsZiBf
aW5wdXRFbGVtZW50XS0+c2V0VmFsdWUodmFsdWUpOwotfQotCi0tICh2b2lkKWJsdXIKLXsKLSAg
ICBbc2VsZiBfaW5wdXRFbGVtZW50XS0+Ymx1cigpOwotfQotCi0tICh2b2lkKWZvY3VzCi17Ci0g
ICAgW3NlbGYgX2lucHV0RWxlbWVudF0tPmZvY3VzKCk7Ci19Ci0KLS0gKHZvaWQpc2VsZWN0Ci17
Ci0gICAgW3NlbGYgX2lucHV0RWxlbWVudF0tPnNlbGVjdCgpOwotfQotCi0tICh2b2lkKWNsaWNr
Ci17Ci0gICAgW3NlbGYgX2lucHV0RWxlbWVudF0tPmNsaWNrKGZhbHNlKTsKLX0KLQotQGVuZAot
Ci1AaW1wbGVtZW50YXRpb24gRE9NSFRNTFRleHRBcmVhRWxlbWVudAotCi0tIChIVE1MVGV4dEFy
ZWFFbGVtZW50ICopX3RleHRBcmVhRWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxI
VE1MVGV4dEFyZWFFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQotCi0t
IChOU1N0cmluZyAqKWRlZmF1bHRWYWx1ZQotewotICAgIHJldHVybiBbc2VsZiBfdGV4dEFyZWFF
bGVtZW50XS0+ZGVmYXVsdFZhbHVlKCk7Ci19Ci0KLS0gKHZvaWQpc2V0RGVmYXVsdFZhbHVlOihO
U1N0cmluZyAqKWRlZmF1bHRWYWx1ZQotewotICAgIFtzZWxmIF90ZXh0QXJlYUVsZW1lbnRdLT5z
ZXREZWZhdWx0VmFsdWUoZGVmYXVsdFZhbHVlKTsKLX0KLQotLSAoRE9NSFRNTEZvcm1FbGVtZW50
ICopZm9ybQotewotICAgIHJldHVybiBbRE9NSFRNTEZvcm1FbGVtZW50IF9mb3JtRWxlbWVudFdp
dGg6W3NlbGYgX3RleHRBcmVhRWxlbWVudF0tPmZvcm0oKV07Ci19Ci0KLS0gKE5TU3RyaW5nICop
YWNjZXNzS2V5Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF90ZXh0QXJlYUVsZW1lbnRdLT5nZXRBdHRy
aWJ1dGUoYWNjZXNza2V5QXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0QWNjZXNzS2V5OihOU1N0cmlu
ZyAqKWFjY2Vzc0tleQotewotICAgIFtzZWxmIF90ZXh0QXJlYUVsZW1lbnRdLT5zZXRBdHRyaWJ1
dGUoYWNjZXNza2V5QXR0ciwgYWNjZXNzS2V5KTsKLX0KLQotLSAoaW50KWNvbHMKLXsKLSAgICBy
ZXR1cm4gW3NlbGYgX3RleHRBcmVhRWxlbWVudF0tPmdldEF0dHJpYnV0ZShjb2xzQXR0cikudG9J
bnQoKTsKLX0KLQotLSAodm9pZClzZXRDb2xzOihpbnQpY29scwotewotICAgIFtzZWxmIF90ZXh0
QXJlYUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoY29sc0F0dHIsIFN0cmluZzo6bnVtYmVyKGNvbHMp
KTsKLX0KLQotLSAoQk9PTClkaXNhYmxlZAotewotICAgIHJldHVybiBbc2VsZiBfdGV4dEFyZWFF
bGVtZW50XS0+Z2V0QXR0cmlidXRlKGRpc2FibGVkQXR0cikuaXNOdWxsKCk7Ci19Ci0KLS0gKHZv
aWQpc2V0RGlzYWJsZWQ6KEJPT0wpZGlzYWJsZWQKLXsKLSAgICBbc2VsZiBfdGV4dEFyZWFFbGVt
ZW50XS0+c2V0QXR0cmlidXRlKGRpc2FibGVkQXR0ciwgZGlzYWJsZWQgPyAiIiA6IDApOwotfQot
Ci0tIChOU1N0cmluZyAqKW5hbWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX3RleHRBcmVhRWxlbWVu
dF0tPm5hbWUoKTsKLX0KLQotLSAodm9pZClzZXROYW1lOihOU1N0cmluZyAqKW5hbWUKLXsKLSAg
ICBbc2VsZiBfdGV4dEFyZWFFbGVtZW50XS0+c2V0TmFtZShuYW1lKTsKLX0KLQotLSAoQk9PTCly
ZWFkT25seQotewotICAgIHJldHVybiBbc2VsZiBfdGV4dEFyZWFFbGVtZW50XS0+cmVhZE9ubHko
KTsKLX0KLQotLSAodm9pZClzZXRSZWFkT25seTooQk9PTClyZWFkT25seQotewotICAgIFtzZWxm
IF90ZXh0QXJlYUVsZW1lbnRdLT5zZXRSZWFkT25seShyZWFkT25seSk7Ci19Ci0KLS0gKGludCly
b3dzCi17Ci0gICAgcmV0dXJuIFtzZWxmIF90ZXh0QXJlYUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUo
cm93c0F0dHIpLnRvSW50KCk7Ci19Ci0KLS0gKHZvaWQpc2V0Um93czooaW50KXJvd3MKLXsKLSAg
ICBbc2VsZiBfdGV4dEFyZWFFbGVtZW50XS0+c2V0QXR0cmlidXRlKHJvd3NBdHRyLCBTdHJpbmc6
Om51bWJlcihyb3dzKSk7Ci19Ci0KLS0gKGludCl0YWJJbmRleAotewotICAgIHJldHVybiBbc2Vs
ZiBfdGV4dEFyZWFFbGVtZW50XS0+dGFiSW5kZXgoKTsKLX0KLQotLSAodm9pZClzZXRUYWJJbmRl
eDooaW50KXRhYkluZGV4Ci17Ci0gICAgW3NlbGYgX3RleHRBcmVhRWxlbWVudF0tPnNldFRhYklu
ZGV4KHRhYkluZGV4KTsKLX0KLQotLSAoTlNTdHJpbmcgKil0eXBlCi17Ci0gICAgcmV0dXJuIFtz
ZWxmIF90ZXh0QXJlYUVsZW1lbnRdLT50eXBlKCk7Ci19Ci0KLS0gKHZvaWQpc2V0VHlwZTooTlNT
dHJpbmcgKil0eXBlCi17Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgwLCAibm90IGltcGxlbWVu
dGVkIik7Ci19Ci0KLS0gKE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX3Rl
eHRBcmVhRWxlbWVudF0tPnZhbHVlKCk7Ci19Ci0KLS0gKHZvaWQpc2V0VmFsdWU6KE5TU3RyaW5n
ICopdmFsdWUKLXsKLSAgICBbc2VsZiBfdGV4dEFyZWFFbGVtZW50XS0+c2V0VmFsdWUodmFsdWUp
OwotfQotCi0tICh2b2lkKWJsdXIKLXsKLSAgICBbc2VsZiBfdGV4dEFyZWFFbGVtZW50XS0+Ymx1
cigpOwotfQotCi0tICh2b2lkKWZvY3VzCi17Ci0gICAgW3NlbGYgX3RleHRBcmVhRWxlbWVudF0t
PmZvY3VzKCk7Ci19Ci0KLS0gKHZvaWQpc2VsZWN0Ci17Ci0gICAgW3NlbGYgX3RleHRBcmVhRWxl
bWVudF0tPnNlbGVjdCgpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MQnV0
dG9uRWxlbWVudAotCi0tIChIVE1MQnV0dG9uRWxlbWVudCAqKV9idXR0b25FbGVtZW50Ci17Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxCdXR0b25FbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+
KF9pbnRlcm5hbCkpOwotfQotCi0tIChET01IVE1MRm9ybUVsZW1lbnQgKilmb3JtCi17Ci0gICAg
cmV0dXJuIFtET01IVE1MRm9ybUVsZW1lbnQgX2Zvcm1FbGVtZW50V2l0aDpbc2VsZiBfYnV0dG9u
RWxlbWVudF0tPmZvcm0oKV07Ci19Ci0KLS0gKE5TU3RyaW5nICopYWNjZXNzS2V5Ci17Ci0gICAg
cmV0dXJuIFtzZWxmIF9idXR0b25FbGVtZW50XS0+Z2V0QXR0cmlidXRlKGFjY2Vzc2tleUF0dHIp
OwotfQotCi0tICh2b2lkKXNldEFjY2Vzc0tleTooTlNTdHJpbmcgKilhY2Nlc3NLZXkKLXsKLSAg
ICBbc2VsZiBfYnV0dG9uRWxlbWVudF0tPnNldEF0dHJpYnV0ZShhY2Nlc3NrZXlBdHRyLCBhY2Nl
c3NLZXkpOwotfQotCi0tIChCT09MKWRpc2FibGVkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9idXR0
b25FbGVtZW50XS0+Z2V0QXR0cmlidXRlKGRpc2FibGVkQXR0cikuaXNOdWxsKCk7Ci19Ci0KLS0g
KHZvaWQpc2V0RGlzYWJsZWQ6KEJPT0wpZGlzYWJsZWQKLXsKLSAgICBbc2VsZiBfYnV0dG9uRWxl
bWVudF0tPnNldEF0dHJpYnV0ZShkaXNhYmxlZEF0dHIsIGRpc2FibGVkID8gIiIgOiAwKTsKLX0K
LQotLSAoTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9idXR0b25FbGVtZW50
XS0+bmFtZSgpOwotfQotCi0tICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZQotewotICAg
IFtzZWxmIF9idXR0b25FbGVtZW50XS0+c2V0TmFtZShuYW1lKTsKLX0KLQotLSAoaW50KXRhYklu
ZGV4Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9idXR0b25FbGVtZW50XS0+dGFiSW5kZXgoKTsKLX0K
LQotLSAodm9pZClzZXRUYWJJbmRleDooaW50KXRhYkluZGV4Ci17Ci0gICAgW3NlbGYgX2J1dHRv
bkVsZW1lbnRdLT5zZXRUYWJJbmRleCh0YWJJbmRleCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopdHlw
ZQotewotICAgIHJldHVybiBbc2VsZiBfYnV0dG9uRWxlbWVudF0tPnR5cGUoKTsKLX0KLQotLSAo
TlNTdHJpbmcgKil2YWx1ZQotewotICAgIHJldHVybiBbc2VsZiBfYnV0dG9uRWxlbWVudF0tPmdl
dEF0dHJpYnV0ZSh2YWx1ZUF0dHIpOwotfQotCi0tICh2b2lkKXNldFZhbHVlOihOU1N0cmluZyAq
KXZhbHVlCi17Ci0gICAgW3NlbGYgX2J1dHRvbkVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUodmFsdWVB
dHRyLCB2YWx1ZSk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUhUTUxMYWJlbEVs
ZW1lbnQKLQotLSAoSFRNTExhYmVsRWxlbWVudCAqKV9sYWJlbEVsZW1lbnQKLXsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SFRNTExhYmVsRWxlbWVudCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJu
YWwpKTsKLX0KLQotLSAoRE9NSFRNTEZvcm1FbGVtZW50ICopZm9ybQotewotICAgIEVsZW1lbnQg
KmZvcm1FbGVtZW50ID0gW3NlbGYgX2xhYmVsRWxlbWVudF0tPmZvcm1FbGVtZW50KCk7Ci0gICAg
aWYgKCFmb3JtRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIFtET01IVE1M
Rm9ybUVsZW1lbnQgX2Zvcm1FbGVtZW50V2l0aDpzdGF0aWNfY2FzdDxIVE1MR2VuZXJpY0Zvcm1F
bGVtZW50Kj4oZm9ybUVsZW1lbnQpLT5mb3JtKCldOwotfQotCi0tIChOU1N0cmluZyAqKWFjY2Vz
c0tleQotewotICAgIHJldHVybiBbc2VsZiBfbGFiZWxFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGFj
Y2Vzc2tleUF0dHIpOwotfQotCi0tICh2b2lkKXNldEFjY2Vzc0tleTooTlNTdHJpbmcgKilhY2Nl
c3NLZXkKLXsKLSAgICBbc2VsZiBfbGFiZWxFbGVtZW50XS0+c2V0QXR0cmlidXRlKGFjY2Vzc2tl
eUF0dHIsIGFjY2Vzc0tleSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopaHRtbEZvcgotewotICAgIHJl
dHVybiBbc2VsZiBfbGFiZWxFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGZvckF0dHIpOwotfQotCi0t
ICh2b2lkKXNldEh0bWxGb3I6KE5TU3RyaW5nICopaHRtbEZvcgotewotICAgIFtzZWxmIF9sYWJl
bEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoZm9yQXR0ciwgaHRtbEZvcik7Ci19Ci0KLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIERPTUhUTUxGaWVsZFNldEVsZW1lbnQKLQotLSAoSFRNTEZpZWxkU2V0
RWxlbWVudCAqKV9maWVsZFNldEVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRN
TEZpZWxkU2V0RWxlbWVudCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAo
RE9NSFRNTEZvcm1FbGVtZW50ICopZm9ybQotewotICAgIHJldHVybiBbRE9NSFRNTEZvcm1FbGVt
ZW50IF9mb3JtRWxlbWVudFdpdGg6W3NlbGYgX2ZpZWxkU2V0RWxlbWVudF0tPmZvcm0oKV07Ci19
Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUhUTUxMZWdlbmRFbGVtZW50Ci0KLS0gKEhU
TUxMZWdlbmRFbGVtZW50ICopX2xlZ2VuZEVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SFRNTExlZ2VuZEVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19Ci0K
LS0gKERPTUhUTUxGb3JtRWxlbWVudCAqKWZvcm0KLXsKLSAgICByZXR1cm4gW0RPTUhUTUxGb3Jt
RWxlbWVudCBfZm9ybUVsZW1lbnRXaXRoOltzZWxmIF9sZWdlbmRFbGVtZW50XS0+Zm9ybSgpXTsK
LX0KLQotLSAoTlNTdHJpbmcgKilhY2Nlc3NLZXkKLXsKLSAgICByZXR1cm4gW3NlbGYgX2xlZ2Vu
ZEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoYWNjZXNza2V5QXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0
QWNjZXNzS2V5OihOU1N0cmluZyAqKWFjY2Vzc0tleQotewotICAgIFtzZWxmIF9sZWdlbmRFbGVt
ZW50XS0+c2V0QXR0cmlidXRlKGFjY2Vzc2tleUF0dHIsIGFjY2Vzc0tleSk7Ci19Ci0KLS0gKE5T
U3RyaW5nICopYWxpZ24KLXsKLSAgICByZXR1cm4gW3NlbGYgX2xlZ2VuZEVsZW1lbnRdLT5nZXRB
dHRyaWJ1dGUoYWxpZ25BdHRyKTsKLX0KLQotLSAodm9pZClzZXRBbGlnbjooTlNTdHJpbmcgKilh
bGlnbgotewotICAgIFtzZWxmIF9sZWdlbmRFbGVtZW50XS0+c2V0QXR0cmlidXRlKGFsaWduQXR0
ciwgYWxpZ24pOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MVUxpc3RFbGVt
ZW50Ci0KLS0gKEhUTUxVTGlzdEVsZW1lbnQgKilfdUxpc3RFbGVtZW50Ci17Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PEhUTUxVTGlzdEVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFs
KSk7Ci19Ci0KLS0gKEJPT0wpY29tcGFjdAotewotICAgIHJldHVybiBbc2VsZiBfdUxpc3RFbGVt
ZW50XS0+Z2V0QXR0cmlidXRlKGNvbXBhY3RBdHRyKS5pc051bGwoKTsKLX0KLQotLSAodm9pZClz
ZXRDb21wYWN0OihCT09MKWNvbXBhY3QKLXsKLSAgICBbc2VsZiBfdUxpc3RFbGVtZW50XS0+c2V0
QXR0cmlidXRlKGNvbXBhY3RBdHRyLCBjb21wYWN0ID8gIiIgOiAwKTsKLX0KLQotLSAoTlNTdHJp
bmcgKil0eXBlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF91TGlzdEVsZW1lbnRdLT5nZXRBdHRyaWJ1
dGUodHlwZUF0dHIpOwotfQotCi0tICh2b2lkKXNldFR5cGU6KE5TU3RyaW5nICopdHlwZQotewot
ICAgIFtzZWxmIF91TGlzdEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUodHlwZUF0dHIsIHR5cGUpOwot
fQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MT0xpc3RFbGVtZW50Ci0KLS0gKEhU
TUxPTGlzdEVsZW1lbnQgKilfb0xpc3RFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PEhUTUxPTGlzdEVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0g
KEJPT0wpY29tcGFjdAotewotICAgIHJldHVybiBbc2VsZiBfb0xpc3RFbGVtZW50XS0+Y29tcGFj
dCgpOwotfQotCi0tICh2b2lkKXNldENvbXBhY3Q6KEJPT0wpY29tcGFjdAotewotICAgIFtzZWxm
IF9vTGlzdEVsZW1lbnRdLT5zZXRDb21wYWN0KGNvbXBhY3QpOwotfQotCi0tIChpbnQpc3RhcnQK
LXsKLSAgICByZXR1cm4gW3NlbGYgX29MaXN0RWxlbWVudF0tPmdldEF0dHJpYnV0ZShzdGFydEF0
dHIpLnRvSW50KCk7Ci19Ci0KLS0gKHZvaWQpc2V0U3RhcnQ6KGludClzdGFydAotewotICAgIFtz
ZWxmIF9vTGlzdEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoc3RhcnRBdHRyLCBTdHJpbmc6Om51bWJl
cihzdGFydCkpOwotfQotCi0tIChOU1N0cmluZyAqKXR5cGUKLXsKLSAgICByZXR1cm4gW3NlbGYg
X29MaXN0RWxlbWVudF0tPmdldEF0dHJpYnV0ZSh0eXBlQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0
VHlwZTooTlNTdHJpbmcgKil0eXBlCi17Ci0gICAgW3NlbGYgX29MaXN0RWxlbWVudF0tPnNldEF0
dHJpYnV0ZSh0eXBlQXR0ciwgdHlwZSk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERP
TUhUTUxETGlzdEVsZW1lbnQKLQotLSAoSFRNTERMaXN0RWxlbWVudCAqKV9kTGlzdEVsZW1lbnQK
LXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTERMaXN0RWxlbWVudCo+KERPTV9jYXN0PE5v
ZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoQk9PTCljb21wYWN0Ci17Ci0gICAgcmV0dXJuIFtz
ZWxmIF9kTGlzdEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoY29tcGFjdEF0dHIpLmlzTnVsbCgpOwot
fQotCi0tICh2b2lkKXNldENvbXBhY3Q6KEJPT0wpY29tcGFjdAotewotICAgIFtzZWxmIF9kTGlz
dEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoY29tcGFjdEF0dHIsIGNvbXBhY3QgPyAiIiA6IDApOwot
fQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MRGlyZWN0b3J5RWxlbWVudAotCi0t
IChIVE1MRGlyZWN0b3J5RWxlbWVudCAqKV9kaXJlY3RvcnlMaXN0RWxlbWVudAotewotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxIVE1MRGlyZWN0b3J5RWxlbWVudCo+KERPTV9jYXN0PE5vZGUqPihf
aW50ZXJuYWwpKTsKLX0KLQotLSAoQk9PTCljb21wYWN0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9k
aXJlY3RvcnlMaXN0RWxlbWVudF0tPmdldEF0dHJpYnV0ZShjb21wYWN0QXR0cikuaXNOdWxsKCk7
Ci19Ci0KLS0gKHZvaWQpc2V0Q29tcGFjdDooQk9PTCljb21wYWN0Ci17Ci0gICAgW3NlbGYgX2Rp
cmVjdG9yeUxpc3RFbGVtZW50XS0+c2V0QXR0cmlidXRlKGNvbXBhY3RBdHRyLCBjb21wYWN0ID8g
IiIgOiAwKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NSFRNTE1lbnVFbGVtZW50
Ci0KLS0gKEhUTUxNZW51RWxlbWVudCAqKV9tZW51TGlzdEVsZW1lbnQKLXsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8SFRNTE1lbnVFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkp
OwotfQotCi0tIChCT09MKWNvbXBhY3QKLXsKLSAgICByZXR1cm4gW3NlbGYgX21lbnVMaXN0RWxl
bWVudF0tPmdldEF0dHJpYnV0ZShjb21wYWN0QXR0cikuaXNOdWxsKCk7Ci19Ci0KLS0gKHZvaWQp
c2V0Q29tcGFjdDooQk9PTCljb21wYWN0Ci17Ci0gICAgW3NlbGYgX21lbnVMaXN0RWxlbWVudF0t
PnNldEF0dHJpYnV0ZShjb21wYWN0QXR0ciwgY29tcGFjdCA/ICIiIDogMCk7Ci19Ci0KLUBlbmQK
LQotQGltcGxlbWVudGF0aW9uIERPTUhUTUxMSUVsZW1lbnQKLQotLSAoSFRNTExJRWxlbWVudCAq
KV9saUVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTExJRWxlbWVudCo+KERP
TV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKil0eXBlCi17Ci0g
ICAgcmV0dXJuIFtzZWxmIF9saUVsZW1lbnRdLT50eXBlKCk7Ci19Ci0KLS0gKHZvaWQpc2V0VHlw
ZTooTlNTdHJpbmcgKil0eXBlCi17Ci0gICAgW3NlbGYgX2xpRWxlbWVudF0tPnNldFR5cGUodHlw
ZSk7Ci19Ci0KLS0gKGludCl2YWx1ZQotewotICAgIHJldHVybiBbc2VsZiBfbGlFbGVtZW50XS0+
dmFsdWUoKTsKLX0KLQotLSAodm9pZClzZXRWYWx1ZTooaW50KXZhbHVlCi17Ci0gICAgW3NlbGYg
X2xpRWxlbWVudF0tPnNldFZhbHVlKHZhbHVlKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRp
b24gRE9NSFRNTFF1b3RlRWxlbWVudAotCi0tIChIVE1MRWxlbWVudCAqKV9xdW90ZUVsZW1lbnQK
LXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4o
X2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopY2l0ZQotewotICAgIHJldHVybiBbc2Vs
ZiBfcXVvdGVFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGNpdGVBdHRyKTsKLX0KLQotLSAodm9pZClz
ZXRDaXRlOihOU1N0cmluZyAqKWNpdGUKLXsKLSAgICBbc2VsZiBfcXVvdGVFbGVtZW50XS0+c2V0
QXR0cmlidXRlKGNpdGVBdHRyLCBjaXRlKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24g
RE9NSFRNTERpdkVsZW1lbnQKLQotLSAoSFRNTERpdkVsZW1lbnQgKilfZGl2RWxlbWVudAotewot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRGl2RWxlbWVudCo+KERPTV9jYXN0PE5vZGUqPihf
aW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKilhbGlnbgotewotICAgIHJldHVybiBbc2Vs
ZiBfZGl2RWxlbWVudF0tPmdldEF0dHJpYnV0ZShhbGlnbkF0dHIpOwotfQotCi0tICh2b2lkKXNl
dEFsaWduOihOU1N0cmluZyAqKWFsaWduCi17Ci0gICAgW3NlbGYgX2RpdkVsZW1lbnRdLT5zZXRB
dHRyaWJ1dGUoYWxpZ25BdHRyLCBhbGlnbik7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9u
IERPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Ci0KLS0gKEhUTUxQYXJhZ3JhcGhFbGVtZW50ICopX3Bh
cmFncmFwaEVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFBhcmFncmFwaEVs
ZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3RyaW5nICop
YWxpZ24KLXsKLSAgICByZXR1cm4gW3NlbGYgX3BhcmFncmFwaEVsZW1lbnRdLT5nZXRBdHRyaWJ1
dGUoYWxpZ25BdHRyKTsKLX0KLQotLSAodm9pZClzZXRBbGlnbjooTlNTdHJpbmcgKilhbGlnbgot
ewotICAgIFtzZWxmIF9wYXJhZ3JhcGhFbGVtZW50XS0+c2V0QXR0cmlidXRlKGFsaWduQXR0ciwg
YWxpZ24pOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MSGVhZGluZ0VsZW1l
bnQKLQotLSAoSFRNTEhlYWRpbmdFbGVtZW50ICopX2hlYWRpbmdFbGVtZW50Ci17Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PEhUTUxIZWFkaW5nRWxlbWVudCo+KERPTV9jYXN0PE5vZGUqPihfaW50
ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKilhbGlnbgotewotICAgIHJldHVybiBbc2VsZiBf
aGVhZGluZ0VsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoYWxpZ25BdHRyKTsKLX0KLQotLSAodm9pZClz
ZXRBbGlnbjooTlNTdHJpbmcgKilhbGlnbgotewotICAgIFtzZWxmIF9oZWFkaW5nRWxlbWVudF0t
PnNldEF0dHJpYnV0ZShhbGlnbkF0dHIsIGFsaWduKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gRE9NSFRNTFByZUVsZW1lbnQKLQotLSAoSFRNTFByZUVsZW1lbnQgKilfcHJlRWxlbWVu
dAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MUHJlRWxlbWVudCo+KERPTV9jYXN0PE5v
ZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoaW50KXdpZHRoCi17Ci0gICAgcmV0dXJuIFtzZWxm
IF9wcmVFbGVtZW50XS0+Z2V0QXR0cmlidXRlKHdpZHRoQXR0cikudG9JbnQoKTsKLX0KLQotLSAo
dm9pZClzZXRXaWR0aDooaW50KXdpZHRoCi17Ci0gICAgW3NlbGYgX3ByZUVsZW1lbnRdLT5zZXRB
dHRyaWJ1dGUod2lkdGhBdHRyLCBTdHJpbmc6Om51bWJlcih3aWR0aCkpOwotfQotCi1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBET01IVE1MQlJFbGVtZW50Ci0KLS0gKEhUTUxCUkVsZW1lbnQgKilf
QlJFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxCUkVsZW1lbnQqPihET01f
Y2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopY2xlYXIKLXsKLSAg
ICByZXR1cm4gW3NlbGYgX0JSRWxlbWVudF0tPmdldEF0dHJpYnV0ZShjbGVhckF0dHIpOwotfQot
Ci0tICh2b2lkKXNldENsZWFyOihOU1N0cmluZyAqKWNsZWFyCi17Ci0gICAgW3NlbGYgX0JSRWxl
bWVudF0tPnNldEF0dHJpYnV0ZShjbGVhckF0dHIsIGNsZWFyKTsKLX0KLQotQGVuZAotCi1AaW1w
bGVtZW50YXRpb24gRE9NSFRNTEJhc2VGb250RWxlbWVudAotCi0tIChIVE1MQmFzZUZvbnRFbGVt
ZW50ICopX2Jhc2VGb250RWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MQmFz
ZUZvbnRFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChOU1N0
cmluZyAqKWNvbG9yCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9iYXNlRm9udEVsZW1lbnRdLT5nZXRB
dHRyaWJ1dGUoY29sb3JBdHRyKTsKLX0KLQotLSAodm9pZClzZXRDb2xvcjooTlNTdHJpbmcgKilj
b2xvcgotewotICAgIFtzZWxmIF9iYXNlRm9udEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoY29sb3JB
dHRyLCBjb2xvcik7Ci19Ci0KLS0gKE5TU3RyaW5nICopZmFjZQotewotICAgIHJldHVybiBbc2Vs
ZiBfYmFzZUZvbnRFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGZhY2VBdHRyKTsKLX0KLQotLSAodm9p
ZClzZXRGYWNlOihOU1N0cmluZyAqKWZhY2UKLXsKLSAgICBbc2VsZiBfYmFzZUZvbnRFbGVtZW50
XS0+c2V0QXR0cmlidXRlKGZhY2VBdHRyLCBmYWNlKTsKLX0KLQotLSAoTlNTdHJpbmcgKilzaXpl
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9iYXNlRm9udEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoc2l6
ZUF0dHIpOwotfQotCi0tICh2b2lkKXNldFNpemU6KE5TU3RyaW5nICopc2l6ZQotewotICAgIFtz
ZWxmIF9iYXNlRm9udEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoc2l6ZUF0dHIsIHNpemUpOwotfQot
Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MRm9udEVsZW1lbnQKLQotLSAoSFRNTEZv
bnRFbGVtZW50ICopX2ZvbnRFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxG
b250RWxlbWVudCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJp
bmcgKiljb2xvcgotewotICAgIHJldHVybiBbc2VsZiBfZm9udEVsZW1lbnRdLT5nZXRBdHRyaWJ1
dGUoY29sb3JBdHRyKTsKLX0KLQotLSAodm9pZClzZXRDb2xvcjooTlNTdHJpbmcgKiljb2xvcgot
ewotICAgIFtzZWxmIF9mb250RWxlbWVudF0tPnNldEF0dHJpYnV0ZShjb2xvckF0dHIsIGNvbG9y
KTsKLX0KLQotLSAoTlNTdHJpbmcgKilmYWNlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9mb250RWxl
bWVudF0tPmdldEF0dHJpYnV0ZShmYWNlQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0RmFjZTooTlNT
dHJpbmcgKilmYWNlCi17Ci0gICAgW3NlbGYgX2ZvbnRFbGVtZW50XS0+c2V0QXR0cmlidXRlKGZh
Y2VBdHRyLCBmYWNlKTsKLX0KLQotLSAoTlNTdHJpbmcgKilzaXplCi17Ci0gICAgcmV0dXJuIFtz
ZWxmIF9mb250RWxlbWVudF0tPmdldEF0dHJpYnV0ZShzaXplQXR0cik7Ci19Ci0KLS0gKHZvaWQp
c2V0U2l6ZTooTlNTdHJpbmcgKilzaXplCi17Ci0gICAgW3NlbGYgX2ZvbnRFbGVtZW50XS0+c2V0
QXR0cmlidXRlKHNpemVBdHRyLCBzaXplKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24g
RE9NSFRNTEhSRWxlbWVudAotCi0tIChIVE1MSFJFbGVtZW50ICopX0hSRWxlbWVudAotewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MSFJFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRl
cm5hbCkpOwotfQotCi0tIChOU1N0cmluZyAqKWFsaWduCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9I
UkVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoYWxpZ25BdHRyKTsKLX0KLQotLSAodm9pZClzZXRBbGln
bjooTlNTdHJpbmcgKilhbGlnbgotewotICAgIFtzZWxmIF9IUkVsZW1lbnRdLT5zZXRBdHRyaWJ1
dGUoYWxpZ25BdHRyLCBhbGlnbik7Ci19Ci0KLS0gKEJPT0wpbm9TaGFkZQotewotICAgIHJldHVy
biBbc2VsZiBfSFJFbGVtZW50XS0+Z2V0QXR0cmlidXRlKG5vc2hhZGVBdHRyKS5pc051bGwoKTsK
LX0KLQotLSAodm9pZClzZXROb1NoYWRlOihCT09MKW5vU2hhZGUKLXsKLSAgICBbc2VsZiBfSFJF
bGVtZW50XS0+c2V0QXR0cmlidXRlKG5vc2hhZGVBdHRyLCBub1NoYWRlID8gIiIgOiAwKTsKLX0K
LQotLSAoTlNTdHJpbmcgKilzaXplCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9IUkVsZW1lbnRdLT5n
ZXRBdHRyaWJ1dGUoc2l6ZUF0dHIpOwotfQotCi0tICh2b2lkKXNldFNpemU6KE5TU3RyaW5nICop
c2l6ZQotewotICAgIFtzZWxmIF9IUkVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoc2l6ZUF0dHIsIHNp
emUpOwotfQotCi0tIChOU1N0cmluZyAqKXdpZHRoCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9IUkVs
ZW1lbnRdLT5nZXRBdHRyaWJ1dGUod2lkdGhBdHRyKTsKLX0KLQotLSAodm9pZClzZXRXaWR0aDoo
TlNTdHJpbmcgKil3aWR0aAotewotICAgIFtzZWxmIF9IUkVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUo
d2lkdGhBdHRyLCB3aWR0aCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUhUTUxN
b2RFbGVtZW50Ci0KLS0gKEhUTUxFbGVtZW50ICopX21vZEVsZW1lbnQKLXsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19
Ci0KLS0gKE5TU3RyaW5nICopY2l0ZQotewotICAgIHJldHVybiBbc2VsZiBfbW9kRWxlbWVudF0t
PmdldEF0dHJpYnV0ZShjaXRlQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0Q2l0ZTooTlNTdHJpbmcg
KiljaXRlCi17Ci0gICAgW3NlbGYgX21vZEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoY2l0ZUF0dHIs
IGNpdGUpOwotfQotCi0tIChOU1N0cmluZyAqKWRhdGVUaW1lCi17Ci0gICAgcmV0dXJuIFtzZWxm
IF9tb2RFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGRhdGV0aW1lQXR0cik7Ci19Ci0KLS0gKHZvaWQp
c2V0RGF0ZVRpbWU6KE5TU3RyaW5nICopZGF0ZVRpbWUKLXsKLSAgICBbc2VsZiBfbW9kRWxlbWVu
dF0tPnNldEF0dHJpYnV0ZShkYXRldGltZUF0dHIsIGRhdGVUaW1lKTsKLX0KLQotQGVuZAotCi1A
aW1wbGVtZW50YXRpb24gRE9NSFRNTEFuY2hvckVsZW1lbnQKLQotLSAoSFRNTEFuY2hvckVsZW1l
bnQgKilfYW5jaG9yRWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MQW5jaG9y
RWxlbWVudCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcg
KilhY2Nlc3NLZXkKLXsKLSAgICByZXR1cm4gW3NlbGYgX2FuY2hvckVsZW1lbnRdLT5nZXRBdHRy
aWJ1dGUoYWNjZXNza2V5QXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0QWNjZXNzS2V5OihOU1N0cmlu
ZyAqKWFjY2Vzc0tleQotewotICAgIFtzZWxmIF9hbmNob3JFbGVtZW50XS0+c2V0QXR0cmlidXRl
KGFjY2Vzc2tleUF0dHIsIGFjY2Vzc0tleSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopY2hhcnNldAot
ewotICAgIHJldHVybiBbc2VsZiBfYW5jaG9yRWxlbWVudF0tPmdldEF0dHJpYnV0ZShjaGFyc2V0
QXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0Q2hhcnNldDooTlNTdHJpbmcgKiljaGFyc2V0Ci17Ci0g
ICAgW3NlbGYgX2FuY2hvckVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoY2hhcnNldEF0dHIsIGNoYXJz
ZXQpOwotfQotCi0tIChOU1N0cmluZyAqKWNvb3JkcwotewotICAgIHJldHVybiBbc2VsZiBfYW5j
aG9yRWxlbWVudF0tPmdldEF0dHJpYnV0ZShjb29yZHNBdHRyKTsKLX0KLQotLSAodm9pZClzZXRD
b29yZHM6KE5TU3RyaW5nICopY29vcmRzCi17Ci0gICAgW3NlbGYgX2FuY2hvckVsZW1lbnRdLT5z
ZXRBdHRyaWJ1dGUoY29vcmRzQXR0ciwgY29vcmRzKTsKLX0KLQotLSAoTlNVUkwgKilhYnNvbHV0
ZUxpbmtVUkwKLXsKLSAgICByZXR1cm4gW3NlbGYgX2dldFVSTEF0dHJpYnV0ZTpAImhyZWYiXTsK
LX0KLQotLSAoTlNTdHJpbmcgKilocmVmCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9hbmNob3JFbGVt
ZW50XS0+aHJlZigpOwotfQotCi0tICh2b2lkKXNldEhyZWY6KE5TU3RyaW5nICopaHJlZgotewot
ICAgIFtzZWxmIF9hbmNob3JFbGVtZW50XS0+c2V0QXR0cmlidXRlKGhyZWZBdHRyLCBocmVmKTsK
LX0KLQotLSAoTlNTdHJpbmcgKilocmVmbGFuZwotewotICAgIHJldHVybiBbc2VsZiBfYW5jaG9y
RWxlbWVudF0tPmhyZWZsYW5nKCk7Ci19Ci0KLS0gKHZvaWQpc2V0SHJlZmxhbmc6KE5TU3RyaW5n
ICopaHJlZmxhbmcKLXsKLSAgICBbc2VsZiBfYW5jaG9yRWxlbWVudF0tPnNldEhyZWZsYW5nKGhy
ZWZsYW5nKTsKLX0KLQotLSAoTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9h
bmNob3JFbGVtZW50XS0+bmFtZSgpOwotfQotCi0tICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICop
bmFtZQotewotICAgIFtzZWxmIF9hbmNob3JFbGVtZW50XS0+c2V0TmFtZShuYW1lKTsKLX0KLQot
LSAoTlNTdHJpbmcgKilyZWwKLXsKLSAgICByZXR1cm4gW3NlbGYgX2FuY2hvckVsZW1lbnRdLT5y
ZWwoKTsKLX0KLQotLSAodm9pZClzZXRSZWw6KE5TU3RyaW5nICopcmVsCi17Ci0gICAgW3NlbGYg
X2FuY2hvckVsZW1lbnRdLT5zZXRSZWwocmVsKTsKLX0KLQotLSAoTlNTdHJpbmcgKilyZXYKLXsK
LSAgICByZXR1cm4gW3NlbGYgX2FuY2hvckVsZW1lbnRdLT5yZXYoKTsKLX0KLQotLSAodm9pZClz
ZXRSZXY6KE5TU3RyaW5nICopcmV2Ci17Ci0gICAgW3NlbGYgX2FuY2hvckVsZW1lbnRdLT5zZXRS
ZXYocmV2KTsKLX0KLQotLSAoTlNTdHJpbmcgKilzaGFwZQotewotICAgIHJldHVybiBbc2VsZiBf
YW5jaG9yRWxlbWVudF0tPnNoYXBlKCk7Ci19Ci0KLS0gKHZvaWQpc2V0U2hhcGU6KE5TU3RyaW5n
ICopc2hhcGUKLXsKLSAgICBbc2VsZiBfYW5jaG9yRWxlbWVudF0tPnNldFNoYXBlKHNoYXBlKTsK
LX0KLQotLSAoaW50KXRhYkluZGV4Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9hbmNob3JFbGVtZW50
XS0+dGFiSW5kZXgoKTsKLX0KLQotLSAodm9pZClzZXRUYWJJbmRleDooaW50KXRhYkluZGV4Ci17
Ci0gICAgW3NlbGYgX2FuY2hvckVsZW1lbnRdLT5zZXRUYWJJbmRleCh0YWJJbmRleCk7Ci19Ci0K
LS0gKE5TU3RyaW5nICopdGFyZ2V0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9hbmNob3JFbGVtZW50
XS0+Z2V0QXR0cmlidXRlKHRhcmdldEF0dHIpOwotfQotCi0tICh2b2lkKXNldFRhcmdldDooTlNT
dHJpbmcgKil0YXJnZXQKLXsKLSAgICBbc2VsZiBfYW5jaG9yRWxlbWVudF0tPnNldEF0dHJpYnV0
ZSh0YXJnZXRBdHRyLCB0YXJnZXQpOwotfQotCi0tIChOU1N0cmluZyAqKXR5cGUKLXsKLSAgICBy
ZXR1cm4gW3NlbGYgX2FuY2hvckVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUodHlwZUF0dHIpOwotfQot
Ci0tICh2b2lkKXNldFR5cGU6KE5TU3RyaW5nICopdHlwZQotewotICAgIFtzZWxmIF9hbmNob3JF
bGVtZW50XS0+c2V0QXR0cmlidXRlKHR5cGVBdHRyLCB0eXBlKTsKLX0KLQotLSAodm9pZClibHVy
Ci17Ci0gICAgSFRNTEFuY2hvckVsZW1lbnQgKmltcGwgPSBbc2VsZiBfYW5jaG9yRWxlbWVudF07
Ci0gICAgaWYgKGltcGwtPmRvY3VtZW50KCktPmZvY3VzTm9kZSgpID09IGltcGwpCi0gICAgICAg
IGltcGwtPmRvY3VtZW50KCktPnNldEZvY3VzTm9kZSgwKTsKLX0KLQotLSAodm9pZClmb2N1cwot
ewotICAgIEhUTUxBbmNob3JFbGVtZW50ICppbXBsID0gW3NlbGYgX2FuY2hvckVsZW1lbnRdOwot
ICAgIGltcGwtPmRvY3VtZW50KCktPnNldEZvY3VzTm9kZShzdGF0aWNfY2FzdDxFbGVtZW50Kj4o
aW1wbCkpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MSW1hZ2VFbGVtZW50
Ci0KLS0gKEhUTUxJbWFnZUVsZW1lbnQgKilfaW1hZ2VFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7
Ci19Ci0KLS0gKE5TU3RyaW5nICopbmFtZQotewotICAgIHJldHVybiBbc2VsZiBfaW1hZ2VFbGVt
ZW50XS0+Z2V0QXR0cmlidXRlKG5hbWVBdHRyKTsKLX0KLQotLSAodm9pZClzZXROYW1lOihOU1N0
cmluZyAqKW5hbWUKLXsKLSAgICBbc2VsZiBfaW1hZ2VFbGVtZW50XS0+c2V0QXR0cmlidXRlKG5h
bWVBdHRyLCBuYW1lKTsKLX0KLQotLSAoTlNTdHJpbmcgKilhbGlnbgotewotICAgIHJldHVybiBb
c2VsZiBfaW1hZ2VFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGFsaWduQXR0cik7Ci19Ci0KLS0gKHZv
aWQpc2V0QWxpZ246KE5TU3RyaW5nICopYWxpZ24KLXsKLSAgICBbc2VsZiBfaW1hZ2VFbGVtZW50
XS0+c2V0QXR0cmlidXRlKGFsaWduQXR0ciwgYWxpZ24pOwotfQotCi0tIChOU1N0cmluZyAqKWFs
dAotewotICAgIHJldHVybiBbc2VsZiBfaW1hZ2VFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGFsdEF0
dHIpOwotfQotCi0tIChOU1N0cmluZyAqKWFsdERpc3BsYXlTdHJpbmcKLXsKLSAgICBTdHJpbmcg
YWx0ID0gW3NlbGYgX2ltYWdlRWxlbWVudF0tPmdldEF0dHJpYnV0ZShhbHRBdHRyKTsKLSAgICBy
ZXR1cm4gYWx0LnJlcGxhY2UoJ1xcJywgW3NlbGYgX2VsZW1lbnRdLT5kb2N1bWVudCgpLT5iYWNr
c2xhc2hBc0N1cnJlbmN5U3ltYm9sKCkpOwotfQotCi0tICh2b2lkKXNldEFsdDooTlNTdHJpbmcg
KilhbHQKLXsKLSAgICBbc2VsZiBfaW1hZ2VFbGVtZW50XS0+c2V0QXR0cmlidXRlKGFsdEF0dHIs
IGFsdCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopYm9yZGVyCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9p
bWFnZUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoYm9yZGVyQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0
Qm9yZGVyOihOU1N0cmluZyAqKWJvcmRlcgotewotICAgIFtzZWxmIF9pbWFnZUVsZW1lbnRdLT5z
ZXRBdHRyaWJ1dGUoYm9yZGVyQXR0ciwgYm9yZGVyKTsKLX0KLQotLSAoaW50KWhlaWdodAotewot
ICAgIHJldHVybiBbc2VsZiBfaW1hZ2VFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGhlaWdodEF0dHIp
LnRvSW50KCk7Ci19Ci0KLS0gKHZvaWQpc2V0SGVpZ2h0OihpbnQpaGVpZ2h0Ci17Ci0gICAgW3Nl
bGYgX2ltYWdlRWxlbWVudF0tPnNldEF0dHJpYnV0ZShoZWlnaHRBdHRyLCBTdHJpbmc6Om51bWJl
cihoZWlnaHQpKTsKLX0KLQotLSAoaW50KWhzcGFjZQotewotICAgIHJldHVybiBbc2VsZiBfaW1h
Z2VFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGhzcGFjZUF0dHIpLnRvSW50KCk7Ci19Ci0KLS0gKHZv
aWQpc2V0SHNwYWNlOihpbnQpaHNwYWNlCi17Ci0gICAgW3NlbGYgX2ltYWdlRWxlbWVudF0tPnNl
dEF0dHJpYnV0ZShoc3BhY2VBdHRyLCBTdHJpbmc6Om51bWJlcihoc3BhY2UpKTsKLX0KLQotLSAo
Qk9PTClpc01hcAotewotICAgIHJldHVybiBbc2VsZiBfaW1hZ2VFbGVtZW50XS0+Z2V0QXR0cmli
dXRlKGlzbWFwQXR0cikuaXNOdWxsKCk7Ci19Ci0KLS0gKHZvaWQpc2V0SXNNYXA6KEJPT0wpaXNN
YXAKLXsKLSAgICBbc2VsZiBfaW1hZ2VFbGVtZW50XS0+c2V0QXR0cmlidXRlKGlzbWFwQXR0ciwg
aXNNYXAgPyAiIiA6IDApOwotfQotCi0tIChOU1N0cmluZyAqKWxvbmdEZXNjCi17Ci0gICAgcmV0
dXJuIFtzZWxmIF9pbWFnZUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUobG9uZ2Rlc2NBdHRyKTsKLX0K
LQotLSAodm9pZClzZXRMb25nRGVzYzooTlNTdHJpbmcgKilsb25nRGVzYwotewotICAgIFtzZWxm
IF9pbWFnZUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUobG9uZ2Rlc2NBdHRyLCBsb25nRGVzYyk7Ci19
Ci0KLS0gKE5TVVJMICopYWJzb2x1dGVJbWFnZVVSTAotewotICAgIHJldHVybiBbc2VsZiBfZ2V0
VVJMQXR0cmlidXRlOkAic3JjIl07Ci19Ci0KLS0gKE5TU3RyaW5nICopc3JjCi17Ci0gICAgcmV0
dXJuIFtzZWxmIF9pbWFnZUVsZW1lbnRdLT5zcmMoKTsKLX0KLQotLSAodm9pZClzZXRTcmM6KE5T
U3RyaW5nICopc3JjCi17Ci0gICAgW3NlbGYgX2ltYWdlRWxlbWVudF0tPnNldEF0dHJpYnV0ZShz
cmNBdHRyLCBzcmMpOwotfQotCi0tIChOU1N0cmluZyAqKXVzZU1hcAotewotICAgIHJldHVybiBb
c2VsZiBfaW1hZ2VFbGVtZW50XS0+Z2V0QXR0cmlidXRlKHVzZW1hcEF0dHIpOwotfQotCi0tICh2
b2lkKXNldFVzZU1hcDooTlNTdHJpbmcgKil1c2VNYXAKLXsKLSAgICBbc2VsZiBfaW1hZ2VFbGVt
ZW50XS0+c2V0QXR0cmlidXRlKHVzZW1hcEF0dHIsIHVzZU1hcCk7Ci19Ci0KLS0gKGludCl2c3Bh
Y2UKLXsKLSAgICByZXR1cm4gW3NlbGYgX2ltYWdlRWxlbWVudF0tPmdldEF0dHJpYnV0ZSh2c3Bh
Y2VBdHRyKS50b0ludCgpOwotfQotCi0tICh2b2lkKXNldFZzcGFjZTooaW50KXZzcGFjZQotewot
ICAgIFtzZWxmIF9pbWFnZUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUodnNwYWNlQXR0ciwgU3RyaW5n
OjpudW1iZXIodnNwYWNlKSk7Ci19Ci0KLS0gKGludCl3aWR0aAotewotICAgIHJldHVybiBbc2Vs
ZiBfaW1hZ2VFbGVtZW50XS0+Z2V0QXR0cmlidXRlKHdpZHRoQXR0cikudG9JbnQoKTsKLX0KLQot
LSAodm9pZClzZXRXaWR0aDooaW50KXdpZHRoCi17Ci0gICAgW3NlbGYgX2ltYWdlRWxlbWVudF0t
PnNldEF0dHJpYnV0ZSh3aWR0aEF0dHIsIFN0cmluZzo6bnVtYmVyKHdpZHRoKSk7Ci19Ci0KLUBl
bmQKLQotQGltcGxlbWVudGF0aW9uIERPTUhUTUxPYmplY3RFbGVtZW50Ci0KLS0gKEhUTUxPYmpl
Y3RFbGVtZW50ICopX29iamVjdEVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRN
TE9iamVjdEVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKERP
TUhUTUxGb3JtRWxlbWVudCAqKWZvcm0KLXsKLSAgICByZXR1cm4gW0RPTUhUTUxGb3JtRWxlbWVu
dCBfZm9ybUVsZW1lbnRXaXRoOltzZWxmIF9vYmplY3RFbGVtZW50XS0+Zm9ybSgpXTsKLX0KLQot
LSAoTlNTdHJpbmcgKiljb2RlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9vYmplY3RFbGVtZW50XS0+
Z2V0QXR0cmlidXRlKGNvZGVBdHRyKTsKLX0KLQotLSAodm9pZClzZXRDb2RlOihOU1N0cmluZyAq
KWNvZGUKLXsKLSAgICBbc2VsZiBfb2JqZWN0RWxlbWVudF0tPnNldEF0dHJpYnV0ZShjb2RlQXR0
ciwgY29kZSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopYWxpZ24KLXsKLSAgICByZXR1cm4gW3NlbGYg
X29iamVjdEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoYWxpZ25BdHRyKTsKLX0KLQotLSAodm9pZClz
ZXRBbGlnbjooTlNTdHJpbmcgKilhbGlnbgotewotICAgIFtzZWxmIF9vYmplY3RFbGVtZW50XS0+
c2V0QXR0cmlidXRlKGFsaWduQXR0ciwgYWxpZ24pOwotfQotCi0tIChOU1N0cmluZyAqKWFyY2hp
dmUKLXsKLSAgICByZXR1cm4gW3NlbGYgX29iamVjdEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoYXJj
aGl2ZUF0dHIpOwotfQotCi0tICh2b2lkKXNldEFyY2hpdmU6KE5TU3RyaW5nICopYXJjaGl2ZQot
ewotICAgIFtzZWxmIF9vYmplY3RFbGVtZW50XS0+c2V0QXR0cmlidXRlKGFyY2hpdmVBdHRyLCBh
cmNoaXZlKTsKLX0KLQotLSAoTlNTdHJpbmcgKilib3JkZXIKLXsKLSAgICByZXR1cm4gW3NlbGYg
X29iamVjdEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoYm9yZGVyQXR0cik7Ci19Ci0KLS0gKHZvaWQp
c2V0Qm9yZGVyOihOU1N0cmluZyAqKWJvcmRlcgotewotICAgIFtzZWxmIF9vYmplY3RFbGVtZW50
XS0+c2V0QXR0cmlidXRlKGJvcmRlckF0dHIsIGJvcmRlcik7Ci19Ci0KLS0gKE5TU3RyaW5nICop
Y29kZUJhc2UKLXsKLSAgICByZXR1cm4gW3NlbGYgX29iamVjdEVsZW1lbnRdLT5nZXRBdHRyaWJ1
dGUoY29kZWJhc2VBdHRyKTsKLX0KLQotLSAodm9pZClzZXRDb2RlQmFzZTooTlNTdHJpbmcgKilj
b2RlQmFzZQotewotICAgIFtzZWxmIF9vYmplY3RFbGVtZW50XS0+c2V0QXR0cmlidXRlKGNvZGVi
YXNlQXR0ciwgY29kZUJhc2UpOwotfQotCi0tIChOU1N0cmluZyAqKWNvZGVUeXBlCi17Ci0gICAg
cmV0dXJuIFtzZWxmIF9vYmplY3RFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGNvZGV0eXBlQXR0cik7
Ci19Ci0KLS0gKHZvaWQpc2V0Q29kZVR5cGU6KE5TU3RyaW5nICopY29kZVR5cGUKLXsKLSAgICBb
c2VsZiBfb2JqZWN0RWxlbWVudF0tPnNldEF0dHJpYnV0ZShjb2RldHlwZUF0dHIsIGNvZGVUeXBl
KTsKLX0KLQotLSAoTlNVUkwgKilhYnNvbHV0ZUltYWdlVVJMCi17Ci0gICAgaWYgKCFbc2VsZiBf
b2JqZWN0RWxlbWVudF0tPnJlbmRlcmVyKCkgfHwgIVtzZWxmIF9vYmplY3RFbGVtZW50XS0+cmVu
ZGVyZXIoKS0+aXNJbWFnZSgpKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbc2Vs
ZiBfZ2V0VVJMQXR0cmlidXRlOkAiZGF0YSJdOwotfQotCi0tIChOU1N0cmluZyAqKWRhdGEKLXsK
LSAgICByZXR1cm4gW3NlbGYgX29iamVjdEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoZGF0YUF0dHIp
OwotfQotCi0tICh2b2lkKXNldERhdGE6KE5TU3RyaW5nICopZGF0YQotewotICAgIFtzZWxmIF9v
YmplY3RFbGVtZW50XS0+c2V0QXR0cmlidXRlKGRhdGFBdHRyLCBkYXRhKTsKLX0KLQotLSAoQk9P
TClkZWNsYXJlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9vYmplY3RFbGVtZW50XS0+Z2V0QXR0cmli
dXRlKGRlY2xhcmVBdHRyKS5pc051bGwoKTsKLX0KLQotLSAodm9pZClzZXREZWNsYXJlOihCT09M
KWRlY2xhcmUKLXsKLSAgICBbc2VsZiBfb2JqZWN0RWxlbWVudF0tPnNldEF0dHJpYnV0ZShkZWNs
YXJlQXR0ciwgZGVjbGFyZSA/ICIiIDogMCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopaGVpZ2h0Ci17
Ci0gICAgcmV0dXJuIFtzZWxmIF9vYmplY3RFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGhlaWdodEF0
dHIpOwotfQotCi0tICh2b2lkKXNldEhlaWdodDooTlNTdHJpbmcgKiloZWlnaHQKLXsKLSAgICBb
c2VsZiBfb2JqZWN0RWxlbWVudF0tPnNldEF0dHJpYnV0ZShoZWlnaHRBdHRyLCBoZWlnaHQpOwot
fQotCi0tIChpbnQpaHNwYWNlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9vYmplY3RFbGVtZW50XS0+
Z2V0QXR0cmlidXRlKGhzcGFjZUF0dHIpLnRvSW50KCk7Ci19Ci0KLS0gKHZvaWQpc2V0SHNwYWNl
OihpbnQpaHNwYWNlCi17Ci0gICAgW3NlbGYgX29iamVjdEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUo
aHNwYWNlQXR0ciwgU3RyaW5nOjpudW1iZXIoaHNwYWNlKSk7Ci19Ci0KLS0gKE5TU3RyaW5nICop
bmFtZQotewotICAgIHJldHVybiBbc2VsZiBfb2JqZWN0RWxlbWVudF0tPmdldEF0dHJpYnV0ZShu
YW1lQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAg
W3NlbGYgX29iamVjdEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUobmFtZUF0dHIsIG5hbWUpOwotfQot
Ci0tIChOU1N0cmluZyAqKXN0YW5kYnkKLXsKLSAgICByZXR1cm4gW3NlbGYgX29iamVjdEVsZW1l
bnRdLT5nZXRBdHRyaWJ1dGUoc3RhbmRieUF0dHIpOwotfQotCi0tICh2b2lkKXNldFN0YW5kYnk6
KE5TU3RyaW5nICopc3RhbmRieQotewotICAgIFtzZWxmIF9vYmplY3RFbGVtZW50XS0+c2V0QXR0
cmlidXRlKHN0YW5kYnlBdHRyLCBzdGFuZGJ5KTsKLX0KLQotLSAoaW50KXRhYkluZGV4Ci17Ci0g
ICAgcmV0dXJuIFtzZWxmIF9vYmplY3RFbGVtZW50XS0+Z2V0QXR0cmlidXRlKHRhYmluZGV4QXR0
cikudG9JbnQoKTsKLX0KLQotLSAodm9pZClzZXRUYWJJbmRleDooaW50KXRhYkluZGV4Ci17Ci0g
ICAgW3NlbGYgX29iamVjdEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUodGFiaW5kZXhBdHRyLCBTdHJp
bmc6Om51bWJlcih0YWJJbmRleCkpOwotfQotCi0tIChOU1N0cmluZyAqKXR5cGUKLXsKLSAgICBy
ZXR1cm4gW3NlbGYgX29iamVjdEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUodHlwZUF0dHIpOwotfQot
Ci0tICh2b2lkKXNldFR5cGU6KE5TU3RyaW5nICopdHlwZQotewotICAgIFtzZWxmIF9vYmplY3RF
bGVtZW50XS0+c2V0QXR0cmlidXRlKHR5cGVBdHRyLCB0eXBlKTsKLX0KLQotLSAoTlNTdHJpbmcg
Kil1c2VNYXAKLXsKLSAgICByZXR1cm4gW3NlbGYgX29iamVjdEVsZW1lbnRdLT5nZXRBdHRyaWJ1
dGUodXNlbWFwQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0VXNlTWFwOihOU1N0cmluZyAqKXVzZU1h
cAotewotICAgIFtzZWxmIF9vYmplY3RFbGVtZW50XS0+c2V0QXR0cmlidXRlKHVzZW1hcEF0dHIs
IHVzZU1hcCk7Ci19Ci0KLS0gKGludCl2c3BhY2UKLXsKLSAgICByZXR1cm4gW3NlbGYgX29iamVj
dEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUodnNwYWNlQXR0cikudG9JbnQoKTsKLX0KLQotLSAodm9p
ZClzZXRWc3BhY2U6KGludCl2c3BhY2UKLXsKLSAgICBbc2VsZiBfb2JqZWN0RWxlbWVudF0tPnNl
dEF0dHJpYnV0ZSh2c3BhY2VBdHRyLCBTdHJpbmc6Om51bWJlcih2c3BhY2UpKTsKLX0KLQotLSAo
TlNTdHJpbmcgKil3aWR0aAotewotICAgIHJldHVybiBbc2VsZiBfb2JqZWN0RWxlbWVudF0tPmdl
dEF0dHJpYnV0ZSh3aWR0aEF0dHIpOwotfQotCi0tICh2b2lkKXNldFdpZHRoOihOU1N0cmluZyAq
KXdpZHRoCi17Ci0gICAgW3NlbGYgX29iamVjdEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUod2lkdGhB
dHRyLCB3aWR0aCk7Ci19Ci0KLS0gKERPTURvY3VtZW50ICopY29udGVudERvY3VtZW50Ci17Ci0g
ICAgcmV0dXJuIFtET01Eb2N1bWVudCBfZG9jdW1lbnRXaXRoOltzZWxmIF9vYmplY3RFbGVtZW50
XS0+Y29udGVudERvY3VtZW50KCldOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01I
VE1MUGFyYW1FbGVtZW50Ci0KLS0gKEhUTUxQYXJhbUVsZW1lbnQgKilfcGFyYW1FbGVtZW50Ci17
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxQYXJhbUVsZW1lbnQqPihET01fY2FzdDxOb2Rl
Kj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbmFtZQotewotICAgIHJldHVybiBb
c2VsZiBfcGFyYW1FbGVtZW50XS0+Z2V0QXR0cmlidXRlKG5hbWVBdHRyKTsKLX0KLQotLSAodm9p
ZClzZXROYW1lOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBbc2VsZiBfcGFyYW1FbGVtZW50XS0+
c2V0QXR0cmlidXRlKG5hbWVBdHRyLCBuYW1lKTsKLX0KLQotLSAoTlNTdHJpbmcgKil0eXBlCi17
Ci0gICAgcmV0dXJuIFtzZWxmIF9wYXJhbUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUodHlwZUF0dHIp
OwotfQotCi0tICh2b2lkKXNldFR5cGU6KE5TU3RyaW5nICopdHlwZQotewotICAgIFtzZWxmIF9w
YXJhbUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUodHlwZUF0dHIsIHR5cGUpOwotfQotCi0tIChOU1N0
cmluZyAqKXZhbHVlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9wYXJhbUVsZW1lbnRdLT5nZXRBdHRy
aWJ1dGUodmFsdWVBdHRyKTsKLX0KLQotLSAodm9pZClzZXRWYWx1ZTooTlNTdHJpbmcgKil2YWx1
ZQotewotICAgIFtzZWxmIF9wYXJhbUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUodmFsdWVBdHRyLCB2
YWx1ZSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopdmFsdWVUeXBlCi17Ci0gICAgcmV0dXJuIFtzZWxm
IF9wYXJhbUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUodmFsdWV0eXBlQXR0cik7Ci19Ci0KLS0gKHZv
aWQpc2V0VmFsdWVUeXBlOihOU1N0cmluZyAqKXZhbHVlVHlwZQotewotICAgIFtzZWxmIF9wYXJh
bUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUodmFsdWV0eXBlQXR0ciwgdmFsdWVUeXBlKTsKLX0KLQot
QGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NSFRNTEFwcGxldEVsZW1lbnQKLQotLSAoSFRNTEFw
cGxldEVsZW1lbnQgKilfYXBwbGV0RWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxI
VE1MQXBwbGV0RWxlbWVudCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAo
TlNTdHJpbmcgKilhbGlnbgotewotICAgIHJldHVybiBbc2VsZiBfYXBwbGV0RWxlbWVudF0tPmdl
dEF0dHJpYnV0ZShhbGlnbkF0dHIpOwotfQotCi0tICh2b2lkKXNldEFsaWduOihOU1N0cmluZyAq
KWFsaWduCi17Ci0gICAgW3NlbGYgX2FwcGxldEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoYWxpZ25B
dHRyLCBhbGlnbik7Ci19Ci0KLS0gKE5TU3RyaW5nICopYWx0Ci17Ci0gICAgcmV0dXJuIFtzZWxm
IF9hcHBsZXRFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGFsdEF0dHIpOwotfQotCi0tIChOU1N0cmlu
ZyAqKWFsdERpc3BsYXlTdHJpbmcKLXsKLSAgICBTdHJpbmcgYWx0ID0gW3NlbGYgX2FwcGxldEVs
ZW1lbnRdLT5nZXRBdHRyaWJ1dGUoYWx0QXR0cik7Ci0gICAgcmV0dXJuIGFsdC5yZXBsYWNlKCdc
XCcsIFtzZWxmIF9lbGVtZW50XS0+ZG9jdW1lbnQoKS0+YmFja3NsYXNoQXNDdXJyZW5jeVN5bWJv
bCgpKTsKLX0KLQotLSAodm9pZClzZXRBbHQ6KE5TU3RyaW5nICopYWx0Ci17Ci0gICAgW3NlbGYg
X2FwcGxldEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoYWx0QXR0ciwgYWx0KTsKLX0KLQotLSAoTlNT
dHJpbmcgKilhcmNoaXZlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9hcHBsZXRFbGVtZW50XS0+Z2V0
QXR0cmlidXRlKGFyY2hpdmVBdHRyKTsKLX0KLQotLSAodm9pZClzZXRBcmNoaXZlOihOU1N0cmlu
ZyAqKWFyY2hpdmUKLXsKLSAgICBbc2VsZiBfYXBwbGV0RWxlbWVudF0tPnNldEF0dHJpYnV0ZShh
cmNoaXZlQXR0ciwgYXJjaGl2ZSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopY29kZQotewotICAgIHJl
dHVybiBbc2VsZiBfYXBwbGV0RWxlbWVudF0tPmdldEF0dHJpYnV0ZShjb2RlQXR0cik7Ci19Ci0K
LS0gKHZvaWQpc2V0Q29kZTooTlNTdHJpbmcgKiljb2RlCi17Ci0gICAgW3NlbGYgX2FwcGxldEVs
ZW1lbnRdLT5zZXRBdHRyaWJ1dGUoY29kZUF0dHIsIGNvZGUpOwotfQotCi0tIChOU1N0cmluZyAq
KWNvZGVCYXNlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9hcHBsZXRFbGVtZW50XS0+Z2V0QXR0cmli
dXRlKGNvZGViYXNlQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0Q29kZUJhc2U6KE5TU3RyaW5nICop
Y29kZUJhc2UKLXsKLSAgICBbc2VsZiBfYXBwbGV0RWxlbWVudF0tPnNldEF0dHJpYnV0ZShjb2Rl
YmFzZUF0dHIsIGNvZGVCYXNlKTsKLX0KLQotLSAoTlNTdHJpbmcgKiloZWlnaHQKLXsKLSAgICBy
ZXR1cm4gW3NlbGYgX2FwcGxldEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoaGVpZ2h0QXR0cik7Ci19
Ci0KLS0gKHZvaWQpc2V0SGVpZ2h0OihOU1N0cmluZyAqKWhlaWdodAotewotICAgIFtzZWxmIF9h
cHBsZXRFbGVtZW50XS0+c2V0QXR0cmlidXRlKGhlaWdodEF0dHIsIGhlaWdodCk7Ci19Ci0KLS0g
KGludCloc3BhY2UKLXsKLSAgICByZXR1cm4gW3NlbGYgX2FwcGxldEVsZW1lbnRdLT5nZXRBdHRy
aWJ1dGUoaHNwYWNlQXR0cikudG9JbnQoKTsKLX0KLQotLSAodm9pZClzZXRIc3BhY2U6KGludClo
c3BhY2UKLXsKLSAgICBbc2VsZiBfYXBwbGV0RWxlbWVudF0tPnNldEF0dHJpYnV0ZShoc3BhY2VB
dHRyLCBTdHJpbmc6Om51bWJlcihoc3BhY2UpKTsKLX0KLQotLSAoTlNTdHJpbmcgKiluYW1lCi17
Ci0gICAgcmV0dXJuIFtzZWxmIF9hcHBsZXRFbGVtZW50XS0+Z2V0QXR0cmlidXRlKG5hbWVBdHRy
KTsKLX0KLQotLSAodm9pZClzZXROYW1lOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBbc2VsZiBf
YXBwbGV0RWxlbWVudF0tPnNldEF0dHJpYnV0ZShuYW1lQXR0ciwgbmFtZSk7Ci19Ci0KLS0gKE5T
U3RyaW5nICopb2JqZWN0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9hcHBsZXRFbGVtZW50XS0+Z2V0
QXR0cmlidXRlKG9iamVjdEF0dHIpOwotfQotCi0tICh2b2lkKXNldE9iamVjdDooTlNTdHJpbmcg
KilvYmplY3QKLXsKLSAgICBbc2VsZiBfYXBwbGV0RWxlbWVudF0tPnNldEF0dHJpYnV0ZShvYmpl
Y3RBdHRyLCBvYmplY3QpOwotfQotCi0tIChpbnQpdnNwYWNlCi17Ci0gICAgcmV0dXJuIFtzZWxm
IF9hcHBsZXRFbGVtZW50XS0+Z2V0QXR0cmlidXRlKHZzcGFjZUF0dHIpLnRvSW50KCk7Ci19Ci0K
LS0gKHZvaWQpc2V0VnNwYWNlOihpbnQpdnNwYWNlCi17Ci0gICAgW3NlbGYgX2FwcGxldEVsZW1l
bnRdLT5zZXRBdHRyaWJ1dGUodnNwYWNlQXR0ciwgU3RyaW5nOjpudW1iZXIodnNwYWNlKSk7Ci19
Ci0KLS0gKE5TU3RyaW5nICopd2lkdGgKLXsKLSAgICByZXR1cm4gW3NlbGYgX2FwcGxldEVsZW1l
bnRdLT5nZXRBdHRyaWJ1dGUod2lkdGhBdHRyKTsKLX0KLQotLSAodm9pZClzZXRXaWR0aDooTlNT
dHJpbmcgKil3aWR0aAotewotICAgIFtzZWxmIF9hcHBsZXRFbGVtZW50XS0+c2V0QXR0cmlidXRl
KHdpZHRoQXR0ciwgd2lkdGgpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1M
TWFwRWxlbWVudAotCi0tIChIVE1MTWFwRWxlbWVudCAqKV9tYXBFbGVtZW50Ci17Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PEhUTUxNYXBFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5h
bCkpOwotfQotCi0tIChET01IVE1MQ29sbGVjdGlvbiAqKWFyZWFzCi17Ci0gICAgSFRNTENvbGxl
Y3Rpb24gKmNvbGxlY3Rpb24gPSBuZXcgSFRNTENvbGxlY3Rpb24oW3NlbGYgX21hcEVsZW1lbnRd
LCBIVE1MQ29sbGVjdGlvbjo6TWFwQXJlYXMpOwotICAgIHJldHVybiBbRE9NSFRNTENvbGxlY3Rp
b24gX2NvbGxlY3Rpb25XaXRoOmNvbGxlY3Rpb25dOwotfQotCi0tIChOU1N0cmluZyAqKW5hbWUK
LXsKLSAgICByZXR1cm4gW3NlbGYgX21hcEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUobmFtZUF0dHIp
OwotfQotCi0tICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZQotewotICAgIFtzZWxmIF9t
YXBFbGVtZW50XS0+c2V0QXR0cmlidXRlKG5hbWVBdHRyLCBuYW1lKTsKLX0KLQotQGVuZAotCi1A
aW1wbGVtZW50YXRpb24gRE9NSFRNTEFyZWFFbGVtZW50Ci0KLS0gKEhUTUxBcmVhRWxlbWVudCAq
KV9hcmVhRWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MQXJlYUVsZW1lbnQq
PihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopYWNjZXNz
S2V5Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9hcmVhRWxlbWVudF0tPmdldEF0dHJpYnV0ZShhY2Nl
c3NrZXlBdHRyKTsKLX0KLQotLSAodm9pZClzZXRBY2Nlc3NLZXk6KE5TU3RyaW5nICopYWNjZXNz
S2V5Ci17Ci0gICAgW3NlbGYgX2FyZWFFbGVtZW50XS0+c2V0QXR0cmlidXRlKGFjY2Vzc2tleUF0
dHIsIGFjY2Vzc0tleSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopYWx0Ci17Ci0gICAgcmV0dXJuIFtz
ZWxmIF9hcmVhRWxlbWVudF0tPmdldEF0dHJpYnV0ZShhbHRBdHRyKTsKLX0KLQotLSAoTlNTdHJp
bmcgKilhbHREaXNwbGF5U3RyaW5nCi17Ci0gICAgU3RyaW5nIGFsdCA9IFtzZWxmIF9hcmVhRWxl
bWVudF0tPmdldEF0dHJpYnV0ZShhbHRBdHRyKTsKLSAgICByZXR1cm4gYWx0LnJlcGxhY2UoJ1xc
JywgW3NlbGYgX2VsZW1lbnRdLT5kb2N1bWVudCgpLT5iYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9s
KCkpOwotfQotCi0tICh2b2lkKXNldEFsdDooTlNTdHJpbmcgKilhbHQKLXsKLSAgICBbc2VsZiBf
YXJlYUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoYWx0QXR0ciwgYWx0KTsKLX0KLQotLSAoTlNTdHJp
bmcgKiljb29yZHMKLXsKLSAgICByZXR1cm4gW3NlbGYgX2FyZWFFbGVtZW50XS0+Z2V0QXR0cmli
dXRlKGNvb3Jkc0F0dHIpOwotfQotCi0tICh2b2lkKXNldENvb3JkczooTlNTdHJpbmcgKiljb29y
ZHMKLXsKLSAgICBbc2VsZiBfYXJlYUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoY29vcmRzQXR0ciwg
Y29vcmRzKTsKLX0KLQotLSAoTlNVUkwgKilhYnNvbHV0ZUxpbmtVUkwKLXsKLSAgICByZXR1cm4g
W3NlbGYgX2dldFVSTEF0dHJpYnV0ZTpAImhyZWYiXTsKLX0KLQotLSAoTlNTdHJpbmcgKilocmVm
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9hcmVhRWxlbWVudF0tPmhyZWYoKTsKLX0KLQotLSAodm9p
ZClzZXRIcmVmOihOU1N0cmluZyAqKWhyZWYKLXsKLSAgICBbc2VsZiBfYXJlYUVsZW1lbnRdLT5z
ZXRBdHRyaWJ1dGUoaHJlZkF0dHIsIGhyZWYpOwotfQotCi0tIChCT09MKW5vSHJlZgotewotICAg
IHJldHVybiBbc2VsZiBfYXJlYUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUobm9ocmVmQXR0cikuaXNO
dWxsKCk7Ci19Ci0KLS0gKHZvaWQpc2V0Tm9IcmVmOihCT09MKW5vSHJlZgotewotICAgIFtzZWxm
IF9hcmVhRWxlbWVudF0tPnNldEF0dHJpYnV0ZShub2hyZWZBdHRyLCBub0hyZWYgPyAiIiA6IDAp
OwotfQotCi0tIChOU1N0cmluZyAqKXNoYXBlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9hcmVhRWxl
bWVudF0tPmdldEF0dHJpYnV0ZShzaGFwZUF0dHIpOwotfQotCi0tICh2b2lkKXNldFNoYXBlOihO
U1N0cmluZyAqKXNoYXBlCi17Ci0gICAgW3NlbGYgX2FyZWFFbGVtZW50XS0+c2V0QXR0cmlidXRl
KHNoYXBlQXR0ciwgc2hhcGUpOwotfQotCi0tIChpbnQpdGFiSW5kZXgKLXsKLSAgICByZXR1cm4g
W3NlbGYgX2FyZWFFbGVtZW50XS0+Z2V0QXR0cmlidXRlKHRhYmluZGV4QXR0cikudG9JbnQoKTsK
LX0KLQotLSAodm9pZClzZXRUYWJJbmRleDooaW50KXRhYkluZGV4Ci17Ci0gICAgW3NlbGYgX2Fy
ZWFFbGVtZW50XS0+c2V0QXR0cmlidXRlKHRhYmluZGV4QXR0ciwgU3RyaW5nOjpudW1iZXIodGFi
SW5kZXgpKTsKLX0KLQotLSAoTlNTdHJpbmcgKil0YXJnZXQKLXsKLSAgICByZXR1cm4gW3NlbGYg
X2FyZWFFbGVtZW50XS0+Z2V0QXR0cmlidXRlKHRhcmdldEF0dHIpOwotfQotCi0tICh2b2lkKXNl
dFRhcmdldDooTlNTdHJpbmcgKil0YXJnZXQKLXsKLSAgICBbc2VsZiBfYXJlYUVsZW1lbnRdLT5z
ZXRBdHRyaWJ1dGUodGFyZ2V0QXR0ciwgdGFyZ2V0KTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gRE9NSFRNTFNjcmlwdEVsZW1lbnQKLQotLSAoSFRNTFNjcmlwdEVsZW1lbnQgKilfc2Ny
aXB0RWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MU2NyaXB0RWxlbWVudCo+
KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKil0ZXh0Ci17
Ci0gICAgcmV0dXJuIFtzZWxmIF9zY3JpcHRFbGVtZW50XS0+Z2V0QXR0cmlidXRlKHRleHRBdHRy
KTsKLX0KLQotLSAodm9pZClzZXRUZXh0OihOU1N0cmluZyAqKXRleHQKLXsKLSAgICBbc2VsZiBf
c2NyaXB0RWxlbWVudF0tPnNldEF0dHJpYnV0ZSh0ZXh0QXR0ciwgdGV4dCk7Ci19Ci0KLS0gKE5T
U3RyaW5nICopaHRtbEZvcgotewotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoMCwgIm5vdCBpbXBs
ZW1lbnRlZCBieSBraHRtbCIpOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKHZvaWQpc2V0SHRt
bEZvcjooTlNTdHJpbmcgKilodG1sRm9yCi17Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgwLCAi
bm90IGltcGxlbWVudGVkIGJ5IGtodG1sIik7Ci19Ci0KLS0gKE5TU3RyaW5nICopZXZlbnQKLXsK
LSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKDAsICJub3QgaW1wbGVtZW50ZWQgYnkga2h0bWwiKTsK
LSAgICByZXR1cm4gbmlsOwotfQotCi0tICh2b2lkKXNldEV2ZW50OihOU1N0cmluZyAqKWV2ZW50
Ci17Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgwLCAibm90IGltcGxlbWVudGVkIGJ5IGtodG1s
Iik7Ci19Ci0KLS0gKE5TU3RyaW5nICopY2hhcnNldAotewotICAgIHJldHVybiBbc2VsZiBfc2Ny
aXB0RWxlbWVudF0tPmdldEF0dHJpYnV0ZShjaGFyc2V0QXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0
Q2hhcnNldDooTlNTdHJpbmcgKiljaGFyc2V0Ci17Ci0gICAgW3NlbGYgX3NjcmlwdEVsZW1lbnRd
LT5zZXRBdHRyaWJ1dGUoY2hhcnNldEF0dHIsIGNoYXJzZXQpOwotfQotCi0tIChCT09MKWRlZmVy
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9zY3JpcHRFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGRlZmVy
QXR0cikuaXNOdWxsKCk7Ci19Ci0KLS0gKHZvaWQpc2V0RGVmZXI6KEJPT0wpZGVmZXIKLXsKLSAg
ICBbc2VsZiBfc2NyaXB0RWxlbWVudF0tPnNldEF0dHJpYnV0ZShkZWZlckF0dHIsIGRlZmVyID8g
IiIgOiAwKTsKLX0KLQotLSAoTlNTdHJpbmcgKilzcmMKLXsKLSAgICByZXR1cm4gW3NlbGYgX3Nj
cmlwdEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoc3JjQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0U3Jj
OihOU1N0cmluZyAqKXNyYwotewotICAgIFtzZWxmIF9zY3JpcHRFbGVtZW50XS0+c2V0QXR0cmli
dXRlKHNyY0F0dHIsIHNyYyk7Ci19Ci0KLS0gKE5TU3RyaW5nICopdHlwZQotewotICAgIHJldHVy
biBbc2VsZiBfc2NyaXB0RWxlbWVudF0tPmdldEF0dHJpYnV0ZSh0eXBlQXR0cik7Ci19Ci0KLS0g
KHZvaWQpc2V0VHlwZTooTlNTdHJpbmcgKil0eXBlCi17Ci0gICAgW3NlbGYgX3NjcmlwdEVsZW1l
bnRdLT5zZXRBdHRyaWJ1dGUodHlwZUF0dHIsIHR5cGUpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1l
bnRhdGlvbiBET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudAotCi0tIChOU1N0cmluZyAqKWFsaWdu
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF90YWJsZUNhcHRpb25FbGVtZW50XS0+Z2V0QXR0cmlidXRl
KGFsaWduQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0QWxpZ246KE5TU3RyaW5nICopYWxpZ24KLXsK
LSAgICBbc2VsZiBfdGFibGVDYXB0aW9uRWxlbWVudF0tPnNldEF0dHJpYnV0ZShhbGlnbkF0dHIs
IGFsaWduKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NSFRNTFRhYmxlQ2FwdGlv
bkVsZW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1l
bnQgKilfdGFibGVDYXB0aW9uRWxlbWVudFdpdGg6KEhUTUxUYWJsZUNhcHRpb25FbGVtZW50ICop
aW1wbAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01IVE1MVGFibGVDYXB0aW9uRWxlbWVu
dCo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19Ci0KLS0gKEhUTUxUYWJsZUNhcHRpb25F
bGVtZW50ICopX3RhYmxlQ2FwdGlvbkVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19
Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Ci0K
LS0gKE5TU3RyaW5nICopYWxpZ24KLXsKLSAgICByZXR1cm4gW3NlbGYgX3RhYmxlU2VjdGlvbkVs
ZW1lbnRdLT5nZXRBdHRyaWJ1dGUoYWxpZ25BdHRyKTsKLX0KLQotLSAodm9pZClzZXRBbGlnbjoo
TlNTdHJpbmcgKilhbGlnbgotewotICAgIFtzZWxmIF90YWJsZVNlY3Rpb25FbGVtZW50XS0+c2V0
QXR0cmlidXRlKGFsaWduQXR0ciwgYWxpZ24pOwotfQotCi0tIChOU1N0cmluZyAqKWNoCi17Ci0g
ICAgcmV0dXJuIFtzZWxmIF90YWJsZVNlY3Rpb25FbGVtZW50XS0+Z2V0QXR0cmlidXRlKGNoYXJv
ZmZBdHRyKTsKLX0KLQotLSAodm9pZClzZXRDaDooTlNTdHJpbmcgKiljaAotewotICAgIFtzZWxm
IF90YWJsZVNlY3Rpb25FbGVtZW50XS0+c2V0QXR0cmlidXRlKGNoYXJvZmZBdHRyLCBjaCk7Ci19
Ci0KLS0gKE5TU3RyaW5nICopY2hPZmYKLXsKLSAgICByZXR1cm4gW3NlbGYgX3RhYmxlU2VjdGlv
bkVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoY2hhcm9mZkF0dHIpOwotfQotCi0tICh2b2lkKXNldENo
T2ZmOihOU1N0cmluZyAqKWNoT2ZmCi17Ci0gICAgW3NlbGYgX3RhYmxlU2VjdGlvbkVsZW1lbnRd
LT5zZXRBdHRyaWJ1dGUoY2hhcm9mZkF0dHIsIGNoT2ZmKTsKLX0KLQotLSAoTlNTdHJpbmcgKil2
QWxpZ24KLXsKLSAgICByZXR1cm4gW3NlbGYgX3RhYmxlU2VjdGlvbkVsZW1lbnRdLT5nZXRBdHRy
aWJ1dGUodmFsaWduQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0VkFsaWduOihOU1N0cmluZyAqKXZB
bGlnbgotewotICAgIFtzZWxmIF90YWJsZVNlY3Rpb25FbGVtZW50XS0+c2V0QXR0cmlidXRlKHZh
bGlnbkF0dHIsIHZBbGlnbik7Ci19Ci0KLS0gKERPTUhUTUxDb2xsZWN0aW9uICopcm93cwotewot
ICAgIEhUTUxDb2xsZWN0aW9uICpjb2xsZWN0aW9uID0gbmV3IEhUTUxDb2xsZWN0aW9uKFtzZWxm
IF90YWJsZVNlY3Rpb25FbGVtZW50XSwgSFRNTENvbGxlY3Rpb246OlRhYmxlUm93cyk7Ci0gICAg
cmV0dXJuIFtET01IVE1MQ29sbGVjdGlvbiBfY29sbGVjdGlvbldpdGg6Y29sbGVjdGlvbl07Ci19
Ci0KLS0gKERPTUhUTUxFbGVtZW50ICopaW5zZXJ0Um93OihpbnQpaW5kZXgKLXsKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBIVE1MRWxlbWVudCAqaW1wbCA9IFtzZWxmIF90YWJsZVNl
Y3Rpb25FbGVtZW50XS0+aW5zZXJ0Um93KGluZGV4LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLSAgICByZXR1cm4gW0RPTUhUTUxFbGVtZW50IF9lbGVtZW50V2l0aDppbXBsXTsKLX0K
LQotLSAodm9pZClkZWxldGVSb3c6KGludClpbmRleAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIFtzZWxmIF90YWJsZVNlY3Rpb25FbGVtZW50XS0+ZGVsZXRlUm93KGluZGV4LCBl
Yyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRp
b24gRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9N
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgKilfdGFibGVTZWN0aW9uRWxlbWVudFdpdGg6KEhUTUxU
YWJsZVNlY3Rpb25FbGVtZW50ICopaW1wbAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01I
VE1MVGFibGVTZWN0aW9uRWxlbWVudCo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19Ci0K
LS0gKEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50ICopX3RhYmxlU2VjdGlvbkVsZW1lbnQKLXsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqPihET01fY2FzdDxO
b2RlKj4oX2ludGVybmFsKSk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUhUTUxU
YWJsZUVsZW1lbnQKLQotLSAoRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQgKiljYXB0aW9uCi17
Ci0gICAgcmV0dXJuIFtET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudCBfdGFibGVDYXB0aW9uRWxl
bWVudFdpdGg6W3NlbGYgX3RhYmxlRWxlbWVudF0tPmNhcHRpb24oKV07Ci19Ci0KLS0gKHZvaWQp
c2V0Q2FwdGlvbjooRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQgKiljYXB0aW9uCi17Ci0gICAg
W3NlbGYgX3RhYmxlRWxlbWVudF0tPnNldENhcHRpb24oW2NhcHRpb24gX3RhYmxlQ2FwdGlvbkVs
ZW1lbnRdKTsKLX0KLQotLSAoRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgKil0SGVhZAotewot
ICAgIHJldHVybiBbRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgX3RhYmxlU2VjdGlvbkVsZW1l
bnRXaXRoOltzZWxmIF90YWJsZUVsZW1lbnRdLT50SGVhZCgpXTsKLX0KLQotLSAodm9pZClzZXRU
SGVhZDooRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgKil0SGVhZAotewotICAgIFtzZWxmIF90
YWJsZUVsZW1lbnRdLT5zZXRUSGVhZChbdEhlYWQgX3RhYmxlU2VjdGlvbkVsZW1lbnRdKTsKLX0K
LQotLSAoRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgKil0Rm9vdAotewotICAgIHJldHVybiBb
RE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgX3RhYmxlU2VjdGlvbkVsZW1lbnRXaXRoOltzZWxm
IF90YWJsZUVsZW1lbnRdLT50Rm9vdCgpXTsKLX0KLQotLSAodm9pZClzZXRURm9vdDooRE9NSFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQgKil0Rm9vdAotewotICAgIFtzZWxmIF90YWJsZUVsZW1lbnRd
LT5zZXRURm9vdChbdEZvb3QgX3RhYmxlU2VjdGlvbkVsZW1lbnRdKTsKLX0KLQotLSAoRE9NSFRN
TENvbGxlY3Rpb24gKilyb3dzCi17Ci0gICAgSFRNTENvbGxlY3Rpb24gKmNvbGxlY3Rpb24gPSBu
ZXcgSFRNTENvbGxlY3Rpb24oW3NlbGYgX3RhYmxlRWxlbWVudF0sIEhUTUxDb2xsZWN0aW9uOjpU
YWJsZVJvd3MpOwotICAgIHJldHVybiBbRE9NSFRNTENvbGxlY3Rpb24gX2NvbGxlY3Rpb25XaXRo
OmNvbGxlY3Rpb25dOwotfQotCi0tIChET01IVE1MQ29sbGVjdGlvbiAqKXRCb2RpZXMKLXsKLSAg
ICBIVE1MQ29sbGVjdGlvbiAqY29sbGVjdGlvbiA9IG5ldyBIVE1MQ29sbGVjdGlvbihbc2VsZiBf
dGFibGVFbGVtZW50XSwgSFRNTENvbGxlY3Rpb246OlRhYmxlVEJvZGllcyk7Ci0gICAgcmV0dXJu
IFtET01IVE1MQ29sbGVjdGlvbiBfY29sbGVjdGlvbldpdGg6Y29sbGVjdGlvbl07Ci19Ci0KLS0g
KE5TU3RyaW5nICopYWxpZ24KLXsKLSAgICByZXR1cm4gW3NlbGYgX3RhYmxlRWxlbWVudF0tPmdl
dEF0dHJpYnV0ZShhbGlnbkF0dHIpOwotfQotCi0tICh2b2lkKXNldEFsaWduOihOU1N0cmluZyAq
KWFsaWduCi17Ci0gICAgW3NlbGYgX3RhYmxlRWxlbWVudF0tPnNldEF0dHJpYnV0ZShhbGlnbkF0
dHIsIGFsaWduKTsKLX0KLQotLSAoTlNTdHJpbmcgKiliZ0NvbG9yCi17Ci0gICAgcmV0dXJuIFtz
ZWxmIF90YWJsZUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoYmdjb2xvckF0dHIpOwotfQotCi0tICh2
b2lkKXNldEJnQ29sb3I6KE5TU3RyaW5nICopYmdDb2xvcgotewotICAgIFtzZWxmIF90YWJsZUVs
ZW1lbnRdLT5zZXRBdHRyaWJ1dGUoYmdjb2xvckF0dHIsIGJnQ29sb3IpOwotfQotCi0tIChOU1N0
cmluZyAqKWJvcmRlcgotewotICAgIHJldHVybiBbc2VsZiBfdGFibGVFbGVtZW50XS0+Z2V0QXR0
cmlidXRlKGJvcmRlckF0dHIpOwotfQotCi0tICh2b2lkKXNldEJvcmRlcjooTlNTdHJpbmcgKili
b3JkZXIKLXsKLSAgICBbc2VsZiBfdGFibGVFbGVtZW50XS0+c2V0QXR0cmlidXRlKGJvcmRlckF0
dHIsIGJvcmRlcik7Ci19Ci0KLS0gKE5TU3RyaW5nICopY2VsbFBhZGRpbmcKLXsKLSAgICByZXR1
cm4gW3NlbGYgX3RhYmxlRWxlbWVudF0tPmdldEF0dHJpYnV0ZShjZWxscGFkZGluZ0F0dHIpOwot
fQotCi0tICh2b2lkKXNldENlbGxQYWRkaW5nOihOU1N0cmluZyAqKWNlbGxQYWRkaW5nCi17Ci0g
ICAgW3NlbGYgX3RhYmxlRWxlbWVudF0tPnNldEF0dHJpYnV0ZShjZWxscGFkZGluZ0F0dHIsIGNl
bGxQYWRkaW5nKTsKLX0KLQotLSAoTlNTdHJpbmcgKiljZWxsU3BhY2luZwotewotICAgIHJldHVy
biBbc2VsZiBfdGFibGVFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGNlbGxzcGFjaW5nQXR0cik7Ci19
Ci0KLS0gKHZvaWQpc2V0Q2VsbFNwYWNpbmc6KE5TU3RyaW5nICopY2VsbFNwYWNpbmcKLXsKLSAg
ICBbc2VsZiBfdGFibGVFbGVtZW50XS0+c2V0QXR0cmlidXRlKGNlbGxzcGFjaW5nQXR0ciwgY2Vs
bFNwYWNpbmcpOwotfQotCi0tIChOU1N0cmluZyAqKWZyYW1lQm9yZGVycwotewotICAgIHJldHVy
biBbc2VsZiBfdGFibGVFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGZyYW1lQXR0cik7Ci19Ci0KLS0g
KHZvaWQpc2V0RnJhbWVCb3JkZXJzOihOU1N0cmluZyAqKWZyYW1lQm9yZGVycwotewotICAgIFtz
ZWxmIF90YWJsZUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoZnJhbWVBdHRyLCBmcmFtZUJvcmRlcnMp
OwotfQotCi0tIChOU1N0cmluZyAqKXJ1bGVzCi17Ci0gICAgcmV0dXJuIFtzZWxmIF90YWJsZUVs
ZW1lbnRdLT5nZXRBdHRyaWJ1dGUocnVsZXNBdHRyKTsKLX0KLQotLSAodm9pZClzZXRSdWxlczoo
TlNTdHJpbmcgKilydWxlcwotewotICAgIFtzZWxmIF90YWJsZUVsZW1lbnRdLT5zZXRBdHRyaWJ1
dGUocnVsZXNBdHRyLCBydWxlcyk7Ci19Ci0KLS0gKE5TU3RyaW5nICopc3VtbWFyeQotewotICAg
IHJldHVybiBbc2VsZiBfdGFibGVFbGVtZW50XS0+Z2V0QXR0cmlidXRlKHN1bW1hcnlBdHRyKTsK
LX0KLQotLSAodm9pZClzZXRTdW1tYXJ5OihOU1N0cmluZyAqKXN1bW1hcnkKLXsKLSAgICBbc2Vs
ZiBfdGFibGVFbGVtZW50XS0+c2V0QXR0cmlidXRlKHN1bW1hcnlBdHRyLCBzdW1tYXJ5KTsKLX0K
LQotLSAoTlNTdHJpbmcgKil3aWR0aAotewotICAgIHJldHVybiBbc2VsZiBfdGFibGVFbGVtZW50
XS0+Z2V0QXR0cmlidXRlKHdpZHRoQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0V2lkdGg6KE5TU3Ry
aW5nICopd2lkdGgKLXsKLSAgICBbc2VsZiBfdGFibGVFbGVtZW50XS0+c2V0QXR0cmlidXRlKHdp
ZHRoQXR0ciwgd2lkdGgpOwotfQotCi0tIChET01IVE1MRWxlbWVudCAqKWNyZWF0ZVRIZWFkCi17
Ci0gICAgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgKmltcGwgPSBzdGF0aWNfY2FzdDxIVE1MVGFi
bGVTZWN0aW9uRWxlbWVudCo+KFtzZWxmIF90YWJsZUVsZW1lbnRdLT5jcmVhdGVUSGVhZCgpKTsK
LSAgICByZXR1cm4gW0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50IF90YWJsZVNlY3Rpb25FbGVt
ZW50V2l0aDppbXBsXTsKLX0KLQotLSAodm9pZClkZWxldGVUSGVhZAotewotICAgIFtzZWxmIF90
YWJsZUVsZW1lbnRdLT5kZWxldGVUSGVhZCgpOwotfQotCi0tIChET01IVE1MRWxlbWVudCAqKWNy
ZWF0ZVRGb290Ci17Ci0gICAgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgKmltcGwgPSBzdGF0aWNf
Y2FzdDxIVE1MVGFibGVTZWN0aW9uRWxlbWVudCo+KFtzZWxmIF90YWJsZUVsZW1lbnRdLT5jcmVh
dGVURm9vdCgpKTsKLSAgICByZXR1cm4gW0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50IF90YWJs
ZVNlY3Rpb25FbGVtZW50V2l0aDppbXBsXTsKLX0KLQotLSAodm9pZClkZWxldGVURm9vdAotewot
ICAgIFtzZWxmIF90YWJsZUVsZW1lbnRdLT5kZWxldGVURm9vdCgpOwotfQotCi0tIChET01IVE1M
RWxlbWVudCAqKWNyZWF0ZUNhcHRpb24KLXsKLSAgICBIVE1MVGFibGVDYXB0aW9uRWxlbWVudCAq
aW1wbCA9IHN0YXRpY19jYXN0PEhUTUxUYWJsZUNhcHRpb25FbGVtZW50Kj4oW3NlbGYgX3RhYmxl
RWxlbWVudF0tPmNyZWF0ZUNhcHRpb24oKSk7Ci0gICAgcmV0dXJuIFtET01IVE1MVGFibGVDYXB0
aW9uRWxlbWVudCBfdGFibGVDYXB0aW9uRWxlbWVudFdpdGg6aW1wbF07Ci19Ci0KLS0gKHZvaWQp
ZGVsZXRlQ2FwdGlvbgotewotICAgIFtzZWxmIF90YWJsZUVsZW1lbnRdLT5kZWxldGVDYXB0aW9u
KCk7Ci19Ci0KLS0gKERPTUhUTUxFbGVtZW50ICopaW5zZXJ0Um93OihpbnQpaW5kZXgKLXsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBIVE1MVGFibGVFbGVtZW50ICppbXBsID0gc3Rh
dGljX2Nhc3Q8SFRNTFRhYmxlRWxlbWVudCo+KFtzZWxmIF90YWJsZUVsZW1lbnRdLT5pbnNlcnRS
b3coaW5kZXgsIGVjKSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gW0RP
TUhUTUxUYWJsZUVsZW1lbnQgX3RhYmxlRWxlbWVudFdpdGg6aW1wbF07Ci19Ci0KLS0gKHZvaWQp
ZGVsZXRlUm93OihpbnQpaW5kZXgKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBb
c2VsZiBfdGFibGVFbGVtZW50XS0+ZGVsZXRlUm93KGluZGV4LCBlYyk7Ci0gICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NSFRNTFRhYmxlRWxl
bWVudCAoV2ViQ29yZUludGVybmFsKQotCi0rIChET01IVE1MVGFibGVFbGVtZW50ICopX3RhYmxl
RWxlbWVudFdpdGg6KEhUTUxUYWJsZUVsZW1lbnQgKilpbXBsCi17Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PERPTUhUTUxUYWJsZUVsZW1lbnQqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwot
fQotCi0tIChIVE1MVGFibGVFbGVtZW50ICopX3RhYmxlRWxlbWVudAotewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxIVE1MVGFibGVFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkp
OwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MVGFibGVDb2xFbGVtZW50Ci0K
LS0gKEhUTUxUYWJsZUNvbEVsZW1lbnQgKilfdGFibGVDb2xFbGVtZW50Ci17Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PEhUTUxUYWJsZUNvbEVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVy
bmFsKSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopYWxpZ24KLXsKLSAgICByZXR1cm4gW3NlbGYgX3Rh
YmxlQ29sRWxlbWVudF0tPmdldEF0dHJpYnV0ZShhbGlnbkF0dHIpOwotfQotCi0tICh2b2lkKXNl
dEFsaWduOihOU1N0cmluZyAqKWFsaWduCi17Ci0gICAgW3NlbGYgX3RhYmxlQ29sRWxlbWVudF0t
PnNldEF0dHJpYnV0ZShhbGlnbkF0dHIsIGFsaWduKTsKLX0KLQotLSAoTlNTdHJpbmcgKiljaAot
ewotICAgIHJldHVybiBbc2VsZiBfdGFibGVDb2xFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGNoYXJv
ZmZBdHRyKTsKLX0KLQotLSAodm9pZClzZXRDaDooTlNTdHJpbmcgKiljaAotewotICAgIFtzZWxm
IF90YWJsZUNvbEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoY2hhcm9mZkF0dHIsIGNoKTsKLX0KLQot
LSAoTlNTdHJpbmcgKiljaE9mZgotewotICAgIHJldHVybiBbc2VsZiBfdGFibGVDb2xFbGVtZW50
XS0+Z2V0QXR0cmlidXRlKGNoYXJvZmZBdHRyKTsKLX0KLQotLSAodm9pZClzZXRDaE9mZjooTlNT
dHJpbmcgKiljaE9mZgotewotICAgIFtzZWxmIF90YWJsZUNvbEVsZW1lbnRdLT5zZXRBdHRyaWJ1
dGUoY2hhcm9mZkF0dHIsIGNoT2ZmKTsKLX0KLQotLSAoaW50KXNwYW4KLXsKLSAgICByZXR1cm4g
W3NlbGYgX3RhYmxlQ29sRWxlbWVudF0tPmdldEF0dHJpYnV0ZShzcGFuQXR0cikudG9JbnQoKTsK
LX0KLQotLSAodm9pZClzZXRTcGFuOihpbnQpc3BhbgotewotICAgIFtzZWxmIF90YWJsZUNvbEVs
ZW1lbnRdLT5zZXRBdHRyaWJ1dGUoc3BhbkF0dHIsIFN0cmluZzo6bnVtYmVyKHNwYW4pKTsKLX0K
LQotLSAoTlNTdHJpbmcgKil2QWxpZ24KLXsKLSAgICByZXR1cm4gW3NlbGYgX3RhYmxlQ29sRWxl
bWVudF0tPmdldEF0dHJpYnV0ZSh2YWxpZ25BdHRyKTsKLX0KLQotLSAodm9pZClzZXRWQWxpZ246
KE5TU3RyaW5nICopdkFsaWduCi17Ci0gICAgW3NlbGYgX3RhYmxlQ29sRWxlbWVudF0tPnNldEF0
dHJpYnV0ZSh2YWxpZ25BdHRyLCB2QWxpZ24pOwotfQotCi0tIChOU1N0cmluZyAqKXdpZHRoCi17
Ci0gICAgcmV0dXJuIFtzZWxmIF90YWJsZUNvbEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUod2lkdGhB
dHRyKTsKLX0KLQotLSAodm9pZClzZXRXaWR0aDooTlNTdHJpbmcgKil3aWR0aAotewotICAgIFtz
ZWxmIF90YWJsZUNvbEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUod2lkdGhBdHRyLCB3aWR0aCk7Ci19
Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUhUTUxUYWJsZVJvd0VsZW1lbnQKLQotLSAo
SFRNTFRhYmxlUm93RWxlbWVudCAqKV90YWJsZVJvd0VsZW1lbnQKLXsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SFRNTFRhYmxlUm93RWxlbWVudCo+KERPTV9jYXN0PE5vZGUqPihfaW50ZXJuYWwp
KTsKLX0KLQotLSAoaW50KXJvd0luZGV4Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF90YWJsZVJvd0Vs
ZW1lbnRdLT5yb3dJbmRleCgpOwotfQotCi0tIChpbnQpc2VjdGlvblJvd0luZGV4Ci17Ci0gICAg
cmV0dXJuIFtzZWxmIF90YWJsZVJvd0VsZW1lbnRdLT5zZWN0aW9uUm93SW5kZXgoKTsKLX0KLQot
LSAoRE9NSFRNTENvbGxlY3Rpb24gKiljZWxscwotewotICAgIEhUTUxDb2xsZWN0aW9uICpjb2xs
ZWN0aW9uID0gbmV3IEhUTUxDb2xsZWN0aW9uKFtzZWxmIF90YWJsZVJvd0VsZW1lbnRdLCBIVE1M
Q29sbGVjdGlvbjo6VFJDZWxscyk7Ci0gICAgcmV0dXJuIFtET01IVE1MQ29sbGVjdGlvbiBfY29s
bGVjdGlvbldpdGg6Y29sbGVjdGlvbl07Ci19Ci0KLS0gKE5TU3RyaW5nICopYWxpZ24KLXsKLSAg
ICByZXR1cm4gW3NlbGYgX3RhYmxlUm93RWxlbWVudF0tPmdldEF0dHJpYnV0ZShhbGlnbkF0dHIp
OwotfQotCi0tICh2b2lkKXNldEFsaWduOihOU1N0cmluZyAqKWFsaWduCi17Ci0gICAgW3NlbGYg
X3RhYmxlUm93RWxlbWVudF0tPnNldEF0dHJpYnV0ZShhbGlnbkF0dHIsIGFsaWduKTsKLX0KLQot
LSAoTlNTdHJpbmcgKiliZ0NvbG9yCi17Ci0gICAgcmV0dXJuIFtzZWxmIF90YWJsZVJvd0VsZW1l
bnRdLT5nZXRBdHRyaWJ1dGUoYmdjb2xvckF0dHIpOwotfQotCi0tICh2b2lkKXNldEJnQ29sb3I6
KE5TU3RyaW5nICopYmdDb2xvcgotewotICAgIFtzZWxmIF90YWJsZVJvd0VsZW1lbnRdLT5zZXRB
dHRyaWJ1dGUoYmdjb2xvckF0dHIsIGJnQ29sb3IpOwotfQotCi0tIChOU1N0cmluZyAqKWNoCi17
Ci0gICAgcmV0dXJuIFtzZWxmIF90YWJsZVJvd0VsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoY2hhcm9m
ZkF0dHIpOwotfQotCi0tICh2b2lkKXNldENoOihOU1N0cmluZyAqKWNoCi17Ci0gICAgW3NlbGYg
X3RhYmxlUm93RWxlbWVudF0tPnNldEF0dHJpYnV0ZShjaGFyb2ZmQXR0ciwgY2gpOwotfQotCi0t
IChOU1N0cmluZyAqKWNoT2ZmCi17Ci0gICAgcmV0dXJuIFtzZWxmIF90YWJsZVJvd0VsZW1lbnRd
LT5nZXRBdHRyaWJ1dGUoY2hhcm9mZkF0dHIpOwotfQotCi0tICh2b2lkKXNldENoT2ZmOihOU1N0
cmluZyAqKWNoT2ZmCi17Ci0gICAgW3NlbGYgX3RhYmxlUm93RWxlbWVudF0tPnNldEF0dHJpYnV0
ZShjaGFyb2ZmQXR0ciwgY2hPZmYpOwotfQotCi0tIChOU1N0cmluZyAqKXZBbGlnbgotewotICAg
IHJldHVybiBbc2VsZiBfdGFibGVSb3dFbGVtZW50XS0+Z2V0QXR0cmlidXRlKHZhbGlnbkF0dHIp
OwotfQotCi0tICh2b2lkKXNldFZBbGlnbjooTlNTdHJpbmcgKil2QWxpZ24KLXsKLSAgICBbc2Vs
ZiBfdGFibGVSb3dFbGVtZW50XS0+c2V0QXR0cmlidXRlKHZhbGlnbkF0dHIsIHZBbGlnbik7Ci19
Ci0KLS0gKERPTUhUTUxFbGVtZW50ICopaW5zZXJ0Q2VsbDooaW50KWluZGV4Ci17Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSFRNTFRhYmxlQ2VsbEVsZW1lbnQgKmltcGwgPSBzdGF0
aWNfY2FzdDxIVE1MVGFibGVDZWxsRWxlbWVudCo+KFtzZWxmIF90YWJsZVJvd0VsZW1lbnRdLT5p
bnNlcnRDZWxsKGluZGV4LCBlYykpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0
dXJuIFtET01IVE1MVGFibGVDZWxsRWxlbWVudCBfdGFibGVDZWxsRWxlbWVudFdpdGg6aW1wbF07
Ci19Ci0KLS0gKHZvaWQpZGVsZXRlQ2VsbDooaW50KWluZGV4Ci17Ci0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3RhYmxlUm93RWxlbWVudF0tPmRlbGV0ZUNlbGwoaW5kZXgs
IGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRh
dGlvbiBET01IVE1MVGFibGVDZWxsRWxlbWVudAotCi0tIChpbnQpY2VsbEluZGV4Ci17Ci0gICAg
cmV0dXJuIFtzZWxmIF90YWJsZUNlbGxFbGVtZW50XS0+Y2VsbEluZGV4KCk7Ci19Ci0KLS0gKE5T
U3RyaW5nICopYWJicgotewotICAgIHJldHVybiBbc2VsZiBfdGFibGVDZWxsRWxlbWVudF0tPmdl
dEF0dHJpYnV0ZShhYmJyQXR0cik7Ci19CiAKLS0gKHZvaWQpc2V0QWJicjooTlNTdHJpbmcgKilh
YmJyCi17Ci0gICAgW3NlbGYgX3RhYmxlQ2VsbEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoYWJickF0
dHIsIGFiYnIpOwotfQotCi0tIChOU1N0cmluZyAqKWFsaWduCi17Ci0gICAgcmV0dXJuIFtzZWxm
IF90YWJsZUNlbGxFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGFsaWduQXR0cik7Ci19Ci0KLS0gKHZv
aWQpc2V0QWxpZ246KE5TU3RyaW5nICopYWxpZ24KLXsKLSAgICBbc2VsZiBfdGFibGVDZWxsRWxl
bWVudF0tPnNldEF0dHJpYnV0ZShhbGlnbkF0dHIsIGFsaWduKTsKLX0KLQotLSAoTlNTdHJpbmcg
KilheGlzCi17Ci0gICAgcmV0dXJuIFtzZWxmIF90YWJsZUNlbGxFbGVtZW50XS0+Z2V0QXR0cmli
dXRlKGF4aXNBdHRyKTsKLX0KLQotLSAodm9pZClzZXRBeGlzOihOU1N0cmluZyAqKWF4aXMKLXsK
LSAgICBbc2VsZiBfdGFibGVDZWxsRWxlbWVudF0tPnNldEF0dHJpYnV0ZShheGlzQXR0ciwgYXhp
cyk7Ci19Ci0KLS0gKE5TU3RyaW5nICopYmdDb2xvcgotewotICAgIHJldHVybiBbc2VsZiBfdGFi
bGVDZWxsRWxlbWVudF0tPmdldEF0dHJpYnV0ZShiZ2NvbG9yQXR0cik7Ci19Ci0KLS0gKHZvaWQp
c2V0QmdDb2xvcjooTlNTdHJpbmcgKiliZ0NvbG9yCi17Ci0gICAgW3NlbGYgX3RhYmxlQ2VsbEVs
ZW1lbnRdLT5zZXRBdHRyaWJ1dGUoYmdjb2xvckF0dHIsIGJnQ29sb3IpOwotfQotCi0tIChOU1N0
cmluZyAqKWNoCi17Ci0gICAgcmV0dXJuIFtzZWxmIF90YWJsZUNlbGxFbGVtZW50XS0+Z2V0QXR0
cmlidXRlKGNoYXJvZmZBdHRyKTsKLX0KLQotLSAodm9pZClzZXRDaDooTlNTdHJpbmcgKiljaAot
ewotICAgIFtzZWxmIF90YWJsZUNlbGxFbGVtZW50XS0+c2V0QXR0cmlidXRlKGNoYXJvZmZBdHRy
LCBjaCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopY2hPZmYKLXsKLSAgICByZXR1cm4gW3NlbGYgX3Rh
YmxlQ2VsbEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoY2hhcm9mZkF0dHIpOwotfQotCi0tICh2b2lk
KXNldENoT2ZmOihOU1N0cmluZyAqKWNoT2ZmCi17Ci0gICAgW3NlbGYgX3RhYmxlQ2VsbEVsZW1l
bnRdLT5zZXRBdHRyaWJ1dGUoY2hhcm9mZkF0dHIsIGNoT2ZmKTsKLX0KLQotLSAoaW50KWNvbFNw
YW4KLXsKLSAgICByZXR1cm4gW3NlbGYgX3RhYmxlQ2VsbEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUo
Y29sc3BhbkF0dHIpLnRvSW50KCk7Ci19Ci0KLS0gKHZvaWQpc2V0Q29sU3BhbjooaW50KWNvbFNw
YW4KLXsKLSAgICBbc2VsZiBfdGFibGVDZWxsRWxlbWVudF0tPnNldEF0dHJpYnV0ZShjb2xzcGFu
QXR0ciwgU3RyaW5nOjpudW1iZXIoY29sU3BhbikpOwotfQotCi0tIChOU1N0cmluZyAqKWhlYWRl
cnMKLXsKLSAgICByZXR1cm4gW3NlbGYgX3RhYmxlQ2VsbEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUo
aGVhZGVyc0F0dHIpOwotfQotCi0tICh2b2lkKXNldEhlYWRlcnM6KE5TU3RyaW5nICopaGVhZGVy
cwotewotICAgIFtzZWxmIF90YWJsZUNlbGxFbGVtZW50XS0+c2V0QXR0cmlidXRlKGhlYWRlcnNB
dHRyLCBoZWFkZXJzKTsKLX0KLQotLSAoTlNTdHJpbmcgKiloZWlnaHQKLXsKLSAgICByZXR1cm4g
W3NlbGYgX3RhYmxlQ2VsbEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoaGVpZ2h0QXR0cik7Ci19Ci0K
LS0gKHZvaWQpc2V0SGVpZ2h0OihOU1N0cmluZyAqKWhlaWdodAotewotICAgIFtzZWxmIF90YWJs
ZUNlbGxFbGVtZW50XS0+c2V0QXR0cmlidXRlKGhlaWdodEF0dHIsIGhlaWdodCk7Ci19Ci0KLS0g
KEJPT0wpbm9XcmFwCi17Ci0gICAgcmV0dXJuIFtzZWxmIF90YWJsZUNlbGxFbGVtZW50XS0+Z2V0
QXR0cmlidXRlKG5vd3JhcEF0dHIpLmlzTnVsbCgpOwotfQotCi0tICh2b2lkKXNldE5vV3JhcDoo
Qk9PTClub1dyYXAKLXsKLSAgICBbc2VsZiBfdGFibGVDZWxsRWxlbWVudF0tPnNldEF0dHJpYnV0
ZShub3dyYXBBdHRyLCBub1dyYXAgPyAiIiA6IDApOwotfQotCi0tIChpbnQpcm93U3Bhbgotewot
ICAgIHJldHVybiBbc2VsZiBfdGFibGVDZWxsRWxlbWVudF0tPmdldEF0dHJpYnV0ZShyb3dzcGFu
QXR0cikudG9JbnQoKTsKLX0KLQotLSAodm9pZClzZXRSb3dTcGFuOihpbnQpcm93U3Bhbgotewot
ICAgIFtzZWxmIF90YWJsZUNlbGxFbGVtZW50XS0+c2V0QXR0cmlidXRlKHJvd3NwYW5BdHRyLCBT
dHJpbmc6Om51bWJlcihyb3dTcGFuKSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopc2NvcGUKLXsKLSAg
ICByZXR1cm4gW3NlbGYgX3RhYmxlQ2VsbEVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUoc2NvcGVBdHRy
KTsKLX0KLQotLSAodm9pZClzZXRTY29wZTooTlNTdHJpbmcgKilzY29wZQotewotICAgIFtzZWxm
IF90YWJsZUNlbGxFbGVtZW50XS0+c2V0QXR0cmlidXRlKHNjb3BlQXR0ciwgc2NvcGUpOwotfQot
Ci0tIChOU1N0cmluZyAqKXZBbGlnbgotewotICAgIHJldHVybiBbc2VsZiBfdGFibGVDZWxsRWxl
bWVudF0tPmdldEF0dHJpYnV0ZSh2YWxpZ25BdHRyKTsKLX0KLQotLSAodm9pZClzZXRWQWxpZ246
KE5TU3RyaW5nICopdkFsaWduCi17Ci0gICAgW3NlbGYgX3RhYmxlQ2VsbEVsZW1lbnRdLT5zZXRB
dHRyaWJ1dGUodmFsaWduQXR0ciwgdkFsaWduKTsKLX0KLQotLSAoTlNTdHJpbmcgKil3aWR0aAot
ewotICAgIHJldHVybiBbc2VsZiBfdGFibGVDZWxsRWxlbWVudF0tPmdldEF0dHJpYnV0ZSh3aWR0
aEF0dHIpOwotfQotCi0tICh2b2lkKXNldFdpZHRoOihOU1N0cmluZyAqKXdpZHRoCi17Ci0gICAg
W3NlbGYgX3RhYmxlQ2VsbEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUod2lkdGhBdHRyLCB3aWR0aCk7
Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUhUTUxUYWJsZUNlbGxFbGVtZW50IChX
ZWJDb3JlSW50ZXJuYWwpCi0KLSsgKERPTUhUTUxUYWJsZUNlbGxFbGVtZW50ICopX3RhYmxlQ2Vs
bEVsZW1lbnRXaXRoOihIVE1MVGFibGVDZWxsRWxlbWVudCAqKWltcGwKLXsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQqPihbRE9NTm9kZSBfbm9kZVdpdGg6
aW1wbF0pOwotfQotCi0tIChIVE1MVGFibGVDZWxsRWxlbWVudCAqKV90YWJsZUNlbGxFbGVtZW50
Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxUYWJsZUNlbGxFbGVtZW50Kj4oRE9NX2Nh
c3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01I
VE1MRnJhbWVTZXRFbGVtZW50Ci0KLS0gKEhUTUxGcmFtZVNldEVsZW1lbnQgKilfZnJhbWVTZXRF
bGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGcmFtZVNldEVsZW1lbnQqPihE
T01fY2FzdDxOb2RlKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopcm93cwotewot
ICAgIHJldHVybiBbc2VsZiBfZnJhbWVTZXRFbGVtZW50XS0+Z2V0QXR0cmlidXRlKHJvd3NBdHRy
KTsKLX0KLQotLSAodm9pZClzZXRSb3dzOihOU1N0cmluZyAqKXJvd3MKLXsKLSAgICBbc2VsZiBf
ZnJhbWVTZXRFbGVtZW50XS0+c2V0QXR0cmlidXRlKHJvd3NBdHRyLCByb3dzKTsKLX0KLQotLSAo
TlNTdHJpbmcgKiljb2xzCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9mcmFtZVNldEVsZW1lbnRdLT5n
ZXRBdHRyaWJ1dGUoY29sc0F0dHIpOwotfQotCi0tICh2b2lkKXNldENvbHM6KE5TU3RyaW5nICop
Y29scwotewotICAgIFtzZWxmIF9mcmFtZVNldEVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoY29sc0F0
dHIsIGNvbHMpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MRnJhbWVFbGVt
ZW50Ci0KLS0gKEhUTUxGcmFtZUVsZW1lbnQgKilfZnJhbWVFbGVtZW50Ci17Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PEhUTUxGcmFtZUVsZW1lbnQqPihET01fY2FzdDxOb2RlKj4oX2ludGVybmFs
KSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopZnJhbWVCb3JkZXIKLXsKLSAgICByZXR1cm4gW3NlbGYg
X2ZyYW1lRWxlbWVudF0tPmdldEF0dHJpYnV0ZShmcmFtZWJvcmRlckF0dHIpOwotfQotCi0tICh2
b2lkKXNldEZyYW1lQm9yZGVyOihOU1N0cmluZyAqKWZyYW1lQm9yZGVyCi17Ci0gICAgW3NlbGYg
X2ZyYW1lRWxlbWVudF0tPnNldEF0dHJpYnV0ZShmcmFtZWJvcmRlckF0dHIsIGZyYW1lQm9yZGVy
KTsKLX0KLQotLSAoTlNTdHJpbmcgKilsb25nRGVzYwotewotICAgIHJldHVybiBbc2VsZiBfZnJh
bWVFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGxvbmdkZXNjQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0
TG9uZ0Rlc2M6KE5TU3RyaW5nICopbG9uZ0Rlc2MKLXsKLSAgICBbc2VsZiBfZnJhbWVFbGVtZW50
XS0+c2V0QXR0cmlidXRlKGxvbmdkZXNjQXR0ciwgbG9uZ0Rlc2MpOwotfQotCi0tIChOU1N0cmlu
ZyAqKW1hcmdpbkhlaWdodAotewotICAgIHJldHVybiBbc2VsZiBfZnJhbWVFbGVtZW50XS0+Z2V0
QXR0cmlidXRlKG1hcmdpbmhlaWdodEF0dHIpOwotfQotCi0tICh2b2lkKXNldE1hcmdpbkhlaWdo
dDooTlNTdHJpbmcgKiltYXJnaW5IZWlnaHQKLXsKLSAgICBbc2VsZiBfZnJhbWVFbGVtZW50XS0+
c2V0QXR0cmlidXRlKG1hcmdpbmhlaWdodEF0dHIsIG1hcmdpbkhlaWdodCk7Ci19Ci0KLS0gKE5T
U3RyaW5nICopbWFyZ2luV2lkdGgKLXsKLSAgICByZXR1cm4gW3NlbGYgX2ZyYW1lRWxlbWVudF0t
PmdldEF0dHJpYnV0ZShtYXJnaW53aWR0aEF0dHIpOwotfQotCi0tICh2b2lkKXNldE1hcmdpbldp
ZHRoOihOU1N0cmluZyAqKW1hcmdpbldpZHRoCi17Ci0gICAgW3NlbGYgX2ZyYW1lRWxlbWVudF0t
PnNldEF0dHJpYnV0ZShtYXJnaW53aWR0aEF0dHIsIG1hcmdpbldpZHRoKTsKLX0KLQotLSAoTlNT
dHJpbmcgKiluYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9mcmFtZUVsZW1lbnRdLT5nZXRBdHRy
aWJ1dGUobmFtZUF0dHIpOwotfQotCi0tICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZQot
ewotICAgIFtzZWxmIF9mcmFtZUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUobmFtZUF0dHIsIG5hbWUp
OwotfQotCi0tIChCT09MKW5vUmVzaXplCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9mcmFtZUVsZW1l
bnRdLT5nZXRBdHRyaWJ1dGUobm9yZXNpemVBdHRyKS5pc051bGwoKTsKLX0KLQotLSAodm9pZClz
ZXROb1Jlc2l6ZTooQk9PTClub1Jlc2l6ZQotewotICAgIFtzZWxmIF9mcmFtZUVsZW1lbnRdLT5z
ZXRBdHRyaWJ1dGUobm9yZXNpemVBdHRyLCBub1Jlc2l6ZSA/ICIiIDogMCk7Ci19Ci0KLS0gKE5T
U3RyaW5nICopc2Nyb2xsaW5nCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9mcmFtZUVsZW1lbnRdLT5n
ZXRBdHRyaWJ1dGUoc2Nyb2xsaW5nQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0U2Nyb2xsaW5nOihO
U1N0cmluZyAqKXNjcm9sbGluZwotewotICAgIFtzZWxmIF9mcmFtZUVsZW1lbnRdLT5zZXRBdHRy
aWJ1dGUoc2Nyb2xsaW5nQXR0ciwgc2Nyb2xsaW5nKTsKLX0KLQotLSAoTlNTdHJpbmcgKilzcmMK
LXsKLSAgICByZXR1cm4gW3NlbGYgX2ZyYW1lRWxlbWVudF0tPmdldEF0dHJpYnV0ZShzcmNBdHRy
KTsKLX0KLQotLSAodm9pZClzZXRTcmM6KE5TU3RyaW5nICopc3JjCi17Ci0gICAgW3NlbGYgX2Zy
YW1lRWxlbWVudF0tPnNldEF0dHJpYnV0ZShzcmNBdHRyLCBzcmMpOwotfQotCi0tIChET01Eb2N1
bWVudCAqKWNvbnRlbnREb2N1bWVudAotewotICAgIHJldHVybiBbRE9NRG9jdW1lbnQgX2RvY3Vt
ZW50V2l0aDpbc2VsZiBfZnJhbWVFbGVtZW50XS0+Y29udGVudERvY3VtZW50KCldOwotfQotCi1A
ZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01IVE1MSUZyYW1lRWxlbWVudAotCi0tIChIVE1MSUZy
YW1lRWxlbWVudCAqKV9JRnJhbWVFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhU
TUxJRnJhbWVFbGVtZW50Kj4oRE9NX2Nhc3Q8Tm9kZSo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChO
U1N0cmluZyAqKWFsaWduCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9JRnJhbWVFbGVtZW50XS0+Z2V0
QXR0cmlidXRlKGFsaWduQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0QWxpZ246KE5TU3RyaW5nICop
YWxpZ24KLXsKLSAgICBbc2VsZiBfSUZyYW1lRWxlbWVudF0tPnNldEF0dHJpYnV0ZShhbGlnbkF0
dHIsIGFsaWduKTsKLX0KLQotLSAoTlNTdHJpbmcgKilmcmFtZUJvcmRlcgotewotICAgIHJldHVy
biBbc2VsZiBfSUZyYW1lRWxlbWVudF0tPmdldEF0dHJpYnV0ZShmcmFtZWJvcmRlckF0dHIpOwot
fQogCi0tICh2b2lkKXNldEZyYW1lQm9yZGVyOihOU1N0cmluZyAqKWZyYW1lQm9yZGVyCi17Ci0g
ICAgW3NlbGYgX0lGcmFtZUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUoZnJhbWVib3JkZXJBdHRyLCBm
cmFtZUJvcmRlcik7Ci19Ci0KLS0gKE5TU3RyaW5nICopaGVpZ2h0Ci17Ci0gICAgcmV0dXJuIFtz
ZWxmIF9JRnJhbWVFbGVtZW50XS0+Z2V0QXR0cmlidXRlKGhlaWdodEF0dHIpOwotfQotCi0tICh2
b2lkKXNldEhlaWdodDooTlNTdHJpbmcgKiloZWlnaHQKLXsKLSAgICBbc2VsZiBfSUZyYW1lRWxl
bWVudF0tPnNldEF0dHJpYnV0ZShoZWlnaHRBdHRyLCBoZWlnaHQpOwotfQotCi0tIChOU1N0cmlu
ZyAqKWxvbmdEZXNjCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9JRnJhbWVFbGVtZW50XS0+Z2V0QXR0
cmlidXRlKGxvbmdkZXNjQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0TG9uZ0Rlc2M6KE5TU3RyaW5n
ICopbG9uZ0Rlc2MKLXsKLSAgICBbc2VsZiBfSUZyYW1lRWxlbWVudF0tPnNldEF0dHJpYnV0ZShs
b25nZGVzY0F0dHIsIGxvbmdEZXNjKTsKLX0KLQotLSAoTlNTdHJpbmcgKiltYXJnaW5IZWlnaHQK
LXsKLSAgICByZXR1cm4gW3NlbGYgX0lGcmFtZUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUobWFyZ2lu
aGVpZ2h0QXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0TWFyZ2luSGVpZ2h0OihOU1N0cmluZyAqKW1h
cmdpbkhlaWdodAotewotICAgIFtzZWxmIF9JRnJhbWVFbGVtZW50XS0+c2V0QXR0cmlidXRlKG1h
cmdpbmhlaWdodEF0dHIsIG1hcmdpbkhlaWdodCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbWFyZ2lu
V2lkdGgKLXsKLSAgICByZXR1cm4gW3NlbGYgX0lGcmFtZUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUo
bWFyZ2lud2lkdGhBdHRyKTsKLX0KLQotLSAodm9pZClzZXRNYXJnaW5XaWR0aDooTlNTdHJpbmcg
KiltYXJnaW5XaWR0aAotewotICAgIFtzZWxmIF9JRnJhbWVFbGVtZW50XS0+c2V0QXR0cmlidXRl
KG1hcmdpbndpZHRoQXR0ciwgbWFyZ2luV2lkdGgpOwotfQotCi0tIChOU1N0cmluZyAqKW5hbWUK
LXsKLSAgICByZXR1cm4gW3NlbGYgX0lGcmFtZUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUobmFtZUF0
dHIpOwotfQotCi0tICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZQotewotICAgIFtzZWxm
IF9JRnJhbWVFbGVtZW50XS0+c2V0QXR0cmlidXRlKG5hbWVBdHRyLCBuYW1lKTsKLX0KLQotLSAo
Qk9PTClub1Jlc2l6ZQotewotICAgIHJldHVybiBbc2VsZiBfSUZyYW1lRWxlbWVudF0tPmdldEF0
dHJpYnV0ZShub3Jlc2l6ZUF0dHIpLmlzTnVsbCgpOwotfQotCi0tICh2b2lkKXNldE5vUmVzaXpl
OihCT09MKW5vUmVzaXplCi17Ci0gICAgW3NlbGYgX0lGcmFtZUVsZW1lbnRdLT5zZXRBdHRyaWJ1
dGUobm9yZXNpemVBdHRyLCBub1Jlc2l6ZSA/ICIiIDogMCk7Ci19Ci0KLS0gKE5TU3RyaW5nICop
c2Nyb2xsaW5nCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9JRnJhbWVFbGVtZW50XS0+Z2V0QXR0cmli
dXRlKHNjcm9sbGluZ0F0dHIpOwotfQotCi0tICh2b2lkKXNldFNjcm9sbGluZzooTlNTdHJpbmcg
KilzY3JvbGxpbmcKLXsKLSAgICBbc2VsZiBfSUZyYW1lRWxlbWVudF0tPnNldEF0dHJpYnV0ZShz
Y3JvbGxpbmdBdHRyLCBzY3JvbGxpbmcpOwotfQotCi0tIChOU1N0cmluZyAqKXNyYwotewotICAg
IHJldHVybiBbc2VsZiBfSUZyYW1lRWxlbWVudF0tPmdldEF0dHJpYnV0ZShzcmNBdHRyKTsKLX0K
LQotLSAodm9pZClzZXRTcmM6KE5TU3RyaW5nICopc3JjCi17Ci0gICAgW3NlbGYgX0lGcmFtZUVs
ZW1lbnRdLT5zZXRBdHRyaWJ1dGUoc3JjQXR0ciwgc3JjKTsKLX0KLQotLSAoTlNTdHJpbmcgKil3
aWR0aAotewotICAgIHJldHVybiBbc2VsZiBfSUZyYW1lRWxlbWVudF0tPmdldEF0dHJpYnV0ZSh3
aWR0aEF0dHIpOwotfQotCi0tICh2b2lkKXNldFdpZHRoOihOU1N0cmluZyAqKXdpZHRoCi17Ci0g
ICAgW3NlbGYgX0lGcmFtZUVsZW1lbnRdLT5zZXRBdHRyaWJ1dGUod2lkdGhBdHRyLCB3aWR0aCk7
Ci19CiAKLS0gKERPTURvY3VtZW50ICopY29udGVudERvY3VtZW50Ci17Ci0gICAgcmV0dXJuIFtE
T01Eb2N1bWVudCBfZG9jdW1lbnRXaXRoOltzZWxmIF9JRnJhbWVFbGVtZW50XS0+Y29udGVudERv
Y3VtZW50KCldOwotfQotCi1AZW5kCiAKICNwcmFnbWEgbWFyayBET00gRVhURU5TSU9OUwogCkBA
IC00MTE4LDcgKzY2MCw3IEBAIHN0YXRpYyBOU1ZpZXcgKnZpZXdGb3JFbGVtZW50KERPTUVsZW1l
bnQKIC0gKE5TUmVjdClfcmVjdE9uU2NyZWVuCiB7CiAgICAgLy8gUmV0dXJucyBib3VuZGluZyBy
ZWN0IG9mIHRleHQgZmllbGQsIGluIHNjcmVlbiBjb29yZGluYXRlcy4KLSAgICBOU1ZpZXcqIHZp
ZXcgPSBbc2VsZiBfaW5wdXRFbGVtZW50XS0+ZG9jdW1lbnQoKS0+dmlldygpLT5nZXREb2N1bWVu
dFZpZXcoKTsKKyAgICBOU1ZpZXcqIHZpZXcgPSBbc2VsZiBfSFRNTElucHV0RWxlbWVudF0tPmRv
Y3VtZW50KCktPnZpZXcoKS0+Z2V0RG9jdW1lbnRWaWV3KCk7CiAgICAgTlNSZWN0IHJlc3VsdCA9
IFtzZWxmIGJvdW5kaW5nQm94XTsKICAgICByZXN1bHQgPSBbdmlldyBjb252ZXJ0UmVjdDpyZXN1
bHQgdG9WaWV3Om5pbF07CiAgICAgcmVzdWx0Lm9yaWdpbiA9IFtbdmlldyB3aW5kb3ddIGNvbnZl
cnRCYXNlVG9TY3JlZW46cmVzdWx0Lm9yaWdpbl07CkBAIC00MTI3LDcgKzY2OSw3IEBAIHN0YXRp
YyBOU1ZpZXcgKnZpZXdGb3JFbGVtZW50KERPTUVsZW1lbnQKIAogLSAodm9pZClfcmVwbGFjZUNo
YXJhY3RlcnNJblJhbmdlOihOU1JhbmdlKXRhcmdldFJhbmdlIHdpdGhTdHJpbmc6KE5TU3RyaW5n
ICopcmVwbGFjZW1lbnRTdHJpbmcgc2VsZWN0aW5nRnJvbUluZGV4OihpbnQpaW5kZXgKIHsKLSAg
ICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IFtzZWxmIF9pbnB1dEVsZW1lbnRdOworICAgIEhU
TUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gW3NlbGYgX0hUTUxJbnB1dEVsZW1lbnRdOwogICAgIGlm
IChpbnB1dCkgewogICAgICAgICBTdHJpbmcgdmFsdWUgPSBpbnB1dC0+dmFsdWUoKS5yZXBsYWNl
KHRhcmdldFJhbmdlLmxvY2F0aW9uLCB0YXJnZXRSYW5nZS5sZW5ndGgsIHJlcGxhY2VtZW50U3Ry
aW5nKTsKICAgICAgICAgaW5wdXQtPnNldFZhbHVlKHZhbHVlKTsKQEAgLTQxMzcsNyArNjc5LDcg
QEAgc3RhdGljIE5TVmlldyAqdmlld0ZvckVsZW1lbnQoRE9NRWxlbWVudAogCiAtIChOU1Jhbmdl
KV9zZWxlY3RlZFJhbmdlCiB7Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBbc2VsZiBf
aW5wdXRFbGVtZW50XTsKKyAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IFtzZWxmIF9IVE1M
SW5wdXRFbGVtZW50XTsKICAgICBpZiAoaW5wdXQpIHsKICAgICAgICAgaW50IHN0YXJ0ID0gaW5w
dXQtPnNlbGVjdGlvblN0YXJ0KCk7CiAgICAgICAgIGludCBlbmQgPSBpbnB1dC0+c2VsZWN0aW9u
RW5kKCk7CkBAIC00MTUxLDcgKzY5Myw3IEBAIHN0YXRpYyBOU1ZpZXcgKnZpZXdGb3JFbGVtZW50
KERPTUVsZW1lbnQKICAgICAvLyBUaGlzIG5vdGlmaWVzIHRoZSBpbnB1dCBlbGVtZW50IHRoYXQg
dGhlIGNvbnRlbnQgaGFzIGJlZW4gYXV0b2ZpbGxlZAogICAgIC8vIFRoaXMgYWxsb3dzIFdlYktp
dCB0byBvYmV5IHRoZSAtd2Via2l0LWF1dG9maWxsIHBzZXVkbyBzdHlsZSwgd2hpY2gKICAgICAv
LyBjaGFuZ2VzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLgotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlu
cHV0ID0gW3NlbGYgX2lucHV0RWxlbWVudF07CisgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQg
PSBbc2VsZiBfSFRNTElucHV0RWxlbWVudF07CiAgICAgaWYgKGlucHV0KQogICAgICAgICBpbnB1
dC0+c2V0QXV0b2ZpbGxlZChmaWxsZWQpOwogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTUhUTUxBbmNob3JFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUhUTUxBbmNob3JFbGVtZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NSFRNTEFuY2hvckVsZW1lbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxz
YW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MRWxl
bWVudC5oPgorCitAaW50ZXJmYWNlIERPTUhUTUxBbmNob3JFbGVtZW50IDogRE9NSFRNTEVsZW1l
bnQKKy0gKE5TU3RyaW5nICopYWNjZXNzS2V5OworLSAodm9pZClzZXRBY2Nlc3NLZXk6KE5TU3Ry
aW5nICopYWNjZXNzS2V5OworLSAoTlNTdHJpbmcgKiljaGFyc2V0OworLSAodm9pZClzZXRDaGFy
c2V0OihOU1N0cmluZyAqKWNoYXJzZXQ7CistIChOU1N0cmluZyAqKWNvb3JkczsKKy0gKHZvaWQp
c2V0Q29vcmRzOihOU1N0cmluZyAqKWNvb3JkczsKKy0gKE5TU3RyaW5nICopaHJlZjsKKy0gKHZv
aWQpc2V0SHJlZjooTlNTdHJpbmcgKilocmVmOworLSAoTlNTdHJpbmcgKilocmVmbGFuZzsKKy0g
KHZvaWQpc2V0SHJlZmxhbmc6KE5TU3RyaW5nICopaHJlZmxhbmc7CistIChOU1N0cmluZyAqKW5h
bWU7CistICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZTsKKy0gKE5TU3RyaW5nICopcmVs
OworLSAodm9pZClzZXRSZWw6KE5TU3RyaW5nICopcmVsOworLSAoTlNTdHJpbmcgKilyZXY7Cist
ICh2b2lkKXNldFJldjooTlNTdHJpbmcgKilyZXY7CistIChOU1N0cmluZyAqKXNoYXBlOworLSAo
dm9pZClzZXRTaGFwZTooTlNTdHJpbmcgKilzaGFwZTsKKy0gKGludCl0YWJJbmRleDsKKy0gKHZv
aWQpc2V0VGFiSW5kZXg6KGludCl0YWJJbmRleDsKKy0gKE5TU3RyaW5nICopdGFyZ2V0OworLSAo
dm9pZClzZXRUYXJnZXQ6KE5TU3RyaW5nICopdGFyZ2V0OworLSAoTlNTdHJpbmcgKil0eXBlOwor
LSAodm9pZClzZXRUeXBlOihOU1N0cmluZyAqKXR5cGU7CistICh2b2lkKWJsdXI7CistICh2b2lk
KWZvY3VzOworQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxBbmNob3JF
bGVtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MQW5j
aG9yRWxlbWVudC5tbQkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01I
VE1MQW5jaG9yRWxlbWVudC5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNzYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0Bn
bWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRE9NSFRNTEFu
Y2hvckVsZW1lbnQuaCIKKworI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUhU
TUxJbnRlcm5hbC5oIgorI2ltcG9ydCAiSFRNTEFuY2hvckVsZW1lbnQuaCIKKyNpbXBvcnQgIkVs
ZW1lbnQuaCIKKyNpbXBvcnQgIkRvY3VtZW50LmgiCisKK0BpbXBsZW1lbnRhdGlvbiBET01IVE1M
QW5jaG9yRWxlbWVudAorCistIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudCAqKV9hbmNob3JF
bGVtZW50Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxBbmNob3JFbGVt
ZW50ICo+KERPTV9jYXN0PFdlYkNvcmU6Ok5vZGUgKj4oX2ludGVybmFsKSk7Cit9CisKKy0gKE5T
U3RyaW5nICopYWNjZXNzS2V5Cit7CisgICAgcmV0dXJuIFtzZWxmIF9hbmNob3JFbGVtZW50XS0+
YWNjZXNzS2V5KCk7Cit9CisKKy0gKHZvaWQpc2V0QWNjZXNzS2V5OihOU1N0cmluZyAqKWFjY2Vz
c0tleQoreworICAgIFtzZWxmIF9hbmNob3JFbGVtZW50XS0+c2V0QWNjZXNzS2V5KGFjY2Vzc0tl
eSk7Cit9CisKKy0gKE5TU3RyaW5nICopY2hhcnNldAoreworICAgIHJldHVybiBbc2VsZiBfYW5j
aG9yRWxlbWVudF0tPmNoYXJzZXQoKTsKK30KKworLSAodm9pZClzZXRDaGFyc2V0OihOU1N0cmlu
ZyAqKWNoYXJzZXQKK3sKKyAgICBbc2VsZiBfYW5jaG9yRWxlbWVudF0tPnNldENoYXJzZXQoY2hh
cnNldCk7Cit9CisKKy0gKE5TU3RyaW5nICopY29vcmRzCit7CisgICAgcmV0dXJuIFtzZWxmIF9h
bmNob3JFbGVtZW50XS0+Y29vcmRzKCk7Cit9CisKKy0gKHZvaWQpc2V0Q29vcmRzOihOU1N0cmlu
ZyAqKWNvb3JkcworeworICAgIFtzZWxmIF9hbmNob3JFbGVtZW50XS0+c2V0Q29vcmRzKGNvb3Jk
cyk7Cit9CisKKy0gKE5TU3RyaW5nICopaHJlZgoreworICAgIHJldHVybiBbc2VsZiBfYW5jaG9y
RWxlbWVudF0tPmhyZWYoKTsKK30KKworLSAodm9pZClzZXRIcmVmOihOU1N0cmluZyAqKWhyZWYK
K3sKKyAgICBbc2VsZiBfYW5jaG9yRWxlbWVudF0tPnNldEhyZWYoaHJlZik7Cit9CisKKy0gKE5T
U3RyaW5nICopaHJlZmxhbmcKK3sKKyAgICByZXR1cm4gW3NlbGYgX2FuY2hvckVsZW1lbnRdLT5o
cmVmbGFuZygpOworfQorCistICh2b2lkKXNldEhyZWZsYW5nOihOU1N0cmluZyAqKWhyZWZsYW5n
Cit7CisgICAgW3NlbGYgX2FuY2hvckVsZW1lbnRdLT5zZXRIcmVmbGFuZyhocmVmbGFuZyk7Cit9
CisKKy0gKE5TU3RyaW5nICopbmFtZQoreworICAgIHJldHVybiBbc2VsZiBfYW5jaG9yRWxlbWVu
dF0tPm5hbWUoKTsKK30KKworLSAodm9pZClzZXROYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAg
ICBbc2VsZiBfYW5jaG9yRWxlbWVudF0tPnNldE5hbWUobmFtZSk7Cit9CisKKy0gKE5TU3RyaW5n
ICopcmVsCit7CisgICAgcmV0dXJuIFtzZWxmIF9hbmNob3JFbGVtZW50XS0+cmVsKCk7Cit9CisK
Ky0gKHZvaWQpc2V0UmVsOihOU1N0cmluZyAqKXJlbAoreworICAgIFtzZWxmIF9hbmNob3JFbGVt
ZW50XS0+c2V0UmVsKHJlbCk7Cit9CisKKy0gKE5TU3RyaW5nICopcmV2Cit7CisgICAgcmV0dXJu
IFtzZWxmIF9hbmNob3JFbGVtZW50XS0+cmV2KCk7Cit9CisKKy0gKHZvaWQpc2V0UmV2OihOU1N0
cmluZyAqKXJldgoreworICAgIFtzZWxmIF9hbmNob3JFbGVtZW50XS0+c2V0UmV2KHJldik7Cit9
CisKKy0gKE5TU3RyaW5nICopc2hhcGUKK3sKKyAgICByZXR1cm4gW3NlbGYgX2FuY2hvckVsZW1l
bnRdLT5zaGFwZSgpOworfQorCistICh2b2lkKXNldFNoYXBlOihOU1N0cmluZyAqKXNoYXBlCit7
CisgICAgW3NlbGYgX2FuY2hvckVsZW1lbnRdLT5zZXRTaGFwZShzaGFwZSk7Cit9CisKKy0gKGlu
dCl0YWJJbmRleAoreworICAgIHJldHVybiBbc2VsZiBfYW5jaG9yRWxlbWVudF0tPnRhYkluZGV4
KCk7Cit9CisKKy0gKHZvaWQpc2V0VGFiSW5kZXg6KGludCl0YWJJbmRleAoreworICAgIFtzZWxm
IF9hbmNob3JFbGVtZW50XS0+c2V0VGFiSW5kZXgodGFiSW5kZXgpOworfQorCistIChOU1N0cmlu
ZyAqKXRhcmdldAoreworICAgIHJldHVybiBbc2VsZiBfYW5jaG9yRWxlbWVudF0tPnRhcmdldCgp
OworfQorCistICh2b2lkKXNldFRhcmdldDooTlNTdHJpbmcgKil0YXJnZXQKK3sKKyAgICBbc2Vs
ZiBfYW5jaG9yRWxlbWVudF0tPnNldFRhcmdldCh0YXJnZXQpOworfQorCistIChOU1N0cmluZyAq
KXR5cGUKK3sKKyAgICByZXR1cm4gW3NlbGYgX2FuY2hvckVsZW1lbnRdLT50eXBlKCk7Cit9CisK
Ky0gKHZvaWQpc2V0VHlwZTooTlNTdHJpbmcgKil0eXBlCit7CisgICAgW3NlbGYgX2FuY2hvckVs
ZW1lbnRdLT5zZXRUeXBlKHR5cGUpOworfQorCistICh2b2lkKWJsdXIKK3sKKyAgICBXZWJDb3Jl
OjpIVE1MQW5jaG9yRWxlbWVudCAqaW1wbCA9IFtzZWxmIF9hbmNob3JFbGVtZW50XTsKKyAgICBp
ZiAoaW1wbC0+ZG9jdW1lbnQoKS0+Zm9jdXNOb2RlKCkgPT0gaW1wbCkKKyAgICAgICAgaW1wbC0+
ZG9jdW1lbnQoKS0+c2V0Rm9jdXNOb2RlKDApOworfQorCistICh2b2lkKWZvY3VzCit7CisgICAg
V2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQgKmltcGwgPSBbc2VsZiBfYW5jaG9yRWxlbWVudF07
CisgICAgaW1wbC0+ZG9jdW1lbnQoKS0+c2V0Rm9jdXNOb2RlKHN0YXRpY19jYXN0PFdlYkNvcmU6
OkVsZW1lbnQgKj4oaW1wbCkpOworfQorCitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NSFRNTEFwcGxldEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NSFRNTEFwcGxldEVsZW1lbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01IVE1MQXBwbGV0RWxlbWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcg
PHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxF
bGVtZW50Lmg+CisKK0BpbnRlcmZhY2UgRE9NSFRNTEFwcGxldEVsZW1lbnQgOiBET01IVE1MRWxl
bWVudAorLSAoTlNTdHJpbmcgKilhbGlnbjsKKy0gKHZvaWQpc2V0QWxpZ246KE5TU3RyaW5nICop
YWxpZ247CistIChOU1N0cmluZyAqKWFsdDsKKy0gKHZvaWQpc2V0QWx0OihOU1N0cmluZyAqKWFs
dDsKKy0gKE5TU3RyaW5nICopYXJjaGl2ZTsKKy0gKHZvaWQpc2V0QXJjaGl2ZTooTlNTdHJpbmcg
KilhcmNoaXZlOworLSAoTlNTdHJpbmcgKiljb2RlOworLSAodm9pZClzZXRDb2RlOihOU1N0cmlu
ZyAqKWNvZGU7CistIChOU1N0cmluZyAqKWNvZGVCYXNlOworLSAodm9pZClzZXRDb2RlQmFzZToo
TlNTdHJpbmcgKiljb2RlQmFzZTsKKy0gKE5TU3RyaW5nICopaGVpZ2h0OworLSAodm9pZClzZXRI
ZWlnaHQ6KE5TU3RyaW5nICopaGVpZ2h0OworCisvL0ZJWE1FOiBET00gc3BlYyBzYXlzIGhzcGFj
ZSBzaG91bGQgYmUgYSBET01TdHJpbmcsIG5vdCBhbiBpbnQKKy0gKGludCloc3BhY2U7CistICh2
b2lkKXNldEhzcGFjZTooaW50KWhzcGFjZTsKKworLSAoTlNTdHJpbmcgKiluYW1lOworLSAodm9p
ZClzZXROYW1lOihOU1N0cmluZyAqKW5hbWU7CistIChOU1N0cmluZyAqKW9iamVjdDsKKy0gKHZv
aWQpc2V0T2JqZWN0OihOU1N0cmluZyAqKW9iamVjdDsKKworLy9GSVhNRTogRE9NIHNwZWMgc2F5
cyB2c3BhY2Ugc2hvdWxkIGJlIGEgRE9NU3RyaW5nLCBub3QgYW4gaW50CistIChpbnQpdnNwYWNl
OworLSAodm9pZClzZXRWc3BhY2U6KGludCl2c3BhY2U7CisKKy0gKE5TU3RyaW5nICopd2lkdGg7
CistICh2b2lkKXNldFdpZHRoOihOU1N0cmluZyAqKXdpZHRoOworQGVuZApJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxBcHBsZXRFbGVtZW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MQXBwbGV0RWxlbWVudC5tbQkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MQXBwbGV0RWxlbWVudC5tbQkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiRE9NSFRNTEFwcGxldEVsZW1lbnQuaCIKKworI2ltcG9ydCAi
RE9NSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUhUTUxJbnRlcm5hbC5oIgorI2ltcG9ydCAiSFRN
TEFwcGxldEVsZW1lbnQuaCIKKyNpbXBvcnQgIlBsYXRmb3JtU3RyaW5nLmgiCisKK0BpbXBsZW1l
bnRhdGlvbiBET01IVE1MQXBwbGV0RWxlbWVudAorCistIChXZWJDb3JlOjpIVE1MQXBwbGV0RWxl
bWVudCAqKV9hcHBsZXRFbGVtZW50Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6
OkhUTUxBcHBsZXRFbGVtZW50ICo+KERPTV9jYXN0PFdlYkNvcmU6Ok5vZGUgKj4oX2ludGVybmFs
KSk7Cit9CisKKy0gKE5TU3RyaW5nICopYWxpZ24KK3sKKyAgICByZXR1cm4gW3NlbGYgX2FwcGxl
dEVsZW1lbnRdLT5hbGlnbigpOworfQorCistICh2b2lkKXNldEFsaWduOihOU1N0cmluZyAqKWFs
aWduCit7CisgICAgW3NlbGYgX2FwcGxldEVsZW1lbnRdLT5zZXRBbGlnbihhbGlnbik7Cit9CisK
Ky0gKE5TU3RyaW5nICopYWx0Cit7CisgICAgcmV0dXJuIFtzZWxmIF9hcHBsZXRFbGVtZW50XS0+
YWx0KCk7Cit9CisKKy0gKHZvaWQpc2V0QWx0OihOU1N0cmluZyAqKWFsdAoreworICAgIFtzZWxm
IF9hcHBsZXRFbGVtZW50XS0+c2V0QWx0KGFsdCk7Cit9CisKKy0gKE5TU3RyaW5nICopYXJjaGl2
ZQoreworICAgIHJldHVybiBbc2VsZiBfYXBwbGV0RWxlbWVudF0tPmFyY2hpdmUoKTsKK30KKwor
LSAodm9pZClzZXRBcmNoaXZlOihOU1N0cmluZyAqKWFyY2hpdmUKK3sKKyAgICBbc2VsZiBfYXBw
bGV0RWxlbWVudF0tPnNldEFyY2hpdmUoYXJjaGl2ZSk7Cit9CisKKy0gKE5TU3RyaW5nICopY29k
ZQoreworICAgIHJldHVybiBbc2VsZiBfYXBwbGV0RWxlbWVudF0tPmNvZGUoKTsKK30KKworLSAo
dm9pZClzZXRDb2RlOihOU1N0cmluZyAqKWNvZGUKK3sKKyAgICBbc2VsZiBfYXBwbGV0RWxlbWVu
dF0tPnNldENvZGUoY29kZSk7Cit9CisKKy0gKE5TU3RyaW5nICopY29kZUJhc2UKK3sKKyAgICBy
ZXR1cm4gW3NlbGYgX2FwcGxldEVsZW1lbnRdLT5jb2RlQmFzZSgpOworfQorCistICh2b2lkKXNl
dENvZGVCYXNlOihOU1N0cmluZyAqKWNvZGVCYXNlCit7CisgICAgW3NlbGYgX2FwcGxldEVsZW1l
bnRdLT5zZXRDb2RlQmFzZShjb2RlQmFzZSk7Cit9CisKKy0gKE5TU3RyaW5nICopaGVpZ2h0Cit7
CisgICAgcmV0dXJuIFtzZWxmIF9hcHBsZXRFbGVtZW50XS0+aGVpZ2h0KCk7Cit9CisKKy0gKHZv
aWQpc2V0SGVpZ2h0OihOU1N0cmluZyAqKWhlaWdodAoreworICAgIFtzZWxmIF9hcHBsZXRFbGVt
ZW50XS0+c2V0SGVpZ2h0KGhlaWdodCk7Cit9CisKKy8vRklYTUU6IERPTSBzcGVjIHNheXMgaHNw
YWNlIHNob3VsZCBiZSBhIERPTVN0cmluZywgbm90IGFuIGludAorLSAoaW50KWhzcGFjZQorewor
ICAgIHJldHVybiBbc2VsZiBfYXBwbGV0RWxlbWVudF0tPmhzcGFjZSgpLnRvSW50KCk7Cit9CisK
Ky0gKHZvaWQpc2V0SHNwYWNlOihpbnQpaHNwYWNlCit7CisgICAgW3NlbGYgX2FwcGxldEVsZW1l
bnRdLT5zZXRIc3BhY2UoV2ViQ29yZTo6U3RyaW5nOjpudW1iZXIoaHNwYWNlKSk7Cit9CisKKwor
LSAoTlNTdHJpbmcgKiluYW1lCit7CisgICAgcmV0dXJuIFtzZWxmIF9hcHBsZXRFbGVtZW50XS0+
bmFtZSgpOworfQorCistICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAgIFtz
ZWxmIF9hcHBsZXRFbGVtZW50XS0+c2V0TmFtZShuYW1lKTsKK30KKworLSAoTlNTdHJpbmcgKilv
YmplY3QKK3sKKyAgICByZXR1cm4gW3NlbGYgX2FwcGxldEVsZW1lbnRdLT5vYmplY3QoKTsKK30K
KworLSAodm9pZClzZXRPYmplY3Q6KE5TU3RyaW5nICopb2JqZWN0Cit7CisgICAgW3NlbGYgX2Fw
cGxldEVsZW1lbnRdLT5zZXRPYmplY3Qob2JqZWN0KTsKK30KKworLy9GSVhNRTogRE9NIHNwZWMg
c2F5cyB2c3BhY2Ugc2hvdWxkIGJlIGEgRE9NU3RyaW5nLCBub3QgYW4gaW50CistIChpbnQpdnNw
YWNlCit7CisgICAgcmV0dXJuIFtzZWxmIF9hcHBsZXRFbGVtZW50XS0+dnNwYWNlKCkudG9JbnQo
KTsKK30KKworLSAodm9pZClzZXRWc3BhY2U6KGludCl2c3BhY2UKK3sKKyAgICBbc2VsZiBfYXBw
bGV0RWxlbWVudF0tPnNldFZzcGFjZShXZWJDb3JlOjpTdHJpbmc6Om51bWJlcih2c3BhY2UpKTsK
K30KKworCistIChOU1N0cmluZyAqKXdpZHRoCit7CisgICAgcmV0dXJuIFtzZWxmIF9hcHBsZXRF
bGVtZW50XS0+d2lkdGgoKTsKK30KKworLSAodm9pZClzZXRXaWR0aDooTlNTdHJpbmcgKil3aWR0
aAoreworICAgIFtzZWxmIF9hcHBsZXRFbGVtZW50XS0+c2V0V2lkdGgod2lkdGgpOworfQorCitA
ZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTENvbGxlY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTENvbGxlY3Rpb24uaAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MQ29sbGVjdGlvbi5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0IEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1w
b3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgorCitAY2xhc3MgRE9NTm9kZTsKKworQGludGVyZmFj
ZSBET01IVE1MQ29sbGVjdGlvbiA6IERPTU9iamVjdAorLSAodW5zaWduZWQpbGVuZ3RoOworLSAo
RE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4OworLSAoRE9NTm9kZSAqKW5hbWVkSXRlbToo
TlNTdHJpbmcgKiluYW1lOworQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhU
TUxDb2xsZWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01I
VE1MQ29sbGVjdGlvbi5tbQkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01IVE1MQ29sbGVjdGlvbi5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdt
YWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRE9NSFRNTENvbGxl
Y3Rpb24uaCIKKworI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUhUTUxJbnRl
cm5hbC5oIgorI2ltcG9ydCAiSFRNTENvbGxlY3Rpb24uaCIKKworI2ltcG9ydCAiRE9NTm9kZS5o
IgorI2ltcG9ydCAiUGxhdGZvcm1TdHJpbmcuaCIKKworQGltcGxlbWVudGF0aW9uIERPTUhUTUxD
b2xsZWN0aW9uCisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIGlmIChfaW50ZXJuYWwpCisgICAg
ICAgIERPTV9jYXN0PFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uKj4oX2ludGVybmFsKS0+ZGVyZWYo
KTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpZmluYWxpemUKK3sKKyAgICBp
ZiAoX2ludGVybmFsKQorICAgICAgICBET01fY2FzdDxXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbio+
KF9pbnRlcm5hbCktPmRlcmVmKCk7CisgICAgW3N1cGVyIGZpbmFsaXplXTsKK30KKworLSAoV2Vi
Q29yZTo6SFRNTENvbGxlY3Rpb24gKilfY29sbGVjdGlvbgoreworICAgIHJldHVybiBET01fY2Fz
dDxXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbio+KF9pbnRlcm5hbCk7Cit9CisKKy0gKHVuc2lnbmVk
KWxlbmd0aAoreworICAgIHJldHVybiBbc2VsZiBfY29sbGVjdGlvbl0tPmxlbmd0aCgpOworfQor
CistIChET01Ob2RlICopaXRlbToodW5zaWduZWQpaW5kZXgKK3sKKyAgICByZXR1cm4gW0RPTU5v
ZGUgX25vZGVXaXRoOltzZWxmIF9jb2xsZWN0aW9uXS0+aXRlbShpbmRleCldOworfQorCistIChE
T01Ob2RlICopbmFtZWRJdGVtOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gW0RPTU5v
ZGUgX25vZGVXaXRoOltzZWxmIF9jb2xsZWN0aW9uXS0+bmFtZWRJdGVtKG5hbWUpXTsKK30KKwor
QGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxEb2N1bWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MRG9jdW1lbnQuaAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MRG9jdW1lbnQuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8
V2ViQ29yZS9ET01Eb2N1bWVudC5oPgorCitAY2xhc3MgRE9NRWxlbWVudDsKK0BjbGFzcyBET01I
VE1MQ29sbGVjdGlvbjsKK0BjbGFzcyBET01IVE1MRWxlbWVudDsKK0BjbGFzcyBET01Ob2RlTGlz
dDsKKworQGludGVyZmFjZSBET01IVE1MRG9jdW1lbnQgOiBET01Eb2N1bWVudAorLSAoTlNTdHJp
bmcgKil0aXRsZTsKKy0gKHZvaWQpc2V0VGl0bGU6KE5TU3RyaW5nICopdGl0bGU7CistIChOU1N0
cmluZyAqKXJlZmVycmVyOworLSAoTlNTdHJpbmcgKilkb21haW47CistIChOU1N0cmluZyAqKVVS
TDsKKy0gKERPTUhUTUxFbGVtZW50ICopYm9keTsKKy0gKHZvaWQpc2V0Qm9keTooRE9NSFRNTEVs
ZW1lbnQgKilib2R5OworLSAoRE9NSFRNTENvbGxlY3Rpb24gKilpbWFnZXM7CistIChET01IVE1M
Q29sbGVjdGlvbiAqKWFwcGxldHM7CistIChET01IVE1MQ29sbGVjdGlvbiAqKWxpbmtzOworLSAo
RE9NSFRNTENvbGxlY3Rpb24gKilmb3JtczsKKy0gKERPTUhUTUxDb2xsZWN0aW9uICopYW5jaG9y
czsKKy0gKE5TU3RyaW5nICopY29va2llOworLSAodm9pZClzZXRDb29raWU6KE5TU3RyaW5nICop
Y29va2llOworLSAodm9pZClvcGVuOworLSAodm9pZCljbG9zZTsKKy0gKHZvaWQpd3JpdGU6KE5T
U3RyaW5nICopdGV4dDsKKy0gKHZvaWQpd3JpdGVsbjooTlNTdHJpbmcgKil0ZXh0OworLSAoRE9N
RWxlbWVudCAqKWdldEVsZW1lbnRCeUlkOihOU1N0cmluZyAqKWVsZW1lbnRJZDsKKy0gKERPTU5v
ZGVMaXN0ICopZ2V0RWxlbWVudHNCeU5hbWU6KE5TU3RyaW5nICopZWxlbWVudE5hbWU7CitAZW5k
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTERvY3VtZW50Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MRG9jdW1lbnQubW0JKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTERvY3VtZW50Lm1tCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJET01IVE1MRG9jdW1lbnQuaCIKKworI2ltcG9ydCAiRE9NSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIkhUTUxEb2N1bWVudC5oIiAvLyBpbXBsZW1lbnRhdGlvbiBjbGFz
cworI2ltcG9ydCAiRE9NSFRNTEludGVybmFsLmgiCisKKyNpbXBvcnQgIkRPTUhUTUxDb2xsZWN0
aW9uLmgiCisjaW1wb3J0ICJET01IVE1MRWxlbWVudC5oIgorI2ltcG9ydCAiRE9NTm9kZUxpc3Qu
aCIKKyNpbXBvcnQgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW1wb3J0ICJOYW1lTm9kZUxpc3QuaCIK
KyNpbXBvcnQgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBET01IVE1MRG9j
dW1lbnQKKworLSAoV2ViQ29yZTo6SFRNTERvY3VtZW50ICopX0hUTUxEb2N1bWVudAoreworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRG9jdW1lbnQgKj4oRE9NX2Nhc3Q8V2Vi
Q29yZTo6Tm9kZSAqPihfaW50ZXJuYWwpKTsKK30KKworLSAoTlNTdHJpbmcgKil0aXRsZQorewor
ICAgIHJldHVybiBbc2VsZiBfSFRNTERvY3VtZW50XS0+dGl0bGUoKTsKK30KKworLSAodm9pZClz
ZXRUaXRsZTooTlNTdHJpbmcgKil0aXRsZQoreworICAgIFtzZWxmIF9IVE1MRG9jdW1lbnRdLT5z
ZXRUaXRsZSh0aXRsZSk7Cit9CisKKy0gKE5TU3RyaW5nICopcmVmZXJyZXIKK3sKKyAgICAgcmV0
dXJuIFtzZWxmIF9IVE1MRG9jdW1lbnRdLT5yZWZlcnJlcigpOworfQorCistIChOU1N0cmluZyAq
KWRvbWFpbgoreworICAgICByZXR1cm4gW3NlbGYgX0hUTUxEb2N1bWVudF0tPmRvbWFpbigpOwor
fQorCistIChOU1N0cmluZyAqKVVSTAoreworICAgIHJldHVybiBbc2VsZiBfSFRNTERvY3VtZW50
XS0+VVJMKCkuZ2V0TlNTdHJpbmcoKTsKK30KKworLSAoRE9NSFRNTEVsZW1lbnQgKilib2R5Cit7
CisgICAgcmV0dXJuIFtET01IVE1MRWxlbWVudCBfZWxlbWVudFdpdGg6W3NlbGYgX0hUTUxEb2N1
bWVudF0tPmJvZHkoKV07Cit9CisKKy0gKHZvaWQpc2V0Qm9keTooRE9NSFRNTEVsZW1lbnQgKili
b2R5Cit7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgW3NlbGYgX0hU
TUxEb2N1bWVudF0tPnNldEJvZHkoW2JvZHkgX0hUTUxFbGVtZW50XSwgZWMpOworICAgIHJhaXNl
T25ET01FcnJvcihlYyk7Cit9CisKKy0gKERPTUhUTUxDb2xsZWN0aW9uICopaW1hZ2VzCit7Cisg
ICAgcmV0dXJuIFtET01IVE1MQ29sbGVjdGlvbiBfY29sbGVjdGlvbldpdGg6W3NlbGYgX0hUTUxE
b2N1bWVudF0tPmltYWdlcygpLmdldCgpXTsKK30KKworLSAoRE9NSFRNTENvbGxlY3Rpb24gKilh
cHBsZXRzCit7CisgICAgcmV0dXJuIFtET01IVE1MQ29sbGVjdGlvbiBfY29sbGVjdGlvbldpdGg6
W3NlbGYgX0hUTUxEb2N1bWVudF0tPmFwcGxldHMoKS5nZXQoKV07Cit9CisKKy0gKERPTUhUTUxD
b2xsZWN0aW9uICopbGlua3MKK3sKKyAgICByZXR1cm4gW0RPTUhUTUxDb2xsZWN0aW9uIF9jb2xs
ZWN0aW9uV2l0aDpbc2VsZiBfSFRNTERvY3VtZW50XS0+bGlua3MoKS5nZXQoKV07Cit9CisKKy0g
KERPTUhUTUxDb2xsZWN0aW9uICopZm9ybXMKK3sKKyAgICByZXR1cm4gW0RPTUhUTUxDb2xsZWN0
aW9uIF9jb2xsZWN0aW9uV2l0aDpbc2VsZiBfSFRNTERvY3VtZW50XS0+Zm9ybXMoKS5nZXQoKV07
Cit9CisKKy0gKERPTUhUTUxDb2xsZWN0aW9uICopYW5jaG9ycworeworICAgIHJldHVybiBbRE9N
SFRNTENvbGxlY3Rpb24gX2NvbGxlY3Rpb25XaXRoOltzZWxmIF9IVE1MRG9jdW1lbnRdLT5hbmNo
b3JzKCkuZ2V0KCldOworfQorCistIChOU1N0cmluZyAqKWNvb2tpZQoreworICAgIHJldHVybiBb
c2VsZiBfSFRNTERvY3VtZW50XS0+Y29va2llKCk7Cit9CisKKy0gKHZvaWQpc2V0Q29va2llOihO
U1N0cmluZyAqKWNvb2tpZQoreworICAgIFtzZWxmIF9IVE1MRG9jdW1lbnRdLT5zZXRDb29raWUo
Y29va2llKTsKK30KKworLSAodm9pZClvcGVuCit7CisgICAgW3NlbGYgX0hUTUxEb2N1bWVudF0t
Pm9wZW4oKTsKK30KKworLSAodm9pZCljbG9zZQoreworICAgIFtzZWxmIF9IVE1MRG9jdW1lbnRd
LT5jbG9zZSgpOworfQorCistICh2b2lkKXdyaXRlOihOU1N0cmluZyAqKXRleHQKK3sKKyAgICBb
c2VsZiBfSFRNTERvY3VtZW50XS0+d3JpdGUodGV4dCk7Cit9CisKKy0gKHZvaWQpd3JpdGVsbjoo
TlNTdHJpbmcgKil0ZXh0Cit7CisgICAgW3NlbGYgX0hUTUxEb2N1bWVudF0tPndyaXRlbG4odGV4
dCk7Cit9CisKKy0gKERPTUVsZW1lbnQgKilnZXRFbGVtZW50QnlJZDooTlNTdHJpbmcgKillbGVt
ZW50SWQKK3sKKyAgICByZXR1cm4gW0RPTUVsZW1lbnQgX2VsZW1lbnRXaXRoOltzZWxmIF9IVE1M
RG9jdW1lbnRdLT5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpXTsKK30KKworLSAoRE9NTm9kZUxp
c3QgKilnZXRFbGVtZW50c0J5TmFtZTooTlNTdHJpbmcgKillbGVtZW50TmFtZQoreworICAgIHJl
dHVybiBbRE9NTm9kZUxpc3QgX25vZGVMaXN0V2l0aDpbc2VsZiBfSFRNTERvY3VtZW50XS0+Z2V0
RWxlbWVudHNCeU5hbWUoZWxlbWVudE5hbWUpLmdldCgpXTsKK30KKworQGVuZAorCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTEVsZW1lbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MRWxlbWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcg
PHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTUVsZW1l
bnQuaD4KKworQGludGVyZmFjZSBET01IVE1MRWxlbWVudCA6IERPTUVsZW1lbnQKKy0gKE5TU3Ry
aW5nICopaWROYW1lOworLSAodm9pZClzZXRJZE5hbWU6KE5TU3RyaW5nICopaWROYW1lOworLSAo
TlNTdHJpbmcgKil0aXRsZTsKKy0gKHZvaWQpc2V0VGl0bGU6KE5TU3RyaW5nICopdGl0bGU7Cist
IChOU1N0cmluZyAqKWxhbmc7CistICh2b2lkKXNldExhbmc6KE5TU3RyaW5nICopbGFuZzsKKy0g
KE5TU3RyaW5nICopZGlyOworLSAodm9pZClzZXREaXI6KE5TU3RyaW5nICopZGlyOworLSAoTlNT
dHJpbmcgKiljbGFzc05hbWU7CistICh2b2lkKXNldENsYXNzTmFtZTooTlNTdHJpbmcgKiljbGFz
c05hbWU7CitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTEVsZW1lbnQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxFbGVtZW50Lm1t
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxFbGVtZW50Lm1t
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0
IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRPTUF0dHIuaCIKKworI2ltcG9ydCAiRE9NSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUhUTUxJbnRlcm5hbC5oIgorI2ltcG9ydCAiSFRNTEVsZW1l
bnQuaCIKKworQGltcGxlbWVudGF0aW9uIERPTUhUTUxFbGVtZW50CisKKy0gKE5TU3RyaW5nICop
aWROYW1lCit7CisgICAgLy8gRklYTUU6IGRvZXMgdGhpcyByZWFsbHkgd29yaz8KKyAgICByZXR1
cm4gW3NlbGYgX0hUTUxFbGVtZW50XS0+aWQoKTsKK30KKworLSAodm9pZClzZXRJZE5hbWU6KE5T
U3RyaW5nICopaWROYW1lCit7CisgICAgW3NlbGYgX0hUTUxFbGVtZW50XS0+c2V0SWQoaWROYW1l
KTsKK30KKworLSAoTlNTdHJpbmcgKil0aXRsZQoreworICAgIHJldHVybiBbc2VsZiBfSFRNTEVs
ZW1lbnRdLT50aXRsZSgpOworfQorCistICh2b2lkKXNldFRpdGxlOihOU1N0cmluZyAqKXRpdGxl
Cit7CisgICAgW3NlbGYgX0hUTUxFbGVtZW50XS0+c2V0VGl0bGUodGl0bGUpOworfQorCistIChO
U1N0cmluZyAqKWxhbmcKK3sKKyAgICByZXR1cm4gW3NlbGYgX0hUTUxFbGVtZW50XS0+bGFuZygp
OworfQorCistICh2b2lkKXNldExhbmc6KE5TU3RyaW5nICopbGFuZworeworICAgIFtzZWxmIF9I
VE1MRWxlbWVudF0tPnNldExhbmcobGFuZyk7Cit9CisKKy0gKE5TU3RyaW5nICopZGlyCit7Cisg
ICAgcmV0dXJuIFtzZWxmIF9IVE1MRWxlbWVudF0tPmRpcigpOworfQorCistICh2b2lkKXNldERp
cjooTlNTdHJpbmcgKilkaXIKK3sKKyAgICBbc2VsZiBfSFRNTEVsZW1lbnRdLT5zZXREaXIoZGly
KTsKK30KKworLSAoTlNTdHJpbmcgKiljbGFzc05hbWUKK3sKKyAgICByZXR1cm4gW3NlbGYgX0hU
TUxFbGVtZW50XS0+Y2xhc3NOYW1lKCk7Cit9CisKKy0gKHZvaWQpc2V0Q2xhc3NOYW1lOihOU1N0
cmluZyAqKWNsYXNzTmFtZQoreworICAgIFtzZWxmIF9IVE1MRWxlbWVudF0tPnNldENsYXNzTmFt
ZShjbGFzc05hbWUpOworfQorCitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
SFRNTEZyYW1lRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01IVE1MRnJhbWVFbGVtZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NSFRNTEZyYW1lRWxlbWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWlu
aWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxFbGVtZW50Lmg+
CisKK0BjbGFzcyBET01Eb2N1bWVudDsKKworLy8gRklYTUU6IERPTUhUTUxGcmFtZUVsZW1lbnQg
aGFzIG5vIElETCBmaWxlIGZvciBpdCwgc28gYXMgb2YgeWV0IGNhbid0IGJlIGF1dG9nZW5lcmF0
ZWQuCitAaW50ZXJmYWNlIERPTUhUTUxGcmFtZUVsZW1lbnQgOiBET01IVE1MRWxlbWVudAorLSAo
TlNTdHJpbmcgKilmcmFtZUJvcmRlcjsKKy0gKHZvaWQpc2V0RnJhbWVCb3JkZXI6KE5TU3RyaW5n
ICopZnJhbWVCb3JkZXI7CistIChOU1N0cmluZyAqKWxvbmdEZXNjOworLSAodm9pZClzZXRMb25n
RGVzYzooTlNTdHJpbmcgKilsb25nRGVzYzsKKy0gKE5TU3RyaW5nICopbWFyZ2luSGVpZ2h0Owor
LSAodm9pZClzZXRNYXJnaW5IZWlnaHQ6KE5TU3RyaW5nICopbWFyZ2luSGVpZ2h0OworLSAoTlNT
dHJpbmcgKiltYXJnaW5XaWR0aDsKKy0gKHZvaWQpc2V0TWFyZ2luV2lkdGg6KE5TU3RyaW5nICop
bWFyZ2luV2lkdGg7CistIChOU1N0cmluZyAqKW5hbWU7CistICh2b2lkKXNldE5hbWU6KE5TU3Ry
aW5nICopbmFtZTsKKy0gKEJPT0wpbm9SZXNpemU7CistICh2b2lkKXNldE5vUmVzaXplOihCT09M
KW5vUmVzaXplOworLSAoTlNTdHJpbmcgKilzY3JvbGxpbmc7CistICh2b2lkKXNldFNjcm9sbGlu
ZzooTlNTdHJpbmcgKilzY3JvbGxpbmc7CistIChOU1N0cmluZyAqKXNyYzsKKy0gKHZvaWQpc2V0
U3JjOihOU1N0cmluZyAqKXNyYzsKKy0gKERPTURvY3VtZW50ICopY29udGVudERvY3VtZW50Owor
QGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxGcmFtZUVsZW1lbnQubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxGcmFtZUVsZW1lbnQu
bW0JKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTEZyYW1lRWxl
bWVudC5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+Cisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRE9NSFRNTEZyYW1lRWxlbWVudC5o
IgorCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NSFRNTEludGVybmFsLmgi
CisjaW1wb3J0ICJIVE1MRnJhbWVFbGVtZW50LmgiCisjaW1wb3J0ICJET01Eb2N1bWVudC5oIgor
CisvLyBGSVhNRTogRE9NSFRNTEZyYW1lRWxlbWVudCBoYXMgbm8gSURMIGZpbGUgZm9yIGl0LCBz
byBhcyBvZiB5ZXQgY2FuJ3QgYmUgYXV0b2dlbmVyYXRlZC4KK0BpbXBsZW1lbnRhdGlvbiBET01I
VE1MRnJhbWVFbGVtZW50CisKKy0gKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQgKilfZnJhbWVF
bGVtZW50Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1l
bnQgKj4oRE9NX2Nhc3Q8V2ViQ29yZTo6Tm9kZSAqPihfaW50ZXJuYWwpKTsKK30KKworLSAoTlNT
dHJpbmcgKilmcmFtZUJvcmRlcgoreworICAgIHJldHVybiBbc2VsZiBfZnJhbWVFbGVtZW50XS0+
ZnJhbWVCb3JkZXIoKTsKK30KKworLSAodm9pZClzZXRGcmFtZUJvcmRlcjooTlNTdHJpbmcgKilm
cmFtZUJvcmRlcgoreworICAgIFtzZWxmIF9mcmFtZUVsZW1lbnRdLT5zZXRGcmFtZUJvcmRlcihm
cmFtZUJvcmRlcik7Cit9CisKKy0gKE5TU3RyaW5nICopbG9uZ0Rlc2MKK3sKKyAgICByZXR1cm4g
W3NlbGYgX2ZyYW1lRWxlbWVudF0tPmxvbmdEZXNjKCk7Cit9CisKKy0gKHZvaWQpc2V0TG9uZ0Rl
c2M6KE5TU3RyaW5nICopbG9uZ0Rlc2MKK3sKKyAgICBbc2VsZiBfZnJhbWVFbGVtZW50XS0+c2V0
TG9uZ0Rlc2MobG9uZ0Rlc2MpOworfQorCistIChOU1N0cmluZyAqKW1hcmdpbkhlaWdodAorewor
ICAgIHJldHVybiBbc2VsZiBfZnJhbWVFbGVtZW50XS0+bWFyZ2luSGVpZ2h0KCk7Cit9CisKKy0g
KHZvaWQpc2V0TWFyZ2luSGVpZ2h0OihOU1N0cmluZyAqKW1hcmdpbkhlaWdodAoreworICAgIFtz
ZWxmIF9mcmFtZUVsZW1lbnRdLT5zZXRNYXJnaW5IZWlnaHQobWFyZ2luSGVpZ2h0KTsKK30KKwor
LSAoTlNTdHJpbmcgKiltYXJnaW5XaWR0aAoreworICAgIHJldHVybiBbc2VsZiBfZnJhbWVFbGVt
ZW50XS0+bWFyZ2luV2lkdGgoKTsKK30KKworLSAodm9pZClzZXRNYXJnaW5XaWR0aDooTlNTdHJp
bmcgKiltYXJnaW5XaWR0aAoreworICAgIFtzZWxmIF9mcmFtZUVsZW1lbnRdLT5zZXRNYXJnaW5X
aWR0aChtYXJnaW5XaWR0aCk7Cit9CisKKy0gKE5TU3RyaW5nICopbmFtZQoreworICAgIHJldHVy
biBbc2VsZiBfZnJhbWVFbGVtZW50XS0+bmFtZSgpOworfQorCistICh2b2lkKXNldE5hbWU6KE5T
U3RyaW5nICopbmFtZQoreworICAgIFtzZWxmIF9mcmFtZUVsZW1lbnRdLT5zZXROYW1lKG5hbWUp
OworfQorCistIChCT09MKW5vUmVzaXplCit7CisgICAgcmV0dXJuIFtzZWxmIF9mcmFtZUVsZW1l
bnRdLT5ub1Jlc2l6ZSgpOworfQorCistICh2b2lkKXNldE5vUmVzaXplOihCT09MKW5vUmVzaXpl
Cit7CisgICAgW3NlbGYgX2ZyYW1lRWxlbWVudF0tPnNldE5vUmVzaXplKG5vUmVzaXplKTsKK30K
KworLSAoTlNTdHJpbmcgKilzY3JvbGxpbmcKK3sKKyAgICByZXR1cm4gW3NlbGYgX2ZyYW1lRWxl
bWVudF0tPnNjcm9sbGluZygpOworfQorCistICh2b2lkKXNldFNjcm9sbGluZzooTlNTdHJpbmcg
KilzY3JvbGxpbmcKK3sKKyAgICBbc2VsZiBfZnJhbWVFbGVtZW50XS0+c2V0U2Nyb2xsaW5nKHNj
cm9sbGluZyk7Cit9CisKKy0gKE5TU3RyaW5nICopc3JjCit7CisgICAgcmV0dXJuIFtzZWxmIF9m
cmFtZUVsZW1lbnRdLT5zcmMoKTsKK30KKworLSAodm9pZClzZXRTcmM6KE5TU3RyaW5nICopc3Jj
Cit7CisgICAgW3NlbGYgX2ZyYW1lRWxlbWVudF0tPnNldFNyYyhzcmMpOworfQorCistIChET01E
b2N1bWVudCAqKWNvbnRlbnREb2N1bWVudAoreworICAgIHJldHVybiBbRE9NRG9jdW1lbnQgX2Rv
Y3VtZW50V2l0aDpbc2VsZiBfZnJhbWVFbGVtZW50XS0+Y29udGVudERvY3VtZW50KCldOworfQor
CitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTEZyYW1lU2V0RWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MRnJhbWVTZXRF
bGVtZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTEZy
YW1lU2V0RWxlbWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwu
Y29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxFbGVtZW50Lmg+CisKKy8vIEZJ
WE1FOiBIVE1MRnJhbWVTZXRFbGVtZW50IGhhcyBubyBJREwgZmlsZSBmb3IgaXQsIHNvIGFzIG9m
IHlldCBjYW4ndCBiZSBhdXRvZ2VuZXJhdGVkLgorQGludGVyZmFjZSBET01IVE1MRnJhbWVTZXRF
bGVtZW50IDogRE9NSFRNTEVsZW1lbnQKKy0gKE5TU3RyaW5nICopY29sczsKKy0gKHZvaWQpc2V0
Q29sczooTlNTdHJpbmcgKiljb2xzOworLSAoTlNTdHJpbmcgKilyb3dzOworLSAodm9pZClzZXRS
b3dzOihOU1N0cmluZyAqKXJvd3M7CitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NSFRNTEZyYW1lU2V0RWxlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NSFRNTEZyYW1lU2V0RWxlbWVudC5tbQkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBX
ZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIkRPTUhUTUxGcmFtZVNldEVsZW1lbnQuaCIKKworI2ltcG9ydCAiRE9NSW50ZXJu
YWwuaCIKKyNpbXBvcnQgIkRPTUhUTUxJbnRlcm5hbC5oIgorI2ltcG9ydCAiSFRNTEZyYW1lU2V0
RWxlbWVudC5oIgorCisvLyBGSVhNRTogRE9NSFRNTEZyYW1lU2V0RWxlbWVudCBoYXMgbm8gSURM
IGZpbGUgZm9yIGl0LCBzbyBhcyBvZiB5ZXQgY2FuJ3QgYmUgYXV0b2dlbmVyYXRlZC4KK0BpbXBs
ZW1lbnRhdGlvbiBET01IVE1MRnJhbWVTZXRFbGVtZW50CisKKy0gKFdlYkNvcmU6OkhUTUxGcmFt
ZVNldEVsZW1lbnQgKilfZnJhbWVTZXRFbGVtZW50Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkhUTUxGcmFtZVNldEVsZW1lbnQgKj4oRE9NX2Nhc3Q8V2ViQ29yZTo6Tm9kZSAq
PihfaW50ZXJuYWwpKTsKK30KKworLSAoTlNTdHJpbmcgKilyb3dzCit7CisgICAgcmV0dXJuIFtz
ZWxmIF9mcmFtZVNldEVsZW1lbnRdLT5yb3dzKCk7Cit9CisKKy0gKHZvaWQpc2V0Um93czooTlNT
dHJpbmcgKilyb3dzCit7CisgICAgW3NlbGYgX2ZyYW1lU2V0RWxlbWVudF0tPnNldFJvd3Mocm93
cyk7Cit9CisKKy0gKE5TU3RyaW5nICopY29scworeworICAgIHJldHVybiBbc2VsZiBfZnJhbWVT
ZXRFbGVtZW50XS0+Y29scygpOworfQorCistICh2b2lkKXNldENvbHM6KE5TU3RyaW5nICopY29s
cworeworICAgIFtzZWxmIF9mcmFtZVNldEVsZW1lbnRdLT5zZXRDb2xzKGNvbHMpOworfQorCitA
ZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTElGcmFtZUVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTElGcmFtZUVsZW1lbnQu
aAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MSUZyYW1lRWxl
bWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxFbGVtZW50Lmg+CisKKy8vIEZJWE1FOiBET01I
VE1MSUZyYW1lRWxlbWVudCBoYXMgbm8gSURMIGZpbGUgZm9yIGl0LCBzbyBhcyBvZiB5ZXQgY2Fu
J3QgYmUgYXV0b2dlbmVyYXRlZC4KK0BpbnRlcmZhY2UgRE9NSFRNTElGcmFtZUVsZW1lbnQgOiBE
T01IVE1MRWxlbWVudAorLSAoTlNTdHJpbmcgKilhbGlnbjsKKy0gKHZvaWQpc2V0QWxpZ246KE5T
U3RyaW5nICopYWxpZ247CistIChOU1N0cmluZyAqKWZyYW1lQm9yZGVyOworLSAodm9pZClzZXRG
cmFtZUJvcmRlcjooTlNTdHJpbmcgKilmcmFtZUJvcmRlcjsKKy0gKE5TU3RyaW5nICopaGVpZ2h0
OworLSAodm9pZClzZXRIZWlnaHQ6KE5TU3RyaW5nICopaGVpZ2h0OworLSAoTlNTdHJpbmcgKils
b25nRGVzYzsKKy0gKHZvaWQpc2V0TG9uZ0Rlc2M6KE5TU3RyaW5nICopbG9uZ0Rlc2M7CistIChO
U1N0cmluZyAqKW1hcmdpbkhlaWdodDsKKy0gKHZvaWQpc2V0TWFyZ2luSGVpZ2h0OihOU1N0cmlu
ZyAqKW1hcmdpbkhlaWdodDsKKy0gKE5TU3RyaW5nICopbWFyZ2luV2lkdGg7CistICh2b2lkKXNl
dE1hcmdpbldpZHRoOihOU1N0cmluZyAqKW1hcmdpbldpZHRoOworLSAoTlNTdHJpbmcgKiluYW1l
OworLSAodm9pZClzZXROYW1lOihOU1N0cmluZyAqKW5hbWU7CistIChOU1N0cmluZyAqKXNjcm9s
bGluZzsKKy0gKHZvaWQpc2V0U2Nyb2xsaW5nOihOU1N0cmluZyAqKXNjcm9sbGluZzsKKy0gKE5T
U3RyaW5nICopc3JjOworLSAodm9pZClzZXRTcmM6KE5TU3RyaW5nICopc3JjOworLSAoTlNTdHJp
bmcgKil3aWR0aDsKKy0gKHZvaWQpc2V0V2lkdGg6KE5TU3RyaW5nICopd2lkdGg7CistIChET01E
b2N1bWVudCAqKWNvbnRlbnREb2N1bWVudDsKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01IVE1MSUZyYW1lRWxlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NSFRNTElGcmFtZUVsZW1lbnQubW0JKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NSFRNTElGcmFtZUVsZW1lbnQubW0JKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBX
ZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIkRPTUhUTUxJRnJhbWVFbGVtZW50LmgiCisKKyNpbXBvcnQgIkRPTUludGVybmFs
LmgiCisjaW1wb3J0ICJET01IVE1MSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkhUTUxJRnJhbWVFbGVt
ZW50LmgiCisjaW1wb3J0ICJET01Eb2N1bWVudC5oIgorCisvLyBGSVhNRTogRE9NSFRNTElGcmFt
ZUVsZW1lbnQgaGFzIG5vIElETCBmaWxlIGZvciBpdCwgc28gYXMgb2YgeWV0IGNhbid0IGJlIGF1
dG9nZW5lcmF0ZWQuCitAaW1wbGVtZW50YXRpb24gRE9NSFRNTElGcmFtZUVsZW1lbnQKKworLSAo
V2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQgKilfSUZyYW1lRWxlbWVudAoreworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudCAqPihET01fY2FzdDxXZWJD
b3JlOjpOb2RlICo+KF9pbnRlcm5hbCkpOworfQorCistIChOU1N0cmluZyAqKWFsaWduCit7Cisg
ICAgcmV0dXJuIFtzZWxmIF9JRnJhbWVFbGVtZW50XS0+YWxpZ24oKTsKK30KKworLSAodm9pZClz
ZXRBbGlnbjooTlNTdHJpbmcgKilhbGlnbgoreworICAgIFtzZWxmIF9JRnJhbWVFbGVtZW50XS0+
c2V0QWxpZ24oYWxpZ24pOworfQorCistIChOU1N0cmluZyAqKWZyYW1lQm9yZGVyCit7CisgICAg
cmV0dXJuIFtzZWxmIF9JRnJhbWVFbGVtZW50XS0+ZnJhbWVCb3JkZXIoKTsKK30KKworLSAodm9p
ZClzZXRGcmFtZUJvcmRlcjooTlNTdHJpbmcgKilmcmFtZUJvcmRlcgoreworICAgIFtzZWxmIF9J
RnJhbWVFbGVtZW50XS0+c2V0RnJhbWVCb3JkZXIoZnJhbWVCb3JkZXIpOworfQorCistIChOU1N0
cmluZyAqKWhlaWdodAoreworICAgIHJldHVybiBbc2VsZiBfSUZyYW1lRWxlbWVudF0tPmhlaWdo
dCgpOworfQorCistICh2b2lkKXNldEhlaWdodDooTlNTdHJpbmcgKiloZWlnaHQKK3sKKyAgICBb
c2VsZiBfSUZyYW1lRWxlbWVudF0tPnNldEhlaWdodChoZWlnaHQpOworfQorCistIChOU1N0cmlu
ZyAqKWxvbmdEZXNjCit7CisgICAgcmV0dXJuIFtzZWxmIF9JRnJhbWVFbGVtZW50XS0+bG9uZ0Rl
c2MoKTsKK30KKworLSAodm9pZClzZXRMb25nRGVzYzooTlNTdHJpbmcgKilsb25nRGVzYworewor
ICAgIFtzZWxmIF9JRnJhbWVFbGVtZW50XS0+c2V0TG9uZ0Rlc2MobG9uZ0Rlc2MpOworfQorCist
IChOU1N0cmluZyAqKW1hcmdpbkhlaWdodAoreworICAgIHJldHVybiBbc2VsZiBfSUZyYW1lRWxl
bWVudF0tPm1hcmdpbkhlaWdodCgpOworfQorCistICh2b2lkKXNldE1hcmdpbkhlaWdodDooTlNT
dHJpbmcgKiltYXJnaW5IZWlnaHQKK3sKKyAgICBbc2VsZiBfSUZyYW1lRWxlbWVudF0tPnNldE1h
cmdpbkhlaWdodChtYXJnaW5IZWlnaHQpOworfQorCistIChOU1N0cmluZyAqKW1hcmdpbldpZHRo
Cit7CisgICAgcmV0dXJuIFtzZWxmIF9JRnJhbWVFbGVtZW50XS0+bWFyZ2luV2lkdGgoKTsKK30K
KworLSAodm9pZClzZXRNYXJnaW5XaWR0aDooTlNTdHJpbmcgKiltYXJnaW5XaWR0aAoreworICAg
IFtzZWxmIF9JRnJhbWVFbGVtZW50XS0+c2V0TWFyZ2luV2lkdGgobWFyZ2luV2lkdGgpOworfQor
CistIChOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gW3NlbGYgX0lGcmFtZUVsZW1lbnRd
LT5uYW1lKCk7Cit9CisKKy0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAg
W3NlbGYgX0lGcmFtZUVsZW1lbnRdLT5zZXROYW1lKG5hbWUpOworfQorCisvLyBGSVhNRTogbm9S
ZXNpemUgaGFzIG5vIGludGVyZmFjZSBkZWNsYXJhdGlvbiAKKy8vLSAoQk9PTClub1Jlc2l6ZQor
Ly97CisvLyAgICByZXR1cm4gW3NlbGYgX0lGcmFtZUVsZW1lbnRdLT5nZXRBdHRyaWJ1dGUobm9y
ZXNpemVBdHRyKS5pc051bGwoKTsKKy8vfQorLy8KKy8vLSAodm9pZClzZXROb1Jlc2l6ZTooQk9P
TClub1Jlc2l6ZQorLy97CisvLyAgICBbc2VsZiBfSUZyYW1lRWxlbWVudF0tPnNldEF0dHJpYnV0
ZShub3Jlc2l6ZUF0dHIsIG5vUmVzaXplID8gIiIgOiAwKTsKKy8vfQorCistIChOU1N0cmluZyAq
KXNjcm9sbGluZworeworICAgIHJldHVybiBbc2VsZiBfSUZyYW1lRWxlbWVudF0tPnNjcm9sbGlu
ZygpOworfQorCistICh2b2lkKXNldFNjcm9sbGluZzooTlNTdHJpbmcgKilzY3JvbGxpbmcKK3sK
KyAgICBbc2VsZiBfSUZyYW1lRWxlbWVudF0tPnNldFNjcm9sbGluZyhzY3JvbGxpbmcpOworfQor
CistIChOU1N0cmluZyAqKXNyYworeworICAgIHJldHVybiBbc2VsZiBfSUZyYW1lRWxlbWVudF0t
PnNyYygpOworfQorCistICh2b2lkKXNldFNyYzooTlNTdHJpbmcgKilzcmMKK3sKKyAgICBbc2Vs
ZiBfSUZyYW1lRWxlbWVudF0tPnNldFNyYyhzcmMpOworfQorCistIChOU1N0cmluZyAqKXdpZHRo
Cit7CisgICAgcmV0dXJuIFtzZWxmIF9JRnJhbWVFbGVtZW50XS0+d2lkdGgoKTsKK30KKworLSAo
dm9pZClzZXRXaWR0aDooTlNTdHJpbmcgKil3aWR0aAoreworICAgIFtzZWxmIF9JRnJhbWVFbGVt
ZW50XS0+c2V0V2lkdGgod2lkdGgpOworfQorCistIChET01Eb2N1bWVudCAqKWNvbnRlbnREb2N1
bWVudAoreworICAgIHJldHVybiBbRE9NRG9jdW1lbnQgX2RvY3VtZW50V2l0aDpbc2VsZiBfSUZy
YW1lRWxlbWVudF0tPmNvbnRlbnREb2N1bWVudCgpXTsKK30KKworQGVuZAorCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTEludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxJbnRlcm5hbC5oCShyZXZpc2lvbiAxNTk0NSkKKysrIFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdl
aW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIzLDEyICsyNCw3NyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2ltcG9ydCAi
RE9NSFRNTC5oIgorI2ltcG9ydCAiRE9NSFRNTENvbGxlY3Rpb24uaCIKKyNpbXBvcnQgIkRPTUhU
TUxFbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1MRm9ybUVsZW1lbnQuaCIKKyNpbXBvcnQgIkRP
TUhUTUxJbWFnZUVsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxJbnB1dEVsZW1lbnQuaCIKKyNp
bXBvcnQgIkRPTUhUTUxPYmplY3RFbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1MT3B0aW9uc0Nv
bGxlY3Rpb24uaCIKKyNpbXBvcnQgIkRPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50LmgiCisjaW1w
b3J0ICJET01IVE1MVGFibGVDZWxsRWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTFRhYmxlRWxl
bWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgeworICAgIGNsYXNzIEhUTUxDb2xsZWN0aW9uOworICAgIGNsYXNzIEhUTUxF
bGVtZW50OworICAgIGNsYXNzIEhUTUxGb3JtRWxlbWVudDsKKyAgICBjbGFzcyBIVE1MSW1hZ2VF
bGVtZW50OworICAgIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CisgICAgY2xhc3MgSFRNTE9iamVj
dEVsZW1lbnQ7CiAgICAgY2xhc3MgSFRNTE9wdGlvbnNDb2xsZWN0aW9uOworICAgIGNsYXNzIEhU
TUxUYWJsZUNhcHRpb25FbGVtZW50OworICAgIGNsYXNzIEhUTUxUYWJsZUNlbGxFbGVtZW50Owor
ICAgIGNsYXNzIEhUTUxUYWJsZUVsZW1lbnQ7CisgICAgY2xhc3MgSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQ7CiB9CiAKIEBpbnRlcmZhY2UgRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uIChXZWJDb3Jl
SW50ZXJuYWwpCiArIChET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24gKilfb3B0aW9uc0NvbGxlY3Rp
b25XaXRoOihXZWJDb3JlOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb24gKilpbXBsOwogQGVuZAorCitA
aW50ZXJmYWNlIERPTUhUTUxDb2xsZWN0aW9uIChXZWJDb3JlSW50ZXJuYWwpCisrIChET01IVE1M
Q29sbGVjdGlvbiAqKV9jb2xsZWN0aW9uV2l0aDooV2ViQ29yZTo6SFRNTENvbGxlY3Rpb24gKilp
bXBsOworQGVuZAorCitAaW50ZXJmYWNlIERPTUhUTUxFbGVtZW50IChXZWJDb3JlSW50ZXJuYWwp
CisrIChET01IVE1MRWxlbWVudCAqKV9lbGVtZW50V2l0aDooV2ViQ29yZTo6SFRNTEVsZW1lbnQg
KilpbXBsOworLSAoV2ViQ29yZTo6SFRNTEVsZW1lbnQgKilfSFRNTEVsZW1lbnQ7CitAZW5kCisK
K0BpbnRlcmZhY2UgRE9NSFRNTEZvcm1FbGVtZW50IChXZWJDb3JlSW50ZXJuYWwpCisrIChET01I
VE1MRm9ybUVsZW1lbnQgKilfZm9ybUVsZW1lbnRXaXRoOihXZWJDb3JlOjpIVE1MRm9ybUVsZW1l
bnQgKilpbXBsOworQGVuZAorCitAaW50ZXJmYWNlIERPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50
IChXZWJDb3JlSW50ZXJuYWwpCisrIChET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudCAqKV90YWJs
ZUNhcHRpb25FbGVtZW50V2l0aDooV2ViQ29yZTo6SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQgKilp
bXBsOworLSAoV2ViQ29yZTo6SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQgKilfdGFibGVDYXB0aW9u
RWxlbWVudDsKK0BlbmQKKworQGludGVyZmFjZSBET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCAo
V2ViQ29yZUludGVybmFsKQorKyAoRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgKilfdGFibGVT
ZWN0aW9uRWxlbWVudFdpdGg6KFdlYkNvcmU6OkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50ICopaW1w
bDsKKy0gKFdlYkNvcmU6OkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50ICopX3RhYmxlU2VjdGlvbkVs
ZW1lbnQ7CitAZW5kCisKK0BpbnRlcmZhY2UgRE9NSFRNTFRhYmxlRWxlbWVudCAoV2ViQ29yZUlu
dGVybmFsKQorKyAoRE9NSFRNTFRhYmxlRWxlbWVudCAqKV90YWJsZUVsZW1lbnRXaXRoOihXZWJD
b3JlOjpIVE1MVGFibGVFbGVtZW50ICopaW1wbDsKKy0gKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1l
bnQgKilfdGFibGVFbGVtZW50OworQGVuZAorCitAaW50ZXJmYWNlIERPTUhUTUxUYWJsZUNlbGxF
bGVtZW50IChXZWJDb3JlSW50ZXJuYWwpCisrIChET01IVE1MVGFibGVDZWxsRWxlbWVudCAqKV90
YWJsZUNlbGxFbGVtZW50V2l0aDooV2ViQ29yZTo6SFRNTFRhYmxlQ2VsbEVsZW1lbnQgKilpbXBs
OworLSAoV2ViQ29yZTo6SFRNTFRhYmxlQ2VsbEVsZW1lbnQgKilfdGFibGVDZWxsRWxlbWVudDsK
K0BlbmQKKworQGludGVyZmFjZSBET01IVE1MSW1hZ2VFbGVtZW50IChXZWJDb3JlSW50ZXJuYWwp
CistIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50ICopX0hUTUxJbWFnZUVsZW1lbnQ7CitAZW5k
CisKK0BpbnRlcmZhY2UgRE9NSFRNTE9iamVjdEVsZW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKKy0g
KFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50ICopX29iamVjdEVsZW1lbnQ7CitAZW5kCisKK0Bp
bnRlcmZhY2UgRE9NSFRNTElucHV0RWxlbWVudCAoV2ViQ29yZUludGVybmFsKQorLSAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudCAqKV9IVE1MSW5wdXRFbGVtZW50OworQGVuZApJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxPYmplY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxPYmplY3RFbGVtZW50LmgJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTE9iamVjdEVsZW1lbnQuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8
V2ViQ29yZS9ET01IVE1MRWxlbWVudC5oPgorCitAY2xhc3MgRE9NRG9jdW1lbnQ7CitAY2xhc3Mg
RE9NSFRNTEZvcm1FbGVtZW50OworCisvLyBGSVhNRTogRE9NSFRNTE9iamVjdEVsZW1lbnQgaGFz
IG5vIElETCBmaWxlIGZvciBpdCwgc28gYXMgb2YgeWV0IGNhbid0IGJlIGF1dG9nZW5lcmF0ZWQu
CitAaW50ZXJmYWNlIERPTUhUTUxPYmplY3RFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKKy0gKERP
TUhUTUxGb3JtRWxlbWVudCAqKWZvcm07CistIChOU1N0cmluZyAqKWNvZGU7CistICh2b2lkKXNl
dENvZGU6KE5TU3RyaW5nICopY29kZTsKKy0gKE5TU3RyaW5nICopYWxpZ247CistICh2b2lkKXNl
dEFsaWduOihOU1N0cmluZyAqKWFsaWduOworLSAoTlNTdHJpbmcgKilhcmNoaXZlOworLSAodm9p
ZClzZXRBcmNoaXZlOihOU1N0cmluZyAqKWFyY2hpdmU7CistIChOU1N0cmluZyAqKWJvcmRlcjsK
Ky0gKHZvaWQpc2V0Qm9yZGVyOihOU1N0cmluZyAqKWJvcmRlcjsKKy0gKE5TU3RyaW5nICopY29k
ZUJhc2U7CistICh2b2lkKXNldENvZGVCYXNlOihOU1N0cmluZyAqKWNvZGVCYXNlOworLSAoTlNT
dHJpbmcgKiljb2RlVHlwZTsKKy0gKHZvaWQpc2V0Q29kZVR5cGU6KE5TU3RyaW5nICopY29kZVR5
cGU7CistIChOU1N0cmluZyAqKWRhdGE7CistICh2b2lkKXNldERhdGE6KE5TU3RyaW5nICopZGF0
YTsKKy0gKEJPT0wpZGVjbGFyZTsKKy0gKHZvaWQpc2V0RGVjbGFyZTooQk9PTClkZWNsYXJlOwor
LSAoTlNTdHJpbmcgKiloZWlnaHQ7CistICh2b2lkKXNldEhlaWdodDooTlNTdHJpbmcgKiloZWln
aHQ7CistIChpbnQpaHNwYWNlOworLSAodm9pZClzZXRIc3BhY2U6KGludCloc3BhY2U7CistIChO
U1N0cmluZyAqKW5hbWU7CistICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZTsKKy0gKE5T
U3RyaW5nICopc3RhbmRieTsKKy0gKHZvaWQpc2V0U3RhbmRieTooTlNTdHJpbmcgKilzdGFuZGJ5
OworLSAoaW50KXRhYkluZGV4OworLSAodm9pZClzZXRUYWJJbmRleDooaW50KXRhYkluZGV4Owor
LSAoTlNTdHJpbmcgKil0eXBlOworLSAodm9pZClzZXRUeXBlOihOU1N0cmluZyAqKXR5cGU7Cist
IChOU1N0cmluZyAqKXVzZU1hcDsKKy0gKHZvaWQpc2V0VXNlTWFwOihOU1N0cmluZyAqKXVzZU1h
cDsKKy0gKGludCl2c3BhY2U7CistICh2b2lkKXNldFZzcGFjZTooaW50KXZzcGFjZTsKKy0gKE5T
U3RyaW5nICopd2lkdGg7CistICh2b2lkKXNldFdpZHRoOihOU1N0cmluZyAqKXdpZHRoOworLSAo
RE9NRG9jdW1lbnQgKiljb250ZW50RG9jdW1lbnQ7CitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NSFRNTE9iamVjdEVsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTUhUTUxPYmplY3RFbGVtZW50Lm1tCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxPYmplY3RFbGVtZW50Lm1tCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDIyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2
IEphbWVzIEcuIFNwZXRoIDxzcGV0aEBlbmQuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNh
bXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIkRPTUhUTUxPYmplY3RFbGVtZW50LmgiCisKKyNpbXBvcnQgIkRPTUlu
dGVybmFsLmgiCisjaW1wb3J0ICJET01IVE1MSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkhUTUxPYmpl
Y3RFbGVtZW50LmgiCisjaW1wb3J0ICJQbGF0Zm9ybVN0cmluZy5oIgorI2ltcG9ydCAiRE9NRG9j
dW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxGb3JtRWxlbWVudC5oIgorCitAaW1wbGVtZW50YXRp
b24gRE9NSFRNTE9iamVjdEVsZW1lbnQKKworLSAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQg
Kilfb2JqZWN0RWxlbWVudAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1M
T2JqZWN0RWxlbWVudCAqPihET01fY2FzdDxXZWJDb3JlOjpOb2RlICo+KF9pbnRlcm5hbCkpOwor
fQorCistIChET01IVE1MRm9ybUVsZW1lbnQgKilmb3JtCit7CisgICAgcmV0dXJuIFtET01IVE1M
Rm9ybUVsZW1lbnQgX2Zvcm1FbGVtZW50V2l0aDpbc2VsZiBfb2JqZWN0RWxlbWVudF0tPmZvcm0o
KV07Cit9CisKKy0gKE5TU3RyaW5nICopY29kZQoreworICAgIHJldHVybiBbc2VsZiBfb2JqZWN0
RWxlbWVudF0tPmNvZGUoKTsKK30KKworLSAodm9pZClzZXRDb2RlOihOU1N0cmluZyAqKWNvZGUK
K3sKKyAgICBbc2VsZiBfb2JqZWN0RWxlbWVudF0tPnNldENvZGUoY29kZSk7Cit9CisKKy0gKE5T
U3RyaW5nICopYWxpZ24KK3sKKyAgICByZXR1cm4gW3NlbGYgX29iamVjdEVsZW1lbnRdLT5hbGln
bigpOworfQorCistICh2b2lkKXNldEFsaWduOihOU1N0cmluZyAqKWFsaWduCit7CisgICAgW3Nl
bGYgX29iamVjdEVsZW1lbnRdLT5zZXRBbGlnbihhbGlnbik7Cit9CisKKy0gKE5TU3RyaW5nICop
YXJjaGl2ZQoreworICAgIHJldHVybiBbc2VsZiBfb2JqZWN0RWxlbWVudF0tPmFyY2hpdmUoKTsK
K30KKworLSAodm9pZClzZXRBcmNoaXZlOihOU1N0cmluZyAqKWFyY2hpdmUKK3sKKyAgICBbc2Vs
ZiBfb2JqZWN0RWxlbWVudF0tPnNldEFyY2hpdmUoYXJjaGl2ZSk7Cit9CisKKy0gKE5TU3RyaW5n
ICopYm9yZGVyCit7CisgICAgcmV0dXJuIFtzZWxmIF9vYmplY3RFbGVtZW50XS0+Ym9yZGVyKCk7
Cit9CisKKy0gKHZvaWQpc2V0Qm9yZGVyOihOU1N0cmluZyAqKWJvcmRlcgoreworICAgIFtzZWxm
IF9vYmplY3RFbGVtZW50XS0+c2V0Qm9yZGVyKGJvcmRlcik7Cit9CisKKy0gKE5TU3RyaW5nICop
Y29kZUJhc2UKK3sKKyAgICByZXR1cm4gW3NlbGYgX29iamVjdEVsZW1lbnRdLT5jb2RlQmFzZSgp
OworfQorCistICh2b2lkKXNldENvZGVCYXNlOihOU1N0cmluZyAqKWNvZGVCYXNlCit7CisgICAg
W3NlbGYgX29iamVjdEVsZW1lbnRdLT5zZXRDb2RlQmFzZShjb2RlQmFzZSk7Cit9CisKKy0gKE5T
U3RyaW5nICopY29kZVR5cGUKK3sKKyAgICByZXR1cm4gW3NlbGYgX29iamVjdEVsZW1lbnRdLT5j
b2RlVHlwZSgpOworfQorCistICh2b2lkKXNldENvZGVUeXBlOihOU1N0cmluZyAqKWNvZGVUeXBl
Cit7CisgICAgW3NlbGYgX29iamVjdEVsZW1lbnRdLT5zZXRDb2RlVHlwZShjb2RlVHlwZSk7Cit9
CisKKy0gKE5TU3RyaW5nICopZGF0YQoreworICAgIHJldHVybiBbc2VsZiBfb2JqZWN0RWxlbWVu
dF0tPmRhdGEoKTsKK30KKworLSAodm9pZClzZXREYXRhOihOU1N0cmluZyAqKWRhdGEKK3sKKyAg
ICBbc2VsZiBfb2JqZWN0RWxlbWVudF0tPnNldERhdGEoZGF0YSk7Cit9CisKKy0gKEJPT0wpZGVj
bGFyZQoreworICAgIHJldHVybiBbc2VsZiBfb2JqZWN0RWxlbWVudF0tPmRlY2xhcmUoKTsKK30K
KworLSAodm9pZClzZXREZWNsYXJlOihCT09MKWRlY2xhcmUKK3sKKyAgICBbc2VsZiBfb2JqZWN0
RWxlbWVudF0tPnNldERlY2xhcmUoZGVjbGFyZSk7Cit9CisKKy0gKE5TU3RyaW5nICopaGVpZ2h0
Cit7CisgICAgcmV0dXJuIFtzZWxmIF9vYmplY3RFbGVtZW50XS0+aGVpZ2h0KCk7Cit9CisKKy0g
KHZvaWQpc2V0SGVpZ2h0OihOU1N0cmluZyAqKWhlaWdodAoreworICAgIFtzZWxmIF9vYmplY3RF
bGVtZW50XS0+c2V0SGVpZ2h0KGhlaWdodCk7Cit9CisKKy0gKGludCloc3BhY2UKK3sKKyAgICBy
ZXR1cm4gW3NlbGYgX29iamVjdEVsZW1lbnRdLT5oc3BhY2UoKTsKK30KKworLSAodm9pZClzZXRI
c3BhY2U6KGludCloc3BhY2UKK3sKKyAgICBbc2VsZiBfb2JqZWN0RWxlbWVudF0tPnNldEhzcGFj
ZShoc3BhY2UpOworfQorCistIChOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gW3NlbGYg
X29iamVjdEVsZW1lbnRdLT5uYW1lKCk7Cit9CisKKy0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcg
KiluYW1lCit7CisgICAgW3NlbGYgX29iamVjdEVsZW1lbnRdLT5zZXROYW1lKG5hbWUpOworfQor
CistIChOU1N0cmluZyAqKXN0YW5kYnkKK3sKKyAgICByZXR1cm4gW3NlbGYgX29iamVjdEVsZW1l
bnRdLT5zdGFuZGJ5KCk7Cit9CisKKy0gKHZvaWQpc2V0U3RhbmRieTooTlNTdHJpbmcgKilzdGFu
ZGJ5Cit7CisgICAgW3NlbGYgX29iamVjdEVsZW1lbnRdLT5zZXRTdGFuZGJ5KHN0YW5kYnkpOwor
fQorCistIChpbnQpdGFiSW5kZXgKK3sKKyAgICByZXR1cm4gW3NlbGYgX29iamVjdEVsZW1lbnRd
LT50YWJJbmRleCgpOworfQorCistICh2b2lkKXNldFRhYkluZGV4OihpbnQpdGFiSW5kZXgKK3sK
KyAgICBbc2VsZiBfb2JqZWN0RWxlbWVudF0tPnNldFRhYkluZGV4KHRhYkluZGV4KTsKK30KKwor
LSAoTlNTdHJpbmcgKil0eXBlCit7CisgICAgcmV0dXJuIFtzZWxmIF9vYmplY3RFbGVtZW50XS0+
dHlwZSgpOworfQorCistICh2b2lkKXNldFR5cGU6KE5TU3RyaW5nICopdHlwZQoreworICAgIFtz
ZWxmIF9vYmplY3RFbGVtZW50XS0+c2V0VHlwZSh0eXBlKTsKK30KKworLSAoTlNTdHJpbmcgKil1
c2VNYXAKK3sKKyAgICByZXR1cm4gW3NlbGYgX29iamVjdEVsZW1lbnRdLT51c2VNYXAoKTsKK30K
KworLSAodm9pZClzZXRVc2VNYXA6KE5TU3RyaW5nICopdXNlTWFwCit7CisgICAgW3NlbGYgX29i
amVjdEVsZW1lbnRdLT5zZXRVc2VNYXAodXNlTWFwKTsKK30KKworLSAoaW50KXZzcGFjZQorewor
ICAgIHJldHVybiBbc2VsZiBfb2JqZWN0RWxlbWVudF0tPnZzcGFjZSgpOworfQorCistICh2b2lk
KXNldFZzcGFjZTooaW50KXZzcGFjZQoreworICAgIFtzZWxmIF9vYmplY3RFbGVtZW50XS0+c2V0
VnNwYWNlKHZzcGFjZSk7Cit9CisKKy0gKE5TU3RyaW5nICopd2lkdGgKK3sKKyAgICByZXR1cm4g
W3NlbGYgX29iamVjdEVsZW1lbnRdLT53aWR0aCgpOworfQorCistICh2b2lkKXNldFdpZHRoOihO
U1N0cmluZyAqKXdpZHRoCit7CisgICAgW3NlbGYgX29iamVjdEVsZW1lbnRdLT5zZXRXaWR0aCh3
aWR0aCk7Cit9CisKKy0gKERPTURvY3VtZW50ICopY29udGVudERvY3VtZW50Cit7CisgICAgcmV0
dXJuIFtET01Eb2N1bWVudCBfZG9jdW1lbnRXaXRoOltzZWxmIF9vYmplY3RFbGVtZW50XS0+Y29u
dGVudERvY3VtZW50KCldOworfQorCitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NSFRNTE9wdGlvbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NSFRNTE9wdGlvbkVsZW1lbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01IVE1MT3B0aW9uRWxlbWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNh
bS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxFbGVt
ZW50Lmg+CisKK0BjbGFzcyBET01IVE1MRm9ybUVsZW1lbnQ7CisKKy8vIEZJWE1FOiBET01IVE1M
T3B0aW9uRWxlbWVudCBjYW5ub3QgYmUgYXV0by1nZW5lcmF0ZWQgeWV0IGJlY2F1c2Ugb2Ygc29t
ZSAKKy8vIGRpZmZlcmVuZWNlcyBiZXR3ZWVuIHRoZSBvbGQgYmluZGluZ3MgYW5kIHRoZSBpZGwu
CitAaW50ZXJmYWNlIERPTUhUTUxPcHRpb25FbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKKy0gKERP
TUhUTUxGb3JtRWxlbWVudCAqKWZvcm07CistIChCT09MKWRlZmF1bHRTZWxlY3RlZDsKKy0gKHZv
aWQpc2V0RGVmYXVsdFNlbGVjdGVkOihCT09MKWRlZmF1bHRTZWxlY3RlZDsKKy0gKE5TU3RyaW5n
ICopdGV4dDsKKy0gKGludClpbmRleDsKKy0gKEJPT0wpZGlzYWJsZWQ7CistICh2b2lkKXNldERp
c2FibGVkOihCT09MKWRpc2FibGVkOworLSAoTlNTdHJpbmcgKilsYWJlbDsKKy0gKHZvaWQpc2V0
TGFiZWw6KE5TU3RyaW5nICopbGFiZWw7CistIChCT09MKXNlbGVjdGVkOworLSAodm9pZClzZXRT
ZWxlY3RlZDooQk9PTClzZWxlY3RlZDsKKy0gKE5TU3RyaW5nICopdmFsdWU7CistICh2b2lkKXNl
dFZhbHVlOihOU1N0cmluZyAqKXZhbHVlOworQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01IVE1MT3B0aW9uRWxlbWVudC5tbQkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01IVE1MT3B0aW9uRWxlbWVudC5tbQkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdl
aW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiRE9NSFRNTE9wdGlvbkVsZW1lbnQuaCIKKworI2ltcG9ydCAiRE9NSW50ZXJuYWwu
aCIKKyNpbXBvcnQgIkRPTUhUTUxJbnRlcm5hbC5oIgorI2ltcG9ydCAiSFRNTE9wdGlvbkVsZW1l
bnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxGb3JtRWxlbWVudC5oIgorI2ltcG9ydCAiUGxhdGZvcm1T
dHJpbmcuaCIKKworQGltcGxlbWVudGF0aW9uIERPTUhUTUxPcHRpb25FbGVtZW50CisKKy0gKFdl
YkNvcmU6OkhUTUxPcHRpb25FbGVtZW50ICopX29wdGlvbkVsZW1lbnQKK3sKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQgKj4oRE9NX2Nhc3Q8V2ViQ29y
ZTo6Tm9kZSAqPihfaW50ZXJuYWwpKTsKK30KKworLSAoRE9NSFRNTEZvcm1FbGVtZW50ICopZm9y
bQoreworICAgIHJldHVybiBbRE9NSFRNTEZvcm1FbGVtZW50IF9mb3JtRWxlbWVudFdpdGg6W3Nl
bGYgX29wdGlvbkVsZW1lbnRdLT5mb3JtKCldOworfQorCistIChCT09MKWRlZmF1bHRTZWxlY3Rl
ZAoreworICAgIHJldHVybiBbc2VsZiBfb3B0aW9uRWxlbWVudF0tPmRlZmF1bHRTZWxlY3RlZCgp
OworfQorCistICh2b2lkKXNldERlZmF1bHRTZWxlY3RlZDooQk9PTClkZWZhdWx0U2VsZWN0ZWQK
K3sKKyAgICBbc2VsZiBfb3B0aW9uRWxlbWVudF0tPnNldERlZmF1bHRTZWxlY3RlZChkZWZhdWx0
U2VsZWN0ZWQpOworfQorCistIChOU1N0cmluZyAqKXRleHQKK3sKKyAgICByZXR1cm4gW3NlbGYg
X29wdGlvbkVsZW1lbnRdLT50ZXh0KCk7Cit9CisKKy0gKGludClpbmRleAoreworICAgIHJldHVy
biBbc2VsZiBfb3B0aW9uRWxlbWVudF0tPmluZGV4KCk7Cit9CisKKy0gKEJPT0wpZGlzYWJsZWQK
K3sKKyAgICByZXR1cm4gW3NlbGYgX29wdGlvbkVsZW1lbnRdLT5kaXNhYmxlZCgpOworfQorCist
ICh2b2lkKXNldERpc2FibGVkOihCT09MKWRpc2FibGVkCit7CisgICAgW3NlbGYgX29wdGlvbkVs
ZW1lbnRdLT5zZXREaXNhYmxlZChkaXNhYmxlZCk7Cit9CisKKy0gKE5TU3RyaW5nICopbGFiZWwK
K3sKKyAgICByZXR1cm4gW3NlbGYgX29wdGlvbkVsZW1lbnRdLT5sYWJlbCgpOworfQorCistICh2
b2lkKXNldExhYmVsOihOU1N0cmluZyAqKWxhYmVsCit7CisgICAgW3NlbGYgX29wdGlvbkVsZW1l
bnRdLT5zZXRMYWJlbChsYWJlbCk7Cit9CisKKy0gKEJPT0wpc2VsZWN0ZWQKK3sKKyAgICByZXR1
cm4gW3NlbGYgX29wdGlvbkVsZW1lbnRdLT5zZWxlY3RlZCgpOworfQorCistICh2b2lkKXNldFNl
bGVjdGVkOihCT09MKXNlbGVjdGVkCit7CisgICAgW3NlbGYgX29wdGlvbkVsZW1lbnRdLT5zZXRT
ZWxlY3RlZChzZWxlY3RlZCk7Cit9CisKKy0gKE5TU3RyaW5nICopdmFsdWUKK3sKKyAgICByZXR1
cm4gW3NlbGYgX29wdGlvbkVsZW1lbnRdLT52YWx1ZSgpOworfQorCistICh2b2lkKXNldFZhbHVl
OihOU1N0cmluZyAqKXZhbHVlCit7CisgICAgV2ViQ29yZTo6U3RyaW5nIHN0cmluZyA9IHZhbHVl
OworICAgIFtzZWxmIF9vcHRpb25FbGVtZW50XS0+c2V0VmFsdWUoc3RyaW5nLmltcGwoKSk7Cisv
LyAgICBbc2VsZiBfb3B0aW9uRWxlbWVudF0tPnNldFZhbHVlKHZhbHVlKTsKK30KKworQGVuZApJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MT3B0aW9uc0NvbGxlY3Rp
b24uaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MT3B0aW9u
c0NvbGxlY3Rpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNv
bT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KKworQGNsYXNzIERPTU5v
ZGU7CisKK0BpbnRlcmZhY2UgRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uIDogRE9NT2JqZWN0Cist
ICh1bnNpZ25lZClsZW5ndGg7CistICh2b2lkKXNldExlbmd0aDoodW5zaWduZWQpbGVuZ3RoOwor
LSAoRE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4OworLSAoRE9NTm9kZSAqKW5hbWVkSXRl
bTooTlNTdHJpbmcgKiluYW1lOworQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbQkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2
IEphbWVzIEcuIFNwZXRoIDxzcGV0aEBlbmQuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNh
bXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIkRPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgorCisjaW1wb3J0ICJE
T01JbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NSFRNTEludGVybmFsLmgiCisjaW1wb3J0ICJIVE1M
T3B0aW9uc0NvbGxlY3Rpb24uaCIKKyNpbXBvcnQgIkRPTU5vZGUuaCIKKworQGltcGxlbWVudGF0
aW9uIERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbgorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBp
ZiAoX2ludGVybmFsKQorICAgICAgICBET01fY2FzdDxXZWJDb3JlOjpIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24gKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisK
Ky0gKHZvaWQpZmluYWxpemUKK3sKKyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICBET01fY2Fz
dDxXZWJDb3JlOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb24gKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsK
KyAgICBbc3VwZXIgZmluYWxpemVdOworfQorCistIChXZWJDb3JlOjpIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24gKilfb3B0aW9uc0NvbGxlY3Rpb24KK3sKKyAgICByZXR1cm4gRE9NX2Nhc3Q8V2ViQ29y
ZTo6SFRNTE9wdGlvbnNDb2xsZWN0aW9uICo+KF9pbnRlcm5hbCk7Cit9CisKKy0gKHVuc2lnbmVk
KWxlbmd0aAoreworICAgIHJldHVybiBbc2VsZiBfb3B0aW9uc0NvbGxlY3Rpb25dLT5sZW5ndGgo
KTsKK30KKworLSAodm9pZClzZXRMZW5ndGg6KHVuc2lnbmVkKWxlbmd0aAoreworICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUgZWM7CisgICAgW3NlbGYgX29wdGlvbnNDb2xsZWN0aW9uXS0+c2V0
TGVuZ3RoKGxlbmd0aCwgZWMpOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7Cit9CisKKy0gKERP
TU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleAoreworICAgIHJldHVybiBbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX29wdGlvbnNDb2xsZWN0aW9uXS0+aXRlbShpbmRleCldOworfQorCistIChE
T01Ob2RlICopbmFtZWRJdGVtOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gW0RPTU5v
ZGUgX25vZGVXaXRoOltzZWxmIF9vcHRpb25zQ29sbGVjdGlvbl0tPm5hbWVkSXRlbShuYW1lKV07
Cit9CisKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MU2VsZWN0RWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MU2VsZWN0
RWxlbWVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxT
ZWxlY3RFbGVtZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5j
b20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTEVsZW1lbnQuaD4KKworQGNsYXNz
IERPTUhUTUxGb3JtRWxlbWVudDsKK0BjbGFzcyBET01IVE1MT3B0aW9uc0NvbGxlY3Rpb247CisK
Ky8vIEZJWE1FOiBET01IVE1MU2VsZWN0RWxlbWVudCBoYXMgbm8gSURMIGZpbGUgZm9yIGl0LCBz
byBhcyBvZiB5ZXQgY2FuJ3QgYmUgYXV0b2dlbmVyYXRlZC4KK0BpbnRlcmZhY2UgRE9NSFRNTFNl
bGVjdEVsZW1lbnQgOiBET01IVE1MRWxlbWVudAorLSAoTlNTdHJpbmcgKil0eXBlOworLSAoaW50
KXNlbGVjdGVkSW5kZXg7CistICh2b2lkKXNldFNlbGVjdGVkSW5kZXg6KGludClzZWxlY3RlZElu
ZGV4OworLSAoTlNTdHJpbmcgKil2YWx1ZTsKKy0gKHZvaWQpc2V0VmFsdWU6KE5TU3RyaW5nICop
dmFsdWU7CistIChpbnQpbGVuZ3RoOworLSAoRE9NSFRNTEZvcm1FbGVtZW50ICopZm9ybTsKKy0g
KERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbiAqKW9wdGlvbnM7CistIChCT09MKWRpc2FibGVkOwor
LSAodm9pZClzZXREaXNhYmxlZDooQk9PTClkaXNhYmxlZDsKKy0gKEJPT0wpbXVsdGlwbGU7Cist
ICh2b2lkKXNldE11bHRpcGxlOihCT09MKW11bHRpcGxlOworLSAoTlNTdHJpbmcgKiluYW1lOwor
LSAodm9pZClzZXROYW1lOihOU1N0cmluZyAqKW5hbWU7CistIChpbnQpc2l6ZTsKKy0gKHZvaWQp
c2V0U2l6ZTooaW50KXNpemU7CistIChpbnQpdGFiSW5kZXg7CistICh2b2lkKXNldFRhYkluZGV4
OihpbnQpdGFiSW5kZXg7CistICh2b2lkKWFkZDooRE9NSFRNTEVsZW1lbnQgKillbGVtZW50IDoo
RE9NSFRNTEVsZW1lbnQgKiliZWZvcmU7CistICh2b2lkKXJlbW92ZTooaW50KWluZGV4OworLSAo
dm9pZClibHVyOworLSAodm9pZClmb2N1czsKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01IVE1MU2VsZWN0RWxlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NSFRNTFNlbGVjdEVsZW1lbnQubW0JKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NSFRNTFNlbGVjdEVsZW1lbnQubW0JKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBX
ZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIkRPTUhUTUxTZWxlY3RFbGVtZW50LmgiCisKKyNpbXBvcnQgIkRPTUludGVybmFs
LmgiCisjaW1wb3J0ICJET01IVE1MSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkhUTUxTZWxlY3RFbGVt
ZW50LmgiCisKKyNpbXBvcnQgIkRPTUhUTUxFbGVtZW50LmgiCisjaW1wb3J0ICJET01IVE1MRm9y
bUVsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgorI2ltcG9y
dCAiSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVN0cmluZy5oIgor
I2ltcG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4KKworQGltcGxlbWVudGF0aW9uIERPTUhUTUxTZWxl
Y3RFbGVtZW50CisKKy0gKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50ICopX3NlbGVjdEVsZW1l
bnQKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQg
Kj4oRE9NX2Nhc3Q8V2ViQ29yZTo6Tm9kZSAqPihfaW50ZXJuYWwpKTsKK30KKworLSAoTlNTdHJp
bmcgKil0eXBlCit7CisgICAgcmV0dXJuIFtzZWxmIF9zZWxlY3RFbGVtZW50XS0+dHlwZSgpOwor
fQorCistIChpbnQpc2VsZWN0ZWRJbmRleAoreworICAgIHJldHVybiBbc2VsZiBfc2VsZWN0RWxl
bWVudF0tPnNlbGVjdGVkSW5kZXgoKTsKK30KKworLSAodm9pZClzZXRTZWxlY3RlZEluZGV4Oihp
bnQpc2VsZWN0ZWRJbmRleAoreworICAgIFtzZWxmIF9zZWxlY3RFbGVtZW50XS0+c2V0U2VsZWN0
ZWRJbmRleChzZWxlY3RlZEluZGV4KTsKK30KKworLSAoTlNTdHJpbmcgKil2YWx1ZQoreworICAg
IHJldHVybiBbc2VsZiBfc2VsZWN0RWxlbWVudF0tPnZhbHVlKCk7Cit9CisKKy0gKHZvaWQpc2V0
VmFsdWU6KE5TU3RyaW5nICopdmFsdWUKK3sKKyAgICBXZWJDb3JlOjpTdHJpbmcgcyh2YWx1ZSk7
CisgICAgW3NlbGYgX3NlbGVjdEVsZW1lbnRdLT5zZXRWYWx1ZShzLmltcGwoKSk7CisvLyAgICBb
c2VsZiBfc2VsZWN0RWxlbWVudF0tPnNldFZhbHVlKHZhbHVlKTsKK30KKworLSAoaW50KWxlbmd0
aAoreworICAgIHJldHVybiBbc2VsZiBfc2VsZWN0RWxlbWVudF0tPmxlbmd0aCgpOworfQorCist
ICh2b2lkKXNldExlbmd0aDooaW50KWxlbmd0aAoreworICAgIC8vIEZJWE1FOiBOb3QgeWV0IGNs
ZWFyIHdoYXQgdG8gZG8gYWJvdXQgdGhpcyBvbmUuCisgICAgLy8gVGhlcmUncyBzb21lIEphdmFT
Y3JpcHQtc3BlY2lmaWMgaGFja2VyeSBpbiB0aGUgSmF2YVNjcmlwdCBiaW5kaW5ncyBmb3IgdGhp
cy4KKyAgICAvL1tzZWxmIF9zZWxlY3RFbGVtZW50XS0+c2V0TGVuZ3RoKGxlbmd0aCk7Cit9CisK
Ky0gKERPTUhUTUxGb3JtRWxlbWVudCAqKWZvcm0KK3sKKyAgICByZXR1cm4gW0RPTUhUTUxGb3Jt
RWxlbWVudCBfZm9ybUVsZW1lbnRXaXRoOltzZWxmIF9zZWxlY3RFbGVtZW50XS0+Zm9ybSgpXTsK
K30KKworLSAoRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uICopb3B0aW9ucworeworICAgIHJldHVy
biBbRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uIF9vcHRpb25zQ29sbGVjdGlvbldpdGg6W3NlbGYg
X3NlbGVjdEVsZW1lbnRdLT5vcHRpb25zKCkuZ2V0KCldOworfQorCistIChCT09MKWRpc2FibGVk
Cit7CisgICAgcmV0dXJuIFtzZWxmIF9zZWxlY3RFbGVtZW50XS0+ZGlzYWJsZWQoKTsKK30KKwor
LSAodm9pZClzZXREaXNhYmxlZDooQk9PTClkaXNhYmxlZAoreworICAgIFtzZWxmIF9zZWxlY3RF
bGVtZW50XS0+c2V0RGlzYWJsZWQoZGlzYWJsZWQpOworfQorCistIChCT09MKW11bHRpcGxlCit7
CisgICAgcmV0dXJuIFtzZWxmIF9zZWxlY3RFbGVtZW50XS0+bXVsdGlwbGUoKTsKK30KKworLSAo
dm9pZClzZXRNdWx0aXBsZTooQk9PTCltdWx0aXBsZQoreworICAgIFtzZWxmIF9zZWxlY3RFbGVt
ZW50XS0+c2V0TXVsdGlwbGUobXVsdGlwbGUpOworfQorCistIChOU1N0cmluZyAqKW5hbWUKK3sK
KyAgICByZXR1cm4gW3NlbGYgX3NlbGVjdEVsZW1lbnRdLT5uYW1lKCk7Cit9CisKKy0gKHZvaWQp
c2V0TmFtZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgW3NlbGYgX3NlbGVjdEVsZW1lbnRdLT5z
ZXROYW1lKG5hbWUpOworfQorCistIChpbnQpc2l6ZQoreworICAgIHJldHVybiBbc2VsZiBfc2Vs
ZWN0RWxlbWVudF0tPnNpemUoKTsKK30KKworLSAodm9pZClzZXRTaXplOihpbnQpc2l6ZQorewor
ICAgIFtzZWxmIF9zZWxlY3RFbGVtZW50XS0+c2V0U2l6ZShzaXplKTsKK30KKworLSAoaW50KXRh
YkluZGV4Cit7CisgICAgcmV0dXJuIFtzZWxmIF9zZWxlY3RFbGVtZW50XS0+dGFiSW5kZXgoKTsK
K30KKworLSAodm9pZClzZXRUYWJJbmRleDooaW50KXRhYkluZGV4Cit7CisgICAgW3NlbGYgX3Nl
bGVjdEVsZW1lbnRdLT5zZXRUYWJJbmRleCh0YWJJbmRleCk7Cit9CisKKy0gKHZvaWQpYWRkOihE
T01IVE1MRWxlbWVudCAqKWVsZW1lbnQgOihET01IVE1MRWxlbWVudCAqKWJlZm9yZQoreworICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFtzZWxmIF9zZWxlY3RFbGVtZW50
XS0+YWRkKFtlbGVtZW50IF9IVE1MRWxlbWVudF0sIFtiZWZvcmUgX0hUTUxFbGVtZW50XSwgZWMp
OworICAgIHJhaXNlT25ET01FcnJvcihlYyk7Cit9CisKKy0gKHZvaWQpcmVtb3ZlOihpbnQpaW5k
ZXgKK3sKKyAgICBbc2VsZiBfc2VsZWN0RWxlbWVudF0tPnJlbW92ZShpbmRleCk7Cit9CisKKy0g
KHZvaWQpYmx1cgoreworICAgIFtzZWxmIF9zZWxlY3RFbGVtZW50XS0+Ymx1cigpOworfQorCist
ICh2b2lkKWZvY3VzCit7CisgICAgW3NlbGYgX3NlbGVjdEVsZW1lbnRdLT5mb2N1cygpOworfQor
CitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTFRhYmxlQ2FwdGlvbkVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTFRhYmxl
Q2FwdGlvbkVsZW1lbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53
ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworIAorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MRWxlbWVu
dC5oPgorCisvLyBGSVhNRTogRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQgaGFzIG5vIElETCBm
aWxlIGZvciBpdCwgc28gYXMgb2YgeWV0IGNhbid0IGJlIGF1dG9nZW5lcmF0ZWQuCitAaW50ZXJm
YWNlIERPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50IDogRE9NSFRNTEVsZW1lbnQKKy0gKE5TU3Ry
aW5nICopYWxpZ247CistICh2b2lkKXNldEFsaWduOihOU1N0cmluZyAqKWFsaWduOworQGVuZApJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MVGFibGVDYXB0aW9u
RWxlbWVudC5tbQkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1M
VGFibGVDYXB0aW9uRWxlbWVudC5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2Vpbmln
QGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJET01IVE1M
VGFibGVDYXB0aW9uRWxlbWVudC5oIgorCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorI2ltcG9y
dCAiRE9NSFRNTEludGVybmFsLmgiCisjaW1wb3J0ICJIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5o
IgorCitAaW1wbGVtZW50YXRpb24gRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQKKworLSAoTlNT
dHJpbmcgKilhbGlnbgoreworICAgIHJldHVybiBbc2VsZiBfdGFibGVDYXB0aW9uRWxlbWVudF0t
PmFsaWduKCk7Cit9CisKKy0gKHZvaWQpc2V0QWxpZ246KE5TU3RyaW5nICopYWxpZ24KK3sKKyAg
ICBbc2VsZiBfdGFibGVDYXB0aW9uRWxlbWVudF0tPnNldEFsaWduKGFsaWduKTsKK30KKworQGVu
ZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxUYWJsZUNlbGxFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxUYWJsZUNlbGxFbGVt
ZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTFRhYmxl
Q2VsbEVsZW1lbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNv
bT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKyAKKyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTEVsZW1lbnQuaD4KKworLy8gRklY
TUU6IERPTUhUTUxUYWJsZUNlbGxFbGVtZW50IGhhcyBubyBJREwgZmlsZSBmb3IgaXQsIHNvIGFz
IG9mIHlldCBjYW4ndCBiZSBhdXRvZ2VuZXJhdGVkLgorQGludGVyZmFjZSBET01IVE1MVGFibGVD
ZWxsRWxlbWVudCA6IERPTUhUTUxFbGVtZW50CistIChpbnQpY2VsbEluZGV4OworLSAoTlNTdHJp
bmcgKilhYmJyOworLSAodm9pZClzZXRBYmJyOihOU1N0cmluZyAqKWFiYnI7CistIChOU1N0cmlu
ZyAqKWFsaWduOworLSAodm9pZClzZXRBbGlnbjooTlNTdHJpbmcgKilhbGlnbjsKKy0gKE5TU3Ry
aW5nICopYXhpczsKKy0gKHZvaWQpc2V0QXhpczooTlNTdHJpbmcgKilheGlzOworLSAoTlNTdHJp
bmcgKiliZ0NvbG9yOworLSAodm9pZClzZXRCZ0NvbG9yOihOU1N0cmluZyAqKWJnQ29sb3I7Cist
IChOU1N0cmluZyAqKWNoOworLSAodm9pZClzZXRDaDooTlNTdHJpbmcgKiljaDsKKy0gKE5TU3Ry
aW5nICopY2hPZmY7CistICh2b2lkKXNldENoT2ZmOihOU1N0cmluZyAqKWNoT2ZmOworLSAoaW50
KWNvbFNwYW47CistICh2b2lkKXNldENvbFNwYW46KGludCljb2xTcGFuOworLSAoTlNTdHJpbmcg
KiloZWFkZXJzOworLSAodm9pZClzZXRIZWFkZXJzOihOU1N0cmluZyAqKWhlYWRlcnM7CistIChO
U1N0cmluZyAqKWhlaWdodDsKKy0gKHZvaWQpc2V0SGVpZ2h0OihOU1N0cmluZyAqKWhlaWdodDsK
Ky0gKEJPT0wpbm9XcmFwOworLSAodm9pZClzZXROb1dyYXA6KEJPT0wpbm9XcmFwOworLSAoaW50
KXJvd1NwYW47CistICh2b2lkKXNldFJvd1NwYW46KGludClyb3dTcGFuOworLSAoTlNTdHJpbmcg
KilzY29wZTsKKy0gKHZvaWQpc2V0U2NvcGU6KE5TU3RyaW5nICopc2NvcGU7CistIChOU1N0cmlu
ZyAqKXZBbGlnbjsKKy0gKHZvaWQpc2V0VkFsaWduOihOU1N0cmluZyAqKXZBbGlnbjsKKy0gKE5T
U3RyaW5nICopd2lkdGg7CistICh2b2lkKXNldFdpZHRoOihOU1N0cmluZyAqKXdpZHRoOworQGVu
ZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxUYWJsZUNlbGxFbGVtZW50Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MVGFibGVDZWxsRWxl
bWVudC5tbQkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MVGFi
bGVDZWxsRWxlbWVudC5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxODEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRE9NSFRNTFRhYmxl
Q2VsbEVsZW1lbnQuaCIKKworI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUhU
TUxJbnRlcm5hbC5oIgorI2ltcG9ydCAiSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCIKKworQGltcGxl
bWVudGF0aW9uIERPTUhUTUxUYWJsZUNlbGxFbGVtZW50CisKKy0gKGludCljZWxsSW5kZXgKK3sK
KyAgICByZXR1cm4gW3NlbGYgX3RhYmxlQ2VsbEVsZW1lbnRdLT5jZWxsSW5kZXgoKTsKK30KKwor
LSAoTlNTdHJpbmcgKilhYmJyCit7CisgICAgcmV0dXJuIFtzZWxmIF90YWJsZUNlbGxFbGVtZW50
XS0+YWJicigpOworfQorCistICh2b2lkKXNldEFiYnI6KE5TU3RyaW5nICopYWJicgoreworICAg
IFtzZWxmIF90YWJsZUNlbGxFbGVtZW50XS0+c2V0QWJicihhYmJyKTsKK30KKworLSAoTlNTdHJp
bmcgKilhbGlnbgoreworICAgIHJldHVybiBbc2VsZiBfdGFibGVDZWxsRWxlbWVudF0tPmFsaWdu
KCk7Cit9CisKKy0gKHZvaWQpc2V0QWxpZ246KE5TU3RyaW5nICopYWxpZ24KK3sKKyAgICBbc2Vs
ZiBfdGFibGVDZWxsRWxlbWVudF0tPnNldEFsaWduKGFsaWduKTsKK30KKworLSAoTlNTdHJpbmcg
KilheGlzCit7CisgICAgcmV0dXJuIFtzZWxmIF90YWJsZUNlbGxFbGVtZW50XS0+YXhpcygpOwor
fQorCistICh2b2lkKXNldEF4aXM6KE5TU3RyaW5nICopYXhpcworeworICAgIFtzZWxmIF90YWJs
ZUNlbGxFbGVtZW50XS0+c2V0QXhpcyhheGlzKTsKK30KKworLSAoTlNTdHJpbmcgKiliZ0NvbG9y
Cit7CisgICAgcmV0dXJuIFtzZWxmIF90YWJsZUNlbGxFbGVtZW50XS0+YmdDb2xvcigpOworfQor
CistICh2b2lkKXNldEJnQ29sb3I6KE5TU3RyaW5nICopYmdDb2xvcgoreworICAgIFtzZWxmIF90
YWJsZUNlbGxFbGVtZW50XS0+c2V0QmdDb2xvcihiZ0NvbG9yKTsKK30KKworLSAoTlNTdHJpbmcg
KiljaAoreworICAgIHJldHVybiBbc2VsZiBfdGFibGVDZWxsRWxlbWVudF0tPmNoKCk7Cit9CisK
Ky0gKHZvaWQpc2V0Q2g6KE5TU3RyaW5nICopY2gKK3sKKyAgICBbc2VsZiBfdGFibGVDZWxsRWxl
bWVudF0tPnNldENoKGNoKTsKK30KKworLSAoTlNTdHJpbmcgKiljaE9mZgoreworICAgIHJldHVy
biBbc2VsZiBfdGFibGVDZWxsRWxlbWVudF0tPmNoT2ZmKCk7Cit9CisKKy0gKHZvaWQpc2V0Q2hP
ZmY6KE5TU3RyaW5nICopY2hPZmYKK3sKKyAgICBbc2VsZiBfdGFibGVDZWxsRWxlbWVudF0tPnNl
dENoT2ZmKGNoT2ZmKTsKK30KKworLSAoaW50KWNvbFNwYW4KK3sKKyAgICByZXR1cm4gW3NlbGYg
X3RhYmxlQ2VsbEVsZW1lbnRdLT5jb2xTcGFuKCk7Cit9CisKKy0gKHZvaWQpc2V0Q29sU3Bhbjoo
aW50KWNvbFNwYW4KK3sKKyAgICBbc2VsZiBfdGFibGVDZWxsRWxlbWVudF0tPnNldENvbFNwYW4o
Y29sU3Bhbik7Cit9CisKKy0gKE5TU3RyaW5nICopaGVhZGVycworeworICAgIHJldHVybiBbc2Vs
ZiBfdGFibGVDZWxsRWxlbWVudF0tPmhlYWRlcnMoKTsKK30KKworLSAodm9pZClzZXRIZWFkZXJz
OihOU1N0cmluZyAqKWhlYWRlcnMKK3sKKyAgICBbc2VsZiBfdGFibGVDZWxsRWxlbWVudF0tPnNl
dEhlYWRlcnMoaGVhZGVycyk7Cit9CisKKy0gKE5TU3RyaW5nICopaGVpZ2h0Cit7CisgICAgcmV0
dXJuIFtzZWxmIF90YWJsZUNlbGxFbGVtZW50XS0+aGVpZ2h0KCk7Cit9CisKKy0gKHZvaWQpc2V0
SGVpZ2h0OihOU1N0cmluZyAqKWhlaWdodAoreworICAgIFtzZWxmIF90YWJsZUNlbGxFbGVtZW50
XS0+c2V0SGVpZ2h0KGhlaWdodCk7Cit9CisKKy0gKEJPT0wpbm9XcmFwCit7CisgICAgcmV0dXJu
IFtzZWxmIF90YWJsZUNlbGxFbGVtZW50XS0+bm9XcmFwKCk7Cit9CisKKy0gKHZvaWQpc2V0Tm9X
cmFwOihCT09MKW5vV3JhcAoreworICAgIFtzZWxmIF90YWJsZUNlbGxFbGVtZW50XS0+c2V0Tm9X
cmFwKG5vV3JhcCk7Cit9CisKKy0gKGludClyb3dTcGFuCit7CisgICAgcmV0dXJuIFtzZWxmIF90
YWJsZUNlbGxFbGVtZW50XS0+cm93U3BhbigpOworfQorCistICh2b2lkKXNldFJvd1NwYW46KGlu
dClyb3dTcGFuCit7CisgICAgW3NlbGYgX3RhYmxlQ2VsbEVsZW1lbnRdLT5zZXRSb3dTcGFuKHJv
d1NwYW4pOworfQorCistIChOU1N0cmluZyAqKXNjb3BlCit7CisgICAgcmV0dXJuIFtzZWxmIF90
YWJsZUNlbGxFbGVtZW50XS0+c2NvcGUoKTsKK30KKworLSAodm9pZClzZXRTY29wZTooTlNTdHJp
bmcgKilzY29wZQoreworICAgIFtzZWxmIF90YWJsZUNlbGxFbGVtZW50XS0+c2V0U2NvcGUoc2Nv
cGUpOworfQorCistIChOU1N0cmluZyAqKXZBbGlnbgoreworICAgIHJldHVybiBbc2VsZiBfdGFi
bGVDZWxsRWxlbWVudF0tPnZBbGlnbigpOworfQorCistICh2b2lkKXNldFZBbGlnbjooTlNTdHJp
bmcgKil2QWxpZ24KK3sKKyAgICBbc2VsZiBfdGFibGVDZWxsRWxlbWVudF0tPnNldFZBbGlnbih2
QWxpZ24pOworfQorCistIChOU1N0cmluZyAqKXdpZHRoCit7CisgICAgcmV0dXJuIFtzZWxmIF90
YWJsZUNlbGxFbGVtZW50XS0+d2lkdGgoKTsKK30KKworLSAodm9pZClzZXRXaWR0aDooTlNTdHJp
bmcgKil3aWR0aAoreworICAgIFtzZWxmIF90YWJsZUNlbGxFbGVtZW50XS0+c2V0V2lkdGgod2lk
dGgpOworfQorCitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTFRhYmxl
Q29sRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1M
VGFibGVDb2xFbGVtZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NSFRNTFRhYmxlQ29sRWxlbWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWlu
aWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworIAorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MRWxlbWVudC5o
PgorCisvLyBGSVhNRTogRE9NSFRNTFRhYmxlQ29sRWxlbWVudCBoYXMgbm8gSURMIGZpbGUgZm9y
IGl0LCBzbyBhcyBvZiB5ZXQgY2FuJ3QgYmUgYXV0b2dlbmVyYXRlZC4KK0BpbnRlcmZhY2UgRE9N
SFRNTFRhYmxlQ29sRWxlbWVudCA6IERPTUhUTUxFbGVtZW50CistIChOU1N0cmluZyAqKWFsaWdu
OworLSAodm9pZClzZXRBbGlnbjooTlNTdHJpbmcgKilhbGlnbjsKKy0gKE5TU3RyaW5nICopY2g7
CistICh2b2lkKXNldENoOihOU1N0cmluZyAqKWNoOworLSAoTlNTdHJpbmcgKiljaE9mZjsKKy0g
KHZvaWQpc2V0Q2hPZmY6KE5TU3RyaW5nICopY2hPZmY7CistIChpbnQpc3BhbjsKKy0gKHZvaWQp
c2V0U3BhbjooaW50KXNwYW47CistIChOU1N0cmluZyAqKXZBbGlnbjsKKy0gKHZvaWQpc2V0VkFs
aWduOihOU1N0cmluZyAqKXZBbGlnbjsKKy0gKE5TU3RyaW5nICopd2lkdGg7CistICh2b2lkKXNl
dFdpZHRoOihOU1N0cmluZyAqKXdpZHRoOworQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUhUTUxUYWJsZUNvbEVsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTUhUTUxUYWJsZUNvbEVsZW1lbnQubW0JKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbQkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2Ft
dWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5oIgorCisjaW1wb3J0ICJET01J
bnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NSFRNTEludGVybmFsLmgiCisjaW1wb3J0ICJIVE1MVGFi
bGVDb2xFbGVtZW50LmgiCisKK0BpbXBsZW1lbnRhdGlvbiBET01IVE1MVGFibGVDb2xFbGVtZW50
CisKKy0gKFdlYkNvcmU6OkhUTUxUYWJsZUNvbEVsZW1lbnQgKilfdGFibGVDb2xFbGVtZW50Cit7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxUYWJsZUNvbEVsZW1lbnQgKj4o
RE9NX2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpOworfQorCistIChOU1N0cmluZyAq
KWFsaWduCit7CisgICAgcmV0dXJuIFtzZWxmIF90YWJsZUNvbEVsZW1lbnRdLT5hbGlnbigpOwor
fQorCistICh2b2lkKXNldEFsaWduOihOU1N0cmluZyAqKWFsaWduCit7CisgICAgW3NlbGYgX3Rh
YmxlQ29sRWxlbWVudF0tPnNldEFsaWduKGFsaWduKTsKK30KKworLSAoTlNTdHJpbmcgKiljaAor
eworICAgIHJldHVybiBbc2VsZiBfdGFibGVDb2xFbGVtZW50XS0+Y2goKTsKK30KKworLSAodm9p
ZClzZXRDaDooTlNTdHJpbmcgKiljaAoreworICAgIFtzZWxmIF90YWJsZUNvbEVsZW1lbnRdLT5z
ZXRDaChjaCk7Cit9CisKKy0gKE5TU3RyaW5nICopY2hPZmYKK3sKKyAgICByZXR1cm4gW3NlbGYg
X3RhYmxlQ29sRWxlbWVudF0tPmNoT2ZmKCk7Cit9CisKKy0gKHZvaWQpc2V0Q2hPZmY6KE5TU3Ry
aW5nICopY2hPZmYKK3sKKyAgICBbc2VsZiBfdGFibGVDb2xFbGVtZW50XS0+c2V0Q2hPZmYoY2hP
ZmYpOworfQorCistIChpbnQpc3BhbgoreworICAgIHJldHVybiBbc2VsZiBfdGFibGVDb2xFbGVt
ZW50XS0+c3BhbigpOworfQorCistICh2b2lkKXNldFNwYW46KGludClzcGFuCit7CisgICAgW3Nl
bGYgX3RhYmxlQ29sRWxlbWVudF0tPnNldFNwYW4oc3Bhbik7Cit9CisKKy0gKE5TU3RyaW5nICop
dkFsaWduCit7CisgICAgcmV0dXJuIFtzZWxmIF90YWJsZUNvbEVsZW1lbnRdLT52QWxpZ24oKTsK
K30KKworLSAodm9pZClzZXRWQWxpZ246KE5TU3RyaW5nICopdkFsaWduCit7CisgICAgW3NlbGYg
X3RhYmxlQ29sRWxlbWVudF0tPnNldFZBbGlnbih2QWxpZ24pOworfQorCistIChOU1N0cmluZyAq
KXdpZHRoCit7CisgICAgcmV0dXJuIFtzZWxmIF90YWJsZUNvbEVsZW1lbnRdLT53aWR0aCgpOwor
fQorCistICh2b2lkKXNldFdpZHRoOihOU1N0cmluZyAqKXdpZHRoCit7CisgICAgW3NlbGYgX3Rh
YmxlQ29sRWxlbWVudF0tPnNldFdpZHRoKHdpZHRoKTsKK30KKworQGVuZApJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxUYWJsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTFRhYmxlRWxlbWVudC5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxUYWJsZUVsZW1lbnQuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11
ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyAKKyNpbXBvcnQgPFdlYkNv
cmUvRE9NSFRNTEVsZW1lbnQuaD4KKworQGNsYXNzIERPTUhUTUxDb2xsZWN0aW9uOworQGNsYXNz
IERPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50OworQGNsYXNzIERPTUhUTUxUYWJsZVNlY3Rpb25F
bGVtZW50OworCisvLyBGSVhNRTogRE9NSFRNTFRhYmxlRWxlbWVudCBoYXMgbm8gSURMIGZpbGUg
Zm9yIGl0LCBzbyBhcyBvZiB5ZXQgY2FuJ3QgYmUgYXV0b2dlbmVyYXRlZC4KKyBAaW50ZXJmYWNl
IERPTUhUTUxUYWJsZUVsZW1lbnQgOiBET01IVE1MRWxlbWVudAorLSAoRE9NSFRNTFRhYmxlQ2Fw
dGlvbkVsZW1lbnQgKiljYXB0aW9uOworLSAodm9pZClzZXRDYXB0aW9uOihET01IVE1MVGFibGVD
YXB0aW9uRWxlbWVudCAqKWNhcHRpb247CistIChET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCAq
KXRIZWFkOworLSAodm9pZClzZXRUSGVhZDooRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgKil0
SGVhZDsKKy0gKERPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50ICopdEZvb3Q7CistICh2b2lkKXNl
dFRGb290OihET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCAqKXRGb290OworLSAoRE9NSFRNTENv
bGxlY3Rpb24gKilyb3dzOworLSAoRE9NSFRNTENvbGxlY3Rpb24gKil0Qm9kaWVzOworLSAoTlNT
dHJpbmcgKilhbGlnbjsKKy0gKHZvaWQpc2V0QWxpZ246KE5TU3RyaW5nICopYWxpZ247CistIChO
U1N0cmluZyAqKWJnQ29sb3I7CistICh2b2lkKXNldEJnQ29sb3I6KE5TU3RyaW5nICopYmdDb2xv
cjsKKy0gKE5TU3RyaW5nICopYm9yZGVyOworLSAodm9pZClzZXRCb3JkZXI6KE5TU3RyaW5nICop
Ym9yZGVyOworLSAoTlNTdHJpbmcgKiljZWxsUGFkZGluZzsKKy0gKHZvaWQpc2V0Q2VsbFBhZGRp
bmc6KE5TU3RyaW5nICopY2VsbFBhZGRpbmc7CistIChOU1N0cmluZyAqKWNlbGxTcGFjaW5nOwor
LSAodm9pZClzZXRDZWxsU3BhY2luZzooTlNTdHJpbmcgKiljZWxsU3BhY2luZzsKKworLy8gZnJh
bWVCb3JkZXJzIGNvcnJlc3BvbmRzIHRvIHRoZSBmcmFtZSBtZXRob2QKKy0gKE5TU3RyaW5nICop
ZnJhbWVCb3JkZXJzOyAKKy0gKHZvaWQpc2V0RnJhbWVCb3JkZXJzOihOU1N0cmluZyAqKWZyYW1l
Qm9yZGVyczsKKworLSAoTlNTdHJpbmcgKilydWxlczsKKy0gKHZvaWQpc2V0UnVsZXM6KE5TU3Ry
aW5nICopcnVsZXM7CistIChOU1N0cmluZyAqKXN1bW1hcnk7CistICh2b2lkKXNldFN1bW1hcnk6
KE5TU3RyaW5nICopc3VtbWFyeTsKKy0gKE5TU3RyaW5nICopd2lkdGg7CistICh2b2lkKXNldFdp
ZHRoOihOU1N0cmluZyAqKXdpZHRoOworLSAoRE9NSFRNTEVsZW1lbnQgKiljcmVhdGVUSGVhZDsK
Ky0gKHZvaWQpZGVsZXRlVEhlYWQ7CistIChET01IVE1MRWxlbWVudCAqKWNyZWF0ZVRGb290Owor
LSAodm9pZClkZWxldGVURm9vdDsKKy0gKERPTUhUTUxFbGVtZW50ICopY3JlYXRlQ2FwdGlvbjsK
Ky0gKHZvaWQpZGVsZXRlQ2FwdGlvbjsKKy0gKERPTUhUTUxFbGVtZW50ICopaW5zZXJ0Um93Oihp
bnQpaW5kZXg7CistICh2b2lkKWRlbGV0ZVJvdzooaW50KWluZGV4OworQGVuZApJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxUYWJsZUVsZW1lbnQubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxUYWJsZUVsZW1lbnQubW0JKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTFRhYmxlRWxlbWVudC5tbQkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiRE9NSFRNTFRhYmxlRWxlbWVudC5oIgorCisjaW1wb3J0ICJE
T01JbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NSFRNTEludGVybmFsLmgiCisjaW1wb3J0ICJIVE1M
VGFibGVFbGVtZW50LmgiCisKKyNpbXBvcnQgIkRPTUhUTUxDb2xsZWN0aW9uLmgiCisjaW1wb3J0
ICJET01IVE1MRWxlbWVudC5oIgorI2ltcG9ydCAiRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQu
aCIKKyNpbXBvcnQgIkRPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgiCisjaW1wb3J0ICJIVE1M
Q29sbGVjdGlvbi5oIgorI2ltcG9ydCAiSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCIKKyNpbXBv
cnQgIkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgiCisjaW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5o
PgorCitAaW1wbGVtZW50YXRpb24gRE9NSFRNTFRhYmxlRWxlbWVudAorCistIChET01IVE1MVGFi
bGVDYXB0aW9uRWxlbWVudCAqKWNhcHRpb24KK3sKKyAgICByZXR1cm4gW0RPTUhUTUxUYWJsZUNh
cHRpb25FbGVtZW50IF90YWJsZUNhcHRpb25FbGVtZW50V2l0aDpbc2VsZiBfdGFibGVFbGVtZW50
XS0+Y2FwdGlvbigpXTsKK30KKworLSAodm9pZClzZXRDYXB0aW9uOihET01IVE1MVGFibGVDYXB0
aW9uRWxlbWVudCAqKWNhcHRpb24KK3sKKyAgICBbc2VsZiBfdGFibGVFbGVtZW50XS0+c2V0Q2Fw
dGlvbihbY2FwdGlvbiBfdGFibGVDYXB0aW9uRWxlbWVudF0pOworfQorCistIChET01IVE1MVGFi
bGVTZWN0aW9uRWxlbWVudCAqKXRIZWFkCit7CisgICAgcmV0dXJuIFtET01IVE1MVGFibGVTZWN0
aW9uRWxlbWVudCBfdGFibGVTZWN0aW9uRWxlbWVudFdpdGg6W3NlbGYgX3RhYmxlRWxlbWVudF0t
PnRIZWFkKCldOworfQorCistICh2b2lkKXNldFRIZWFkOihET01IVE1MVGFibGVTZWN0aW9uRWxl
bWVudCAqKXRIZWFkCit7CisgICAgW3NlbGYgX3RhYmxlRWxlbWVudF0tPnNldFRIZWFkKFt0SGVh
ZCBfdGFibGVTZWN0aW9uRWxlbWVudF0pOworfQorCistIChET01IVE1MVGFibGVTZWN0aW9uRWxl
bWVudCAqKXRGb290Cit7CisgICAgcmV0dXJuIFtET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCBf
dGFibGVTZWN0aW9uRWxlbWVudFdpdGg6W3NlbGYgX3RhYmxlRWxlbWVudF0tPnRGb290KCldOwor
fQorCistICh2b2lkKXNldFRGb290OihET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCAqKXRGb290
Cit7CisgICAgW3NlbGYgX3RhYmxlRWxlbWVudF0tPnNldFRGb290KFt0Rm9vdCBfdGFibGVTZWN0
aW9uRWxlbWVudF0pOworfQorCistIChET01IVE1MQ29sbGVjdGlvbiAqKXJvd3MKK3sKKyAgICBy
ZXR1cm4gW0RPTUhUTUxDb2xsZWN0aW9uIF9jb2xsZWN0aW9uV2l0aDpbc2VsZiBfdGFibGVFbGVt
ZW50XS0+cm93cygpLmdldCgpXTsKK30KKworLSAoRE9NSFRNTENvbGxlY3Rpb24gKil0Qm9kaWVz
Cit7CisgICAgcmV0dXJuIFtET01IVE1MQ29sbGVjdGlvbiBfY29sbGVjdGlvbldpdGg6W3NlbGYg
X3RhYmxlRWxlbWVudF0tPnRCb2RpZXMoKS5nZXQoKV07Cit9CisKKy0gKE5TU3RyaW5nICopYWxp
Z24KK3sKKyAgICByZXR1cm4gW3NlbGYgX3RhYmxlRWxlbWVudF0tPmFsaWduKCk7Cit9CisKKy0g
KHZvaWQpc2V0QWxpZ246KE5TU3RyaW5nICopYWxpZ24KK3sKKyAgICBbc2VsZiBfdGFibGVFbGVt
ZW50XS0+c2V0QWxpZ24oYWxpZ24pOworfQorCistIChOU1N0cmluZyAqKWJnQ29sb3IKK3sKKyAg
ICByZXR1cm4gW3NlbGYgX3RhYmxlRWxlbWVudF0tPmJnQ29sb3IoKTsKK30KKworLSAodm9pZClz
ZXRCZ0NvbG9yOihOU1N0cmluZyAqKWJnQ29sb3IKK3sKKyAgICBbc2VsZiBfdGFibGVFbGVtZW50
XS0+c2V0QmdDb2xvcihiZ0NvbG9yKTsKK30KKworLSAoTlNTdHJpbmcgKilib3JkZXIKK3sKKyAg
ICByZXR1cm4gW3NlbGYgX3RhYmxlRWxlbWVudF0tPmJvcmRlcigpOworfQorCistICh2b2lkKXNl
dEJvcmRlcjooTlNTdHJpbmcgKilib3JkZXIKK3sKKyAgICBbc2VsZiBfdGFibGVFbGVtZW50XS0+
c2V0Qm9yZGVyKGJvcmRlcik7Cit9CisKKy0gKE5TU3RyaW5nICopY2VsbFBhZGRpbmcKK3sKKyAg
ICByZXR1cm4gW3NlbGYgX3RhYmxlRWxlbWVudF0tPmNlbGxQYWRkaW5nKCk7Cit9CisKKy0gKHZv
aWQpc2V0Q2VsbFBhZGRpbmc6KE5TU3RyaW5nICopY2VsbFBhZGRpbmcKK3sKKyAgICBbc2VsZiBf
dGFibGVFbGVtZW50XS0+c2V0Q2VsbFBhZGRpbmcoY2VsbFBhZGRpbmcpOworfQorCistIChOU1N0
cmluZyAqKWNlbGxTcGFjaW5nCit7CisgICAgcmV0dXJuIFtzZWxmIF90YWJsZUVsZW1lbnRdLT5j
ZWxsU3BhY2luZygpOworfQorCistICh2b2lkKXNldENlbGxTcGFjaW5nOihOU1N0cmluZyAqKWNl
bGxTcGFjaW5nCit7CisgICAgW3NlbGYgX3RhYmxlRWxlbWVudF0tPnNldENlbGxTcGFjaW5nKGNl
bGxTcGFjaW5nKTsKK30KKworCisvLyBmcmFtZUJvcmRlcnMgY29ycmVzcG9uZHMgdG8gdGhlIGZy
YW1lIG1ldGhvZAorLSAoTlNTdHJpbmcgKilmcmFtZUJvcmRlcnMKK3sKKyAgICByZXR1cm4gW3Nl
bGYgX3RhYmxlRWxlbWVudF0tPmZyYW1lKCk7CisgICAgLy9yZXR1cm4gW3NlbGYgX3RhYmxlRWxl
bWVudF0tPmdldEF0dHJpYnV0ZShmcmFtZUF0dHIpOworfQorCistICh2b2lkKXNldEZyYW1lQm9y
ZGVyczooTlNTdHJpbmcgKilmcmFtZUJvcmRlcnMKK3sKKyAgICBbc2VsZiBfdGFibGVFbGVtZW50
XS0+c2V0RnJhbWUoZnJhbWVCb3JkZXJzKTsKKy8vICAgIFtzZWxmIF90YWJsZUVsZW1lbnRdLT5z
ZXRBdHRyaWJ1dGUoZnJhbWVBdHRyLCBmcmFtZUJvcmRlcnMpOworfQorCisKKy0gKE5TU3RyaW5n
ICopcnVsZXMKK3sKKyAgICByZXR1cm4gW3NlbGYgX3RhYmxlRWxlbWVudF0tPnJ1bGVzKCk7Cit9
CisKKy0gKHZvaWQpc2V0UnVsZXM6KE5TU3RyaW5nICopcnVsZXMKK3sKKyAgICBbc2VsZiBfdGFi
bGVFbGVtZW50XS0+c2V0UnVsZXMocnVsZXMpOworfQorCistIChOU1N0cmluZyAqKXN1bW1hcnkK
K3sKKyAgICByZXR1cm4gW3NlbGYgX3RhYmxlRWxlbWVudF0tPnN1bW1hcnkoKTsKK30KKworLSAo
dm9pZClzZXRTdW1tYXJ5OihOU1N0cmluZyAqKXN1bW1hcnkKK3sKKyAgICBbc2VsZiBfdGFibGVF
bGVtZW50XS0+c2V0U3VtbWFyeShzdW1tYXJ5KTsKK30KKworLSAoTlNTdHJpbmcgKil3aWR0aAor
eworICAgIHJldHVybiBbc2VsZiBfdGFibGVFbGVtZW50XS0+d2lkdGgoKTsKK30KKworLSAodm9p
ZClzZXRXaWR0aDooTlNTdHJpbmcgKil3aWR0aAoreworICAgIFtzZWxmIF90YWJsZUVsZW1lbnRd
LT5zZXRXaWR0aCh3aWR0aCk7Cit9CisKKy0gKERPTUhUTUxFbGVtZW50ICopY3JlYXRlVEhlYWQK
K3sKKyAgICBXZWJDb3JlOjpIVE1MVGFibGVTZWN0aW9uRWxlbWVudCAqaW1wbCA9IHN0YXRpY19j
YXN0PFdlYkNvcmU6OkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50ICo+KFtzZWxmIF90YWJsZUVsZW1l
bnRdLT5jcmVhdGVUSGVhZCgpKTsKKyAgICByZXR1cm4gW0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50IF90YWJsZVNlY3Rpb25FbGVtZW50V2l0aDppbXBsXTsKK30KKworLSAodm9pZClkZWxldGVU
SGVhZAoreworICAgIFtzZWxmIF90YWJsZUVsZW1lbnRdLT5kZWxldGVUSGVhZCgpOworfQorCist
IChET01IVE1MRWxlbWVudCAqKWNyZWF0ZVRGb290Cit7CisgICAgV2ViQ29yZTo6SFRNTFRhYmxl
U2VjdGlvbkVsZW1lbnQgKmltcGwgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFibGVTZWN0
aW9uRWxlbWVudCAqPihbc2VsZiBfdGFibGVFbGVtZW50XS0+Y3JlYXRlVEZvb3QoKSk7CisgICAg
cmV0dXJuIFtET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCBfdGFibGVTZWN0aW9uRWxlbWVudFdp
dGg6aW1wbF07Cit9CisKKy0gKHZvaWQpZGVsZXRlVEZvb3QKK3sKKyAgICBbc2VsZiBfdGFibGVF
bGVtZW50XS0+ZGVsZXRlVEZvb3QoKTsKK30KKworLSAoRE9NSFRNTEVsZW1lbnQgKiljcmVhdGVD
YXB0aW9uCit7CisgICAgV2ViQ29yZTo6SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQgKmltcGwgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFibGVDYXB0aW9uRWxlbWVudCAqPihbc2VsZiBfdGFi
bGVFbGVtZW50XS0+Y3JlYXRlQ2FwdGlvbigpKTsKKyAgICByZXR1cm4gW0RPTUhUTUxUYWJsZUNh
cHRpb25FbGVtZW50IF90YWJsZUNhcHRpb25FbGVtZW50V2l0aDppbXBsXTsKK30KKworLSAodm9p
ZClkZWxldGVDYXB0aW9uCit7CisgICAgW3NlbGYgX3RhYmxlRWxlbWVudF0tPmRlbGV0ZUNhcHRp
b24oKTsKK30KKworLSAoRE9NSFRNTEVsZW1lbnQgKilpbnNlcnRSb3c6KGludClpbmRleAorewor
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkhUTUxUYWJs
ZUVsZW1lbnQgKmltcGwgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50ICo+
KFtzZWxmIF90YWJsZUVsZW1lbnRdLT5pbnNlcnRSb3coaW5kZXgsIGVjKSk7CisgICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gW0RPTUhUTUxUYWJsZUVsZW1lbnQgX3RhYmxlRWxl
bWVudFdpdGg6aW1wbF07Cit9CisKKy0gKHZvaWQpZGVsZXRlUm93OihpbnQpaW5kZXgKK3sKKyAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBbc2VsZiBfdGFibGVFbGVtZW50
XS0+ZGVsZXRlUm93KGluZGV4LCBlYyk7CisgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKwor
QGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxUYWJsZVJvd0VsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTFRhYmxlUm93RWxl
bWVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxUYWJs
ZVJvd0VsZW1lbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNv
bT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKyAKKyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTEVsZW1lbnQuaD4KKworQGNsYXNz
IERPTUhUTUxDb2xsZWN0aW9uOworCisvLyBGSVhNRTogRE9NSFRNTFRhYmxlUm93RWxlbWVudCBo
YXMgbm8gSURMIGZpbGUgZm9yIGl0LCBzbyBhcyBvZiB5ZXQgY2FuJ3QgYmUgYXV0b2dlbmVyYXRl
ZC4KK0BpbnRlcmZhY2UgRE9NSFRNTFRhYmxlUm93RWxlbWVudCA6IERPTUhUTUxFbGVtZW50Cist
IChpbnQpcm93SW5kZXg7CistIChpbnQpc2VjdGlvblJvd0luZGV4OworLSAoRE9NSFRNTENvbGxl
Y3Rpb24gKiljZWxsczsKKy0gKE5TU3RyaW5nICopYWxpZ247CistICh2b2lkKXNldEFsaWduOihO
U1N0cmluZyAqKWFsaWduOworLSAoTlNTdHJpbmcgKiliZ0NvbG9yOworLSAodm9pZClzZXRCZ0Nv
bG9yOihOU1N0cmluZyAqKWJnQ29sb3I7CistIChOU1N0cmluZyAqKWNoOworLSAodm9pZClzZXRD
aDooTlNTdHJpbmcgKiljaDsKKy0gKE5TU3RyaW5nICopY2hPZmY7CistICh2b2lkKXNldENoT2Zm
OihOU1N0cmluZyAqKWNoT2ZmOworLSAoTlNTdHJpbmcgKil2QWxpZ247CistICh2b2lkKXNldFZB
bGlnbjooTlNTdHJpbmcgKil2QWxpZ247CistIChET01IVE1MRWxlbWVudCAqKWluc2VydENlbGw6
KGludClpbmRleDsKKy0gKHZvaWQpZGVsZXRlQ2VsbDooaW50KWluZGV4OworQGVuZApJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxUYWJsZVJvd0VsZW1lbnQubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxUYWJsZVJvd0VsZW1lbnQubW0JKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTFRhYmxlUm93RWxlbWVu
dC5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRE9NSFRNTFRhYmxlUm93RWxlbWVudC5o
IgorCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NSFRNTEludGVybmFsLmgi
CisjaW1wb3J0ICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCisKKyNpbXBvcnQgIkRPTUhUTUxDb2xs
ZWN0aW9uLmgiCisjaW1wb3J0ICJET01IVE1MVGFibGVDZWxsRWxlbWVudC5oIgorI2ltcG9ydCAi
SFRNTENvbGxlY3Rpb24uaCIKKyNpbXBvcnQgIkhUTUxUYWJsZUNlbGxFbGVtZW50LmgiCisjaW1w
b3J0IDx3dGYvUGFzc1JlZlB0ci5oPgorCitAaW1wbGVtZW50YXRpb24gRE9NSFRNTFRhYmxlUm93
RWxlbWVudAorCistIChXZWJDb3JlOjpIVE1MVGFibGVSb3dFbGVtZW50ICopX3RhYmxlUm93RWxl
bWVudAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFibGVSb3dFbGVt
ZW50ICo+KERPTV9jYXN0PFdlYkNvcmU6Ok5vZGUgKj4oX2ludGVybmFsKSk7Cit9CisKKy0gKGlu
dClyb3dJbmRleAoreworICAgIHJldHVybiBbc2VsZiBfdGFibGVSb3dFbGVtZW50XS0+cm93SW5k
ZXgoKTsKK30KKworLSAoaW50KXNlY3Rpb25Sb3dJbmRleAoreworICAgIHJldHVybiBbc2VsZiBf
dGFibGVSb3dFbGVtZW50XS0+c2VjdGlvblJvd0luZGV4KCk7Cit9CisKKy0gKERPTUhUTUxDb2xs
ZWN0aW9uICopY2VsbHMKK3sKKyAgICByZXR1cm4gW0RPTUhUTUxDb2xsZWN0aW9uIF9jb2xsZWN0
aW9uV2l0aDpbc2VsZiBfdGFibGVSb3dFbGVtZW50XS0+Y2VsbHMoKS5nZXQoKV07Cit9CisKKy0g
KE5TU3RyaW5nICopYWxpZ24KK3sKKyAgICByZXR1cm4gW3NlbGYgX3RhYmxlUm93RWxlbWVudF0t
PmFsaWduKCk7Cit9CisKKy0gKHZvaWQpc2V0QWxpZ246KE5TU3RyaW5nICopYWxpZ24KK3sKKyAg
ICBbc2VsZiBfdGFibGVSb3dFbGVtZW50XS0+c2V0QWxpZ24oYWxpZ24pOworfQorCistIChOU1N0
cmluZyAqKWJnQ29sb3IKK3sKKyAgICByZXR1cm4gW3NlbGYgX3RhYmxlUm93RWxlbWVudF0tPmJn
Q29sb3IoKTsKK30KKworLSAodm9pZClzZXRCZ0NvbG9yOihOU1N0cmluZyAqKWJnQ29sb3IKK3sK
KyAgICBbc2VsZiBfdGFibGVSb3dFbGVtZW50XS0+c2V0QmdDb2xvcihiZ0NvbG9yKTsKK30KKwor
LSAoTlNTdHJpbmcgKiljaAoreworICAgIHJldHVybiBbc2VsZiBfdGFibGVSb3dFbGVtZW50XS0+
Y2goKTsKK30KKworLSAodm9pZClzZXRDaDooTlNTdHJpbmcgKiljaAoreworICAgIFtzZWxmIF90
YWJsZVJvd0VsZW1lbnRdLT5zZXRDaChjaCk7Cit9CisKKy0gKE5TU3RyaW5nICopY2hPZmYKK3sK
KyAgICByZXR1cm4gW3NlbGYgX3RhYmxlUm93RWxlbWVudF0tPmNoT2ZmKCk7Cit9CisKKy0gKHZv
aWQpc2V0Q2hPZmY6KE5TU3RyaW5nICopY2hPZmYKK3sKKyAgICBbc2VsZiBfdGFibGVSb3dFbGVt
ZW50XS0+c2V0Q2hPZmYoY2hPZmYpOworfQorCistIChOU1N0cmluZyAqKXZBbGlnbgoreworICAg
IHJldHVybiBbc2VsZiBfdGFibGVSb3dFbGVtZW50XS0+dkFsaWduKCk7Cit9CisKKy0gKHZvaWQp
c2V0VkFsaWduOihOU1N0cmluZyAqKXZBbGlnbgoreworICAgIFtzZWxmIF90YWJsZVJvd0VsZW1l
bnRdLT5zZXRWQWxpZ24odkFsaWduKTsKK30KKworLSAoRE9NSFRNTEVsZW1lbnQgKilpbnNlcnRD
ZWxsOihpbnQpaW5kZXgKK3sKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVudCAqaW1wbCA9IHN0YXRpY19jYXN0PFdlYkNv
cmU6OkhUTUxUYWJsZUNlbGxFbGVtZW50ICo+KFtzZWxmIF90YWJsZVJvd0VsZW1lbnRdLT5pbnNl
cnRDZWxsKGluZGV4LCBlYykpOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJu
IFtET01IVE1MVGFibGVDZWxsRWxlbWVudCBfdGFibGVDZWxsRWxlbWVudFdpdGg6aW1wbF07Cit9
CisKKy0gKHZvaWQpZGVsZXRlQ2VsbDooaW50KWluZGV4Cit7CisgICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgW3NlbGYgX3RhYmxlUm93RWxlbWVudF0tPmRlbGV0ZUNlbGwo
aW5kZXgsIGVjKTsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworfQorCitAZW5kCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQu
aAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MVGFibGVTZWN0
aW9uRWxlbWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29t
PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworIAorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MRWxlbWVudC5oPgorCitAY2xhc3Mg
RE9NSFRNTENvbGxlY3Rpb247CisKKy8vIEZJWE1FOiBET01IVE1MVGFibGVTZWN0aW9uRWxlbWVu
dCBoYXMgbm8gSURMIGZpbGUgZm9yIGl0LCBzbyBhcyBvZiB5ZXQgY2FuJ3QgYmUgYXV0b2dlbmVy
YXRlZC4KK0BpbnRlcmZhY2UgRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgOiBET01IVE1MRWxl
bWVudAorLSAoTlNTdHJpbmcgKilhbGlnbjsKKy0gKHZvaWQpc2V0QWxpZ246KE5TU3RyaW5nICop
YWxpZ247CistIChOU1N0cmluZyAqKWNoOworLSAodm9pZClzZXRDaDooTlNTdHJpbmcgKiljaDsK
Ky0gKE5TU3RyaW5nICopY2hPZmY7CistICh2b2lkKXNldENoT2ZmOihOU1N0cmluZyAqKWNoT2Zm
OworLSAoTlNTdHJpbmcgKil2QWxpZ247CistICh2b2lkKXNldFZBbGlnbjooTlNTdHJpbmcgKil2
QWxpZ247CistIChET01IVE1MQ29sbGVjdGlvbiAqKXJvd3M7CistIChET01IVE1MRWxlbWVudCAq
KWluc2VydFJvdzooaW50KWluZGV4OworLSAodm9pZClkZWxldGVSb3c6KGludClpbmRleDsKK0Bl
bmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MVGFibGVTZWN0aW9uRWxlbWVu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTFRhYmxlU2Vj
dGlvbkVsZW1lbnQubW0JKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53
ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRP
TUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgiCisKKyNpbXBvcnQgIkRPTUludGVybmFsLmgiCisj
aW1wb3J0ICJET01IVE1MSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkhUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50LmgiCisKKyNpbXBvcnQgIkRPTUhUTUxDb2xsZWN0aW9uLmgiCisjaW1wb3J0ICJET01IVE1M
RWxlbWVudC5oIgorI2ltcG9ydCAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbXBvcnQgIkhUTUxFbGVt
ZW50LmgiCisjaW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5oPgorCitAaW1wbGVtZW50YXRpb24gRE9N
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQKKworLSAoTlNTdHJpbmcgKilhbGlnbgoreworICAgIHJl
dHVybiBbc2VsZiBfdGFibGVTZWN0aW9uRWxlbWVudF0tPmFsaWduKCk7Cit9CisKKy0gKHZvaWQp
c2V0QWxpZ246KE5TU3RyaW5nICopYWxpZ24KK3sKKyAgICBbc2VsZiBfdGFibGVTZWN0aW9uRWxl
bWVudF0tPnNldEFsaWduKGFsaWduKTsKK30KKworLSAoTlNTdHJpbmcgKiljaAoreworICAgIHJl
dHVybiBbc2VsZiBfdGFibGVTZWN0aW9uRWxlbWVudF0tPmNoKCk7Cit9CisKKy0gKHZvaWQpc2V0
Q2g6KE5TU3RyaW5nICopY2gKK3sKKyAgICBbc2VsZiBfdGFibGVTZWN0aW9uRWxlbWVudF0tPnNl
dENoKGNoKTsKK30KKworLSAoTlNTdHJpbmcgKiljaE9mZgoreworICAgIHJldHVybiBbc2VsZiBf
dGFibGVTZWN0aW9uRWxlbWVudF0tPmNoT2ZmKCk7Cit9CisKKy0gKHZvaWQpc2V0Q2hPZmY6KE5T
U3RyaW5nICopY2hPZmYKK3sKKyAgICBbc2VsZiBfdGFibGVTZWN0aW9uRWxlbWVudF0tPnNldENo
T2ZmKGNoT2ZmKTsKK30KKworLSAoTlNTdHJpbmcgKil2QWxpZ24KK3sKKyAgICByZXR1cm4gW3Nl
bGYgX3RhYmxlU2VjdGlvbkVsZW1lbnRdLT52QWxpZ24oKTsKK30KKworLSAodm9pZClzZXRWQWxp
Z246KE5TU3RyaW5nICopdkFsaWduCit7CisgICAgW3NlbGYgX3RhYmxlU2VjdGlvbkVsZW1lbnRd
LT5zZXRWQWxpZ24odkFsaWduKTsKK30KKworLSAoRE9NSFRNTENvbGxlY3Rpb24gKilyb3dzCit7
CisgICAgcmV0dXJuIFtET01IVE1MQ29sbGVjdGlvbiBfY29sbGVjdGlvbldpdGg6W3NlbGYgX3Rh
YmxlU2VjdGlvbkVsZW1lbnRdLT5yb3dzKCkuZ2V0KCldOworfQorCistIChET01IVE1MRWxlbWVu
dCAqKWluc2VydFJvdzooaW50KWluZGV4Cit7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgV2ViQ29yZTo6SFRNTEVsZW1lbnQgKmltcGwgPSBbc2VsZiBfdGFibGVTZWN0
aW9uRWxlbWVudF0tPmluc2VydFJvdyhpbmRleCwgZWMpOworICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7CisgICAgcmV0dXJuIFtET01IVE1MRWxlbWVudCBfZWxlbWVudFdpdGg6aW1wbF07Cit9CisK
Ky0gKHZvaWQpZGVsZXRlUm93OihpbnQpaW5kZXgKK3sKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlIGVjID0gMDsKKyAgICBbc2VsZiBfdGFibGVTZWN0aW9uRWxlbWVudF0tPmRlbGV0ZVJvdyhp
bmRleCwgZWMpOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7Cit9CisKK0BlbmQKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbXBsZW1lbnRhdGlvbkZyb250LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUltcGxlbWVudGF0aW9uRnJvbnQuaAkocmV2aXNp
b24gMTU5NDUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW1wbGVtZW50YXRpb25Gcm9u
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBX
ZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01Myw2
ICs1NCw2IEBAIHB1YmxpYzoKIAogRE9NSW1wbGVtZW50YXRpb25Gcm9udCogaW1wbGVtZW50YXRp
b25Gcm9udChEb2N1bWVudCopOwogCi19IC8vbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIERPTUltcGxlbWVudGF0aW9uRnJvbnRfaApJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTUludGVybmFsLmgJKHJldmlzaW9uIDE1OTQ1KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgSmFtZXMgRy4gU3Bl
dGggKHNwZXRoQGVuZC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAo
c2FtLndlaW5pZ0BnbWFpbC5jb20pCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDI1ICsyNyw0MiBAQAogCiAjaW1wb3J0ICJET00uaCIKIAorI2ltcG9ydCAiRE9NQXR0ci5o
IgorI2ltcG9ydCAiRE9NRE9NSW1wbGVtZW50YXRpb24uaCIKKyNpbXBvcnQgIkRPTURvY3VtZW50
LmgiCisjaW1wb3J0ICJET01Eb2N1bWVudEZyYWdtZW50LmgiCisjaW1wb3J0ICJET01Eb2N1bWVu
dFR5cGUuaCIKKyNpbXBvcnQgIkRPTUVsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTU5hbWVkTm9kZU1h
cC5oIgorI2ltcG9ydCAiRE9NTm9kZS5oIgorI2ltcG9ydCAiRE9NTm9kZUxpc3QuaCIKKyNpbXBv
cnQgIkRPTU9iamVjdC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgQXR0cjsK
ICAgICBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwogICAgIGNsYXNzIENTU1N0eWxlU2hlZXQ7
Ci0gICAgY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKKyAgICBjbGFzcyBET01JbXBsZW1lbnRhdGlv
bkZyb250OwogICAgIGNsYXNzIERvY3VtZW50OworICAgIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7
CiAgICAgY2xhc3MgRG9jdW1lbnRUeXBlOwogICAgIGNsYXNzIEVsZW1lbnQ7Ci0gICAgY2xhc3Mg
Tm9kZUZpbHRlcjsKKyAgICBjbGFzcyBOYW1lZE5vZGVNYXA7CiAgICAgY2xhc3MgTm9kZTsKKyAg
ICBjbGFzcyBOb2RlRmlsdGVyOwogICAgIGNsYXNzIE5vZGVJdGVyYXRvcjsKLSAgICBjbGFzcyBO
YW1lZE5vZGVNYXA7CiAgICAgY2xhc3MgTm9kZUxpc3Q7CiAgICAgY2xhc3MgUmFuZ2U7CiAgICAg
Y2xhc3MgU3R5bGVTaGVldExpc3Q7CiAgICAgY2xhc3MgVHJlZVdhbGtlcjsKLQorICAgIAogICAg
IHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiB9CiAKK0BpbnRlcmZhY2UgRE9NT2JqZWN0IChX
ZWJDb3JlSW50ZXJuYWwpCistIChpZClfaW5pdDsKK0BlbmQKKwogQGludGVyZmFjZSBET01Ob2Rl
IChXZWJDb3JlSW50ZXJuYWwpCiArIChET01Ob2RlICopX25vZGVXaXRoOihXZWJDb3JlOjpOb2Rl
ICopaW1wbDsKIC0gKFdlYkNvcmU6Ok5vZGUgKilfbm9kZTsKQEAgLTYzLDYgKzgxLDIwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC0gKFdlYkNvcmU6OkVsZW1lbnQgKilfZWxlbWVudDsKIEBlbmQK
IAorQGludGVyZmFjZSBET01BdHRyIChXZWJDb3JlSW50ZXJuYWwpCisrIChET01BdHRyICopX2F0
dHJXaXRoOihXZWJDb3JlOjpBdHRyICopaW1wbDsKKy0gKFdlYkNvcmU6OkF0dHIgKilfYXR0cjsK
K0BlbmQKKworQGludGVyZmFjZSBET01Eb2N1bWVudFR5cGUgKFdlYkNvcmVJbnRlcm5hbCkKKy0g
KFdlYkNvcmU6OkRvY3VtZW50VHlwZSAqKV9Eb2N1bWVudFR5cGU7CitAZW5kCisKK0BpbnRlcmZh
Y2UgRE9NSW1wbGVtZW50YXRpb24gKFdlYkNvcmVJbnRlcm5hbCkKKysgKERPTUltcGxlbWVudGF0
aW9uICopX0RPTUltcGxlbWVudGF0aW9uV2l0aDooV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb25G
cm9udCAqKWltcGw7CistIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbkZyb250ICopX0RPTUlt
cGxlbWVudGF0aW9uOworQGVuZAorCiBAaW50ZXJmYWNlIERPTURvY3VtZW50IChXZWJDb3JlSW50
ZXJuYWwpCiArIChET01Eb2N1bWVudCAqKV9kb2N1bWVudFdpdGg6KFdlYkNvcmU6OkRvY3VtZW50
ICopaW1wbDsKIC0gKFdlYkNvcmU6OkRvY3VtZW50ICopX2RvY3VtZW50OwpAQCAtODcsMTAgKzEx
OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICsgKERPTVRyZWVXYWxrZXIgKilfdHJlZVdhbGtl
cldpdGg6KFdlYkNvcmU6OlRyZWVXYWxrZXIgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0
ZXI+KWZpbHRlcjsKIEBlbmQKIAotQGludGVyZmFjZSBET01PYmplY3QgKFdlYkNvcmVJbnRlcm5h
bCkKLS0gKGlkKV9pbml0OwotQGVuZAotCiBAaW50ZXJmYWNlIERPTUNTU1N0eWxlRGVjbGFyYXRp
b24gKFdlYkNvcmVJbnRlcm5hbCkKICsgKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilfc3R5bGVE
ZWNsYXJhdGlvbldpdGg6KFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb24gKilpbXBsOwogLSAo
V2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbiAqKV9zdHlsZURlY2xhcmF0aW9uOwpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5hbWVkTm9kZU1hcC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01OYW1lZE5vZGVNYXAuaAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01OYW1lZE5vZGVNYXAuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11
ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8V2ViQ29y
ZS9ET01PYmplY3QuaD4KKworQGNsYXNzIERPTU5vZGU7CisKK0BpbnRlcmZhY2UgRE9NTmFtZWRO
b2RlTWFwIDogRE9NT2JqZWN0CistIChET01Ob2RlICopZ2V0TmFtZWRJdGVtOihOU1N0cmluZyAq
KW5hbWU7CistIChET01Ob2RlICopc2V0TmFtZWRJdGVtOihET01Ob2RlICopYXJnOworLSAoRE9N
Tm9kZSAqKXJlbW92ZU5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1lOworLSAoRE9NTm9kZSAqKWl0
ZW06KHVuc2lnbmVkKWluZGV4OworLSAodW5zaWduZWQpbGVuZ3RoOworLSAoRE9NTm9kZSAqKWdl
dE5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxO
YW1lOworLSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbU5TOihET01Ob2RlICopYXJnOworLSAoRE9N
Tm9kZSAqKXJlbW92ZU5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3Ry
aW5nICopbG9jYWxOYW1lOworQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5h
bWVkTm9kZU1hcC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTmFt
ZWROb2RlTWFwLm1tCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5h
bWVkTm9kZU1hcC5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBKYW1lcyBHLiBTcGV0aCA8c3BldGhAZW5kLmNv
bT4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWls
LmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJET01OYW1lZE5vZGVN
YXAuaCIKKworI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKKyNpbXBvcnQgIk5hbWVkTm9kZU1hcC5o
IgorCisjaW1wb3J0ICJET01Ob2RlLmgiCisjaW1wb3J0ICJOb2RlLmgiCisjaW1wb3J0IDx3dGYv
QXNzZXJ0aW9ucy5oPgorCitAaW1wbGVtZW50YXRpb24gRE9NTmFtZWROb2RlTWFwCisKKy0gKHZv
aWQpZGVhbGxvYworeworICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIERPTV9jYXN0PFdlYkNv
cmU6Ok5hbWVkTm9kZU1hcCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOworICAgIFtzdXBlciBkZWFs
bG9jXTsKK30KKworLSAodm9pZClmaW5hbGl6ZQoreworICAgIGlmIChfaW50ZXJuYWwpCisgICAg
ICAgIERPTV9jYXN0PFdlYkNvcmU6Ok5hbWVkTm9kZU1hcCAqPihfaW50ZXJuYWwpLT5kZXJlZigp
OworICAgIFtzdXBlciBmaW5hbGl6ZV07Cit9CisKKy0gKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcCAq
KV9uYW1lZE5vZGVNYXAKK3sKKyAgICByZXR1cm4gRE9NX2Nhc3Q8V2ViQ29yZTo6TmFtZWROb2Rl
TWFwICo+KF9pbnRlcm5hbCk7Cit9CisKKy0gKERPTU5vZGUgKilnZXROYW1lZEl0ZW06KE5TU3Ry
aW5nICopbmFtZQoreworICAgIEFTU0VSVChuYW1lKTsKKworICAgIHJldHVybiBbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPmdldE5hbWVkSXRlbShuYW1lKS5nZXQoKV07
Cit9CisKKy0gKERPTU5vZGUgKilzZXROYW1lZEl0ZW06KERPTU5vZGUgKilhcmcKK3sKKyAgICBB
U1NFUlQoYXJnKTsKKworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERP
TU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+
c2V0TmFtZWRJdGVtKFthcmcgX25vZGVdLCBlYykuZ2V0KCldOworICAgIHJhaXNlT25ET01FcnJv
cihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVk
SXRlbTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgQVNTRVJUKG5hbWUpOworCisgICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUg
X25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5yZW1vdmVOYW1lZEl0ZW0obmFtZSwgZWMp
LmdldCgpXTsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKKy0gKERPTU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleAoreworICAgIHJldHVybiBbRE9N
Tm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPml0ZW0oaW5kZXgpLmdldCgpXTsK
K30KKworLSAodW5zaWduZWQpbGVuZ3RoCit7CisgICAgcmV0dXJuIFtzZWxmIF9uYW1lZE5vZGVN
YXBdLT5sZW5ndGgoKTsKK30KKworLSAoRE9NTm9kZSAqKWdldE5hbWVkSXRlbU5TOihOU1N0cmlu
ZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCit7CisgICAgaWYgKCFuYW1l
c3BhY2VVUkkgfHwgIWxvY2FsTmFtZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVy
biBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPmdldE5hbWVkSXRlbU5T
KG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKS5nZXQoKV07Cit9CisKKy0gKERPTU5vZGUgKilzZXRO
YW1lZEl0ZW1OUzooRE9NTm9kZSAqKWFyZworeworICAgIEFTU0VSVChhcmcpOworCisgICAgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5v
ZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5zZXROYW1lZEl0ZW1OUyhbYXJnIF9u
b2RlXSwgZWMpLmdldCgpXTsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKKy0gKERPTU5vZGUgKilyZW1vdmVOYW1lZEl0ZW1OUzooTlNTdHJpbmcgKilu
YW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQoreworICAgIEFTU0VSVChuYW1lc3Bh
Y2VVUkkpOworICAgIEFTU0VSVChsb2NhbE5hbWUpOworCisgICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltz
ZWxmIF9uYW1lZE5vZGVNYXBdLT5yZW1vdmVOYW1lZEl0ZW1OUyhuYW1lc3BhY2VVUkksIGxvY2Fs
TmFtZSwgZWMpLmdldCgpXTsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5vZGUuaAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2Ft
dWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFdlYkNv
cmUvRE9NT2JqZWN0Lmg+CisKK0BjbGFzcyBET01Eb2N1bWVudDsgCitAY2xhc3MgRE9NTmFtZWRO
b2RlTWFwOworQGNsYXNzIERPTU5vZGVMaXN0OworCitAaW50ZXJmYWNlIERPTU5vZGUgOiBET01P
YmplY3QKKy0gKE5TU3RyaW5nICopbm9kZU5hbWU7CistIChOU1N0cmluZyAqKW5vZGVWYWx1ZTsK
Ky0gKHZvaWQpc2V0Tm9kZVZhbHVlOihOU1N0cmluZyAqKXN0cmluZzsKKy0gKHVuc2lnbmVkIHNo
b3J0KW5vZGVUeXBlOworLSAoRE9NTm9kZSAqKXBhcmVudE5vZGU7CistIChET01Ob2RlTGlzdCAq
KWNoaWxkTm9kZXM7CistIChET01Ob2RlICopZmlyc3RDaGlsZDsKKy0gKERPTU5vZGUgKilsYXN0
Q2hpbGQ7CistIChET01Ob2RlICopcHJldmlvdXNTaWJsaW5nOworLSAoRE9NTm9kZSAqKW5leHRT
aWJsaW5nOworLSAoRE9NTmFtZWROb2RlTWFwICopYXR0cmlidXRlczsKKy0gKERPTURvY3VtZW50
ICopb3duZXJEb2N1bWVudDsKKy0gKERPTU5vZGUgKilpbnNlcnRCZWZvcmU6KERPTU5vZGUgKilu
ZXdDaGlsZCA6KERPTU5vZGUgKilyZWZDaGlsZDsKKy0gKERPTU5vZGUgKilyZXBsYWNlQ2hpbGQ6
KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilvbGRDaGlsZDsKKy0gKERPTU5vZGUgKily
ZW1vdmVDaGlsZDooRE9NTm9kZSAqKW9sZENoaWxkOworLSAoRE9NTm9kZSAqKWFwcGVuZENoaWxk
OihET01Ob2RlICopbmV3Q2hpbGQ7CistIChCT09MKWhhc0NoaWxkTm9kZXM7CistIChET01Ob2Rl
ICopY2xvbmVOb2RlOihCT09MKWRlZXA7CistICh2b2lkKW5vcm1hbGl6ZTsKKy0gKEJPT0wpaXNT
dXBwb3J0ZWQ6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbjsKKy0gKE5T
U3RyaW5nICopbmFtZXNwYWNlVVJJOworLSAoTlNTdHJpbmcgKilwcmVmaXg7CistICh2b2lkKXNl
dFByZWZpeDooTlNTdHJpbmcgKilwcmVmaXg7CistIChOU1N0cmluZyAqKWxvY2FsTmFtZTsKKy0g
KEJPT0wpaGFzQXR0cmlidXRlczsKKy0gKEJPT0wpaXNTYW1lTm9kZTooRE9NTm9kZSAqKW90aGVy
OworLSAoQk9PTClpc0VxdWFsTm9kZTooRE9NTm9kZSAqKW90aGVyOworLSAoTlNTdHJpbmcgKil0
ZXh0Q29udGVudDsKKy0gKHZvaWQpc2V0VGV4dENvbnRlbnQ6KE5TU3RyaW5nICopdGV4dDsKK0Bl
bmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlLm1tCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTU5vZGUubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgSmFtZXMgRy4gU3BldGgg
PHNwZXRoQGVuZC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2Ft
LndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
RE9NTm9kZS5oIgorCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorI2ltcG9ydCAiTm9kZS5oIgor
CisjaW1wb3J0ICJBdG9taWNTdHJpbmcuaCIKKyNpbXBvcnQgIkRlcHJlY2F0ZWRWYWx1ZUxpc3Qu
aCIKKyNpbXBvcnQgIkRPTURvY3VtZW50LmgiCisjaW1wb3J0ICJET01Ob2RlTGlzdC5oIgorI2lt
cG9ydCAiSW50UmVjdC5oIgorI2ltcG9ydCAiTm9kZUxpc3QuaCIKKyNpbXBvcnQgIlBsYXRmb3Jt
U3RyaW5nLmgiCisjaW1wb3J0ICJSZW5kZXJPYmplY3QuaCIKKyNpbXBvcnQgPHd0Zi9Bc3NlcnRp
b25zLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBET01Ob2RlCisKKy0gKHZvaWQpZGVhbGxvYworewor
ICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIERPTV9jYXN0PFdlYkNvcmU6Ok5vZGUgKj4oX2lu
dGVybmFsKS0+ZGVyZWYoKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpZmlu
YWxpemUKK3sKKyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICBET01fY2FzdDxXZWJDb3JlOjpO
b2RlICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7CisgICAgW3N1cGVyIGZpbmFsaXplXTsKK30KKwor
LSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgoreworICAgIGlmICghX2ludGVybmFsKSB7CisgICAg
ICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQDogbnVsbD4iLAorICAg
ICAgICAgICAgW1tzZWxmIGNsYXNzXSBkZXNjcmlwdGlvbl0sIHNlbGZdOworICAgIH0KKyAgICBO
U1N0cmluZyAqdmFsdWUgPSBbc2VsZiBub2RlVmFsdWVdOworICAgIGlmICh2YWx1ZSkgeworICAg
ICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUAgWyVAXTogJXAgJyVA
Jz4iLAorICAgICAgICAgICAgW1tzZWxmIGNsYXNzXSBkZXNjcmlwdGlvbl0sIFtzZWxmIG5vZGVO
YW1lXSwgX2ludGVybmFsLCB2YWx1ZV07CisgICAgfQorICAgIHJldHVybiBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIjwlQCBbJUBdOiAlcD4iLAorICAgICAgICBbW3NlbGYgY2xhc3NdIGRl
c2NyaXB0aW9uXSwgW3NlbGYgbm9kZU5hbWVdLCBfaW50ZXJuYWxdOworfQorCistIChOU1N0cmlu
ZyAqKW5vZGVOYW1lCit7CisgICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bm9kZU5hbWUoKTsKK30K
KworLSAoTlNTdHJpbmcgKilub2RlVmFsdWUKK3sKKyAgICAvLyBEb2N1bWVudGF0aW9uIHNheXMg
d2UgY2FuIHJhaXNlIGEgRE9NU1RSSU5HX1NJWkVfRVJSLgorICAgIC8vIEhvd2V2ZXIsIHRoZSBs
b3dlciBsYXllciBkb2VzIG5vdCByZXBvcnQgdGhhdCBlcnJvciB1cCB0byB1cy4KKyAgICByZXR1
cm4gW3NlbGYgX25vZGVdLT5ub2RlVmFsdWUoKTsKK30KKworLSAodm9pZClzZXROb2RlVmFsdWU6
KE5TU3RyaW5nICopc3RyaW5nCit7CisgICAgQVNTRVJUKHN0cmluZyk7CisgICAgCisgICAgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgW3NlbGYgX25vZGVdLT5zZXROb2RlVmFs
dWUoc3RyaW5nLCBlYyk7CisgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKworLSAodW5zaWdu
ZWQgc2hvcnQpbm9kZVR5cGUKK3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2RlVHlwZSgp
OworfQorCistIChET01Ob2RlICopcGFyZW50Tm9kZQoreworICAgIHJldHVybiBbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX25vZGVdLT5wYXJlbnROb2RlKCldOworfQorCistIChET01Ob2RlTGlz
dCAqKWNoaWxkTm9kZXMKK3sKKyAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6
W3NlbGYgX25vZGVdLT5jaGlsZE5vZGVzKCkuZ2V0KCldOworfQorCistIChET01Ob2RlICopZmly
c3RDaGlsZAoreworICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5m
aXJzdENoaWxkKCldOworfQorCistIChET01Ob2RlICopbGFzdENoaWxkCit7CisgICAgcmV0dXJu
IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPmxhc3RDaGlsZCgpXTsKK30KKworLSAo
RE9NTm9kZSAqKXByZXZpb3VzU2libGluZworeworICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdp
dGg6W3NlbGYgX25vZGVdLT5wcmV2aW91c1NpYmxpbmcoKV07Cit9CisKKy0gKERPTU5vZGUgKilu
ZXh0U2libGluZworeworICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVd
LT5uZXh0U2libGluZygpXTsKK30KKworLSAoRE9NTmFtZWROb2RlTWFwICopYXR0cmlidXRlcwor
eworICAgIC8vIERPTSBsZXZlbCAyIGNvcmUgc3BlY2lmaWNhdGlvbiBzYXlzOiAKKyAgICAvLyBB
IE5hbWVkTm9kZU1hcCBjb250YWluaW5nIHRoZSBhdHRyaWJ1dGVzIG9mIHRoaXMgbm9kZSAoaWYg
aXQgaXMgYW4gRWxlbWVudCkgb3IgbnVsbCBvdGhlcndpc2UuCisgICAgcmV0dXJuIG5pbDsKK30K
KworLSAoRE9NRG9jdW1lbnQgKilvd25lckRvY3VtZW50Cit7CisgICAgcmV0dXJuIFtET01Eb2N1
bWVudCBfZG9jdW1lbnRXaXRoOltzZWxmIF9ub2RlXS0+ZG9jdW1lbnQoKV07Cit9CisKKy0gKERP
TU5vZGUgKilpbnNlcnRCZWZvcmU6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilyZWZD
aGlsZAoreworICAgIEFTU0VSVChuZXdDaGlsZCk7CisgICAgQVNTRVJUKHJlZkNoaWxkKTsKKwor
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlmIChbc2VsZiBfbm9kZV0t
Pmluc2VydEJlZm9yZShbbmV3Q2hpbGQgX25vZGVdLCBbcmVmQ2hpbGQgX25vZGVdLCBlYykpCisg
ICAgICAgIHJldHVybiBuZXdDaGlsZDsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJl
dHVybiBuaWw7Cit9CisKKy0gKERPTU5vZGUgKilyZXBsYWNlQ2hpbGQ6KERPTU5vZGUgKiluZXdD
aGlsZCA6KERPTU5vZGUgKilvbGRDaGlsZAoreworICAgIEFTU0VSVChuZXdDaGlsZCk7CisgICAg
QVNTRVJUKG9sZENoaWxkKTsKKworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIGlmIChbc2VsZiBfbm9kZV0tPnJlcGxhY2VDaGlsZChbbmV3Q2hpbGQgX25vZGVdLCBbb2xk
Q2hpbGQgX25vZGVdLCBlYykpCisgICAgICAgIHJldHVybiBvbGRDaGlsZDsKKyAgICByYWlzZU9u
RE9NRXJyb3IoZWMpOworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKERPTU5vZGUgKilyZW1vdmVD
aGlsZDooRE9NTm9kZSAqKW9sZENoaWxkCit7CisgICAgQVNTRVJUKG9sZENoaWxkKTsKKworICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlmIChbc2VsZiBfbm9kZV0tPnJl
bW92ZUNoaWxkKFtvbGRDaGlsZCBfbm9kZV0sIGVjKSkKKyAgICAgICAgcmV0dXJuIG9sZENoaWxk
OworICAgIHJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAoRE9N
Tm9kZSAqKWFwcGVuZENoaWxkOihET01Ob2RlICopbmV3Q2hpbGQKK3sKKyAgICBBU1NFUlQobmV3
Q2hpbGQpOworCisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaWYgKFtz
ZWxmIF9ub2RlXS0+YXBwZW5kQ2hpbGQoW25ld0NoaWxkIF9ub2RlXSwgZWMpKQorICAgICAgICBy
ZXR1cm4gbmV3Q2hpbGQ7CisgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gbmls
OworfQorCistIChCT09MKWhhc0NoaWxkTm9kZXMKK3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVd
LT5oYXNDaGlsZE5vZGVzKCk7Cit9CisKKy0gKERPTU5vZGUgKiljbG9uZU5vZGU6KEJPT0wpZGVl
cAoreworICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5jbG9uZU5v
ZGUoZGVlcCkuZ2V0KCldOworfQorCistICh2b2lkKW5vcm1hbGl6ZQoreworICAgIFtzZWxmIF9u
b2RlXS0+bm9ybWFsaXplKCk7Cit9CisKKy0gKEJPT0wpaXNTdXBwb3J0ZWQ6KE5TU3RyaW5nICop
ZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbgoreworICAgIEFTU0VSVChmZWF0dXJlKTsKKyAg
ICBBU1NFUlQodmVyc2lvbik7CisKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc1N1cHBvcnRl
ZChmZWF0dXJlLCB2ZXJzaW9uKTsKK30KKworLSAoTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkKK3sK
KyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5uYW1lc3BhY2VVUkkoKTsKK30KKworLSAoTlNTdHJp
bmcgKilwcmVmaXgKK3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5wcmVmaXgoKTsKK30KKwor
LSAodm9pZClzZXRQcmVmaXg6KE5TU3RyaW5nICopcHJlZml4Cit7CisgICAgQVNTRVJUKHByZWZp
eCk7CisKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpT
dHJpbmcgcHJlZml4U3RyKHByZWZpeCk7CisgICAgW3NlbGYgX25vZGVdLT5zZXRQcmVmaXgocHJl
Zml4U3RyLmltcGwoKSwgZWMpOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7Cit9CisKKy0gKE5T
U3RyaW5nICopbG9jYWxOYW1lCit7CisgICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bG9jYWxOYW1l
KCk7Cit9CisKKy0gKEJPT0wpaGFzQXR0cmlidXRlcworeworICAgIHJldHVybiBbc2VsZiBfbm9k
ZV0tPmhhc0F0dHJpYnV0ZXMoKTsKK30KKworLSAoQk9PTClpc1NhbWVOb2RlOihET01Ob2RlICop
b3RoZXIKK3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc1NhbWVOb2RlKFtvdGhlciBfbm9k
ZV0pOworfQorCistIChCT09MKWlzRXF1YWxOb2RlOihET01Ob2RlICopb3RoZXIKK3sKKyAgICBy
ZXR1cm4gW3NlbGYgX25vZGVdLT5pc0VxdWFsTm9kZShbb3RoZXIgX25vZGVdKTsKK30KKworLSAo
Qk9PTClpc0RlZmF1bHROYW1lc3BhY2U6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJCit7CisgICAg
cmV0dXJuIFtzZWxmIF9ub2RlXS0+aXNEZWZhdWx0TmFtZXNwYWNlKG5hbWVzcGFjZVVSSSk7Cit9
CisKKy0gKE5TU3RyaW5nICopbG9va3VwUHJlZml4OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSQor
eworICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmxvb2t1cFByZWZpeChuYW1lc3BhY2VVUkkpOwor
fQorCistIChOU1N0cmluZyAqKWxvb2t1cE5hbWVzcGFjZVVSSTooTlNTdHJpbmcgKilwcmVmaXgK
K3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5sb29rdXBOYW1lc3BhY2VVUkkocHJlZml4KTsK
K30KKworLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudAoreworICAgIHJldHVybiBbc2VsZiBfbm9k
ZV0tPnRleHRDb250ZW50KCk7Cit9CisKKy0gKHZvaWQpc2V0VGV4dENvbnRlbnQ6KE5TU3RyaW5n
ICopdGV4dAoreworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFtzZWxm
IF9ub2RlXS0+c2V0VGV4dENvbnRlbnQodGV4dCwgZWMpOworICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7Cit9CisKKy0gKE5TUmVjdClib3VuZGluZ0JveAoreworICAgIFdlYkNvcmU6OlJlbmRlck9i
amVjdCAqcmVuZGVyZXIgPSBbc2VsZiBfbm9kZV0tPnJlbmRlcmVyKCk7CisgICAgaWYgKHJlbmRl
cmVyKQorICAgICAgICByZXR1cm4gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7
CisgICAgcmV0dXJuIE5TWmVyb1JlY3Q7Cit9CisKKy0gKE5TQXJyYXkgKilsaW5lQm94UmVjdHMK
K3sKKyAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gW3NlbGYgX25vZGVdLT5y
ZW5kZXJlcigpOworICAgIGlmIChyZW5kZXJlcikgeworICAgICAgICBOU011dGFibGVBcnJheSAq
cmVzdWx0cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOworICAgICAgICBXZWJDb3Jl
OjpEZXByZWNhdGVkVmFsdWVMaXN0PFdlYkNvcmU6OkludFJlY3Q+IHJlY3RzID0gcmVuZGVyZXIt
PmxpbmVCb3hSZWN0cygpOworICAgICAgICBpZiAoIXJlY3RzLmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgZm9yIChXZWJDb3JlOjpEZXByZWNhdGVkVmFsdWVMaXN0PFdlYkNvcmU6OkludFJlY3Q+
OjpDb25zdEl0ZXJhdG9yIGl0ID0gcmVjdHMuYmVnaW4oKTsgaXQgIT0gcmVjdHMuZW5kKCk7ICsr
aXQpCisgICAgICAgICAgICAgICAgW3Jlc3VsdHMgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0
aFJlY3Q6Kml0XV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFtyZXN1bHRzIGF1dG9yZWxl
YXNlXTsKKyAgICB9CisgICAgcmV0dXJuIG5pbDsKK30KKworQGVuZApJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTU5vZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTU5vZGVMaXN0LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NTm9kZUxpc3QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2Vpbmln
QGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KKworQGNs
YXNzIERPTU5vZGU7CisKK0BpbnRlcmZhY2UgRE9NTm9kZUxpc3QgOiBET01PYmplY3QKKy0gKERP
TU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleDsKKy0gKHVuc2lnbmVkKWxlbmd0aDsKK0BlbmQK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlTGlzdC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZUxpc3QubW0JKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZUxpc3QubW0JKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiBBcHBsZSBDb21wdXRlciwg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBKYW1lcyBH
LiBTcGV0aCA8c3BldGhAZW5kLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vp
bmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJET01Ob2RlTGlzdC5oIgorCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorI2ltcG9y
dCAiTm9kZUxpc3QuaCIKKyNpbXBvcnQgIkRPTU5vZGUuaCIKKworQGltcGxlbWVudGF0aW9uIERP
TU5vZGVMaXN0CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIGlmIChfaW50ZXJuYWwpCisgICAg
ICAgIERPTV9jYXN0PFdlYkNvcmU6Ok5vZGVMaXN0ICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Cisg
ICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWZpbmFsaXplCit7CisgICAgaWYgKF9p
bnRlcm5hbCkKKyAgICAgICAgRE9NX2Nhc3Q8V2ViQ29yZTo6Tm9kZUxpc3QgKj4oX2ludGVybmFs
KS0+ZGVyZWYoKTsKKyAgICBbc3VwZXIgZmluYWxpemVdOworfQorCistIChXZWJDb3JlOjpOb2Rl
TGlzdCAqKV9ub2RlTGlzdAoreworICAgIHJldHVybiBET01fY2FzdDxXZWJDb3JlOjpOb2RlTGlz
dCAqPihfaW50ZXJuYWwpOworfQorCistIChET01Ob2RlICopaXRlbToodW5zaWduZWQpaW5kZXgK
K3sKKyAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9ub2RlTGlzdF0tPml0ZW0o
aW5kZXgpXTsKK30KKworLSAodW5zaWduZWQpbGVuZ3RoCit7CisgICAgcmV0dXJuIFtzZWxmIF9u
b2RlTGlzdF0tPmxlbmd0aCgpOworfQorCitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU9i
amVjdC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU9iamVjdC5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdC5oPgorCit0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgbG9uZyBET01UaW1lU3RhbXA7CisKK2V4dGVybiBOU1N0cmluZyAqIGNvbnN0IERP
TUV4Y2VwdGlvbjsKKworLy8gRE9NIGV4Y2VwdGlvbiBjb2RlcworZW51bSB7CisgICAgRE9NX0lO
REVYX1NJWkVfRVJSICAgICAgICAgICAgICAgID0gMSwKKyAgICBET01fRE9NU1RSSU5HX1NJWkVf
RVJSICAgICAgICAgICAgPSAyLAorICAgIERPTV9ISUVSQVJDSFlfUkVRVUVTVF9FUlIgICAgICAg
ICA9IDMsCisgICAgRE9NX1dST05HX0RPQ1VNRU5UX0VSUiAgICAgICAgICAgID0gNCwKKyAgICBE
T01fSU5WQUxJRF9DSEFSQUNURVJfRVJSICAgICAgICAgPSA1LAorICAgIERPTV9OT19EQVRBX0FM
TE9XRURfRVJSICAgICAgICAgICA9IDYsCisgICAgRE9NX05PX01PRElGSUNBVElPTl9BTExPV0VE
X0VSUiAgID0gNywKKyAgICBET01fTk9UX0ZPVU5EX0VSUiAgICAgICAgICAgICAgICAgPSA4LAor
ICAgIERPTV9OT1RfU1VQUE9SVEVEX0VSUiAgICAgICAgICAgICA9IDksCisgICAgRE9NX0lOVVNF
X0FUVFJJQlVURV9FUlIgICAgICAgICAgID0gMTAsCisgICAgRE9NX0lOVkFMSURfU1RBVEVfRVJS
ICAgICAgICAgICAgID0gMTEsCisgICAgRE9NX1NZTlRBWF9FUlIgICAgICAgICAgICAgICAgICAg
ID0gMTIsCisgICAgRE9NX0lOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiAgICAgID0gMTMsCisgICAg
RE9NX05BTUVTUEFDRV9FUlIgICAgICAgICAgICAgICAgID0gMTQsCisgICAgRE9NX0lOVkFMSURf
QUNDRVNTX0VSUiAgICAgICAgICAgID0gMTUKK307CisKKworLy8gRE9NIG5vZGUgdHlwZXMKK2Vu
dW0geworICAgIERPTV9FTEVNRU5UX05PREUgICAgICAgICAgICAgICAgICA9IDEsCisgICAgRE9N
X0FUVFJJQlVURV9OT0RFICAgICAgICAgICAgICAgID0gMiwKKyAgICBET01fVEVYVF9OT0RFICAg
ICAgICAgICAgICAgICAgICAgPSAzLAorICAgIERPTV9DREFUQV9TRUNUSU9OX05PREUgICAgICAg
ICAgICA9IDQsCisgICAgRE9NX0VOVElUWV9SRUZFUkVOQ0VfTk9ERSAgICAgICAgID0gNSwKKyAg
ICBET01fRU5USVRZX05PREUgICAgICAgICAgICAgICAgICAgPSA2LAorICAgIERPTV9QUk9DRVNT
SU5HX0lOU1RSVUNUSU9OX05PREUgICA9IDcsCisgICAgRE9NX0NPTU1FTlRfTk9ERSAgICAgICAg
ICAgICAgICAgID0gOCwKKyAgICBET01fRE9DVU1FTlRfTk9ERSAgICAgICAgICAgICAgICAgPSA5
LAorICAgIERPTV9ET0NVTUVOVF9UWVBFX05PREUgICAgICAgICAgICA9IDEwLAorICAgIERPTV9E
T0NVTUVOVF9GUkFHTUVOVF9OT0RFICAgICAgICA9IDExLAorICAgIERPTV9OT1RBVElPTl9OT0RF
ICAgICAgICAgICAgICAgICA9IDEyCit9OworCit0eXBlZGVmIHN0cnVjdCBET01PYmplY3RJbnRl
cm5hbCBET01PYmplY3RJbnRlcm5hbDsKKworQGludGVyZmFjZSBET01PYmplY3QgOiBXZWJTY3Jp
cHRPYmplY3QgPE5TQ29weWluZz4KK3sKKyAgICBET01PYmplY3RJbnRlcm5hbCAqX2ludGVybmFs
OworfQorQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU9iamVjdC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NT2JqZWN0Lm1tCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU9iamVjdC5tbQkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENvbXB1
dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IEph
bWVzIEcuIFNwZXRoIDxzcGV0aEBlbmQuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVl
bCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIkRPTU9iamVjdC5oIgorCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorCitA
aW1wbGVtZW50YXRpb24gRE9NT2JqZWN0CisKKy8vIFByZXZlbnQgY3JlYXRpb24gb2YgRE9NIG9i
amVjdHMgYnkgY2xpZW50cyB3aG8ganVzdCAiW1t4eHggYWxsb2NdIGluaXRdIi4KKy0gKGlkKWlu
aXQKK3sKKyAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1hdDpA
IitbJUAgaW5pdF06IHNob3VsZCBuZXZlciBiZSB1c2VkIiwgTlNTdHJpbmdGcm9tQ2xhc3MoW3Nl
bGYgY2xhc3NdKV07CisgICAgW3NlbGYgcmVsZWFzZV07CisgICAgcmV0dXJuIG5pbDsKK30KKwor
LSAodm9pZClkZWFsbG9jCit7CisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAgcmVtb3ZlRE9N
V3JhcHBlcihfaW50ZXJuYWwpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClm
aW5hbGl6ZQoreworICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIHJlbW92ZURPTVdyYXBwZXIo
X2ludGVybmFsKTsKKyAgICBbc3VwZXIgZmluYWxpemVdOworfQorCistIChpZCljb3B5V2l0aFpv
bmU6KE5TWm9uZSAqKXpvbmUKK3sKKyAgICByZXR1cm4gW3NlbGYgcmV0YWluXTsKK30KKworQGVu
ZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUHJpdmF0ZS5oCShyZXZpc2lvbiAxNTk0NSkKKysr
IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Qcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWlu
aWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNCw5ICsyNSwxNCBAQAogICovCiAKICNpbXBvcnQgPFdlYkNvcmUvRE9NQ1NTLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL0RPTUhUTUwuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRE9NUmFuZ2UuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvRE9NRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01FdmVu
dHMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTERvY3VtZW50Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL0RPTUhUTUxJbnB1dEVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTFNlbGVj
dEVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NTm9kZS5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9ET01SYW5nZS5oPgorCiAKIEBpbnRlcmZhY2UgRE9NUmFuZ2UgKFdlYlByaXZhdGUpCiAvLyB1
c2VzIHNhbWUgYWxnb3JpdGhtIGFzIGlubmVyVGV4dApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTVJhbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVJh
bmdlLmgJKHJldmlzaW9uIDE1OTQ1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVJhbmdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw3ICsyNCw4IEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKICAqLwogCi0jaW1wb3J0IDxXZWJDb3JlL0RPTUNvcmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
RE9NRG9jdW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CiAKIGV4dGVybiBO
U1N0cmluZyAqIGNvbnN0IERPTVJhbmdlRXhjZXB0aW9uOwogCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NU3R5bGVzaGVldHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NU3R5bGVzaGVldHMuaAkocmV2aXNpb24gMTU5NDUpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NU3R5bGVzaGVldHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndl
aW5pZ0BnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDkg
KzI0LDExIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW1wb3J0IDxXZWJDb3JlL0RPTUNv
cmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
RE9NT2JqZWN0Lmg+CiAKIEBjbGFzcyBET01NZWRpYUxpc3Q7CitAY2xhc3MgRE9NTm9kZTsKIEBj
bGFzcyBET01TdHlsZVNoZWV0OwogCiBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBET01FdmVudEV4
Y2VwdGlvbjsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01UZXh0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVRleHQuaAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01UZXh0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5p
ZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NQ2hh
cmFjdGVyRGF0YS5oPgorCitAaW50ZXJmYWNlIERPTVRleHQgOiBET01DaGFyYWN0ZXJEYXRhCist
IChET01UZXh0ICopc3BsaXRUZXh0Oih1bnNpZ25lZClvZmZzZXQ7CitAZW5kCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NVGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NVGV4dC5tbQkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01UZXh0Lm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA0LTIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgSmFtZXMgRy4gU3BldGggPHNwZXRoQGVuZC5jb20+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5j
b20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRE9NVGV4dC5oIgorCisj
aW1wb3J0ICJET01JbnRlcm5hbC5oIgorI2ltcG9ydCAiVGV4dC5oIgorCisjaW1wb3J0ICJET01O
b2RlLmgiCisjaW1wb3J0ICJOb2RlLmgiCisKK0BpbXBsZW1lbnRhdGlvbiBET01UZXh0CisKKy0g
KFdlYkNvcmU6OlRleHQgKilfdGV4dAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpUZXh0ICo+KERPTV9jYXN0PFdlYkNvcmU6Ok5vZGUgKj4oX2ludGVybmFsKSk7Cit9CisKKy0g
KERPTVRleHQgKilzcGxpdFRleHQ6KHVuc2lnbmVkKW9mZnNldAoreworICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2Rl
V2l0aDpbc2VsZiBfdGV4dF0tPnNwbGl0VGV4dChvZmZzZXQsIGVjKV07CisgICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NVGV4dCAqPihyZXN1bHQpOwor
fQorCitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVHJhdmVyc2FsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVRyYXZlcnNhbC5oCShyZXZpc2lv
biAxNTk0NSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01UcmF2ZXJzYWwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDggKzI0LDEwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwog
Ci0jaW1wb3J0IDxXZWJDb3JlL0RPTUNvcmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1l
bnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CiAKK0BjbGFzcyBET01Ob2RlOwog
QGNsYXNzIERPTU5vZGVGaWx0ZXI7CiAKIGVudW0gewpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTVZpZXdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVZp
ZXdzLmgJKHJldmlzaW9uIDE1OTQ1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVZpZXdz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw3ICsyNCw4IEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKICAqLwogCi0jaW1wb3J0IDxXZWJDb3JlL0RPTUNvcmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
RE9NRG9jdW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CiAKIEBpbnRlcmZh
Y2UgRE9NQWJzdHJhY3RWaWV3IDogRE9NT2JqZWN0CiAtIChET01Eb2N1bWVudCAqKWRvY3VtZW50
OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVhQYXRoLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVhQYXRoLmgJKHJldmlzaW9uIDE1OTQ1KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTVhQYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNh
bS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Myw3ICsyNCw4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW1wb3J0IDxXZWJDb3JlL0RP
TUNvcmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvRE9NT2JqZWN0Lmg+CiAKIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IERPTVhQYXRoRXhjZXB0
aW9uOwogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQko
cmV2aXNpb24gMTU5NDUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ci5wbQkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNiBAQCBzdWIgUHJvY2Vzc0RvY3VtZW50
CiAgICR1c2VEb2N1bWVudCA9IHNoaWZ0OwogICAKICAgbXkgJGlmYWNlTmFtZSA9ICR1c2VHZW5l
cmF0b3I7Ci0gICRpZmFjZU5hbWUgPX4gcy9cYihcdykvXFUkMS9nOyAjIE1ha2UgZmlyc3QgbGV0
dGVyIG9mIGVhY2ggd29yZCB1cHBlcmNhc2UKICAgJGlmYWNlTmFtZSA9ICJDb2RlR2VuZXJhdG9y
JGlmYWNlTmFtZSI7CiAKICAgIyBEeW5hbWljYWxseSBsb2FkIGV4dGVybmFsIGNvZGUgZ2VuZXJh
dGlvbiBwZXJsIG1vZHVsZS4uLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JPYmpDLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yT2JqQy5wbQkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NTkgQEAK
KyMgCisjIEtET00gSURMIHBhcnNlcgorIworIyBDb3B5cmlnaHQgKEMpIDIwMDUgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisjIENvcHlyaWdodCAoQykgMjAwNiBBbmRlcnMg
Q2FybHNzb24gPGFuZGVyc2NhQG1hYy5jb20+IAorIyBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVs
IFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisjIENvcHlyaWdodCAoQykgMjAwNiBBcHBs
ZSBDb21wdXRlciwgSW5jLgorIworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2pl
Y3QKKyMgCisjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMgCisjIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorIyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyMgCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWludCB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIyB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAz
MzAsCisjIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorIworCitwYWNrYWdlIENvZGVHZW5l
cmF0b3JPYmpDOworCit1c2UgRmlsZTo6c3RhdDsKKworbXkgJG1vZHVsZSA9ICIiOworbXkgJG91
dHB1dERpciA9ICIiOworbXkgJWltcGxJbmNsdWRlcyA9ICgpOworbXkgJWhlYWRlckZvcndhcmRE
ZWNsYXJhdGlvbnMgPSAoKTsKKworIyBEZWZhdWx0IHRlbXBsYXRlCitteSAkaGVhZGVyVGVtcGxh
dGUgPSA8PCAiRU9GIjsKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBv
cGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisg
ICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisqLworRU9GCisKKyMgRGVmYXVsdCBjb25z
dHJ1Y3Rvcgorc3ViIG5ldworeworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBteSAkcmVm
ZXJlbmNlID0geyB9OworICAgIAorICAgICRjb2RlR2VuZXJhdG9yID0gc2hpZnQ7CisgICAgJG91
dHB1dERpciA9IHNoaWZ0OworICAgIAorICAgIGJsZXNzKCRyZWZlcmVuY2UsICRvYmplY3QpOwor
ICAgIHJldHVybiAkcmVmZXJlbmNlOworfQorCitzdWIgZmluaXNoCit7CisgICAgbXkgJG9iamVj
dCA9IHNoaWZ0OworICAgIAorICAgICMgQ29tbWl0IGNoYW5nZXMhCisgICAgJG9iamVjdC0+V3Jp
dGVEYXRhKCk7Cit9CisKKyMgUGFyYW1zOiAnZG9tQ2xhc3MnIHN0cnVjdAorc3ViIEdlbmVyYXRl
SW50ZXJmYWNlCit7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAgIG15ICRkYXRhTm9kZSA9
IHNoaWZ0OworCisgICAgIyBTdGFydCBhY3R1YWwgZ2VuZXJhdGlvbi4uCisgICAgJG9iamVjdC0+
R2VuZXJhdGVIZWFkZXIoJGRhdGFOb2RlKTsKKyAgICAkb2JqZWN0LT5HZW5lcmF0ZUltcGxlbWVu
dGF0aW9uKCRkYXRhTm9kZSk7CisKKyAgICBteSAkbmFtZSA9ICRkYXRhTm9kZS0+bmFtZTsKKwor
ICAgICMgT3BlbiBmaWxlcyBmb3Igd3JpdGluZy4uLgorICAgIG15ICRoZWFkZXJGaWxlTmFtZSA9
ICIkb3V0cHV0RGlyL0RPTSRuYW1lLmgiOworICAgIG15ICRpbXBsRmlsZU5hbWUgPSAiJG91dHB1
dERpci9ET00kbmFtZS5tbSI7CisKKyAgICBvcGVuKCRJTVBMLCAiPiRpbXBsRmlsZU5hbWUiKSBv
ciBkaWUgIkNvdWxkbid0IG9wZW4gZmlsZSAkaW1wbEZpbGVOYW1lIjsKKyAgICBvcGVuKCRIRUFE
RVIsICI+JGhlYWRlckZpbGVOYW1lIikgb3IgZGllICJDb3VsZG4ndCBvcGVuIGZpbGUgJGhlYWRl
ckZpbGVOYW1lIjsKK30KKworIyBQYXJhbXM6ICdpZGxEb2N1bWVudCcgc3RydWN0CitzdWIgR2Vu
ZXJhdGVNb2R1bGUKK3sKKyAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJGRhdGFOb2Rl
ID0gc2hpZnQ7ICAKKyAgICAKKyAgICAkbW9kdWxlID0gJGRhdGFOb2RlLT5tb2R1bGU7ICAgIAor
fQorCitzdWIgR2V0UGFyZW50Q2xhc3NOYW1lCit7CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7
CisKKyAgICBpZiAoQHskZGF0YU5vZGUtPnBhcmVudHN9IGVxIDApIHsKKyAgICAgICAgcmV0dXJu
ICJET01PYmplY3QiOworICAgIH0KKworICAgIG15ICRwYXJlbnQgPSAkY29kZUdlbmVyYXRvci0+
U3RyaXBNb2R1bGUoJGRhdGFOb2RlLT5wYXJlbnRzKDApKTsKKyAgICAKKyAgICAjIHNwZWNpYWwg
Y2FzZXMKKyAgICBpZiAoJHBhcmVudCBlcSAiRXZlbnRUYXJnZXROb2RlIikgeworICAgICAgICAk
cGFyZW50ID0gIk5vZGUiOworICAgIH0KKworICAgIHJldHVybiAkcGFyZW50OworfQorCitzdWIg
R2V0T2JqQ1R5cGUKK3sKKyAgICBteSAkdHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVs
ZShzaGlmdCk7CisgICAgCisgICAgaWYgKCR0eXBlIGVxICJib29sZWFuIikgeworICAgICAgICBy
ZXR1cm4gIkJPT0wiOworICAgIH0gZWxzaWYgKCR0eXBlIGVxICJ1bnNpZ25lZCBsb25nIikgewor
ICAgICAgICByZXR1cm4gInVuc2lnbmVkIjsKKyAgICB9IGVsc2lmICgkdHlwZSBlcSAibG9uZyIp
IHsKKyAgICAgICAgcmV0dXJuICJpbnQiOworICAgIH0gZWxzaWYgKCR0eXBlIGVxICJET01TdHJp
bmciKSB7CisgICAgICAgIHJldHVybiAiTlNTdHJpbmcgKiI7CisgICAgfSBlbHNpZiAoJHR5cGUg
ZXEgInVuc2lnbmVkIHNob3J0IiAKKyAgICAgICAgICAgICBvciAkdHlwZSBlcSAiZmxvYXQiCisg
ICAgICAgICAgICAgb3IgJHR5cGUgZXEgInZvaWQiCisgICAgICAgICAgICAgb3IgJHR5cGUgZXEg
IkF0b21pY1N0cmluZyIpIHsKKyAgICAgICAgcmV0dXJuICR0eXBlOworICAgIH0KKyAgICAKKyAg
ICAjIERlZmF1bHQsIGFzc3VtZSBvYmplY3RpdmUtYyB0eXBlIGlzIGEgcG9pbnRlciB3aXRoIHRo
ZSBzYW1lIHR5cGUgbmFtZSBhcworICAgICMgaWRsIHR5cGUgcHJlZml4ZWQgd2l0aCAiRE9NIi4K
KyAgICByZXR1cm4gIkRPTSR0eXBlICoiOworfQorCitzdWIgQWRkRm9yd2FyZERlY2xhcmF0aW9u
c0ZvclR5cGUKK3sKKyAgICBteSAkdHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVsZShz
aGlmdCk7CisgICAgCisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1ByaW1pdGl2ZVR5cGUoJHR5
cGUpIG9yICR0eXBlIGVxICJET01TdHJpbmciKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAkaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9uc3siRE9NJHR5cGUifSA9IDE7Cit9CisKK3N1
YiBBZGRJbmNsdWRlc0ZvclR5cGUKK3sKKyAgICBteSAkdHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5T
dHJpcE1vZHVsZShzaGlmdCk7CisgICAgCisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1ByaW1p
dGl2ZVR5cGUoJHR5cGUpIG9yICR0eXBlIGVxICJET01TdHJpbmciKSB7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICAjIFRlbXAgRE9NQ1NTLmgKKyAgICBpZiAoJHR5cGUgZXEgIkNvdW50
ZXIiCisgICAgICAgICAgICBvciAkdHlwZSBlcSAiUkdCQ29sb3IiCisgICAgICAgICAgICBvciAk
dHlwZSBlcSAiUmVjdCIpIHsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NQ1NTLmgifSA9IDE7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAjIERlZmF1bHQsIGluY2x1ZGUgdGhlIHNh
bWUgbmFtZWQgZmlsZSAodGhlIGltcGxlbWVudGF0aW9uKSBhbmQgdGhlIHNhbWUgbmFtZSBwcmVm
aXhlZCB3aXRoICJET00iLiAKKyAgICAkaW1wbEluY2x1ZGVzeyIkdHlwZS5oIn0gPSAxOworICAg
ICRpbXBsSW5jbHVkZXN7IkRPTSR0eXBlLmgifSA9IDE7CisKKyAgICAjIGFkZGl0aW9uYWwgaW5j
bHVkZXMgKHRoaW5ncyBuZWVkZWQgdG8gY29tcGlsZSB0aGUgYmluZGluZ3MgYnV0IG5vdCB0aGUg
aGVhZGVyKQorICAgICMgaWYgKCR0eXBlIGVxICJDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQiKSB7
CisgICAgIyAgICAgJGltcGxJbmNsdWRlc3siQ2FudmFzR3JhZGllbnQuaCJ9ID0gMTsKKyAgICAj
ICAgICAkaW1wbEluY2x1ZGVzeyJDYW52YXNQYXR0ZXJuLmgifSA9IDE7CisgICAgIyAgICAgJGlt
cGxJbmNsdWRlc3siQ2FudmFzU3R5bGUuaCJ9ID0gMTsKKyAgICAjIH0KKyAgICAjIGlmICgkdHlw
ZSBlcSAiQ2FudmFzR3JhZGllbnQiIG9yICR0eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7Cisg
ICAgIyAgICAgJGltcGxJbmNsdWRlc3siUGxhdGZvcm1TdHJpbmcuaCJ9ID0gMTsKKyAgICAjIH0K
K30KKworc3ViIEdlbmVyYXRlSGVhZGVyCit7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAg
IG15ICRkYXRhTm9kZSA9IHNoaWZ0OworCisgICAgIyBNYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCBo
YXZlIG1vcmUgdGhhbiBvbmUgcGFyZW50LgorICAgIGlmIChAeyRkYXRhTm9kZS0+cGFyZW50c30g
PiAxKSB7CisgICAgICAgIGRpZSAiQSBjbGFzcyBjYW4ndCBoYXZlIG1vcmUgdGhhbiBvbmUgcGFy
ZW50LiI7CisgICAgfQorCisgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkZGF0YU5vZGUtPm5hbWU7
CisgICAgbXkgJGNsYXNzTmFtZSA9ICJET00kaW50ZXJmYWNlTmFtZSI7CisgICAgbXkgJHBhcmVu
dENsYXNzTmFtZSA9ICJET00iIC4gR2V0UGFyZW50Q2xhc3NOYW1lKCRkYXRhTm9kZSk7CisgICAg
bXkgJGNvbmRpdGlvbmFsID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0
aW9uYWwifTsKKworICAgIG15ICRudW1Db25zdGFudHMgPSBAeyRkYXRhTm9kZS0+Y29uc3RhbnRz
fTsKKyAgICBteSAkbnVtQXR0cmlidXRlcyA9IEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfTsKKyAg
ICBteSAkbnVtRnVuY3Rpb25zID0gQHskZGF0YU5vZGUtPmZ1bmN0aW9uc307CisKKyAgICAjIC0g
QWRkIGRlZmF1bHQgaGVhZGVyIHRlbXBsYXRlCisgICAgQGhlYWRlckNvbnRlbnRIZWFkZXIgPSBz
cGxpdCgiXHIiLCAkaGVhZGVyVGVtcGxhdGUpOworICAgIAorICAgICMgLSBBZGQgcHJvdGVjdGlv
biBhZ2FpbnN0IHVuc3VwcG9ydGVkIG1vZHVsZXMKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50SGVh
ZGVyLCAiXG4jaWYgJHtjb25kaXRpb25hbH1fU1VQUE9SVFxuIikgaWYgJGNvbmRpdGlvbmFsOwor
CisgICAgIyAtIElOQ0xVREVTIC0KKyAgICBwdXNoKEBoZWFkZXJDb250ZW50SGVhZGVyLCAiXG4j
aW1wb3J0IFwiJHBhcmVudENsYXNzTmFtZS5oXCIgLy8gcGFyZW50IGNsYXNzXG5cbiIpOworCisK
KyAgICAjIC0gQWRkIGNvbnN0YW50cy4KKyAgICBpZiAoJG51bUNvbnN0YW50cyA+IDApIHsKKyAg
ICAgICAgbXkgQGhlYWRlckNvbnN0YW50cyA9ICgpOworICAgICAgICBmb3JlYWNoIG15ICRjb25z
dGFudCAoQHskZGF0YU5vZGUtPmNvbnN0YW50c30pIHsKKworICAgICAgICAgICAgbXkgJGNvbnN0
YW50TmFtZSA9ICRjb25zdGFudC0+bmFtZTsKKyAgICAgICAgICAgIG15ICRjb25zdGFudFZhbHVl
ID0gJGNvbnN0YW50LT52YWx1ZTsKKyAgICAgICAgICAgIG15ICRvdXRwdXQgPSAiICAgIERPTV8i
IC4gJGNvbnN0YW50TmFtZSAuICIgPSAiIC4gJGNvbnN0YW50VmFsdWU7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnN0YW50cywgJG91dHB1dCk7CisgICAgICAgIH0K
KyAgICAgICAgbXkgJGNvbWJpbmVkQ29uc3RhbnRzID0gam9pbigiLFxuIiwgQGhlYWRlckNvbnN0
YW50cyk7CisKKyAgICAgICAgIyBGSVhNRTogdGhlIGZvcm1hdHRpbmcgb2YgdGhlIGVudW1zIHNo
b3VsZCBsaW5lIHVwIHRoZSBlcXVhbCBzaWducy4KKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIlxuLy8gQ29uc3RhbnRzXG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImVu
dW0ge1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICRjb21iaW5lZENvbnN0YW50
cyk7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbn07XG4iKTsgICAgICAgIAorICAg
IH0KKyAgICAKKyAgICAjIC0gQmVnaW4gQGludGVyZmFjZSAKKyAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiXG5cQGludGVyZmFjZSAkY2xhc3NOYW1lIDogJHBhcmVudENsYXNzTmFtZVxuIik7CisK
KyAgICAjIC0gQWRkIGF0dHJpYnV0ZSBnZXR0ZXJzL3NldHRlcnMuCisgICAgaWYgKCRudW1BdHRy
aWJ1dGVzID4gMCkgeworICAgICAgICBteSBAaGVhZGVyQXR0cmlidXRlcyA9ICgpOworCisgICAg
ICAgIGZvcmVhY2ggKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgeworICAgICAgICAgICAgbXkg
JGF0dHJpYnV0ZSA9ICRfOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT2JqQ1ByaXZhdGUifSkgeworICAg
ICAgICAgICAgICAgICMgRklYTUU6IGZvciBub3csIGp1c3Qgc2tpcCBtZXRob2RzIG5vdCBhcHBy
b3ZlZCBmb3IgQVBJIHlldAorICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIEFkZEZvcndhcmREZWNsYXJhdGlvbnNGb3JUeXBlKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+dHlwZSk7CisKKyAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVOYW1lID0gJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZVR5cGUgPSBH
ZXRPYmpDVHlwZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOworICAgICAgICAgICAgbXkg
JGF0dHJpYnV0ZUlzUmVhZG9ubHkgPSAoJGF0dHJpYnV0ZS0+dHlwZSA9fiAvXnJlYWRvbmx5Lyk7
CisgICAgCisgICAgICAgICAgICAjIC0gR0VUVEVSCisgICAgICAgICAgICBteSAkZ2V0dGVyID0g
Ii0gKCIgLiAkYXR0cmlidXRlVHlwZSAuICIpIiAuICRhdHRyaWJ1dGVOYW1lIC4gIjtcbiI7Cisg
ICAgICAgICAgICBwdXNoKEBoZWFkZXJBdHRyaWJ1dGVzLCAkZ2V0dGVyKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgIyAtIFNFVFRFUgorICAgICAgICAgICAgaWYgKCEkYXR0cmlidXRlSXNS
ZWFkb25seSkgeworICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSAiLSAodm9pZClzZXQiIC4g
dWNmaXJzdCgkYXR0cmlidXRlTmFtZSkgLiAiOigiIC4gJGF0dHJpYnV0ZVR5cGUgLiAiKSIgLiAk
YXR0cmlidXRlTmFtZSAuICI7XG4iOworICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckF0dHJp
YnV0ZXMsICRzZXR0ZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYg
KEBoZWFkZXJBdHRyaWJ1dGVzID4gMCkgeworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIlxuLy8gQXR0cmlidXRlc1xuIik7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCBAaGVhZGVyQXR0cmlidXRlcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAjIC0gQWRkIGZ1
bmN0aW9ucy4KKyAgICBpZiAoJG51bUZ1bmN0aW9ucyA+IDApIHsKKyAgICAgICAgbXkgQGhlYWRl
ckZ1bmN0aW9ucyA9ICgpOworCisgICAgICAgIGZvcmVhY2ggKEB7JGRhdGFOb2RlLT5mdW5jdGlv
bnN9KSB7CisgICAgICAgICAgICBteSAkZnVuY3Rpb24gPSAkXzsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
T2JqQ1ByaXZhdGUifSkgeworICAgICAgICAgICAgICAgICMgRklYTUU6IGZvciBub3csIGp1c3Qg
c2tpcCBtZXRob2RzIG5vdCBhcHByb3ZlZCBmb3IgQVBJIHlldAorICAgICAgICAgICAgICAgIG5l
eHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEFkZEZvcndhcmREZWNsYXJhdGlvbnNG
b3JUeXBlKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKTsKKworICAgICAgICAgICAgbXkgJGZ1
bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICAgICAgbXkg
JHJldHVyblR5cGUgPSBHZXRPYmpDVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSk7Cisg
ICAgICAgICAgICBteSAkbnVtYmVyT2ZQYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRl
cnN9OworCisgICAgICAgICAgICBteSAkb3V0cHV0ID0gIi0gKCRyZXR1cm5UeXBlKSRmdW5jdGlv
bk5hbWUiOworICAgICAgICAgICAgZm9yZWFjaCBteSAkcGFyYW0gKEB7JGZ1bmN0aW9uLT5wYXJh
bWV0ZXJzfSkgeworICAgICAgICAgICAgICAgIG15ICRwYXJhbU5hbWUgPSAkcGFyYW0tPm5hbWU7
CisgICAgICAgICAgICAgICAgbXkgJHBhcmFtVHlwZSA9IEdldE9iakNUeXBlKCRwYXJhbS0+dHlw
ZSk7CisgICAgICAgICAgICAgICAgQWRkRm9yd2FyZERlY2xhcmF0aW9uc0ZvclR5cGUoJHBhcmFt
LT50eXBlKTsKKworICAgICAgICAgICAgICAgICRvdXRwdXQgLj0gIjooJHBhcmFtVHlwZSkkcGFy
YW1OYW1lIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRvdXRwdXQgLj0gIjtcbiI7CisK
KyAgICAgICAgICAgIHB1c2goQGhlYWRlckZ1bmN0aW9ucywgJG91dHB1dCk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoQGhlYWRlckZ1bmN0aW9ucyA+IDApIHsKKyAgICAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICJcbi8vIEZ1bmN0aW9uc1xuIik7CisgICAgICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCBAaGVhZGVyRnVuY3Rpb25zKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
ICMgLSBFbmQgQGludGVyZmFjZSAKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG5cQGVuZFxu
Iik7CisKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4jZW5kaWYgLy8gJHtjb25kaXRpb25h
bH1fU1VQUE9SVFxuIikgaWYgJGNvbmRpdGlvbmFsOworCit9CisKK3N1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCit7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAgIG15ICRkYXRhTm9kZSA9
IHNoaWZ0OworCisgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkZGF0YU5vZGUtPm5hbWU7CisgICAg
bXkgJGNsYXNzTmFtZSA9ICJET00kaW50ZXJmYWNlTmFtZSI7CisgICAgbXkgJGltcGxDbGFzc05h
bWUgPSAiV2ViQ29yZTo6JGludGVyZmFjZU5hbWUiOworICAgIG15ICRwYXJlbnRJbXBsQ2xhc3NO
YW1lID0gR2V0UGFyZW50Q2xhc3NOYW1lKCRkYXRhTm9kZSk7CisKKyAgICBteSAkY29uZGl0aW9u
YWwgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9OworCisg
ICAgbXkgJG51bUF0dHJpYnV0ZXMgPSBAeyRkYXRhTm9kZS0+YXR0cmlidXRlc307CisgICAgbXkg
JG51bUZ1bmN0aW9ucyA9IEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9OworCisKKyAgICAjIC0gQWRk
IGRlZmF1bHQgaGVhZGVyIHRlbXBsYXRlLgorICAgIEBpbXBsQ29udGVudEhlYWRlciA9IHNwbGl0
KCJcciIsICRoZWFkZXJUZW1wbGF0ZSk7CisKKyAgICAjIC0gQWRkIHByb3RlY3Rpb24gYWdhaW5z
dCB1bnN1cHBvcnRlZCBtb2R1bGVzLgorICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAiXG4j
aWZkZWYgJHtjb25kaXRpb25hbH1fU1VQUE9SVFxuIikgaWYgJGNvbmRpdGlvbmFsOworCisgICAg
IyAtIElOQ0xVREVTIC0KKyAgICBwdXNoKEBpbXBsQ29udGVudEhlYWRlciwgIlxuI2ltcG9ydCBc
ImNvbmZpZy5oXCJcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAiI2ltcG9ydCBc
IiRjbGFzc05hbWUuaFwiXG5cbiIpOworCisgICAgaWYgKCRudW1BdHRyaWJ1dGVzICsgJG51bUZ1
bmN0aW9ucyA+IDApIHsKKyAgICAgICAgIyBORUVERUQgZm9yIERPTV9DQVNUCisgICAgICAgIHB1
c2goQGltcGxDb250ZW50SGVhZGVyLCAiI2ltcG9ydCBcIkRPTUludGVybmFsLmhcIiAvLyBuZWVk
ZWQgZm9yIERPTV9jYXN0PD5cbiIpOworICAgICAgICAKKyAgICAgICAgIyBpbmNsdWRlIG1vZHVs
ZSBkZXBlbmRhbnQgaW50ZXJuYWwgaW50ZXJmYWNlcyAKKyAgICAgICAgaWYgKCRpbnRlcmZhY2VO
YW1lID1+IC9eSFRNTC8pIHsKKyAgICAgICAgICAgICMgSFRNTCBtb2R1bGUgaW50ZXJuYWwgaW50
ZXJmYWNlcworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIsICIjaW1wb3J0IFwi
RE9NSFRNTEludGVybmFsLmhcIlxuIik7CisgICAgICAgIH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1l
ID1+IC9eQ1NTLyBvciAkaW50ZXJmYWNlTmFtZSBlcSAiUmVjdCIgb3IgJGludGVyZmFjZU5hbWUg
ZXEgIkNvdW50ZXIiKSB7CisgICAgICAgICAgICAjIENTUyBtb2R1bGUgaW50ZXJuYWwgaW50ZXJm
YWNlcworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIsICIjaW1wb3J0IFwiRE9N
Q1NTSW50ZXJuYWwuaFwiXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVy
LCAiI2ltcG9ydCBcIlBsYXRmb3JtU3RyaW5nLmhcIiAvLyBIQUNLXG4iKTsKKworICAgICAgICB9
CisKKyAgICAgICAgIyBpbmNsdWRlIEltcGxlbWVudGF0aW9uIGNsYXNzCisgICAgICAgIHB1c2go
QGltcGxDb250ZW50SGVhZGVyLCAiI2ltcG9ydCBcIiRpbnRlcmZhY2VOYW1lLmhcIiAvLyBpbXBs
ZW1lbnRhdGlvbiBjbGFzc1xuIik7CisgICAgfQorCisgICAgQGltcGxDb250ZW50ID0gKCk7CisK
KyAgICAjIFNUQVJUIGltcGxlbWVudGF0aW9uCisgICAgcHVzaChAaW1wbENvbnRlbnQsICJcblxA
aW1wbGVtZW50YXRpb24gJGNsYXNzTmFtZVxuXG4iKTsKKyAgICAKKyAgICAjIEFERCBJTlRFUk5B
TCBDQVNUSU5HIE1FVEhPRAorICAgIG15ICRpbnRlcm5hbENhc3RpbmdOYW1lID0gIl8kaW50ZXJm
YWNlTmFtZSI7CisgICAgbXkgJGltcGxlbWVudGF0aW9uID0gIltzZWxmICRpbnRlcm5hbENhc3Rp
bmdOYW1lXSI7CisgICAgCisgICAgaWYgKCRudW1BdHRyaWJ1dGVzICsgJG51bUZ1bmN0aW9ucyA+
IDApIHsKKyAgICAgICAgaWYgKCRwYXJlbnRJbXBsQ2xhc3NOYW1lIGVxICJET01PYmplY3QiKSB7
CisgICAgICAgICAgICAjIEdlbmVyYXRlICdkZWFsbG9jJyBhbmQgJ2ZpbmFsaXplJyBtZXRob2Rz
IGlmIG5lZWRlZC4KKworICAgICAgICAgICAgZGllICJXZSBzaG91bGQgbm90IGhhdmUgYW55IGlu
dGVyZmFjZXMgdGhhdCBhcmUgZGlyZWN0IGNoaWxkcmVuIG9mIERPTU9iamVjdCB5ZXQhIjsKKwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICItICh2b2lkKWRlYWxsb2NcbiIpOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmIChfaW50ZXJuYWwpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICBET01fY2FzdDwkaW1wbENsYXNzTmFtZSAqPihfaW50ZXJuYWwp
LT5kZXJlZigpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBbc3Vw
ZXIgZGVhbGxvY107XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4i
KTsKKworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICItICh2b2lkKWZpbmFsaXplXG4i
KTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoX2ludGVybmFsKVxuIik7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgRE9NX2Nhc3Q8JGltcGxDbGFzc05hbWUgKj4oX2lu
dGVybmFsKS0+ZGVyZWYoKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgW3N1cGVyIGZpbmFsaXplXTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ9XG5cbiIpOworICAgICAgICB9CisgICAgCisgICAgICAgIG15ICRpbnRlcm5hbEJhc2VUeXBl
OworICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkNTU1ByaW1pdGl2ZVZhbHVlIikgewor
ICAgICAgICAgICAgJGludGVybmFsQmFzZVR5cGUgPSAiV2ViQ29yZTo6Q1NTVmFsdWUiCisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkaW50ZXJuYWxCYXNlVHlwZSA9ICJXZWJDb3JlOjpO
b2RlIgorICAgICAgICB9CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiLSAoJGltcGxDbGFz
c05hbWUgKikkaW50ZXJuYWxDYXN0aW5nTmFtZVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAie1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBzdGF0
aWNfY2FzdDwkaW1wbENsYXNzTmFtZSAqPihET01fY2FzdDwkaW50ZXJuYWxCYXNlVHlwZSAqPihf
aW50ZXJuYWwpKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Cisg
ICAgfQorCisgICAgIyAtIEF0dHJpYnV0ZXMKKyAgICBpZiAoJG51bUF0dHJpYnV0ZXMgPiAwKSB7
CisgICAgICAgIGZvcmVhY2ggKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgeworICAgICAgICAg
ICAgbXkgJGF0dHJpYnV0ZSA9ICRfOworCisgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT2JqQ1ByaXZhdGUifSkgeworICAgICAgICAg
ICAgICAgICMgRklYTUU6IGZvciBub3csIGp1c3Qgc2tpcCBtZXRob2RzIG5vdCBhcHByb3ZlZCBm
b3IgQVBJIHlldAorICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOwor
CisgICAgICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
bmFtZTsKKyAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVUeXBlID0gR2V0T2JqQ1R5cGUoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsKKyAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVJc1JlYWRv
bmx5ID0gKCRhdHRyaWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8pOworCisgICAgICAgICAgICAj
IC0gR0VUVEVSCisgICAgICAgICAgICBteSAkZ2V0dGVyU2lnID0gIi0gKCRhdHRyaWJ1dGVUeXBl
KSRhdHRyaWJ1dGVOYW1lXG4iOworICAgICAgICAgICAgCisgICAgICAgICAgICAjIEV4Y2VwdGlv
biBoYW5kbGluZworICAgICAgICAgICAgbXkgJGhhc0dldHRlckV4Y2VwdGlvbiA9IEB7JGF0dHJp
YnV0ZS0+Z2V0dGVyRXhjZXB0aW9uc307CisgICAgICAgICAgICBpZiAoJGhhc0dldHRlckV4Y2Vw
dGlvbikgeworICAgICAgICAgICAgICAgIGRpZSAiV2Ugc2hvdWxkIG5vdCBoYXZlIGFueSBnZXR0
ZXIgZXhjZXB0aW9ucyB5ZXQhIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgbXkgJGdldHRlckNvbnRlbnRIZWFkID0gIiI7CisgICAgICAgICAgICBteSAkZ2V0dGVy
Q29udGVudFRhaWwgPSAiIjsKKyAgICAgICAgICAgIGlmICgkYXR0cmlidXRlVHlwZSBlcSAiRE9N
TmFtZWROb2RlTWFwICoiKSB7CisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0g
IltET01OYW1lZE5vZGVNYXAgX25hbWVkTm9kZU1hcFdpdGg6JGltcGxlbWVudGF0aW9uLT4kYXR0
cmlidXRlTmFtZSgiOworICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50VGFpbCA9ICIpXSI7
CisgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlVHlwZSBlcSAiRE9NSFRNTENvbGxlY3Rp
b24gKiIpIHsKKyAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiW0RPTUhUTUxD
b2xsZWN0aW9uIF9jb2xsZWN0aW9uV2l0aDokaW1wbGVtZW50YXRpb24tPiRhdHRyaWJ1dGVOYW1l
KCI7CisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRUYWlsID0gIikuZ2V0KCldIjsKKyAg
ICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGVUeXBlIGVxICJET01IVE1MRm9ybUVsZW1lbnQg
KiIpIHsKKyAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiW0RPTUhUTUxGb3Jt
RWxlbWVudCBfZm9ybUVsZW1lbnRXaXRoOiRpbXBsZW1lbnRhdGlvbi0+JGF0dHJpYnV0ZU5hbWUo
IjsKKyAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudFRhaWwgPSAiKV0iOworICAgICAgICAg
ICAgfSBlbHNpZiAoJGF0dHJpYnV0ZVR5cGUgZXEgIkRPTUVsZW1lbnQgKiIpIHsKKyAgICAgICAg
ICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiW0RPTUVsZW1lbnQgX2VsZW1lbnRXaXRoOiRp
bXBsZW1lbnRhdGlvbi0+JGF0dHJpYnV0ZU5hbWUoIjsKKyAgICAgICAgICAgICAgICAkZ2V0dGVy
Q29udGVudFRhaWwgPSAiKV0iOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAjIENPTU1PTiBDQVNFCisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIiRp
bXBsZW1lbnRhdGlvbi0+JGF0dHJpYnV0ZU5hbWUoIjsKKyAgICAgICAgICAgICAgICAkZ2V0dGVy
Q29udGVudFRhaWwgPSAiKSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIG15ICRnZXR0ZXJDb250ZW50OworICAgICAgICAgICAgaWYgKCRoYXNHZXR0ZXJFeGNlcHRp
b24pIHsKKyAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudCA9ICRnZXR0ZXJDb250ZW50SGVh
ZCAuICJlYyIgLiAkZ2V0dGVyQ29udGVudFRhaWw7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50ID0gJGdldHRlckNvbnRlbnRIZWFkIC4gJGdldHRl
ckNvbnRlbnRUYWlsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgJGdldHRlclNpZyk7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKSBpZiAkaGFzR2V0dGVyRXhjZXB0aW9uOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICRnZXR0ZXJDb250ZW50O1xu
Iik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByYWlzZU9uRE9NRXJyb3Io
ZWMpO1xuIikgaWYgJGhhc0dldHRlckV4Y2VwdGlvbjsKKyAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAifVxuXG4iKTsKKworICAgICAgICAgICAgIyAtIFNFVFRFUgorICAgICAgICAgICAg
aWYgKCEkYXR0cmlidXRlSXNSZWFkb25seSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgIyBFeGNlcHRpb24gaGFuZGxpbmcKKyAgICAgICAgICAgICAgICBteSAkaGFzU2V0dGVyRXhj
ZXB0aW9uID0gQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBteSAkc2V0dGVyTmFtZSA9ICJzZXQiIC4gdWNmaXJzdCgkYXR0
cmlidXRlTmFtZSk7CisgICAgICAgICAgICAgICAgbXkgJHNldHRlclNpZyA9ICItICh2b2lkKSRz
ZXR0ZXJOYW1lOigkYXR0cmlidXRlVHlwZSkkYXR0cmlidXRlTmFtZVxuIjsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJHNldHRlclNpZyk7Cisg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBpZiAoJGhhc1NldHRlckV4Y2VwdGlvbikgeworICAgICAgICAg
ICAgICAgICAgICAjIEZJWE1FOiBhc3NlcnRzIGV4c2lzdCBpbiB0aGUgZXhzaXN0aW5nIGJpbmRp
bmdzLCBidXQgSSBhbSB1bnN1cmUgd2h5IHRoZXkgYXJlIAorICAgICAgICAgICAgICAgICAgICAj
IHRoZXJlIGluIHRoZSBmaXJzdCBwbGFjZTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgQVNTRVJUKCRhdHRyaWJ1dGVOYW1lKTtcblxuIik7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICRpbXBsZW1lbnRhdGlvbi0+JHNldHRlck5hbWUoJGF0dHJpYnV0
ZU5hbWUsIGVjKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICByYWlzZU9uRE9NRXJyb3IoZWMpO1xuIik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGltcGxlbWVudGF0
aW9uLT4kc2V0dGVyTmFtZSgkYXR0cmlidXRlTmFtZSk7XG4iKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9
XG5cbiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgIyAtIEZ1bmN0
aW9ucworICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCkgeworICAgICAgICBmb3JlYWNoIChAeyRk
YXRhTm9kZS0+ZnVuY3Rpb25zfSkgeworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uID0gJF87CisK
KyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Ik9iakNQcml2YXRlIn0pIHsKKyAgICAgICAgICAgICAgICAjIEZJWE1FOiBmb3Igbm93LCBq
dXN0IHNraXAgbWV0aG9kcyBub3QgYXBwcm92ZWQgZm9yIEFQSSB5ZXQKKyAgICAgICAgICAgICAg
ICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0g
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgICAgICBteSAkcmV0dXJuVHlwZSA9
IEdldE9iakNUeXBlKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKTsKKyAgICAgICAgICAgIG15
ICRoYXNQYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OworICAgICAgICAgICAg
bXkgJHJhaXNlc0V4Y2VwdGlvbnMgPSBAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc307CisK
KyAgICAgICAgICAgIG15IEBwYXJhbWV0ZXJOYW1lcyA9ICgpOworCisgICAgICAgICAgICBteSAk
ZnVuY3Rpb25TaWcgPSAiLSAoJHJldHVyblR5cGUpJGZ1bmN0aW9uTmFtZSI7CisgICAgICAgICAg
ICBmb3JlYWNoIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKKyAgICAgICAgICAgICAgICBt
eSAkcGFyYW0gPSAkXzsKKyAgICAgICAgICAgICAgICBteSAkcGFyYW1UeXBlID0gR2V0T2JqQ1R5
cGUoJHBhcmFtLT50eXBlKTsKKyAgICAgICAgICAgICAgICBteSAkcGFyYW1OYW1lID0gJHBhcmFt
LT5uYW1lOworICAgICAgICAgICAgICAgIHB1c2goQHBhcmFtZXRlck5hbWVzLCAkcGFyYW1OYW1l
KTsKKworICAgICAgICAgICAgICAgICRmdW5jdGlvblNpZyAuPSAiOigkcGFyYW1UeXBlKSRwYXJh
bU5hbWUiOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAKKyAgICAgICAgICAgIG15IEBm
dW5jdGlvbkNvbnRlbnQgPSAoKTsKKworICAgICAgICAgICAgaWYgKCRyZXR1cm5UeXBlIGVxICJ2
b2lkIikgeworICAgICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlICd2b2lkJyByZXR1cm4gdHlw
ZS4KKworICAgICAgICAgICAgICAgIG15ICRmdW5jdGlvbkNvbnRlbnRIZWFkID0gIiRpbXBsZW1l
bnRhdGlvbi0+JGZ1bmN0aW9uTmFtZSgiOworICAgICAgICAgICAgICAgIG15ICRmdW5jdGlvbkNv
bnRlbnRUYWlsID0gIik7XG4iOworICAgICAgICAgICAgICAgIG15ICRjb250ZW50ID0gIiI7CisK
KyAgICAgICAgICAgICAgICBpZiAoJGhhc1BhcmFtZXRlcnMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbXkgJHBhcmFtcyA9IGpvaW4oIiwgIiwgQHBhcmFtZXRlck5hbWVzKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCRyYWlzZXNFeGNlcHRpb25zKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAkY29udGVudCA9ICRmdW5jdGlvbkNvbnRlbnRIZWFkIC4gJHBhcmFtcyAuICIsIGVjIiAuICRm
dW5jdGlvbkNvbnRlbnRUYWlsOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkZnVuY3Rpb25Db250ZW50SGVhZCAuICRwYXJh
bXMgLiAkZnVuY3Rpb25Db250ZW50VGFpbDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgkcmFpc2VzRXhjZXB0
aW9ucykgeworICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkZnVuY3Rpb25Db250
ZW50SGVhZCAuICJlYyIgLiAkZnVuY3Rpb25Db250ZW50VGFpbDsKKyAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gJGZ1bmN0aW9u
Q29udGVudEhlYWQgLiAkZnVuY3Rpb25Db250ZW50VGFpbDsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBp
ZiAoJHJhaXNlc0V4Y2VwdGlvbnMpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rp
b25Db250ZW50LCAiICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7CisgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICAkY29udGVudCIpOwor
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgcmFpc2VPbkRP
TUVycm9yKGVjKTtcbiIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICAkY29udGVudCIpOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBteSAkZnVuY3Rpb25Db250ZW50SGVhZDsKKyAgICAgICAgICAgICAgICBteSAk
ZnVuY3Rpb25Db250ZW50VGFpbDsKKworICAgICAgICAgICAgICAgIGlmICgkcmV0dXJuVHlwZSBl
cSAiRE9NQ291bnRlciAqIikgeworICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25Db250ZW50
SGVhZCA9ICJbRE9NQ291bnRlciBfY291bnRlcldpdGg6JHtpbXBsZW1lbnRhdGlvbn0tPiR7ZnVu
Y3Rpb25OYW1lfSgiOworICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25Db250ZW50VGFpbCA9
ICIpXTtcbiI7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHJldHVyblR5cGUgZXEgIkRPTVJl
Y3QgKiIpIHsKKyAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uQ29udGVudEhlYWQgPSAiW0RP
TVJlY3QgX3JlY3RXaXRoOiR7aW1wbGVtZW50YXRpb259LT4ke2Z1bmN0aW9uTmFtZX0oIjsKKyAg
ICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uQ29udGVudFRhaWwgPSAiKV07XG4iOworICAgICAg
ICAgICAgICAgIH0gZWxzaWYgKCRyZXR1cm5UeXBlIGVxICJET01SR0JDb2xvciAqIikgeworICAg
ICAgICAgICAgICAgICAgICAkZnVuY3Rpb25Db250ZW50SGVhZCA9ICJbRE9NUkdCQ29sb3IgX1JH
QkNvbG9yV2l0aFJHQjoke2ltcGxlbWVudGF0aW9ufS0+JHtmdW5jdGlvbk5hbWV9KCI7CisgICAg
ICAgICAgICAgICAgICAgICRmdW5jdGlvbkNvbnRlbnRUYWlsID0gIildO1xuIjsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25Db250ZW50SGVh
ZCA9ICIkaW1wbGVtZW50YXRpb24tPiRmdW5jdGlvbk5hbWUoIjsKKyAgICAgICAgICAgICAgICAg
ICAgJGZ1bmN0aW9uQ29udGVudFRhaWwgPSAiKTtcbiI7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgbXkgJGNvbnRlbnQgPSAiIjsKKworICAgICAgICAgICAgICAgIGlmICgk
aGFzUGFyYW1ldGVycykgeworICAgICAgICAgICAgICAgICAgICBteSAkcGFyYW1zID0gam9pbigi
LCAiICwgQHBhcmFtZXRlck5hbWVzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRyYWlzZXNF
eGNlcHRpb25zKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAjIEEgdGVtcGFyYXJ5IHZhcmlh
YmxlIGlzIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gIiRyZXR1
cm5UeXBlIHJlc3VsdCA9ICIgLiAkZnVuY3Rpb25Db250ZW50SGVhZCAuICRwYXJhbXMgLiAiLCBl
YyIgLiAkZnVuY3Rpb25Db250ZW50VGFpbDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gJGZ1bmN0aW9uQ29udGVudEhlYWQg
LiAkcGFyYW1zIC4gJGZ1bmN0aW9uQ29udGVudFRhaWw7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoJHJhaXNl
c0V4Y2VwdGlvbnMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICMgQSB0ZW1wYXJhcnkgdmFy
aWFibGUgaXMgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAiJHJl
dHVyblR5cGUgcmVzdWx0ID0gIiAuICRmdW5jdGlvbkNvbnRlbnRIZWFkIC4gImVjIiAuICRmdW5j
dGlvbkNvbnRlbnRUYWlsOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkZnVuY3Rpb25Db250ZW50SGVhZCAuICRmdW5jdGlv
bkNvbnRlbnRUYWlsOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICgkcmFpc2VzRXhjZXB0aW9ucykg
eworICAgICAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChA
ZnVuY3Rpb25Db250ZW50LCAiICAgICRjb250ZW50Iik7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICByYWlzZU9uRE9NRXJyb3IoZWMpO1xuIik7CisgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICByZXR1cm4gcmVzdWx0
OyIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QGZ1bmN0aW9uQ29udGVudCwgIiAgICByZXR1cm4gJGNvbnRlbnQiKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIkZnVuY3Rpb25TaWdcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBAZnVuY3Rpb25Db250
ZW50KTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgICMgRU5EIGltcGxlbWVudGF0aW9uCisgICAgcHVzaChAaW1wbENvbnRl
bnQsICJcQGVuZFxuIik7CisgICAgCisgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNlbmRpZiAv
LyAke2NvbmRpdGlvbmFsfV9TVVBQT1JUXG4iKSBpZiAkY29uZGl0aW9uYWw7Cit9CisKKyMgSW50
ZXJuYWwgaGVscGVyCitzdWIgV3JpdGVEYXRhCit7CisgICAgaWYgKGRlZmluZWQoJElNUEwpKSB7
CisgICAgICAgICMgV3JpdGUgY29udGVudCB0byBmaWxlLgorICAgICAgICBwcmludCAkSU1QTCBA
aW1wbENvbnRlbnRIZWFkZXI7CisgICAgICAgIAorICAgICAgICBmb3JlYWNoIG15ICRpbXBsSW5j
bHVkZSAoc29ydCBrZXlzKCVpbXBsSW5jbHVkZXMpKSB7CisgICAgICAgICAgICBwcmludCAkSU1Q
TCAiI2ltcG9ydCBcIiRpbXBsSW5jbHVkZVwiXG4iOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBwcmludCAkSU1QTCBAaW1wbENvbnRlbnQ7CisgICAgICAgIGNsb3NlKCRJTVBMKTsKKyAg
ICAgICAgdW5kZWYoJElNUEwpOworICAgICAgICAKKyAgICAgICAgQGltcGxIZWFkZXJDb250ZW50
ID0gIiI7CisgICAgICAgIEBpbXBsQ29udGVudCA9ICIiOyAgICAKKyAgICAgICAgJWltcGxJbmNs
dWRlcyA9ICgpOworICAgIH0KKyAgICAgICAgCisgICAgaWYgKGRlZmluZWQoJEhFQURFUikpIHsK
KyAgICAgICAgIyBXcml0ZSBjb250ZW50IHRvIGZpbGUuCisgICAgICAgIHByaW50ICRIRUFERVIg
QGhlYWRlckNvbnRlbnRIZWFkZXI7CisgICAgICAgIAorICAgICAgICBmb3JlYWNoIG15ICRmb3J3
YXJkRGVjbGFyYXRpb24gKHNvcnQga2V5cyglaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9ucykpIHsK
KyAgICAgICAgICAgIHByaW50ICRIRUFERVIgIlxAY2xhc3MgJGZvcndhcmREZWNsYXJhdGlvbjtc
biI7CisgICAgICAgIH0KKworICAgICAgICBwcmludCAkSEVBREVSIEBoZWFkZXJDb250ZW50Owor
ICAgICAgICBjbG9zZSgkSEVBREVSKTsKKyAgICAgICAgdW5kZWYoJEhFQURFUik7CisgICAgICAg
IAorICAgICAgICBAaGVhZGVyQ29udGVudEhlYWRlciA9ICIiOworICAgICAgICBAaGVhZGVyQ29u
dGVudCA9ICIiOworICAgICAgICAlaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9ucyA9ICgpOworICAg
IH0KK30KKworMTsKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL21hYy9GcmFtZU1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9tYWMvRnJhbWVNYWMubW0JKHJldmlzaW9uIDE1OTQ1KQor
KysgV2ViQ29yZS9icmlkZ2UvbWFjL0ZyYW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwx
MiArMzQsMTQgQEAKICNpbXBvcnQgIkNhY2hlLmgiCiAjaW1wb3J0ICJDbGlwYm9hcmRFdmVudC5o
IgogI2ltcG9ydCAiQ3Vyc29yLmgiCisjaW1wb3J0ICJET01IVE1MVGV4dEFyZWFFbGVtZW50Lmgi
CiAjaW1wb3J0ICJET01JbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NV2luZG93LmgiCiAjaW1wb3J0
ICJEZWNvZGVyLmgiCiAjaW1wb3J0ICJFdmVudC5oIgogI2ltcG9ydCAiRXZlbnROYW1lcy5oIgog
I2ltcG9ydCAiRmxvYXRSZWN0LmgiCisjaW1wb3J0ICJGb3JtRGF0YU1hYy5oIgogI2ltcG9ydCAi
Rm91bmRhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCAiRnJhbWVQcml2YXRlLmgiCiAjaW1wb3J0ICJH
cmFwaGljc0NvbnRleHQuaCIKQEAgLTQ5LDkgKzUxLDYgQEAKICNpbXBvcnQgIkhUTUxHZW5lcmlj
Rm9ybUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxOYW1lcy5oIgogI2ltcG9ydCAiSFRNTFRhYmxl
Q2VsbEVsZW1lbnQuaCIKLSNpbXBvcnQgIldlYkNvcmVFZGl0Q29tbWFuZC5oIgotI2ltcG9ydCAi
Rm9ybURhdGFNYWMuaCIKLSNpbXBvcnQgIldlYkNvcmVQYWdlU3RhdGUuaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKICNpbXBvcnQgIk1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaCIKICNpbXBv
cnQgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgpAQCAtNjQsOSArNjMsMTEgQEAKICNpbXBvcnQg
IlJlbmRlclRhYmxlQ2VsbC5oIgogI2ltcG9ydCAiUmVuZGVyVGhlbWUuaCIKICNpbXBvcnQgIlJl
bmRlclZpZXcuaCIKLSNpbXBvcnQgIlRleHRJdGVyYXRvci5oIgogI2ltcG9ydCAiUmVzb3VyY2VM
b2FkZXIuaCIKKyNpbXBvcnQgIlRleHRJdGVyYXRvci5oIgorI2ltcG9ydCAiV2ViQ29yZUVkaXRD
b21tYW5kLmgiCiAjaW1wb3J0ICJXZWJDb3JlRnJhbWVCcmlkZ2UuaCIKKyNpbXBvcnQgIldlYkNv
cmVQYWdlU3RhdGUuaCIKICNpbXBvcnQgIldlYkNvcmVWaWV3RmFjdG9yeS5oIgogI2ltcG9ydCAi
V2ViRGFzaGJvYXJkUmVnaW9uLmgiCiAjaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgi
CkBAIC03Nyw2ICs3OCw3IEBACiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9OUF9qc29iamVjdC5o
PgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvbnBydW50aW1lX2ltcGwuaD4KIAorCiAjdW5kZWYg
X3dlYmNvcmVfVElNSU5HCiAKIEBpbnRlcmZhY2UgTlNPYmplY3QgKFdlYlBsdWdJbikKSW5kZXg6
IFdlYkNvcmUvZG9tL0F0dHIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0F0dHIuaWRs
CShyZXZpc2lvbiAxNTk0NSkKKysrIFdlYkNvcmUvZG9tL0F0dHIuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw3ICszNCw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgCiAgICAgICAgIC8vIGV4
dGVuc2lvbnMKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ1NTU3R5bGVEZWNsYXJhdGlv
biBzdHlsZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtPYmpDUHJpdmF0ZV0gQ1NTU3R5
bGVEZWNsYXJhdGlvbiBzdHlsZTsKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL2RvbS9DREFU
QVNlY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5pZGwJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaWRsCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1
dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5p
Z0BnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkg
VGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu
CisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIENEQVRBU2VjdGlvbiA6IFRl
eHQgeworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvZG9tL0NvbW1lbnQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL0NvbW1lbnQuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9k
b20vQ29tbWVudC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgKiBC
b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBp
bnRlcmZhY2UgQ29tbWVudCA6IENoYXJhY3RlckRhdGEgeworICAgIH07CisKK30KSW5kZXg6IFdl
YkNvcmUvZG9tL0VudGl0eVJlZmVyZW5jZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
RW50aXR5UmVmZXJlbmNlLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0VudGl0eVJl
ZmVyZW5jZS5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBT
YW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgKiBCb3N0
b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRl
cmZhY2UgRW50aXR5UmVmZXJlbmNlIDogTm9kZSB7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29y
ZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaWRsCShyZXZpc2lvbiAxNTk0NSkKKysrIFdlYkNvcmUv
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5
LDcgQEAgbW9kdWxlIGNvcmUgewogCiAgICAgICAgIC8vIGludGVyZmFjZSBMaW5rU3R5bGUgZnJv
bSBET00gTGV2ZWwgMiBTdHlsZSBTaGVldHMKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
U3R5bGVTaGVldCBzaGVldDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtPYmpDUHJpdmF0
ZV0gU3R5bGVTaGVldCBzaGVldDsKIAogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
QW5jaG9yRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBbmNob3JF
bGVtZW50LmlkbAkocmV2aXNpb24gMTU5NDUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVs
ZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNCArMzcsMTQgQEAgbW9kdWxlIGh0bWwg
ewogICAgICAgICB2b2lkIGZvY3VzKCk7CiAgICAgICAgIAogICAgICAgICAvLyBJRSBFeHRlbnNp
b25zCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaGFzaDsKLSAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBob3N0OwotICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGhvc3RuYW1lOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHBhdGhuYW1lOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHBv
cnQ7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcHJvdG9jb2w7Ci0gICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc2VhcmNoOwotICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRleHQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBb
T2JqQ1ByaXZhdGVdIERPTVN0cmluZyBoYXNoOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
W09iakNQcml2YXRlXSBET01TdHJpbmcgaG9zdDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFtPYmpDUHJpdmF0ZV0gRE9NU3RyaW5nIGhvc3RuYW1lOworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgW09iakNQcml2YXRlXSBET01TdHJpbmcgcGF0aG5hbWU7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBbT2JqQ1ByaXZhdGVdIERPTVN0cmluZyBwb3J0OworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgW09iakNQcml2YXRlXSBET01TdHJpbmcgcHJvdG9jb2w7CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBbT2JqQ1ByaXZhdGVdIERPTVN0cmluZyBzZWFyY2g7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBbT2JqQ1ByaXZhdGVdIERPTVN0cmluZyB0ZXh0OwogICAgIH07
CiAKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuaWRsCShyZXZpc2lvbiAxNTk0NSkKKysr
IFdlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwx
MyArMzAsMTMgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRh
cmdldDsKICAgICAgICAgCiAgICAgICAgIC8vIElFIEV4dGVuc2lvbnMKLSAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBoYXNoOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGhvc3Q7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaG9z
dG5hbWU7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcGF0aG5hbWU7Ci0g
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcG9ydDsKLSAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBwcm90b2NvbDsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBzZWFyY2g7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbT2JqQ1By
aXZhdGVdIERPTVN0cmluZyBoYXNoOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW09iakNQ
cml2YXRlXSBET01TdHJpbmcgaG9zdDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtPYmpD
UHJpdmF0ZV0gRE9NU3RyaW5nIGhvc3RuYW1lOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
W09iakNQcml2YXRlXSBET01TdHJpbmcgcGF0aG5hbWU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBbT2JqQ1ByaXZhdGVdIERPTVN0cmluZyBwb3J0OworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgW09iakNQcml2YXRlXSBET01TdHJpbmcgcHJvdG9jb2w7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBbT2JqQ1ByaXZhdGVdIERPTVN0cmluZyBzZWFyY2g7CiAgICAgfTsKIAogfQpJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxCYXNlRm9udEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MQmFzZUZvbnRFbGVtZW50LmlkbAkocmV2aXNpb24gMTU5NDUpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTEJhc2VGb250RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTIyLDYgKzIyLDYgQEAgbW9kdWxlIGh0bWwgewogICAgIGludGVyZmFjZSBbTGVnYWN5UGFyZW50
PUtKUzo6SlNIVE1MRWxlbWVudF0gSFRNTEJhc2VGb250RWxlbWVudCA6IEhUTUxFbGVtZW50IHsK
ICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBjb2xvcjsKICAgICAgICAgYXR0cmlidXRlIERP
TVN0cmluZyBmYWNlOwotICAgICAgICBhdHRyaWJ1dGUgbG9uZyBzaXplOyAgICAKKyAgICAgICAg
YXR0cmlidXRlIGxvbmcgc2l6ZTsKICAgICB9OwogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxC
b2R5RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVu
dC5pZGwJKHJldmlzaW9uIDE1OTQ1KQorKysgV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDkgKzI3LDkgQEAgbW9kdWxlIGh0bWwgewogICAgICAg
ICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZMaW5rOyAKICAgICAgICAgCiAgICAgICAgIC8vIElFIEV4
dGVuc2lvbnMKLSAgICAgICAgYXR0cmlidXRlIGxvbmcgc2Nyb2xsTGVmdDsKLSAgICAgICAgYXR0
cmlidXRlIGxvbmcgc2Nyb2xsVG9wOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBz
Y3JvbGxXaWR0aDsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgc2Nyb2xsSGVpZ2h0
OworICAgICAgICBhdHRyaWJ1dGUgW09iakNQcml2YXRlXSBsb25nIHNjcm9sbExlZnQ7CisgICAg
ICAgIGF0dHJpYnV0ZSBbT2JqQ1ByaXZhdGVdIGxvbmcgc2Nyb2xsVG9wOworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgW09iakNQcml2YXRlXSBsb25nIHNjcm9sbFdpZHRoOworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgW09iakNQcml2YXRlXSBsb25nIHNjcm9sbEhlaWdodDsKICAgICB9
OwogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaWRsCShyZXZpc2lvbiAxNTk0NSkK
KysrIFdlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDggKzI3LDggQEAgbW9kdWxlIGh0bWwgewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUg
IGxvbmcgICAgICAgICAgICAgICAgIHRhYkluZGV4OwogICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgIERPTVN0cmluZyAgICAgICAgICAgIHR5cGU7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0
ZSAgRE9NU3RyaW5nICAgICAgICAgICAgdmFsdWU7Ci0gICAgICAgICAgICAgICAgIAotICAgICAg
ICB2b2lkICAgIGNsaWNrKCk7CisKKyAgICAgICAgW09iakNQcml2YXRlXSB2b2lkICAgIGNsaWNr
KCk7CiAKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCShyZXZpc2lv
biAxNTk0NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzMsOCArMzMsOCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIGF0dHJpYnV0ZSBs
b25nIHdpZHRoOwogICAgICAgICAKICAgICAgICAgLy8gRXh0ZW5zaW9ucwotICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiBjb21wbGV0ZTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGxvbmcgeDsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgeTsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFtPYmpDUHJpdmF0ZV0gYm9vbGVhbiBjb21wbGV0ZTsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFtPYmpDUHJpdmF0ZV0gbG9uZyB4OworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgW09iakNQcml2YXRlXSBsb25nIHk7CiAgICAgfTsKIH0KSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5pZGwJKHJldmlzaW9uIDE1OTQ1KQorKysgV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxNCArNDQsMTQgQEAg
bW9kdWxlIGh0bWwgewogICAgICAgICB2b2lkICAgIHNlbGVjdCgpOwogICAgICAgICB2b2lkICAg
IGNsaWNrKCk7CiAgICAgICAgIAotICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBp
bmRldGVybWluYXRlOyAvLyBXaW5JRSBleHRlbnNpb24KKyAgICAgICAgICAgICAgICAgYXR0cmli
dXRlIFtPYmpDUHJpdmF0ZV0gYm9vbGVhbiBpbmRldGVybWluYXRlOyAvLyBXaW5JRSBleHRlbnNp
b24KICAgICAgICAgCiAgICAgICAgIC8vIFdpbklFICYgRmlyZUZveCBleHRlbnNpb246CiAgICAg
ICAgIAogICAgICAgICAvLyBIYW5kbGVkIGJ5IEpTSFRNTElucHV0RWxlbWVudEJhc2UgdG8gYWxs
b3cgaGlkaW5nIGJhc2VkIG9uIGlucHV0IHR5cGUKLSAgICAgICAgLy8gYXR0cmlidXRlIGxvbmcg
c2VsZWN0aW9uU3RhcnQ7Ci0gICAgICAgIC8vIGF0dHJpYnV0ZSBsb25nIHNlbGVjdGlvbkVuZDsK
LSAgICAgICAgLy8gdm9pZCBzZXRTZWxlY3Rpb25SYW5nZShpbiBsb25nIHN0YXJ0LCBpbiBsb25n
IGVuZCk7CisgICAgICAgIC8vIGF0dHJpYnV0ZSBbT2JqQ1ByaXZhdGVdIGxvbmcgc2VsZWN0aW9u
U3RhcnQ7CisgICAgICAgIC8vIGF0dHJpYnV0ZSBbT2JqQ1ByaXZhdGVdIGxvbmcgc2VsZWN0aW9u
RW5kOworICAgICAgICAvLyBbT2JqQ1ByaXZhdGVdIHZvaWQgc2V0U2VsZWN0aW9uUmFuZ2UoaW4g
bG9uZyBzdGFydCwgaW4gbG9uZyBlbmQpOwogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MTGFiZWxFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExh
YmVsRWxlbWVudC5pZGwJKHJldmlzaW9uIDE1OTQ1KQorKysgV2ViQ29yZS9odG1sL0hUTUxMYWJl
bEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw2IEBAIG1vZHVsZSBodG1s
IHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxGb3JtRWxlbWVudCBmb3JtOwogICAg
ICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFjY2Vzc0tleTsKICAgICAgICAgYXR0cmlidXRlIERP
TVN0cmluZyBodG1sRm9yOwotICAgICAgICB2b2lkIGZvY3VzKCk7CisgICAgICAgIFtPYmpDUHJp
dmF0ZV0gdm9pZCBmb2N1cygpOwogICAgIH07CiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExl
Z2VuZEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxl
bWVudC5pZGwJKHJldmlzaW9uIDE1OTQ1KQorKysgV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVt
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNiBAQCBtb2R1bGUgaHRtbCB7CiAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MRm9ybUVsZW1lbnQgZm9ybTsKICAgICAgICAg
YXR0cmlidXRlIERPTVN0cmluZyBhY2Nlc3NLZXk7CiAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJp
bmcgYWxpZ247Ci0gICAgICAgIHZvaWQgZm9jdXMoKTsKKyAgICAgICAgW09iakNQcml2YXRlXSB2
b2lkIGZvY3VzKCk7CiAgICAgfTsKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaWRsCShy
ZXZpc2lvbiAxNTk0NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgYXR0cmli
dXRlICBET01TdHJpbmcgICAgICAgICAgICB0eXBlOwogICAgICAgICAKICAgICAgICAgLy8gRE9N
IExldmVsIDIgU3R5bGUKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFN0eWxlU2hlZXQgICBz
aGVldDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtPYmpDUHJpdmF0ZV0gU3R5bGVTaGVl
dCAgIHNoZWV0OwogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmlkbAkocmV2
aXNpb24gMTU5NDUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgYXR0cmlidXRl
IGxvbmcgd2lkdGg7CiAgICAgICAgIAogICAgICAgICAvLyBFeHRlbnNpb25zCi0gICAgICAgIGF0
dHJpYnV0ZSBib29sZWFuIHdyYXA7CisgICAgICAgIGF0dHJpYnV0ZSBbT2JqQ1ByaXZhdGVdIGJv
b2xlYW4gd3JhcDsKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxl
bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaWRs
CShyZXZpc2lvbiAxNTk0NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIGF0
dHJpYnV0ZSAgRE9NU3RyaW5nICAgICAgICAgICAgdHlwZTsKICAgICAgICAgCiAgICAgICAgIC8v
IERPTSBMZXZlbCAyIFN0eWxlCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdHlsZVNoZWV0
ICAgc2hlZXQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbT2JqQ1ByaXZhdGVdIFN0eWxl
U2hlZXQgICBzaGVldDsKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuaWRsCShyZXZpc2lvbiAxNTk0NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzcsOSArMzcsOSBAQCBtb2R1bGUgaHRtbCB7
CiAgICAgICAgIHZvaWQgICAgIHNlbGVjdCgpOwogCiAgICAgICAgLy8gV2luSUUgJiBGaXJlRm94
IGV4dGVuc2lvbjoKLSAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGxvbmcgc2VsZWN0aW9uU3Rh
cnQ7Ci0gICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBsb25nIHNlbGVjdGlvbkVuZDsKLSAgICAg
ICAgdm9pZCBzZXRTZWxlY3Rpb25SYW5nZShpbiBsb25nIHN0YXJ0LCBpbiBsb25nIGVuZCk7Cisg
ICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbT2JqQ1ByaXZhdGVdIGxvbmcgc2VsZWN0aW9uU3Rh
cnQ7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbT2JqQ1ByaXZhdGVdIGxvbmcgc2VsZWN0
aW9uRW5kOworICAgICAgICBbT2JqQ1ByaXZhdGVdIHZvaWQgc2V0U2VsZWN0aW9uUmFuZ2UoaW4g
bG9uZyBzdGFydCwgaW4gbG9uZyBlbmQpOwogICAgIH07CiAKIH0KSW5kZXg6IFdlYktpdC9ET00v
V2ViRE9NT3BlcmF0aW9ucy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ET00vV2ViRE9NT3BlcmF0
aW9ucy5tCShyZXZpc2lvbiAxNTk0NSkKKysrIFdlYktpdC9ET00vV2ViRE9NT3BlcmF0aW9ucy5t
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxNCArMjgsMTUgQEAKIAogI2ltcG9ydCA8V2ViS2l0L1dl
YkRPTU9wZXJhdGlvbnNQcml2YXRlLmg+CiAKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0Fzc2Vy
dGlvbnMuaD4KKyNpbXBvcnQgPFdlYktpdC9ET01Db3JlLmg+CiAjaW1wb3J0IDxXZWJLaXQvRE9N
RXh0ZW5zaW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0L0RPTUhUTUwuaD4KLSNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0Fzc2VydGlvbnMuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZUJyaWRnZS5o
PgorI2ltcG9ydCA8V2ViS2l0L1dlYkFyY2hpdmVyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRGF0
YVNvdXJjZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZUJyaWRnZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dlYkZyYW1lUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdE5T
U3RyaW5nRXh0cmFzLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViQXJjaGl2ZXIuaD4KIAogCiBAaW1w
bGVtZW50YXRpb24gRE9NTm9kZSAoV2ViRE9NTm9kZU9wZXJhdGlvbnMpCkluZGV4OiBXZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTk0NSkKKysrIFdlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODY2
LDE5ICs4NjYsMTcgQEAKIAkJOUM3Q0FCQkIwMTkwQTM3QzBFQ0ExNkVBIC8qIFdlYlZpZXcgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTY1OEE0MDk1MEEx
NDg1M0IwMDVFNjk4NyAvKiBXZWJEYXRhU291cmNlSW50ZXJuYWwuaCAqLywKLQkJCQk2NTBGNzRF
MjA5RTQ4OEY3MDAyMDExOEEgLyogV2ViVW5hcmNoaXZpbmdTdGF0ZS5oICovLAotCQkJCTY1MEY3
NEUzMDlFNDg4RjcwMDIwMTE4QSAvKiBXZWJVbmFyY2hpdmluZ1N0YXRlLm0gKi8sCi0JCQkJNjU1
MEI3QzUwOTlFRkFFOTAwOTBENzgxIC8qIFdlYkFyY2hpdmVyLmggKi8sCi0JCQkJNjU1MEI3QzYw
OTlFRkFFOTAwOTBENzgxIC8qIFdlYkFyY2hpdmVyLm0gKi8sCiAJCQkJRjUyQ0E2QkQwMkRGOUQw
RjAxODYzNUNBIC8qIEhUTUwgKi8sCiAJCQkJNTFFOTRDMDcwNkMwMkNBMzAwQTlCMDlFIC8qIFBE
RiAqLywKIAkJCQk4MzczNDM1QTA2MjRFRTBEMDBGM0IyODkgLyogV2ViQXJjaGl2ZS5oICovLAog
CQkJCTgzNzM0MzVCMDYyNEVFMEQwMEYzQjI4OSAvKiBXZWJBcmNoaXZlLm0gKi8sCisJCQkJNjU1
MEI3QzUwOTlFRkFFOTAwOTBENzgxIC8qIFdlYkFyY2hpdmVyLmggKi8sCisJCQkJNjU1MEI3QzYw
OTlFRkFFOTAwOTBENzgxIC8qIFdlYkFyY2hpdmVyLm0gKi8sCiAJCQkJOTMzRDY1OTkwMzQxM0ZG
MjAwODYzNUNFIC8qIFdlYkNsaXBWaWV3LmggKi8sCiAJCQkJOTMzRDY1OUEwMzQxM0ZGMjAwODYz
NUNFIC8qIFdlYkNsaXBWaWV3Lm0gKi8sCiAJCQkJMzk0NDYwNzAwMjBGNTBFRDBFQ0ExNzY3IC8q
IFdlYkRhdGFTb3VyY2UuaCAqLywKIAkJCQkzOTQ0NjA3MTAyMEY1MEVEMEVDQTE3NjcgLyogV2Vi
RGF0YVNvdXJjZS5tICovLAorCQkJCTY1OEE0MDk1MEExNDg1M0IwMDVFNjk4NyAvKiBXZWJEYXRh
U291cmNlSW50ZXJuYWwuaCAqLywKIAkJCQkzOTQ0NjA3MjAyMEY1MEVEMEVDQTE3NjcgLyogV2Vi
RGF0YVNvdXJjZVByaXZhdGUuaCAqLywKIAkJCQkzNTA4MURBRTAyQjZENEY1MEFDQTJBQ0EgLyog
V2ViRG9jdW1lbnQuaCAqLywKIAkJCQlFRDIxQjk4MTA1MjhGN0FBMDAzMjk5QUMgLyogV2ViRG9j
dW1lbnRJbnRlcm5hbC5oICovLApAQCAtOTE0LDYgKzkxMiw4IEBACiAJCQkJN0U2RkVGMDcwODk4
NUE3MjAwQzQ0QzNGIC8qIFdlYlNjcmlwdERlYnVnRGVsZWdhdGVQcml2YXRlLmggKi8sCiAJCQkJ
NTE1RTI3Q0MwNDU4Qzg2NTAwQ0EyRDNBIC8qIFdlYlVJRGVsZWdhdGUuaCAqLywKIAkJCQk2NUE3
RDQ0QTA1NjhBQjI2MDBFNzBFRjYgLyogV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCAqLywKKwkJCQk2
NTBGNzRFMjA5RTQ4OEY3MDAyMDExOEEgLyogV2ViVW5hcmNoaXZpbmdTdGF0ZS5oICovLAorCQkJ
CTY1MEY3NEUzMDlFNDg4RjcwMDIwMTE4QSAvKiBXZWJVbmFyY2hpdmluZ1N0YXRlLm0gKi8sCiAJ
CQkJNTFBOEI1NzkwNDI4MzRGNzAwQ0EyRDNBIC8qIFdlYlZpZXcuaCAqLywKIAkJCQk1MUE4QjU3
QTA0MjgzNEY3MDBDQTJEM0EgLyogV2ViVmlldy5tICovLAogCQkJCTkzMEQwMkJCMDYyNzVGNjQw
MDc2NzAxRSAvKiBXZWJWaWV3SW50ZXJuYWwuaCAqLywKQEAgLTEyMzEsMTAgKzEyMzEsODcgQEAK
IAkJCWJ1aWxkUGhhc2VzID0gKAogCQkJCTkzQUY1Mjg3MDgyNTRCMzMwMDVEMDE1NiAvKiBET00u
aCAqLywKIAkJCQk5M0FGNTJBNzA4MjU0RDhCMDA1RDAxNTYgLyogRE9NQ29yZS5oICovLAorCQkJ
CTg1MjZENzREMEE4RkVGMDIwMDkyMzRCMSAvKiBET01BdHRyLmggKi8sCisJCQkJODUzMTFGNjkw
QThGOTA5MTAwNTEyNUM5IC8qIERPTUNEQVRBU2VjdGlvbi5oICovLAorCQkJCTg1MjZENkJGMEE4
RkU2MEIwMDkyMzRCMSAvKiBET01DaGFyYWN0ZXJEYXRhLmggKi8sCisJCQkJODUzMTFGNzIwQThG
OTBGNjAwNTEyNUM5IC8qIERPTUNvbW1lbnQuaCAqLywKKwkJCQk4NTZDODlERTBBOTBFMzgzMDA1
QzY4N0IgLyogRE9NRG9jdW1lbnQuaCAqLywKKwkJCQk4NUM5MDY2RjBBOEZEMTFDMDBDMzdEOTEg
LyogRE9NRG9jdW1lbnRGcmFnbWVudC5oICovLAorCQkJCTg1QzkwNUYzMEE4RkNDQjIwMEMzN0Q5
MSAvKiBET01Eb2N1bWVudFR5cGUuaCAqLywKKwkJCQk4NTM5QjU2NTBBOTAzRUI5MDAzNjZDMkQg
LyogRE9NRE9NSW1wbGVtZW50YXRpb24uaCAqLywKKwkJCQk4NUNBOTRFQTBBOTUyOUFFMDA2OTBD
Q0YgLyogRE9NSFRNTEZvcm1FbGVtZW50LmggKi8sCisJCQkJODVBNUM1RTEwQTkwMzJCMzAwRjkx
RjJDIC8qIERPTUVsZW1lbnQuaCAqLywKKwkJCQk4NTMxMUY3NTBBOEY5MTY4MDA1MTI1QzkgLyog
RE9NRW50aXR5LmggKi8sCisJCQkJODUzMTFGODgwQThGOTFGRTAwNTEyNUM5IC8qIERPTUVudGl0
eVJlZmVyZW5jZS5oICovLAorCQkJCTg1MjZEN0VBMEE4RkY2NEMwMDkyMzRCMSAvKiBET01OYW1l
ZE5vZGVNYXAuaCAqLywKKwkJCQk4NTZDOEE5MzBBOTBGNTRGMDA1QzY4N0IgLyogRE9NTm9kZS5o
ICovLAorCQkJCTg1QTg1QjU5MEE5MDJDMzIwMEE1Q0YzQSAvKiBET01Ob2RlTGlzdC5oICovLAor
CQkJCTg1MzExRkU5MEE4Rjk4QjkwMDUxMjVDOSAvKiBET01Ob3RhdGlvbi5oICovLAorCQkJCTg1
NkM4QjdCMEE5MTI5QjgwMDVDNjg3QiAvKiBET01PYmplY3QuaCAqLywKKwkJCQk4NTMxMjAxMzBB
OEY5QTUyMDA1MTI1QzkgLyogRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggKi8sCisJCQkJODUy
NkQ2NDEwQThGREI4NDAwOTIzNEIxIC8qIERPTVRleHQuaCAqLywKIAkJCQk5M0FGNTJBOTA4MjU0
RDhGMDA1RDAxNTYgLyogRE9NQ1NTLmggKi8sCisJCQkJODVGQkVBNEMwQTlBNDMyQzAwMEEyQTRF
IC8qIERPTUNTU1J1bGUuaCAqLywKKwkJCQk4NUZCRUE0ODBBOUE0MkZGMDAwQTJBNEUgLyogRE9N
Q1NTVmFsdWUuaCAqLywKKwkJCQk4NUZCRUE0NDBBOUE0MkRFMDAwQTJBNEUgLyogRE9NQ1NTUHJp
bWl0aXZlVmFsdWUuaCAqLywKIAkJCQk5M0FGNTJBNTA4MjU0RDg3MDA1RDAxNTYgLyogRE9NRXZl
bnRzLmggKi8sCiAJCQkJOTNBRjUyQTMwODI1NEQ4MTAwNUQwMTU2IC8qIERPTUV4dGVuc2lvbnMu
aCAqLywKIAkJCQk5M0FGNTJBMTA4MjU0RDdEMDA1RDAxNTYgLyogRE9NSFRNTC5oICovLAorCQkJ
CTg1Q0E5OUQxMEE5NjY4QTUwMDY5MENDRiAvKiBET01IVE1MQW5jaG9yRWxlbWVudC5oICovLAor
CQkJCTg1Q0E5NjE4MEE5NTVFRTcwMDY5MENDRiAvKiBET01IVE1MQXBwbGV0RWxlbWVudC5oICov
LAorCQkJCTg1MEU2NDgyMEE5NDIwMEMwMEVGQjczQSAvKiBET01IVE1MQXJlYUVsZW1lbnQuaCAq
LywKKwkJCQk4NUNBOTYyMTBBOTU1RjdBMDA2OTBDQ0YgLyogRE9NSFRNTEJSRWxlbWVudC5oICov
LAorCQkJCTg1Q0E5NjI2MEE5NTVGQjEwMDY5MENDRiAvKiBET01IVE1MQmFzZUVsZW1lbnQuaCAq
LywKKwkJCQk4NUNBOTYyQjBBOTU1RkUzMDA2OTBDQ0YgLyogRE9NSFRNTEJhc2VGb250RWxlbWVu
dC5oICovLAorCQkJCTg1MEU2NEZFMEE5NDIzOUMwMEVGQjczQSAvKiBET01IVE1MQm9keUVsZW1l
bnQuaCAqLywKKwkJCQk4NUNBOUE5MTBBOTY5QTg4MDA2OTBDQ0YgLyogRE9NSFRNTEJ1dHRvbkVs
ZW1lbnQuaCAqLywKKwkJCQk4NTBFNjdEQTBBOTUxQjQwMDBFRkI3M0EgLyogRE9NSFRNTENvbGxl
Y3Rpb24uaCAqLywKKwkJCQk4NUNBOTYzMDBBOTU2MDE1MDA2OTBDQ0YgLyogRE9NSFRNTERMaXN0
RWxlbWVudC5oICovLAorCQkJCTg1Q0E5NjM1MEE5NTYwNDkwMDY5MENDRiAvKiBET01IVE1MRGly
ZWN0b3J5RWxlbWVudC5oICovLAorCQkJCTg1Q0E5NjNEMEE5NTYwODYwMDY5MENDRiAvKiBET01I
VE1MRGl2RWxlbWVudC5oICovLAorCQkJCTg1MEU2MkI1MEE5NDEyQzYwMEVGQjczQSAvKiBET01I
VE1MRG9jdW1lbnQuaCAqLywKKwkJCQk4NTZFMDY1RjBBOTM5ODU5MDBBMjQ3MzkgLyogRE9NSFRN
TEVsZW1lbnQuaCAqLywKKwkJCQk4NTM5NTUzMTBBOTZCMDRCMDBGQTNEMEUgLyogRE9NSFRNTEZp
ZWxkU2V0RWxlbWVudC5oICovLAorCQkJCTg1Q0E5NjQyMEE5NTYwQkYwMDY5MENDRiAvKiBET01I
VE1MRm9udEVsZW1lbnQuaCAqLywKKwkJCQk4NTBFNjY2RDBBOTRFQUFEMDBFRkI3M0EgLyogRE9N
SFRNTEZyYW1lRWxlbWVudC5oICovLAorCQkJCTg1Q0E5NjQ4MEE5NTYxMDMwMDY5MENDRiAvKiBE
T01IVE1MRnJhbWVTZXRFbGVtZW50LmggKi8sCisJCQkJODVDQTk2NEQwQTk1NjM5RDAwNjkwQ0NG
IC8qIERPTUhUTUxIUkVsZW1lbnQuaCAqLywKKwkJCQk4NUNBOTY1NDBBOTU2M0ZCMDA2OTBDQ0Yg
LyogRE9NSFRNTEhlYWRFbGVtZW50LmggKi8sCisJCQkJODVDQTk2NTkwQTk1NjQyMzAwNjkwQ0NG
IC8qIERPTUhUTUxIZWFkaW5nRWxlbWVudC5oICovLAorCQkJCTg1Q0E5NjVEMEE5NTY0NEQwMDY5
MENDRiAvKiBET01IVE1MSHRtbEVsZW1lbnQuaCAqLywKKwkJCQk4NTBFNjY3RTBBOTRFQzgxMDBF
RkI3M0EgLyogRE9NSFRNTElGcmFtZUVsZW1lbnQuaCAqLywKKwkJCQk4NTBFNjJGMjBBOTQxM0NG
MDBFRkI3M0EgLyogRE9NSFRNTEltYWdlRWxlbWVudC5oICovLAorCQkJCTg1Q0E5QTk1MEE5NjlB
QzYwMDY5MENDRiAvKiBET01IVE1MSW5wdXRFbGVtZW50LmggKi8sCisJCQkJODVDQTk5QzUwQTk2
NjgzQzAwNjkwQ0NGIC8qIERPTUhUTUxJc0luZGV4RWxlbWVudC5oICovLAorCQkJCTg1Q0E5NjYy
MEE5NTY0ODIwMDY5MENDRiAvKiBET01IVE1MTElFbGVtZW50LmggKi8sCisJCQkJODVDQTlCMjIw
QTk2QTBEODAwNjkwQ0NGIC8qIERPTUhUTUxMYWJlbEVsZW1lbnQuaCAqLywKKwkJCQk4NTM5NTUz
NTBBOTZCMDdDMDBGQTNEMEUgLyogRE9NSFRNTExlZ2VuZEVsZW1lbnQuaCAqLywKKwkJCQk4NTBF
NjMzMzBBOTQxNDc4MDBFRkI3M0EgLyogRE9NSFRNTExpbmtFbGVtZW50LmggKi8sCisJCQkJODVD
QTk5Q0QwQTk2Njg3NTAwNjkwQ0NGIC8qIERPTUhUTUxNYXBFbGVtZW50LmggKi8sCisJCQkJODVD
QTk2NjgwQTk1NjRCNjAwNjkwQ0NGIC8qIERPTUhUTUxNZW51RWxlbWVudC5oICovLAorCQkJCTg1
Q0E5NjZFMEE5NTY0RjIwMDY5MENDRiAvKiBET01IVE1MTWV0YUVsZW1lbnQuaCAqLywKKwkJCQk4
NUNBOTY3NTBBOTU2NTU1MDA2OTBDQ0YgLyogRE9NSFRNTE1vZEVsZW1lbnQuaCAqLywKKwkJCQk4
NUNBOTY3QjBBOTU2NTk1MDA2OTBDQ0YgLyogRE9NSFRNTE9MaXN0RWxlbWVudC5oICovLAorCQkJ
CTg1MEU2NjgyMEE5NEVDQkYwMEVGQjczQSAvKiBET01IVE1MT2JqZWN0RWxlbWVudC5oICovLAor
CQkJCTg1Q0E5NjdGMEE5NTY1RDcwMDY5MENDRiAvKiBET01IVE1MT3B0R3JvdXBFbGVtZW50Lmgg
Ki8sCisJCQkJODVENjMwOTEwQTk3QkE1NzAwMzMyNDQzIC8qIERPTUhUTUxPcHRpb25FbGVtZW50
LmggKi8sCisJCQkJODUwRTY3RTAwQTk1MUI3QzAwRUZCNzNBIC8qIERPTUhUTUxPcHRpb25zQ29s
bGVjdGlvbi5oICovLAorCQkJCTg1Q0E5Njg1MEE5NTY2MTkwMDY5MENDRiAvKiBET01IVE1MUGFy
YWdyYXBoRWxlbWVudC5oICovLAorCQkJCTg1NEYxMjEyMEE4RTQzQjcwMDA5NDBCNSAvKiBET01I
VE1MUGFyYW1FbGVtZW50LmggKi8sCisJCQkJODVDQTk2OEEwQTk1NjY0NDAwNjkwQ0NGIC8qIERP
TUhUTUxQcmVFbGVtZW50LmggKi8sCisJCQkJODVDQTk2OEYwQTk1NjY2RjAwNjkwQ0NGIC8qIERP
TUhUTUxRdW90ZUVsZW1lbnQuaCAqLywKKwkJCQk4NTlFMEZDMzBBOTc2QkJBMDAzRkIxNUYgLyog
RE9NSFRNTFNlbGVjdEVsZW1lbnQuaCAqLywKKwkJCQk4NTBFNjNCOTBBOTQxNzMwMDBFRkI3M0Eg
LyogRE9NSFRNTFNjcmlwdEVsZW1lbnQuaCAqLywKKwkJCQk4NUNBOTY5MzBBOTU2Njk4MDA2OTBD
Q0YgLyogRE9NSFRNTFN0eWxlRWxlbWVudC5oICovLAorCQkJCTg1QkVCQkRFMEE5N0Y5NTAwMDcw
MkNCNiAvKiBET01IVE1MVGFibGVFbGVtZW50LmggKi8sCisJCQkJODVCRUJCRTIwQTk3Rjk3NjAw
NzAyQ0I2IC8qIERPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50LmggKi8sCisJCQkJODVCRUJCRUEw
QTk3RjlFMTAwNzAyQ0I2IC8qIERPTUhUTUxUYWJsZUNlbGxFbGVtZW50LmggKi8sCisJCQkJODVC
RUJCRTYwQTk3RjlBMTAwNzAyQ0I2IC8qIERPTUhUTUxUYWJsZUNvbEVsZW1lbnQuaCAqLywKKwkJ
CQk4NUJFQkJFRTBBOTdGQTE5MDA3MDJDQjYgLyogRE9NSFRNTFRhYmxlUm93RWxlbWVudC5oICov
LAorCQkJCTg1QkVCQkYyMEE5N0ZBNDUwMDcwMkNCNiAvKiBET01IVE1MVGFibGVTZWN0aW9uRWxl
bWVudC5oICovLAorCQkJCTg1NUMyRTM3MEE5NkNGN0IwMDA0RjE3MSAvKiBET01IVE1MVGV4dEFy
ZWFFbGVtZW50LmggKi8sCisJCQkJODVDQTk2OTkwQTk1NjZDMTAwNjkwQ0NGIC8qIERPTUhUTUxU
aXRsZUVsZW1lbnQuaCAqLywKKwkJCQk4NUNBOTZBMDBBOTU2NkYxMDA2OTBDQ0YgLyogRE9NSFRN
TFVMaXN0RWxlbWVudC5oICovLAogCQkJCTkzQUY1MjlGMDgyNTREN0EwMDVEMDE1NiAvKiBET01Q
cml2YXRlLmggKi8sCiAJCQkJOTNBRjUyOUQwODI1NEQ3NjAwNUQwMTU2IC8qIERPTVJhbmdlLmgg
Ki8sCiAJCQkJOTNBRjUyOUIwODI1NEQ2MjAwNUQwMTU2IC8qIERPTVN0eWxlc2hlZXRzLmggKi8s
CkBAIC0xMzIyLDYgKzEzOTksMTIzOCBAQAogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJCXNo
ZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJT
X0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVIvRE9NWFBhdGguaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElD
X0hFQURFUlNfRk9MREVSX1BBVEgvRE9NWFBhdGguaFwiIjsKIAkJfTsKKwkJODUwRTYyQjUwQTk0
MTJDNjAwRUZCNzNBIC8qIERPTUhUTUxEb2N1bWVudC5oICovID0geworCQkJaXNhID0gUEJYU2hl
bGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJ
CWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklW
QVRFX0hFQURFUlNfRElSKS9ET01IVE1MRG9jdW1lbnQuaCIsCisJCQkpOworCQkJbmFtZSA9IERP
TUhUTUxEb2N1bWVudC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxE
X0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NSFRNTERvY3VtZW50LmgiLAor
CQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hl
bGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9C
VUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUv
V2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NSFRNTERvY3VtZW50Lmhc
IiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTUhU
TUxEb2N1bWVudC5oXCIiOworCQl9OworCQk4NTBFNjJGMjBBOTQxM0NGMDBFRkI3M0EgLyogRE9N
SFRNTEltYWdlRWxlbWVudC5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBo
YXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJ
KTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElS
KS9ET01IVE1MSW1hZ2VFbGVtZW50LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01IVE1MSW1hZ2VF
bGVtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8k
KFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01IVE1MSW1hZ2VFbGVtZW50LmgiLAorCQkJ
KTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQ
YXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlM
RF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2Vi
S2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NSFRNTEltYWdlRWxlbWVudC5o
XCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01I
VE1MSW1hZ2VFbGVtZW50LmhcIiI7CisJCX07CisJCTg1MEU2MzMzMEE5NDE0NzgwMEVGQjczQSAv
KiBET01IVE1MTGlua0VsZW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVp
bGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgK
KwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJT
X0RJUikvRE9NSFRNTExpbmtFbGVtZW50LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01IVE1MTGlu
a0VsZW1lbnQuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIp
LyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUhUTUxMaW5rRWxlbWVudC5oIiwKKwkJ
CSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxs
UGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJ
TERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dl
YktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUhUTUxMaW5rRWxlbWVudC5o
XCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01I
VE1MTGlua0VsZW1lbnQuaFwiIjsKKwkJfTsKKwkJODUwRTYzQjkwQTk0MTczMDAwRUZCNzNBIC8q
IERPTUhUTUxTY3JpcHRFbGVtZW50LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1
aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAo
CisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVS
U19ESVIpL0RPTUhUTUxTY3JpcHRFbGVtZW50LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01IVE1M
U2NyaXB0RWxlbWVudC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxE
X0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NSFRNTFNjcmlwdEVsZW1lbnQu
aCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJ
CQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFS
R0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2Vi
Q29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01IVE1MU2NyaXB0
RWxlbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJf
UEFUSC9ET01IVE1MU2NyaXB0RWxlbWVudC5oXCIiOworCQl9OworCQk4NTBFNjQ4MjBBOTQyMDBD
MDBFRkI3M0EgLyogRE9NSFRNTEFyZWFFbGVtZW50LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVs
bFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJ
ZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVIpL0RPTUhUTUxBcmVhRWxlbWVudC5oIiwKKwkJCSk7CisJCQluYW1lID0g
RE9NSFRNTEFyZWFFbGVtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRf
QlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01IVE1MQXJlYUVsZW1l
bnQuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIk
VEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMv
V2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01IVE1MQXJl
YUVsZW1lbnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVS
X1BBVEgvRE9NSFRNTEFyZWFFbGVtZW50LmhcIiI7CisJCX07CisJCTg1MEU2NEZFMEE5NDIzOUMw
MEVGQjczQSAvKiBET01IVE1MQm9keUVsZW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxs
U2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlm
aWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFU
RV9IRUFERVJTX0RJUikvRE9NSFRNTEJvZHlFbGVtZW50LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBE
T01IVE1MQm9keUVsZW1lbnQuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9C
VUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUhUTUxCb2R5RWxlbWVu
dC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
KwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRU
QVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9X
ZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUhUTUxCb2R5
RWxlbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJf
UEFUSC9ET01IVE1MQm9keUVsZW1lbnQuaFwiIjsKKwkJfTsKKwkJODUwRTY2NkQwQTk0RUFBRDAw
RUZCNzNBIC8qIERPTUhUTUxGcmFtZUVsZW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxs
U2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlm
aWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFU
RV9IRUFERVJTX0RJUikvRE9NSFRNTEZyYW1lRWxlbWVudC5oIiwKKwkJCSk7CisJCQluYW1lID0g
RE9NSFRNTEZyYW1lRWxlbWVudC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VU
X0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NSFRNTEZyYW1lRWxl
bWVudC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBc
IiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUg
cy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUhUTUxG
cmFtZUVsZW1lbnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9M
REVSX1BBVEgvRE9NSFRNTEZyYW1lRWxlbWVudC5oXCIiOworCQl9OworCQk4NTBFNjY3RTBBOTRF
QzgxMDBFRkI3M0EgLyogRE9NSFRNTElGcmFtZUVsZW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBC
WFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVf
UFJJVkFURV9IRUFERVJTX0RJUikvRE9NSFRNTElGcmFtZUVsZW1lbnQuaCIsCisJCQkpOworCQkJ
bmFtZSA9IERPTUhUTUxJRnJhbWVFbGVtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQki
JChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01IVE1M
SUZyYW1lRWxlbWVudC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJt
a2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwi
XG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElS
L0RPTUhUTUxJRnJhbWVFbGVtZW50LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19I
RUFERVJTX0ZPTERFUl9QQVRIL0RPTUhUTUxJRnJhbWVFbGVtZW50LmhcIiI7CisJCX07CisJCTg1
MEU2NjgyMEE5NEVDQkYwMEVGQjczQSAvKiBET01IVE1MT2JqZWN0RWxlbWVudC5oICovID0gewor
CQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJ
IiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01IVE1MT2JqZWN0RWxlbWVudC5oIiwK
KwkJCSk7CisJCQluYW1lID0gRE9NSFRNTE9iamVjdEVsZW1lbnQuaDsKKwkJCW91dHB1dFBhdGhz
ID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BB
VEgpL0RPTUhUTUxPYmplY3RFbGVtZW50LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxs
U2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZP
TERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVf
SEVBREVSU19ESVIvRE9NSFRNTE9iamVjdEVsZW1lbnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJ
Ui8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NSFRNTE9iamVjdEVsZW1lbnQuaFwiIjsK
KwkJfTsKKwkJODUwRTY3REEwQTk1MUI0MDAwRUZCNzNBIC8qIERPTUhUTUxDb2xsZWN0aW9uLmgg
Ki8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9
ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTUhUTUxDb2xsZWN0aW9u
LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01IVE1MQ29sbGVjdGlvbi5oOworCQkJb3V0cHV0UGF0
aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJf
UEFUSCkvRE9NSFRNTENvbGxlY3Rpb24uaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxT
Y3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9M
REVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9I
RUFERVJTX0RJUi9ET01IVE1MQ29sbGVjdGlvbi5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQ
VUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01IVE1MQ29sbGVjdGlvbi5oXCIiOworCQl9Owor
CQk4NTBFNjdFMDBBOTUxQjdDMDBFRkI3M0EgLyogRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgg
Ki8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9
ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTUhUTUxPcHRpb25zQ29s
bGVjdGlvbi5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmg7
CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19I
RUFERVJTX0ZPTERFUl9QQVRIKS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIsCisJCQkpOwor
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGgg
PSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJ
Ui8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQv
IFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24u
aFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9N
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmhcIiI7CisJCX07CisJCTg1MjZENjQxMEE4RkRCODQwMDky
MzRCMSAvKiBET01UZXh0LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhh
c2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkp
OworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIp
L0RPTVRleHQuaCIsCisJCQkpOworCQkJbmFtZSA9IERPTVRleHQuaDsKKwkJCW91dHB1dFBhdGhz
ID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BB
VEgpL0RPTVRleHQuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtk
aXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxu
c2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9E
T01UZXh0LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9Q
QVRIL0RPTVRleHQuaFwiIjsKKwkJfTsKKwkJODUyNkQ2QkYwQThGRTYwQjAwOTIzNEIxIC8qIERP
TUNoYXJhY3RlckRhdGEuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7
CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikv
RE9NQ2hhcmFjdGVyRGF0YS5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NQ2hhcmFjdGVyRGF0YS5o
OworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNf
SEVBREVSU19GT0xERVJfUEFUSCkvRE9NQ2hhcmFjdGVyRGF0YS5oIiwKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4v
c2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJM
SUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VC
Q09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUNoYXJhY3RlckRhdGEuaFwiID4gXCIkVEFSR0VU
X0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NQ2hhcmFjdGVyRGF0YS5o
XCIiOworCQl9OworCQk4NTI2RDc0RDBBOEZFRjAyMDA5MjM0QjEgLyogRE9NQXR0ci5oICovID0g
eworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJ
CQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01BdHRyLmgiLAorCQkJKTsKKwkJ
CW5hbWUgPSBET01BdHRyLmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJ
TERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01BdHRyLmgiLAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRo
ID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9E
SVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0
LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NQXR0ci5oXCIgPiBcIiRUQVJHRVRf
QlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01BdHRyLmhcIiI7CisJCX07
CisJCTg1MjZEN0VBMEE4RkY2NEMwMDkyMzRCMSAvKiBET01OYW1lZE5vZGVNYXAuaCAqLyA9IHsK
KwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJ
CSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NTmFtZWROb2RlTWFwLmgiLAorCQkJ
KTsKKwkJCW5hbWUgPSBET01OYW1lZE5vZGVNYXAuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJ
CSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTU5h
bWVkTm9kZU1hcC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2Rp
ciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5z
ZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RP
TU5hbWVkTm9kZU1hcC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19G
T0xERVJfUEFUSC9ET01OYW1lZE5vZGVNYXAuaFwiIjsKKwkJfTsKKwkJODUzMTFGNjkwQThGOTA5
MTAwNTEyNUM5IC8qIERPTUNEQVRBU2VjdGlvbi5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxT
Y3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZp
bGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRF
X0hFQURFUlNfRElSKS9ET01DREFUQVNlY3Rpb24uaCIsCisJCQkpOworCQkJbmFtZSA9IERPTUNE
QVRBU2VjdGlvbi5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJ
UikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NQ0RBVEFTZWN0aW9uLmgiLAorCQkJ
KTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQ
YXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlM
RF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2Vi
S2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NQ0RBVEFTZWN0aW9uLmhcIiA+
IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTUNEQVRB
U2VjdGlvbi5oXCIiOworCQl9OworCQk4NTMxMUY3MjBBOEY5MEY2MDA1MTI1QzkgLyogRE9NQ29t
bWVudC5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0
UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01Db21tZW50
LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01Db21tZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgK
KwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9E
T01Db21tZW50LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGly
IC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNl
ZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9N
Q29tbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJf
UEFUSC9ET01Db21tZW50LmhcIiI7CisJCX07CisJCTg1MzExRjc1MEE4RjkxNjgwMDUxMjVDOSAv
KiBET01FbnRpdHkuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJ
CQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9N
RW50aXR5LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01FbnRpdHkuaDsKKwkJCW91dHB1dFBhdGhz
ID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BB
VEgpL0RPTUVudGl0eS5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJt
a2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwi
XG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElS
L0RPTUVudGl0eS5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xE
RVJfUEFUSC9ET01FbnRpdHkuaFwiIjsKKwkJfTsKKwkJODUzMTFGODgwQThGOTFGRTAwNTEyNUM5
IC8qIERPTUVudGl0eVJlZmVyZW5jZS5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRC
dWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0g
KAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURF
UlNfRElSKS9ET01FbnRpdHlSZWZlcmVuY2UuaCIsCisJCQkpOworCQkJbmFtZSA9IERPTUVudGl0
eVJlZmVyZW5jZS5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJ
UikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NRW50aXR5UmVmZXJlbmNlLmgiLAor
CQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hl
bGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9C
VUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUv
V2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NRW50aXR5UmVmZXJlbmNl
LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RP
TUVudGl0eVJlZmVyZW5jZS5oXCIiOworCQl9OworCQk4NTMxMUZFOTBBOEY5OEI5MDA1MTI1Qzkg
LyogRE9NTm90YXRpb24uaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7
CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikv
RE9NTm90YXRpb24uaCIsCisJCQkpOworCQkJbmFtZSA9IERPTU5vdGF0aW9uLmg7CisJCQlvdXRw
dXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZP
TERFUl9QQVRIKS9ET01Ob3RhdGlvbi5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNj
cmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xE
RVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hF
QURFUlNfRElSL0RPTU5vdGF0aW9uLmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19I
RUFERVJTX0ZPTERFUl9QQVRIL0RPTU5vdGF0aW9uLmhcIiI7CisJCX07CisJCTg1MzEyMDEzMEE4
RjlBNTIwMDUxMjVDOSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCAqLyA9IHsKKwkJCWlz
YSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdF
QkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiLAor
CQkJKTsKKwkJCW5hbWUgPSBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaDsKKwkJCW91dHB1dFBh
dGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVS
X1BBVEgpL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJ
CQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVB
REVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9Q
UklWQVRFX0hFQURFUlNfRElSL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oXCIgPiBcIiRUQVJH
RVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uaFwiIjsKKwkJfTsKKwkJODUzOTU1MzEwQTk2QjA0QjAwRkEzRDBFIC8qIERPTUhU
TUxGaWVsZFNldEVsZW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJ
CSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJ
UikvRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NSFRNTEZp
ZWxkU2V0RWxlbWVudC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxE
X0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NSFRNTEZpZWxkU2V0RWxlbWVu
dC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
KwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRU
QVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9X
ZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUhUTUxGaWVs
ZFNldEVsZW1lbnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9M
REVSX1BBVEgvRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5oXCIiOworCQl9OworCQk4NTM5NTUzNTBB
OTZCMDdDMDBGQTNEMEUgLyogRE9NSFRNTExlZ2VuZEVsZW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9
IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNP
UkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NSFRNTExlZ2VuZEVsZW1lbnQuaCIsCisJCQkpOwor
CQkJbmFtZSA9IERPTUhUTUxMZWdlbmRFbGVtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJ
CQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01I
VE1MTGVnZW5kRWxlbWVudC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9
ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFU
SFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNf
RElSL0RPTUhUTUxMZWdlbmRFbGVtZW50LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJ
Q19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTUhUTUxMZWdlbmRFbGVtZW50LmhcIiI7CisJCX07CisJ
CTg1MzlCNTY1MEE5MDNFQjkwMDM2NkMyRCAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5oICovID0g
eworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJ
CQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01ET01JbXBsZW1lbnRhdGlvbi5o
IiwKKwkJCSk7CisJCQluYW1lID0gRE9NRE9NSW1wbGVtZW50YXRpb24uaDsKKwkJCW91dHB1dFBh
dGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVS
X1BBVEgpL0RPTURPTUltcGxlbWVudGF0aW9uLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNo
ZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJT
X0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVIvRE9NRE9NSW1wbGVtZW50YXRpb24uaFwiID4gXCIkVEFSR0VUX0JVSUxE
X0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NRE9NSW1wbGVtZW50YXRpb24uaFwi
IjsKKwkJfTsKKwkJODU0RjEyMTIwQThFNDNCNzAwMDk0MEI1IC8qIERPTUhUTUxQYXJhbUVsZW1l
bnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBh
dGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NSFRNTFBhcmFt
RWxlbWVudC5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NSFRNTFBhcmFtRWxlbWVudC5oOworCQkJ
b3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVS
U19GT0xERVJfUEFUSCkvRE9NSFRNTFBhcmFtRWxlbWVudC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7
CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNf
SEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09S
RV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUhUTUxQYXJhbUVsZW1lbnQuaFwiID4gXCIkVEFSR0VU
X0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NSFRNTFBhcmFtRWxlbWVu
dC5oXCIiOworCQl9OworCQk4NTVDMkUzNzBBOTZDRjdCMDAwNEYxNzEgLyogRE9NSFRNTFRleHRB
cmVhRWxlbWVudC5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwor
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJ
CWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01I
VE1MVGV4dEFyZWFFbGVtZW50LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01IVE1MVGV4dEFyZWFF
bGVtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8k
KFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01IVE1MVGV4dEFyZWFFbGVtZW50LmgiLAor
CQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hl
bGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9C
VUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUv
V2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NSFRNTFRleHRBcmVhRWxl
bWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFU
SC9ET01IVE1MVGV4dEFyZWFFbGVtZW50LmhcIiI7CisJCX07CisJCTg1NkM4OURFMEE5MEUzODMw
MDVDNjg3QiAvKiBET01Eb2N1bWVudC5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRC
dWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0g
KAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURF
UlNfRElSKS9ET01Eb2N1bWVudC5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NRG9jdW1lbnQuaDsK
KwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hF
QURFUlNfRk9MREVSX1BBVEgpL0RPTURvY3VtZW50LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJ
CXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFE
RVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BS
SVZBVEVfSEVBREVSU19ESVIvRE9NRG9jdW1lbnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8k
UFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NRG9jdW1lbnQuaFwiIjsKKwkJfTsKKwkJODU2
QzhBOTMwQTkwRjU0RjAwNUM2ODdCIC8qIERPTU5vZGUuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJ
VkFURV9IRUFERVJTX0RJUikvRE9NTm9kZS5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NTm9kZS5o
OworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNf
SEVBREVSU19GT0xERVJfUEFUSCkvRE9NTm9kZS5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlz
aGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVS
U19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklW
QVRFX0hFQURFUlNfRElSL0RPTU5vZGUuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElD
X0hFQURFUlNfRk9MREVSX1BBVEgvRE9NTm9kZS5oXCIiOworCQl9OworCQk4NTZDOEI3QjBBOTEy
OUI4MDA1QzY4N0IgLyogRE9NT2JqZWN0LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlw
dEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMg
PSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVB
REVSU19ESVIpL0RPTU9iamVjdC5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NT2JqZWN0Lmg7CisJ
CQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFE
RVJTX0ZPTERFUl9QQVRIKS9ET01PYmplY3QuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hl
bGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNf
Rk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFU
RV9IRUFERVJTX0RJUi9ET01PYmplY3QuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElD
X0hFQURFUlNfRk9MREVSX1BBVEgvRE9NT2JqZWN0LmhcIiI7CisJCX07CisJCTg1NkUwNjVGMEE5
Mzk4NTkwMEEyNDczOSAvKiBET01IVE1MRWxlbWVudC5oICovID0geworCQkJaXNhID0gUEJYU2hl
bGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJ
CWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklW
QVRFX0hFQURFUlNfRElSKS9ET01IVE1MRWxlbWVudC5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9N
SFRNTEVsZW1lbnQuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9E
SVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUhUTUxFbGVtZW50LmgiLAorCQkJ
KTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQ
YXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlM
RF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2Vi
S2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NSFRNTEVsZW1lbnQuaFwiID4g
XCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NSFRNTEVs
ZW1lbnQuaFwiIjsKKwkJfTsKKwkJODU5RTBGQzMwQTk3NkJCQTAwM0ZCMTVGIC8qIERPTUhUTUxT
ZWxlY3RFbGVtZW50LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7
CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOwor
CQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RP
TUhUTUxTZWxlY3RFbGVtZW50LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01IVE1MU2VsZWN0RWxl
bWVudC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQ
VUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NSFRNTFNlbGVjdEVsZW1lbnQuaCIsCisJCQkp
OworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBh
dGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxE
X0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJL
aXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01IVE1MU2VsZWN0RWxlbWVudC5o
XCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01I
VE1MU2VsZWN0RWxlbWVudC5oXCIiOworCQl9OworCQk4NUE1QzVFMTBBOTAzMkIzMDBGOTFGMkMg
LyogRE9NRWxlbWVudC5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNl
OworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsK
KwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9E
T01FbGVtZW50LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01FbGVtZW50Lmg7CisJCQlvdXRwdXRQ
YXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERF
Ul9QQVRIKS9ET01FbGVtZW50LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0
ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9Q
QVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVS
U19ESVIvRE9NRWxlbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVS
U19GT0xERVJfUEFUSC9ET01FbGVtZW50LmhcIiI7CisJCX07CisJCTg1QTg1QjU5MEE5MDJDMzIw
MEE1Q0YzQSAvKiBET01Ob2RlTGlzdC5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRC
dWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0g
KAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURF
UlNfRElSKS9ET01Ob2RlTGlzdC5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NTm9kZUxpc3QuaDsK
KwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hF
QURFUlNfRk9MREVSX1BBVEgpL0RPTU5vZGVMaXN0LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJ
CXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFE
RVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BS
SVZBVEVfSEVBREVSU19ESVIvRE9NTm9kZUxpc3QuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8k
UFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NTm9kZUxpc3QuaFwiIjsKKwkJfTsKKwkJODVC
RUJCREUwQTk3Rjk1MDAwNzAyQ0I2IC8qIERPTUhUTUxUYWJsZUVsZW1lbnQuaCAqLyA9IHsKKwkJ
CWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIk
KFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NSFRNTFRhYmxlRWxlbWVudC5oIiwKKwkJ
CSk7CisJCQluYW1lID0gRE9NSFRNTFRhYmxlRWxlbWVudC5oOworCQkJb3V0cHV0UGF0aHMgPSAo
CisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkv
RE9NSFRNTFRhYmxlRWxlbWVudC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlw
dCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJf
UEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURF
UlNfRElSL0RPTUhUTUxUYWJsZUVsZW1lbnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVC
TElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NSFRNTFRhYmxlRWxlbWVudC5oXCIiOworCQl9Owor
CQk4NUJFQkJFMjBBOTdGOTc2MDA3MDJDQjYgLyogRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQu
aCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhz
ID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NSFRNTFRhYmxlQ2Fw
dGlvbkVsZW1lbnQuaCIsCisJCQkpOworCQkJbmFtZSA9IERPTUhUTUxUYWJsZUNhcHRpb25FbGVt
ZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBV
QkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oIiwK
KwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNo
ZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRf
QlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3Jl
L1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUhUTUxUYWJsZUNhcHRp
b25FbGVtZW50LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERF
Ul9QQVRIL0RPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50LmhcIiI7CisJCX07CisJCTg1QkVCQkU2
MEE5N0Y5QTEwMDcwMkNCNiAvKiBET01IVE1MVGFibGVDb2xFbGVtZW50LmggKi8gPSB7CisJCQlp
c2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChX
RUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTUhUTUxUYWJsZUNvbEVsZW1lbnQuaCIsCisJ
CQkpOworCQkJbmFtZSA9IERPTUhUTUxUYWJsZUNvbEVsZW1lbnQuaDsKKwkJCW91dHB1dFBhdGhz
ID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BB
VEgpL0RPTUhUTUxUYWJsZUNvbEVsZW1lbnQuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hl
bGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNf
Rk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFU
RV9IRUFERVJTX0RJUi9ET01IVE1MVGFibGVDb2xFbGVtZW50LmhcIiA+IFwiJFRBUkdFVF9CVUlM
RF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTUhUTUxUYWJsZUNvbEVsZW1lbnQu
aFwiIjsKKwkJfTsKKwkJODVCRUJCRUEwQTk3RjlFMTAwNzAyQ0I2IC8qIERPTUhUTUxUYWJsZUNl
bGxFbGVtZW50LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJ
aW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTUhU
TUxUYWJsZUNlbGxFbGVtZW50LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01IVE1MVGFibGVDZWxs
RWxlbWVudC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikv
JChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCIs
CisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlz
aGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VU
X0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29y
ZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01IVE1MVGFibGVDZWxs
RWxlbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJf
UEFUSC9ET01IVE1MVGFibGVDZWxsRWxlbWVudC5oXCIiOworCQl9OworCQk4NUJFQkJFRTBBOTdG
QTE5MDA3MDJDQjYgLyogRE9NSFRNTFRhYmxlUm93RWxlbWVudC5oICovID0geworCQkJaXNhID0g
UEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09S
RV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01IVE1MVGFibGVSb3dFbGVtZW50LmgiLAorCQkJKTsK
KwkJCW5hbWUgPSBET01IVE1MVGFibGVSb3dFbGVtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgK
KwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9E
T01IVE1MVGFibGVSb3dFbGVtZW50LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2Ny
aXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERF
Ul9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVB
REVSU19ESVIvRE9NSFRNTFRhYmxlUm93RWxlbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElS
LyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01IVE1MVGFibGVSb3dFbGVtZW50LmhcIiI7
CisJCX07CisJCTg1QkVCQkYyMEE5N0ZBNDUwMDcwMkNCNiAvKiBET01IVE1MVGFibGVTZWN0aW9u
RWxlbWVudC5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlu
cHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01IVE1M
VGFibGVTZWN0aW9uRWxlbWVudC5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NSFRNTFRhYmxlU2Vj
dGlvbkVsZW1lbnQuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9E
SVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwi
JFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBz
L1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NSFRNTFRh
YmxlU2VjdGlvbkVsZW1lbnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURF
UlNfRk9MREVSX1BBVEgvRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaFwiIjsKKwkJfTsKKwkJ
ODVDOTA1RjMwQThGQ0NCMjAwQzM3RDkxIC8qIERPTURvY3VtZW50VHlwZS5oICovID0geworCQkJ
aXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQo
V0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01Eb2N1bWVudFR5cGUuaCIsCisJCQkpOwor
CQkJbmFtZSA9IERPTURvY3VtZW50VHlwZS5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQo
VEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NRG9jdW1l
bnRUeXBlLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1w
IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAt
ZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NRG9j
dW1lbnRUeXBlLmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERF
Ul9QQVRIL0RPTURvY3VtZW50VHlwZS5oXCIiOworCQl9OworCQk4NUM5MDY2RjBBOEZEMTFDMDBD
MzdEOTEgLyogRE9NRG9jdW1lbnRGcmFnbWVudC5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxT
Y3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZp
bGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRF
X0hFQURFUlNfRElSKS9ET01Eb2N1bWVudEZyYWdtZW50LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBE
T01Eb2N1bWVudEZyYWdtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRf
QlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01Eb2N1bWVudEZyYWdt
ZW50LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwi
JFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBz
L1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NRG9jdW1l
bnRGcmFnbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xE
RVJfUEFUSC9ET01Eb2N1bWVudEZyYWdtZW50LmhcIiI7CisJCX07CisJCTg1Q0E5NEVBMEE5NTI5
QUUwMDY5MENDRiAvKiBET01IVE1MRm9ybUVsZW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJ
VkFURV9IRUFERVJTX0RJUikvRE9NSFRNTEZvcm1FbGVtZW50LmgiLAorCQkJKTsKKwkJCW5hbWUg
PSBET01IVE1MRm9ybUVsZW1lbnQuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdF
VF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUhUTUxGb3JtRWxl
bWVudC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBc
IiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUg
cy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUhUTUxG
b3JtRWxlbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xE
RVJfUEFUSC9ET01IVE1MRm9ybUVsZW1lbnQuaFwiIjsKKwkJfTsKKwkJODVDQTk2MTgwQTk1NUVF
NzAwNjkwQ0NGIC8qIERPTUhUTUxBcHBsZXRFbGVtZW50LmggKi8gPSB7CisJCQlpc2EgPSBQQlhT
aGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owor
CQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BS
SVZBVEVfSEVBREVSU19ESVIpL0RPTUhUTUxBcHBsZXRFbGVtZW50LmgiLAorCQkJKTsKKwkJCW5h
bWUgPSBET01IVE1MQXBwbGV0RWxlbWVudC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQo
VEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NSFRNTEFw
cGxldEVsZW1lbnQuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtk
aXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxu
c2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9E
T01IVE1MQXBwbGV0RWxlbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVB
REVSU19GT0xERVJfUEFUSC9ET01IVE1MQXBwbGV0RWxlbWVudC5oXCIiOworCQl9OworCQk4NUNB
OTYyMTBBOTU1RjdBMDA2OTBDQ0YgLyogRE9NSFRNTEJSRWxlbWVudC5oICovID0geworCQkJaXNh
ID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VC
Q09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01IVE1MQlJFbGVtZW50LmgiLAorCQkJKTsKKwkJ
CW5hbWUgPSBET01IVE1MQlJFbGVtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChU
QVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01IVE1MQlJF
bGVtZW50LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1w
IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAt
ZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NSFRN
TEJSRWxlbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xE
RVJfUEFUSC9ET01IVE1MQlJFbGVtZW50LmhcIiI7CisJCX07CisJCTg1Q0E5NjI2MEE5NTVGQjEw
MDY5MENDRiAvKiBET01IVE1MQmFzZUVsZW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxs
U2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlm
aWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFU
RV9IRUFERVJTX0RJUikvRE9NSFRNTEJhc2VFbGVtZW50LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBE
T01IVE1MQmFzZUVsZW1lbnQuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9C
VUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUhUTUxCYXNlRWxlbWVu
dC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
KwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRU
QVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9X
ZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUhUTUxCYXNl
RWxlbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJf
UEFUSC9ET01IVE1MQmFzZUVsZW1lbnQuaFwiIjsKKwkJfTsKKwkJODVDQTk2MkIwQTk1NUZFMzAw
NjkwQ0NGIC8qIERPTUhUTUxCYXNlRm9udEVsZW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJ
VkFURV9IRUFERVJTX0RJUikvRE9NSFRNTEJhc2VGb250RWxlbWVudC5oIiwKKwkJCSk7CisJCQlu
YW1lID0gRE9NSFRNTEJhc2VGb250RWxlbWVudC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJ
IiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NSFRN
TEJhc2VGb250RWxlbWVudC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9
ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFU
SFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNf
RElSL0RPTUhUTUxCYXNlRm9udEVsZW1lbnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVC
TElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NSFRNTEJhc2VGb250RWxlbWVudC5oXCIiOworCQl9
OworCQk4NUNBOTYzMDBBOTU2MDE1MDA2OTBDQ0YgLyogRE9NSFRNTERMaXN0RWxlbWVudC5oICov
ID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAo
CisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01IVE1MRExpc3RFbGVtZW50
LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01IVE1MRExpc3RFbGVtZW50Lmg7CisJCQlvdXRwdXRQ
YXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERF
Ul9QQVRIKS9ET01IVE1MRExpc3RFbGVtZW50LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNo
ZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJT
X0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVIvRE9NSFRNTERMaXN0RWxlbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERf
RElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01IVE1MRExpc3RFbGVtZW50LmhcIiI7
CisJCX07CisJCTg1Q0E5NjM1MEE5NTYwNDkwMDY5MENDRiAvKiBET01IVE1MRGlyZWN0b3J5RWxl
bWVudC5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0
UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01IVE1MRGly
ZWN0b3J5RWxlbWVudC5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NSFRNTERpcmVjdG9yeUVsZW1l
bnQuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVC
TElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUhUTUxEaXJlY3RvcnlFbGVtZW50LmgiLAorCQkJ
KTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQ
YXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlM
RF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2Vi
S2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NSFRNTERpcmVjdG9yeUVsZW1l
bnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgv
RE9NSFRNTERpcmVjdG9yeUVsZW1lbnQuaFwiIjsKKwkJfTsKKwkJODVDQTk2M0QwQTk1NjA4NjAw
NjkwQ0NGIC8qIERPTUhUTUxEaXZFbGVtZW50LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNj
cmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmls
ZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVf
SEVBREVSU19ESVIpL0RPTUhUTUxEaXZFbGVtZW50LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01I
VE1MRGl2RWxlbWVudC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxE
X0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NSFRNTERpdkVsZW1lbnQuaCIs
CisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlz
aGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VU
X0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29y
ZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01IVE1MRGl2RWxlbWVu
dC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9E
T01IVE1MRGl2RWxlbWVudC5oXCIiOworCQl9OworCQk4NUNBOTY0MjBBOTU2MEJGMDA2OTBDQ0Yg
LyogRE9NSFRNTEZvbnRFbGVtZW50LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1
aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAo
CisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVS
U19ESVIpL0RPTUhUTUxGb250RWxlbWVudC5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NSFRNTEZv
bnRFbGVtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElS
KS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01IVE1MRm9udEVsZW1lbnQuaCIsCisJ
CQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVs
bFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JV
SUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9X
ZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01IVE1MRm9udEVsZW1lbnQu
aFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9N
SFRNTEZvbnRFbGVtZW50LmhcIiI7CisJCX07CisJCTg1Q0E5NjQ4MEE5NTYxMDMwMDY5MENDRiAv
KiBET01IVE1MRnJhbWVTZXRFbGVtZW50LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlw
dEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMg
PSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVB
REVSU19ESVIpL0RPTUhUTUxGcmFtZVNldEVsZW1lbnQuaCIsCisJCQkpOworCQkJbmFtZSA9IERP
TUhUTUxGcmFtZVNldEVsZW1lbnQuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdF
VF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUhUTUxGcmFtZVNl
dEVsZW1lbnQuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIg
LXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2Vk
IC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01I
VE1MRnJhbWVTZXRFbGVtZW50LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFE
RVJTX0ZPTERFUl9QQVRIL0RPTUhUTUxGcmFtZVNldEVsZW1lbnQuaFwiIjsKKwkJfTsKKwkJODVD
QTk2NEQwQTk1NjM5RDAwNjkwQ0NGIC8qIERPTUhUTUxIUkVsZW1lbnQuaCAqLyA9IHsKKwkJCWlz
YSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdF
QkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NSFRNTEhSRWxlbWVudC5oIiwKKwkJCSk7CisJ
CQluYW1lID0gRE9NSFRNTEhSRWxlbWVudC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQo
VEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NSFRNTEhS
RWxlbWVudC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAt
cCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQg
LWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUhU
TUxIUkVsZW1lbnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9M
REVSX1BBVEgvRE9NSFRNTEhSRWxlbWVudC5oXCIiOworCQl9OworCQk4NUNBOTY1NDBBOTU2M0ZC
MDA2OTBDQ0YgLyogRE9NSFRNTEhlYWRFbGVtZW50LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVs
bFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJ
ZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVIpL0RPTUhUTUxIZWFkRWxlbWVudC5oIiwKKwkJCSk7CisJCQluYW1lID0g
RE9NSFRNTEhlYWRFbGVtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRf
QlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01IVE1MSGVhZEVsZW1l
bnQuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIk
VEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMv
V2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01IVE1MSGVh
ZEVsZW1lbnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVS
X1BBVEgvRE9NSFRNTEhlYWRFbGVtZW50LmhcIiI7CisJCX07CisJCTg1Q0E5NjU5MEE5NTY0MjMw
MDY5MENDRiAvKiBET01IVE1MSGVhZGluZ0VsZW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJ
VkFURV9IRUFERVJTX0RJUikvRE9NSFRNTEhlYWRpbmdFbGVtZW50LmgiLAorCQkJKTsKKwkJCW5h
bWUgPSBET01IVE1MSGVhZGluZ0VsZW1lbnQuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIk
KFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUhUTUxI
ZWFkaW5nRWxlbWVudC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJt
a2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwi
XG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElS
L0RPTUhUTUxIZWFkaW5nRWxlbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNf
SEVBREVSU19GT0xERVJfUEFUSC9ET01IVE1MSGVhZGluZ0VsZW1lbnQuaFwiIjsKKwkJfTsKKwkJ
ODVDQTk2NUQwQTk1NjQ0RDAwNjkwQ0NGIC8qIERPTUhUTUxIdG1sRWxlbWVudC5oICovID0gewor
CQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJ
IiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01IVE1MSHRtbEVsZW1lbnQuaCIsCisJ
CQkpOworCQkJbmFtZSA9IERPTUhUTUxIdG1sRWxlbWVudC5oOworCQkJb3V0cHV0UGF0aHMgPSAo
CisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkv
RE9NSFRNTEh0bWxFbGVtZW50LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0
ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9Q
QVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVS
U19ESVIvRE9NSFRNTEh0bWxFbGVtZW50LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJ
Q19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTUhUTUxIdG1sRWxlbWVudC5oXCIiOworCQl9OworCQk4
NUNBOTY2MjBBOTU2NDgyMDA2OTBDQ0YgLyogRE9NSFRNTExJRWxlbWVudC5oICovID0geworCQkJ
aXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQo
V0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01IVE1MTElFbGVtZW50LmgiLAorCQkJKTsK
KwkJCW5hbWUgPSBET01IVE1MTElFbGVtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQki
JChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01IVE1M
TElFbGVtZW50LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGly
IC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNl
ZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9N
SFRNTExJRWxlbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19G
T0xERVJfUEFUSC9ET01IVE1MTElFbGVtZW50LmhcIiI7CisJCX07CisJCTg1Q0E5NjY4MEE5NTY0
QjYwMDY5MENDRiAvKiBET01IVE1MTWVudUVsZW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJ
VkFURV9IRUFERVJTX0RJUikvRE9NSFRNTE1lbnVFbGVtZW50LmgiLAorCQkJKTsKKwkJCW5hbWUg
PSBET01IVE1MTWVudUVsZW1lbnQuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdF
VF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUhUTUxNZW51RWxl
bWVudC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBc
IiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUg
cy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUhUTUxN
ZW51RWxlbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xE
RVJfUEFUSC9ET01IVE1MTWVudUVsZW1lbnQuaFwiIjsKKwkJfTsKKwkJODVDQTk2NkUwQTk1NjRG
MjAwNjkwQ0NGIC8qIERPTUhUTUxNZXRhRWxlbWVudC5oICovID0geworCQkJaXNhID0gUEJYU2hl
bGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJ
CWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklW
QVRFX0hFQURFUlNfRElSKS9ET01IVE1MTWV0YUVsZW1lbnQuaCIsCisJCQkpOworCQkJbmFtZSA9
IERPTUhUTUxNZXRhRWxlbWVudC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VU
X0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NSFRNTE1ldGFFbGVt
ZW50LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwi
JFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBz
L1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NSFRNTE1l
dGFFbGVtZW50LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERF
Ul9QQVRIL0RPTUhUTUxNZXRhRWxlbWVudC5oXCIiOworCQl9OworCQk4NUNBOTY3NTBBOTU2NTU1
MDA2OTBDQ0YgLyogRE9NSFRNTE1vZEVsZW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxs
U2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlm
aWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFU
RV9IRUFERVJTX0RJUikvRE9NSFRNTE1vZEVsZW1lbnQuaCIsCisJCQkpOworCQkJbmFtZSA9IERP
TUhUTUxNb2RFbGVtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJ
TERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01IVE1MTW9kRWxlbWVudC5o
IiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJ
CXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJH
RVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJD
b3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUhUTUxNb2RFbGVt
ZW50LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRI
L0RPTUhUTUxNb2RFbGVtZW50LmhcIiI7CisJCX07CisJCTg1Q0E5NjdCMEE5NTY1OTUwMDY5MEND
RiAvKiBET01IVE1MT0xpc3RFbGVtZW50LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlw
dEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMg
PSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVB
REVSU19ESVIpL0RPTUhUTUxPTGlzdEVsZW1lbnQuaCIsCisJCQkpOworCQkJbmFtZSA9IERPTUhU
TUxPTGlzdEVsZW1lbnQuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlM
RF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUhUTUxPTGlzdEVsZW1lbnQu
aCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJ
CQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFS
R0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2Vi
Q29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01IVE1MT0xpc3RF
bGVtZW50LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9Q
QVRIL0RPTUhUTUxPTGlzdEVsZW1lbnQuaFwiIjsKKwkJfTsKKwkJODVDQTk2N0YwQTk1NjVENzAw
NjkwQ0NGIC8qIERPTUhUTUxPcHRHcm91cEVsZW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJ
VkFURV9IRUFERVJTX0RJUikvRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5oIiwKKwkJCSk7CisJCQlu
YW1lID0gRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJ
IiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NSFRN
TE9wdEdyb3VwRWxlbWVudC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9
ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFU
SFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNf
RElSL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVC
TElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5oXCIiOworCQl9
OworCQk4NUNBOTY4NTBBOTU2NjE5MDA2OTBDQ0YgLyogRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQu
aCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhz
ID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NSFRNTFBhcmFncmFw
aEVsZW1lbnQuaCIsCisJCQkpOworCQkJbmFtZSA9IERPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lmg7
CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19I
RUFERVJTX0ZPTERFUl9QQVRIKS9ET01IVE1MUGFyYWdyYXBoRWxlbWVudC5oIiwKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9
IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElS
LyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8g
XCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lmhc
IiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTUhU
TUxQYXJhZ3JhcGhFbGVtZW50LmhcIiI7CisJCX07CisJCTg1Q0E5NjhBMEE5NTY2NDQwMDY5MEND
RiAvKiBET01IVE1MUHJlRWxlbWVudC5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRC
dWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0g
KAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURF
UlNfRElSKS9ET01IVE1MUHJlRWxlbWVudC5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NSFRNTFBy
ZUVsZW1lbnQuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIp
LyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUhUTUxQcmVFbGVtZW50LmgiLAorCQkJ
KTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQ
YXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlM
RF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2Vi
S2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NSFRNTFByZUVsZW1lbnQuaFwi
ID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NSFRN
TFByZUVsZW1lbnQuaFwiIjsKKwkJfTsKKwkJODVDQTk2OEYwQTk1NjY2RjAwNjkwQ0NGIC8qIERP
TUhUTUxRdW90ZUVsZW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJ
CSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJ
UikvRE9NSFRNTFF1b3RlRWxlbWVudC5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NSFRNTFF1b3Rl
RWxlbWVudC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikv
JChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NSFRNTFF1b3RlRWxlbWVudC5oIiwKKwkJ
CSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxs
UGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJ
TERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dl
YktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUhUTUxRdW90ZUVsZW1lbnQu
aFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9N
SFRNTFF1b3RlRWxlbWVudC5oXCIiOworCQl9OworCQk4NUNBOTY5MzBBOTU2Njk4MDA2OTBDQ0Yg
LyogRE9NSFRNTFN0eWxlRWxlbWVudC5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRC
dWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0g
KAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURF
UlNfRElSKS9ET01IVE1MU3R5bGVFbGVtZW50LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01IVE1M
U3R5bGVFbGVtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERf
RElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01IVE1MU3R5bGVFbGVtZW50Lmgi
LAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJ
c2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdF
VF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNv
cmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NSFRNTFN0eWxlRWxl
bWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFU
SC9ET01IVE1MU3R5bGVFbGVtZW50LmhcIiI7CisJCX07CisJCTg1Q0E5Njk5MEE5NTY2QzEwMDY5
MENDRiAvKiBET01IVE1MVGl0bGVFbGVtZW50LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNj
cmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmls
ZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVf
SEVBREVSU19ESVIpL0RPTUhUTUxUaXRsZUVsZW1lbnQuaCIsCisJCQkpOworCQkJbmFtZSA9IERP
TUhUTUxUaXRsZUVsZW1lbnQuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9C
VUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUhUTUxUaXRsZUVsZW1l
bnQuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIk
VEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMv
V2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01IVE1MVGl0
bGVFbGVtZW50LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERF
Ul9QQVRIL0RPTUhUTUxUaXRsZUVsZW1lbnQuaFwiIjsKKwkJfTsKKwkJODVDQTk2QTAwQTk1NjZG
MTAwNjkwQ0NGIC8qIERPTUhUTUxVTGlzdEVsZW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJ
VkFURV9IRUFERVJTX0RJUikvRE9NSFRNTFVMaXN0RWxlbWVudC5oIiwKKwkJCSk7CisJCQluYW1l
ID0gRE9NSFRNTFVMaXN0RWxlbWVudC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFS
R0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NSFRNTFVMaXN0
RWxlbWVudC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAt
cCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQg
LWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUhU
TUxVTGlzdEVsZW1lbnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNf
Rk9MREVSX1BBVEgvRE9NSFRNTFVMaXN0RWxlbWVudC5oXCIiOworCQl9OworCQk4NUNBOTlDNTBB
OTY2ODNDMDA2OTBDQ0YgLyogRE9NSFRNTElzSW5kZXhFbGVtZW50LmggKi8gPSB7CisJCQlpc2Eg
PSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJD
T1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTUhUTUxJc0luZGV4RWxlbWVudC5oIiwKKwkJCSk7
CisJCQluYW1lID0gRE9NSFRNTElzSW5kZXhFbGVtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgK
KwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9E
T01IVE1MSXNJbmRleEVsZW1lbnQuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3Jp
cHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVS
X1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFE
RVJTX0RJUi9ET01IVE1MSXNJbmRleEVsZW1lbnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8k
UFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NSFRNTElzSW5kZXhFbGVtZW50LmhcIiI7CisJ
CX07CisJCTg1Q0E5OUNEMEE5NjY4NzUwMDY5MENDRiAvKiBET01IVE1MTWFwRWxlbWVudC5oICov
ID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAo
CisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01IVE1MTWFwRWxlbWVudC5o
IiwKKwkJCSk7CisJCQluYW1lID0gRE9NSFRNTE1hcEVsZW1lbnQuaDsKKwkJCW91dHB1dFBhdGhz
ID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BB
VEgpL0RPTUhUTUxNYXBFbGVtZW50LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2Ny
aXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERF
Ul9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVB
REVSU19ESVIvRE9NSFRNTE1hcEVsZW1lbnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVC
TElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NSFRNTE1hcEVsZW1lbnQuaFwiIjsKKwkJfTsKKwkJ
ODVDQTk5RDEwQTk2NjhBNTAwNjkwQ0NGIC8qIERPTUhUTUxBbmNob3JFbGVtZW50LmggKi8gPSB7
CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJ
CQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTUhUTUxBbmNob3JFbGVtZW50Lmgi
LAorCQkJKTsKKwkJCW5hbWUgPSBET01IVE1MQW5jaG9yRWxlbWVudC5oOworCQkJb3V0cHV0UGF0
aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJf
UEFUSCkvRE9NSFRNTEFuY2hvckVsZW1lbnQuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hl
bGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNf
Rk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFU
RV9IRUFERVJTX0RJUi9ET01IVE1MQW5jaG9yRWxlbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERf
RElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01IVE1MQW5jaG9yRWxlbWVudC5oXCIi
OworCQl9OworCQk4NUNBOUE5MTBBOTY5QTg4MDA2OTBDQ0YgLyogRE9NSFRNTEJ1dHRvbkVsZW1l
bnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBh
dGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NSFRNTEJ1dHRv
bkVsZW1lbnQuaCIsCisJCQkpOworCQkJbmFtZSA9IERPTUhUTUxCdXR0b25FbGVtZW50Lmg7CisJ
CQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFE
RVJTX0ZPTERFUl9QQVRIKS9ET01IVE1MQnV0dG9uRWxlbWVudC5oIiwKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4v
c2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJM
SUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VC
Q09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUhUTUxCdXR0b25FbGVtZW50LmhcIiA+IFwiJFRB
UkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTUhUTUxCdXR0b25F
bGVtZW50LmhcIiI7CisJCX07CisJCTg1Q0E5QTk1MEE5NjlBQzYwMDY5MENDRiAvKiBET01IVE1M
SW5wdXRFbGVtZW50LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7
CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOwor
CQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RP
TUhUTUxJbnB1dEVsZW1lbnQuaCIsCisJCQkpOworCQkJbmFtZSA9IERPTUhUTUxJbnB1dEVsZW1l
bnQuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVC
TElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUhUTUxJbnB1dEVsZW1lbnQuaCIsCisJCQkpOwor
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGgg
PSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJ
Ui8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQv
IFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01IVE1MSW5wdXRFbGVtZW50LmhcIiA+
IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTUhUTUxJ
bnB1dEVsZW1lbnQuaFwiIjsKKwkJfTsKKwkJODVDQTlCMjIwQTk2QTBEODAwNjkwQ0NGIC8qIERP
TUhUTUxMYWJlbEVsZW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJ
CSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJ
UikvRE9NSFRNTExhYmVsRWxlbWVudC5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NSFRNTExhYmVs
RWxlbWVudC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikv
JChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NSFRNTExhYmVsRWxlbWVudC5oIiwKKwkJ
CSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxs
UGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJ
TERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dl
YktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUhUTUxMYWJlbEVsZW1lbnQu
aFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9N
SFRNTExhYmVsRWxlbWVudC5oXCIiOworCQl9OworCQk4NUQ2MzA5MTBBOTdCQTU3MDAzMzI0NDMg
LyogRE9NSFRNTE9wdGlvbkVsZW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9
ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFE
RVJTX0RJUikvRE9NSFRNTE9wdGlvbkVsZW1lbnQuaCIsCisJCQkpOworCQkJbmFtZSA9IERPTUhU
TUxPcHRpb25FbGVtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJ
TERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01IVE1MT3B0aW9uRWxlbWVu
dC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
KwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRU
QVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9X
ZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUhUTUxPcHRp
b25FbGVtZW50LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERF
Ul9QQVRIL0RPTUhUTUxPcHRpb25FbGVtZW50LmhcIiI7CisJCX07CisJCTg1RkJFQTQ0MEE5QTQy
REUwMDBBMkE0RSAvKiBET01DU1NQcmltaXRpdmVWYWx1ZS5oICovID0geworCQkJaXNhID0gUEJY
U2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
KwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9Q
UklWQVRFX0hFQURFUlNfRElSKS9ET01DU1NQcmltaXRpdmVWYWx1ZS5oIiwKKwkJCSk7CisJCQlu
YW1lID0gRE9NQ1NTUHJpbWl0aXZlVmFsdWUuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIk
KFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUNTU1By
aW1pdGl2ZVZhbHVlLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1r
ZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJc
bnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIv
RE9NQ1NTUHJpbWl0aXZlVmFsdWUuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hF
QURFUlNfRk9MREVSX1BBVEgvRE9NQ1NTUHJpbWl0aXZlVmFsdWUuaFwiIjsKKwkJfTsKKwkJODVG
QkVBNDgwQTlBNDJGRjAwMEEyQTRFIC8qIERPTUNTU1ZhbHVlLmggKi8gPSB7CisJCQlpc2EgPSBQ
QlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3
OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JF
X1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTUNTU1ZhbHVlLmgiLAorCQkJKTsKKwkJCW5hbWUgPSBE
T01DU1NWYWx1ZS5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJ
UikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NQ1NTVmFsdWUuaCIsCisJCQkpOwor
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGgg
PSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJ
Ui8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQv
IFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01DU1NWYWx1ZS5oXCIgPiBcIiRUQVJH
RVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01DU1NWYWx1ZS5oXCIi
OworCQl9OworCQk4NUZCRUE0QzBBOUE0MzJDMDAwQTJBNEUgLyogRE9NQ1NTUnVsZS5oICovID0g
eworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJ
CQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01DU1NSdWxlLmgiLAorCQkJKTsK
KwkJCW5hbWUgPSBET01DU1NSdWxlLmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJH
RVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01DU1NSdWxlLmgi
LAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJ
c2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdF
VF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNv
cmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NQ1NTUnVsZS5oXCIg
PiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01DU1NS
dWxlLmhcIiI7CisJCX07CiAJCTkzMzkzMjNFMDgyNUE2NDIwMEFBREE2QiAvKiBucHJ1bnRpbWUu
aCAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CkluZGV4OiBXZWJLaXQvV2ViVmlldy9XZWJEYXRhU291cmNl
Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tCShyZXZpc2lv
biAxNTk0NSkKKysrIFdlYktpdC9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubQkod29ya2luZyBjb3B5
KQpAQCAtMzAsMjEgKzMwLDIxIEBACiAKICNpbXBvcnQgIldlYkFyY2hpdmUuaCIKICNpbXBvcnQg
IldlYkFyY2hpdmVyLmgiCi0jaW1wb3J0ICJXZWJET01PcGVyYXRpb25zUHJpdmF0ZS5oIgogI2lt
cG9ydCAiV2ViRGF0YVByb3RvY29sLmgiCiAjaW1wb3J0ICJXZWJEYXRhU291cmNlSW50ZXJuYWwu
aCIKICNpbXBvcnQgIldlYkRlZmF1bHRSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIgogI2ltcG9ydCAi
V2ViRG9jdW1lbnQuaCIKKyNpbXBvcnQgIldlYkRPTU9wZXJhdGlvbnNQcml2YXRlLmgiCiAjaW1w
b3J0ICJXZWJEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJGcmFtZUJyaWRnZS5oIgog
I2ltcG9ydCAiV2ViRnJhbWVJbnRlcm5hbC5oIgotI2ltcG9ydCAiV2ViRnJhbWVMb2FkZXIuaCIK
ICNpbXBvcnQgIldlYkZyYW1lTG9hZERlbGVnYXRlLmgiCisjaW1wb3J0ICJXZWJGcmFtZUxvYWRl
ci5oIgogI2ltcG9ydCAiV2ViRnJhbWVWaWV3LmgiCi0jaW1wb3J0ICJXZWJIVE1MUmVwcmVzZW50
YXRpb24uaCIKLSNpbXBvcnQgIldlYkhUTUxWaWV3UHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViSGlz
dG9yeS5oIgogI2ltcG9ydCAiV2ViSGlzdG9yeUl0ZW1Qcml2YXRlLmgiCisjaW1wb3J0ICJXZWJI
VE1MUmVwcmVzZW50YXRpb24uaCIKKyNpbXBvcnQgIldlYkhUTUxWaWV3UHJpdmF0ZS5oIgogI2lt
cG9ydCAiV2ViSWNvbkRhdGFiYXNlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViS2l0RXJyb3JzUHJp
dmF0ZS5oIgogI2ltcG9ydCAiV2ViS2l0TG9nZ2luZy5oIgpAQCAtNjMsNiArNjMsNyBAQAogI2lt
cG9ydCA8Rm91bmRhdGlvbi9OU1VSTENvbm5lY3Rpb24uaD4KICNpbXBvcnQgPEZvdW5kYXRpb24v
TlNVUkxSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9Bc3NlcnRpb25zLmg+Cisj
aW1wb3J0IDxXZWJLaXQvRE9NQ29yZS5oPgogI2ltcG9ydCA8V2ViS2l0L0RPTUhUTUwuaD4KICNp
bXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10161</attachid>
            <date>2006-08-21 20:28:58 -0700</date>
            <delta_ts>2006-08-22 10:32:35 -0700</delta_ts>
            <desc>patch with just DOMCore changes</desc>
            <filename>autoCore.diff</filename>
            <type>text/plain</type>
            <size>747033</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNTk1OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUwIEBACisyMDA2LTA4LTIxICBTYW0gV2VpbmlnICA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
LSBwYXRjaCBmb3IgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NjI0CisgICAgICAgICAgV2ViQ29yZSBuZWVkcyBhdXRvZ2VuZXJhdGVkIE9iai1DIERPTSBi
aW5kaW5ncworICAgICAgICAgIAorICAgICAgICAgIEZpcnN0IHJvdW5kIG9mIGF1dG8tZ2VuZXJh
dGVkIE9iamVjdGl2ZSBDIERPTSBiaW5kaW5ncywgc3RhcnRpbmcKKyAgICAgICAgICB3aXRoIHRo
ZSBET00gQ29yZS4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6IEFkZHMgbmV3IGZp
bGVzIHRvIGF1dG8tZ2VuZXJhdGVkIGFuZCAKKyAgICAgICAgICBPYmotQyBnZW5lcmF0b3Igc2Ny
aXB0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBiaW5kaW5ncy9vYmpjL0RPTS5tbTogUmVtb3ZlcyBhbGwgY29yZSBpbXBsZW1lbnRhdGlv
bi4gCisgICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGNyZWF0ZUhUTUxEb2N1bWVudDpdKToK
KyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24gY3JlYXRlQ1NTU3R5bGVTaGVldDo6XSk6Cisg
ICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIF9pbml0V2l0aERPTUltcGxlbWVudGF0aW9uOl0p
OgorICAgICAgICAoK1tET01JbXBsZW1lbnRhdGlvbiBfRE9NSW1wbGVtZW50YXRpb25XaXRoOl0p
OgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBfRE9NSW1wbGVtZW50YXRpb25dKToKKyAg
ICAgICAgKCtbRE9NRG9jdW1lbnRGcmFnbWVudCBfZG9jdW1lbnRGcmFnbWVudFdpdGg6XSk6Cisg
ICAgICAgICgtW0RPTURvY3VtZW50RnJhZ21lbnQgX2ZyYWdtZW50XSk6CisgICAgICAgICgtW0RP
TURvY3VtZW50IGNyZWF0ZVJhbmdlXSk6CisgICAgICAgICgtW0RPTURvY3VtZW50IGdldE92ZXJy
aWRlU3R5bGU6Ol0pOgorICAgICAgICAoLVtET01Eb2N1bWVudCBzdHlsZVNoZWV0c10pOgorICAg
ICAgICAoLVtET01Eb2N1bWVudCBjcmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uXSk6CisgICAgICAg
ICgrW0RPTURvY3VtZW50IF9kb2N1bWVudFdpdGg6XSk6CisgICAgICAgICgtW0RPTURvY3VtZW50
IF9kb2N1bWVudF0pOgorICAgICAgICAoLVtET01Eb2N1bWVudCBfb3duZXJFbGVtZW50XSk6Cisg
ICAgICAgICgrW0RPTUF0dHIgX2F0dHJXaXRoOl0pOgorICAgICAgICAoLVtET01BdHRyIF9hdHRy
XSk6CisgICAgICAgICgtW0RPTUF0dHIgc3R5bGVdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpj
L0RPTUNTUy5oOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NQ2hhcmFjdGVyRGF0YS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUNoYXJhY3RlckRhdGEubW06IEFkZGVk
LgorICAgICAgICAoLVtET01DaGFyYWN0ZXJEYXRhIFdlYkNvcmU6Ol0pOgorICAgICAgICAoLVtE
T01DaGFyYWN0ZXJEYXRhIGRhdGFdKToKKyAgICAgICAgKC1bRE9NQ2hhcmFjdGVyRGF0YSBzZXRE
YXRhOl0pOgorICAgICAgICAoLVtET01DaGFyYWN0ZXJEYXRhIGxlbmd0aF0pOgorICAgICAgICAo
LVtET01DaGFyYWN0ZXJEYXRhIHN1YnN0cmluZ0RhdGE6Ol0pOgorICAgICAgICAoLVtET01DaGFy
YWN0ZXJEYXRhIGFwcGVuZERhdGE6XSk6CisgICAgICAgICgtW0RPTUNoYXJhY3RlckRhdGEgaW5z
ZXJ0RGF0YTo6XSk6CisgICAgICAgICgtW0RPTUNoYXJhY3RlckRhdGEgZGVsZXRlRGF0YTo6XSk6
CisgICAgICAgICgtW0RPTUNoYXJhY3RlckRhdGEgcmVwbGFjZURhdGE6OjpdKToKKyAgICAgICAg
KiBiaW5kaW5ncy9vYmpjL0RPTUNvcmUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTURP
TUltcGxlbWVudGF0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NRE9N
SW1wbGVtZW50YXRpb24ubW06IEFkZGVkLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBk
ZWFsbG9jXSk6CisgICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGZpbmFsaXplXSk6CisgICAg
ICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGhhc0ZlYXR1cmU6Ol0pOgorICAgICAgICAoLVtET01J
bXBsZW1lbnRhdGlvbiBjcmVhdGVEb2N1bWVudFR5cGU6OjpdKToKKyAgICAgICAgKC1bRE9NSW1w
bGVtZW50YXRpb24gY3JlYXRlRG9jdW1lbnQ6OjpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpj
L0RPTURvY3VtZW50Lmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NRG9jdW1l
bnQubW06IEFkZGVkLgorICAgICAgICAoLVtET01Eb2N1bWVudCBhZG9wdE5vZGU6XSk6CisgICAg
ICAgICgtW0RPTURvY3VtZW50IGRvY3R5cGVdKToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgaW1w
bGVtZW50YXRpb25dKToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgZG9jdW1lbnRFbGVtZW50XSk6
CisgICAgICAgICgtW0RPTURvY3VtZW50IGNyZWF0ZUVsZW1lbnQ6XSk6CisgICAgICAgICgtW0RP
TURvY3VtZW50IGNyZWF0ZURvY3VtZW50RnJhZ21lbnRdKToKKyAgICAgICAgKC1bRE9NRG9jdW1l
bnQgY3JlYXRlVGV4dE5vZGU6XSk6CisgICAgICAgICgtW0RPTURvY3VtZW50IGNyZWF0ZUNvbW1l
bnQ6XSk6CisgICAgICAgICgtW0RPTURvY3VtZW50IGNyZWF0ZUNEQVRBU2VjdGlvbjpdKToKKyAg
ICAgICAgKC1bRE9NRG9jdW1lbnQgY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpdKToKKyAg
ICAgICAgKC1bRE9NRG9jdW1lbnQgY3JlYXRlQXR0cmlidXRlOl0pOgorICAgICAgICAoLVtET01E
b2N1bWVudCBjcmVhdGVFbnRpdHlSZWZlcmVuY2U6XSk6CisgICAgICAgICgtW0RPTURvY3VtZW50
IGdldEVsZW1lbnRzQnlUYWdOYW1lOl0pOgorICAgICAgICAoLVtET01Eb2N1bWVudCBpbXBvcnRO
b2RlOjpdKToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgY3JlYXRlRWxlbWVudE5TOjpdKToKKyAg
ICAgICAgKC1bRE9NRG9jdW1lbnQgY3JlYXRlQXR0cmlidXRlTlM6Ol0pOgorICAgICAgICAoLVtE
T01Eb2N1bWVudCBnZXRFbGVtZW50c0J5VGFnTmFtZU5TOjpdKToKKyAgICAgICAgKC1bRE9NRG9j
dW1lbnQgZ2V0RWxlbWVudEJ5SWQ6XSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01FbGVt
ZW50Lmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NRWxlbWVudC5tbTogQWRk
ZWQuCisgICAgICAgICgtW0RPTUVsZW1lbnQgdGFnTmFtZV0pOgorICAgICAgICAoLVtET01FbGVt
ZW50IGF0dHJpYnV0ZXNdKToKKyAgICAgICAgKC1bRE9NRWxlbWVudCBnZXRBdHRyaWJ1dGU6XSk6
CisgICAgICAgICgtW0RPTUVsZW1lbnQgc2V0QXR0cmlidXRlOjpdKToKKyAgICAgICAgKC1bRE9N
RWxlbWVudCByZW1vdmVBdHRyaWJ1dGU6XSk6CisgICAgICAgICgtW0RPTUVsZW1lbnQgZ2V0QXR0
cmlidXRlTm9kZTpdKToKKyAgICAgICAgKC1bRE9NRWxlbWVudCBzZXRBdHRyaWJ1dGVOb2RlOl0p
OgorICAgICAgICAoLVtET01FbGVtZW50IHJlbW92ZUF0dHJpYnV0ZU5vZGU6XSk6CisgICAgICAg
ICgtW0RPTUVsZW1lbnQgZ2V0RWxlbWVudHNCeVRhZ05hbWU6XSk6CisgICAgICAgICgtW0RPTUVs
ZW1lbnQgZ2V0QXR0cmlidXRlTlM6Ol0pOgorICAgICAgICAoLVtET01FbGVtZW50IHNldEF0dHJp
YnV0ZU5TOjo6XSk6CisgICAgICAgICgtW0RPTUVsZW1lbnQgcmVtb3ZlQXR0cmlidXRlTlM6Ol0p
OgorICAgICAgICAoLVtET01FbGVtZW50IGdldEF0dHJpYnV0ZU5vZGVOUzo6XSk6CisgICAgICAg
ICgtW0RPTUVsZW1lbnQgc2V0QXR0cmlidXRlTm9kZU5TOl0pOgorICAgICAgICAoLVtET01FbGVt
ZW50IGdldEVsZW1lbnRzQnlUYWdOYW1lTlM6Ol0pOgorICAgICAgICAoLVtET01FbGVtZW50IGhh
c0F0dHJpYnV0ZTpdKToKKyAgICAgICAgKC1bRE9NRWxlbWVudCBoYXNBdHRyaWJ1dGVOUzo6XSk6
CisgICAgICAgICgtW0RPTUVsZW1lbnQgZm9jdXNdKToKKyAgICAgICAgKC1bRE9NRWxlbWVudCBi
bHVyXSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01FdmVudHMuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9vYmpjL0RPTUV4dGVuc2lvbnMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RP
TUltcGxlbWVudGF0aW9uRnJvbnQuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUludGVy
bmFsLmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01OYW1lZE5vZGVNYXAuaDogQWRkZWQu
CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01OYW1lZE5vZGVNYXAubW06IEFkZGVkLgorICAg
ICAgICAoLVtET01OYW1lZE5vZGVNYXAgZGVhbGxvY10pOgorICAgICAgICAoLVtET01OYW1lZE5v
ZGVNYXAgZmluYWxpemVdKToKKyAgICAgICAgKC1bRE9NTmFtZWROb2RlTWFwIFdlYkNvcmU6Ol0p
OgorICAgICAgICAoLVtET01OYW1lZE5vZGVNYXAgc2V0TmFtZWRJdGVtOl0pOgorICAgICAgICAo
LVtET01OYW1lZE5vZGVNYXAgcmVtb3ZlTmFtZWRJdGVtOl0pOgorICAgICAgICAoLVtET01OYW1l
ZE5vZGVNYXAgZ2V0TmFtZWRJdGVtTlM6Ol0pOgorICAgICAgICAoLVtET01OYW1lZE5vZGVNYXAg
c2V0TmFtZWRJdGVtTlM6XSk6CisgICAgICAgICgtW0RPTU5hbWVkTm9kZU1hcCByZW1vdmVOYW1l
ZEl0ZW1OUzo6XSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01Ob2RlLmg6IEFkZGVkLgor
ICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NTm9kZS5tbTogQWRkZWQuCisgICAgICAgICgtW0RP
TU5vZGUgZGVhbGxvY10pOgorICAgICAgICAoLVtET01Ob2RlIGZpbmFsaXplXSk6CisgICAgICAg
ICgtW0RPTU5vZGUgc2V0Tm9kZVZhbHVlOl0pOgorICAgICAgICAoLVtET01Ob2RlIGluc2VydEJl
Zm9yZTo6XSk6CisgICAgICAgICgtW0RPTU5vZGUgcmVwbGFjZUNoaWxkOjpdKToKKyAgICAgICAg
KC1bRE9NTm9kZSByZW1vdmVDaGlsZDpdKToKKyAgICAgICAgKC1bRE9NTm9kZSBhcHBlbmRDaGls
ZDpdKToKKyAgICAgICAgKC1bRE9NTm9kZSBzZXRQcmVmaXg6XSk6CisgICAgICAgICgtW0RPTU5v
ZGUgc2V0VGV4dENvbnRlbnQ6XSk6CisgICAgICAgICgtW0RPTU5vZGUgbGluZUJveFJlY3RzXSk6
CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01Ob2RlTGlzdC5oOiBBZGRlZC4KKyAgICAgICAg
KiBiaW5kaW5ncy9vYmpjL0RPTU5vZGVMaXN0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bRE9NTm9k
ZUxpc3QgZGVhbGxvY10pOgorICAgICAgICAoLVtET01Ob2RlTGlzdCBmaW5hbGl6ZV0pOgorICAg
ICAgICAoLVtET01Ob2RlTGlzdCBXZWJDb3JlOjpdKToKKyAgICAgICAgKC1bRE9NTm9kZUxpc3Qg
aXRlbTpdKToKKyAgICAgICAgKC1bRE9NTm9kZUxpc3QgbGVuZ3RoXSk6CisgICAgICAgICogYmlu
ZGluZ3Mvb2JqYy9ET01PYmplY3QuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9E
T01PYmplY3QubW06IEFkZGVkLgorICAgICAgICAoLVtET01PYmplY3QgZGVhbGxvY10pOgorICAg
ICAgICAoLVtET01PYmplY3QgZmluYWxpemVdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RP
TVByaXZhdGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVJhbmdlLmg6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET01TdHlsZXNoZWV0cy5oOgorICAgICAgICAqIGJpbmRpbmdzL29i
amMvRE9NVGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVRleHQubW06
IEFkZGVkLgorICAgICAgICAoLVtET01UZXh0IFdlYkNvcmU6Ol0pOgorICAgICAgICAoLVtET01U
ZXh0IHNwbGl0VGV4dDpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVRyYXZlcnNhbC5o
OgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NVmlld3MuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9vYmpjL0RPTVhQYXRoLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yLnBtOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG06
IEFkZGVkLgorICAgICAgICAqIGRvbS9BdHRyLmlkbDoKKyAgICAgICAgKiBkb20vQ0RBVEFTZWN0
aW9uLmlkbDogQWRkZWQuCisgICAgICAgICogZG9tL0NvbW1lbnQuaWRsOiBBZGRlZC4KKyAgICAg
ICAgKiBkb20vRW50aXR5UmVmZXJlbmNlLmlkbDogQWRkZWQuCisgICAgICAgICogZG9tL1Byb2Nl
c3NpbmdJbnN0cnVjdGlvbi5pZGw6CisKIDIwMDYtMDgtMjEgIERhdmlkIEhhcnJpc29uICA8aGFy
cmlzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEp1c3Rpbi4KSW5kZXg6IFdl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UJKHJldmlzaW9uIDE1OTU5KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDYg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChD
KSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPiAKICMKICMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjgsNyBAQAogVlBBVEggPSBcCiAgICAgJChXZWJD
b3JlKSBcCiAgICAgJChXZWJDb3JlKS9iaW5kaW5ncy9qcyBcCisgICAgJChXZWJDb3JlKS9iaW5k
aW5ncy9vYmpjIFwKICAgICAkKFdlYkNvcmUpL2NzcyBcCiAgICAgJChXZWJDb3JlKS9kb20gXAog
ICAgICQoV2ViQ29yZSkvaHRtbCBcCkBAIC00NCw2ICs0NiwxNSBAQCBhbGwgOiBcCiAgICAgQ2hh
cnNldERhdGEuY3BwIFwKICAgICBDb2xvckRhdGEuYyBcCiAgICAgRG9jVHlwZVN0cmluZ3MuY3Bw
IFwKKyAgICBET01BdHRyLmggXAorICAgIERPTUNEQVRBU2VjdGlvbi5oIFwKKyAgICBET01Db21t
ZW50LmggXAorICAgIERPTURvY3VtZW50RnJhZ21lbnQuaCBcCisgICAgRE9NRG9jdW1lbnRUeXBl
LmggXAorICAgIERPTUVudGl0eS5oIFwKKyAgICBET01FbnRpdHlSZWZlcmVuY2UuaCBcCisgICAg
RE9NTm90YXRpb24uaCBcCisgICAgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggXAogICAgIEhU
TUxFbnRpdHlOYW1lcy5jIFwKICAgICBKU0F0dHIuaCBcCiAgICAgSlNDU1NQcmltaXRpdmVWYWx1
ZS5oIFwKQEAgLTI4Niw2ICsyOTcsMTkgQEAga3N2Z2Nzc3ZhbHVlcy5oIDoKIAogZW5kaWYKIAor
IyBuZXctc3R5bGUgT2JqZWN0aXZlLUMgYmluZGluZ3MKKworT0JKQ19CSU5ESU5HU19TQ1JJUFRT
ID0gXAorICAgIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbSBcCisgICAgYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbSBcCisgICAgYmluZGluZ3Mvc2NyaXB0cy9J
RExQYXJzZXIucG0gXAorICAgIGJpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtIFwKKyAg
ICBiaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIFwKKyMKKworRE9NJS5oIDog
JS5pZGwgJChPQkpDX0JJTkRJTkdTX1NDUklQVFMpCisJcGVybCAtSSQoV2ViQ29yZSkvYmluZGlu
Z3Mvc2NyaXB0cyAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3Mu
cGwgLS1kZWZpbmVzICIkKEZFQVRVUkVfREVGSU5FUykiIC0tZ2VuZXJhdG9yIE9iakMgLS1pbmNs
dWRlIGRvbSAtLWluY2x1ZGUgaHRtbCAtLWluY2x1ZGUgeHBhdGggLS1pbmNsdWRlIGtzdmcyL3N2
ZyAtLW91dHB1dGRpciAgLiAkPAorCiAjIG5ldy1zdHlsZSBKYXZhU2NyaXB0IGJpbmRpbmdzCiAK
IEpTX0JJTkRJTkdTX1NDUklQVFMgPSBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU5NTkpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzUxLDggKzM1MSwyNyBA
QAogCQk4NTAzMUI0RjBBNDRFRkM3MDBGOTkyRTAgLyogVUlFdmVudFdpdGhLZXlTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwMzFCMzkwQTQ0
RUZDNzAwRjk5MkUwIC8qIFVJRXZlbnRXaXRoS2V5U3RhdGUuaCAqLzsgfTsKIAkJODUwMzFCNTAw
QTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVsRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwMzFCM0EwQTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVs
RXZlbnQuY3BwICovOyB9OwogCQk4NTAzMUI1MTBBNDRFRkM3MDBGOTkyRTAgLyogV2hlZWxFdmVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwMzFC
M0IwQTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVsRXZlbnQuaCAqLzsgfTsKKwkJODUwODlDQzgwQTk4
QzIyNjAwQTI3NUFBIC8qIENvbW1lbnQuaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NTA4OUNDNzBBOThDMjI2MDBBMjc1QUEgLyogQ29tbWVudC5p
ZGwgKi87IH07CisJCTg1MDg5Q0NBMEE5OEMyQUIwMEEyNzVBQSAvKiBDREFUQVNlY3Rpb24uaWRs
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTA4OUND
OTBBOThDMkFCMDBBMjc1QUEgLyogQ0RBVEFTZWN0aW9uLmlkbCAqLzsgfTsKKwkJODUwODlDQ0Mw
QTk4QzMzQTAwQTI3NUFBIC8qIEVudGl0eVJlZmVyZW5jZS5pZGwgaW4gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDg5Q0NCMEE5OEMzM0EwMEEyNzVBQSAv
KiBFbnRpdHlSZWZlcmVuY2UuaWRsICovOyB9OworCQk4NTA4OUNENzBBOThDNDI4MDBBMjc1QUEg
LyogRE9NQ0RBVEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NTA4OUNDRjBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODUwODlD
RDgwQTk4QzQyODAwQTI3NUFBIC8qIERPTUNEQVRBU2VjdGlvbi5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDg5Q0QwMEE5OEM0MjcwMEEyNzVBQSAv
KiBET01DREFUQVNlY3Rpb24ubW0gKi87IH07CisJCTg1MDg5Q0Q5MEE5OEM0MjgwMEEyNzVBQSAv
KiBET01Db21tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NTA4OUNEMTBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ29tbWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1MDg5Q0RBMEE5OEM0Mjgw
MEEyNzVBQSAvKiBET01Db21tZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODUwODlDRDIwQTk4QzQyNzAwQTI3NUFBIC8qIERPTUNvbW1lbnQubW0g
Ki87IH07CisJCTg1MDg5Q0RCMEE5OEM0MjgwMEEyNzVBQSAvKiBET01Eb2N1bWVudEZyYWdtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTA4OUNE
MzBBOThDNDI4MDBBMjc1QUEgLyogRE9NRG9jdW1lbnRGcmFnbWVudC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1MDg5Q0RDMEE5OEM0MjgwMEEy
NzVBQSAvKiBET01Eb2N1bWVudEZyYWdtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODUwODlDRDQwQTk4QzQyODAwQTI3NUFBIC8qIERPTURvY3Vt
ZW50RnJhZ21lbnQubW0gKi87IH07CisJCTg1MDg5Q0REMEE5OEM0MjgwMEEyNzVBQSAvKiBET01F
bnRpdHlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg1MDg5Q0Q1MEE5OEM0MjgwMEEyNzVBQSAvKiBET01FbnRpdHlSZWZlcmVuY2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTA4OUNE
RTBBOThDNDI4MDBBMjc1QUEgLyogRE9NRW50aXR5UmVmZXJlbmNlLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwODlDRDYwQTk4QzQyODAwQTI3NUFB
IC8qIERPTUVudGl0eVJlZmVyZW5jZS5tbSAqLzsgfTsKIAkJODUyMTdFMDIwQTVFQ0Q0NzAwREI4
RDAwIC8qIFhTTEltcG9ydFJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODUyMTdFMDAwQTVFQ0Q0NzAwREI4RDAwIC8qIFhTTEltcG9ydFJ1bGUu
Y3BwICovOyB9OwogCQk4NTIxN0UwMzBBNUVDRDQ3MDBEQjhEMDAgLyogWFNMSW1wb3J0UnVsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUyMTdFMDEw
QTVFQ0Q0NzAwREI4RDAwIC8qIFhTTEltcG9ydFJ1bGUuaCAqLzsgfTsKKwkJODUyNkQ1RjEwQThG
REIyRTAwOTIzNEIxIC8qIERPTVRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg1MjZENUVGMEE4RkRCMkQwMDkyMzRCMSAvKiBET01UZXh0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODUyNkQ1RjIw
QThGREIyRTAwOTIzNEIxIC8qIERPTVRleHQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NTI2RDVGMDBBOEZEQjJFMDA5MjM0QjEgLyogRE9NVGV4dC5t
bSAqLzsgfTsKKwkJODUyNkQ2NUUwQThGRTU1QTAwOTIzNEIxIC8qIERPTUNoYXJhY3RlckRhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MjZENjVD
MEE4RkU1NUEwMDkyMzRCMSAvKiBET01DaGFyYWN0ZXJEYXRhLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODUyNkQ2NUYwQThGRTU1QTAwOTIzNEIx
IC8qIERPTUNoYXJhY3RlckRhdGEubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NTI2RDY1RDBBOEZFNTVBMDA5MjM0QjEgLyogRE9NQ2hhcmFjdGVyRGF0
YS5tbSAqLzsgfTsKKwkJODUyNkQ3NjQwQThGRjM5MjAwOTIzNEIxIC8qIERPTU5hbWVkTm9kZU1h
cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUyNkQ3
NjIwQThGRjM5MjAwOTIzNEIxIC8qIERPTU5hbWVkTm9kZU1hcC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1MjZENzY1MEE4RkYzOTIwMDkyMzRC
MSAvKiBET01OYW1lZE5vZGVNYXAubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NTI2RDc2MzBBOEZGMzkyMDA5MjM0QjEgLyogRE9NTmFtZWROb2RlTWFw
Lm1tICovOyB9OworCQk4NTM5QjUwODBBOTAzRDQ1MDAzNjZDMkQgLyogRE9NRE9NSW1wbGVtZW50
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1
MzlCNTA2MEE5MDNENDUwMDM2NkMyRCAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1MzlCNTA5MEE5MDNE
NDUwMDM2NkMyRCAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MzlCNTA3MEE5MDNENDUwMDM2NkMyRCAvKiBE
T01ET01JbXBsZW1lbnRhdGlvbi5tbSAqLzsgfTsKIAkJODU0RkU3MzAwQTIyOTdCRTAwNThEN0FE
IC8qIE5vZGVGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODU0RkU3MjYwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0ZXIuY3BwICovOyB9
OwogCQk4NTRGRTczMTBBMjI5N0JFMDA1OEQ3QUQgLyogTm9kZUZpbHRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU0RkU3MjcwQTIyOTdCRTAwNThE
N0FEIC8qIE5vZGVGaWx0ZXIuaCAqLzsgfTsKIAkJODU0RkU3MzIwQTIyOTdCRTAwNThEN0FEIC8q
IE5vZGVGaWx0ZXJDb25kaXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODU0RkU3MjgwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0ZXJDb25k
aXRpb24uY3BwICovOyB9OwpAQCAtMzYzLDggKzM4MiwyOCBAQAogCQk4NTRGRTczNzBBMjI5N0JF
MDA1OEQ3QUQgLyogVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NTRGRTcyRDBBMjI5N0JFMDA1OEQ3QUQgLyogVHJhdmVyc2FsLmggKi87
IH07CiAJCTg1NEZFNzM4MEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NEZFNzJFMEEyMjk3QkUw
MDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmNwcCAqLzsgfTsKIAkJODU0RkU3MzkwQTIyOTdCRTAwNThE
N0FEIC8qIFRyZWVXYWxrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg1NEZFNzJGMEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmggKi87IH07
CisJCTg1NkM4OTZDMEE5MEUxODQwMDVDNjg3QiAvKiBET01Eb2N1bWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2Qzg5NkEwQTkwRTE4NDAwNUM2
ODdCIC8qIERPTURvY3VtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJODU2Qzg5NkQwQTkwRTE4NDAwNUM2ODdCIC8qIERPTURvY3VtZW50Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2Qzg5NkIw
QTkwRTE4NDAwNUM2ODdCIC8qIERPTURvY3VtZW50Lm1tICovOyB9OworCQk4NTZDODlGQzBBOTBG
MDY4MDA1QzY4N0IgLyogRE9NTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODU2Qzg5RkEwQTkwRjA2ODAwNUM2ODdCIC8qIERPTU5vZGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTZDODlGRDBB
OTBGMDY4MDA1QzY4N0IgLyogRE9NTm9kZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg1NkM4OUZCMEE5MEYwNjgwMDVDNjg3QiAvKiBET01Ob2RlLm1t
ICovOyB9OworCQk4NTZDOEFFNDBBOTEyNjQ5MDA1QzY4N0IgLyogRE9NT2JqZWN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTZDOEFFMjBBOTEyNjQ5
MDA1QzY4N0IgLyogRE9NT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJODU2QzhBRTUwQTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NkM4QUUz
MEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3QubW0gKi87IH07CisJCTg1QTVDNTU4MEE5MDMw
QkIwMEY5MUYyQyAvKiBET01FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NUE1QzU1NjBBOTAzMEJCMDBGOTFGMkMgLyogRE9NRWxlbWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1QTVD
NTU5MEE5MDMwQkIwMEY5MUYyQyAvKiBET01FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVBNUM1NTcwQTkwMzBCQjAwRjkxRjJDIC8qIERP
TUVsZW1lbnQubW0gKi87IH07CisJCTg1QTg1QUY5MEE5MDI5MDQwMEE1Q0YzQSAvKiBET01Ob2Rl
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVB
ODVBRjcwQTkwMjkwNDAwQTVDRjNBIC8qIERPTU5vZGVMaXN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVBODVBRkEwQTkwMjkwNTAwQTVDRjNB
IC8qIERPTU5vZGVMaXN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODVBODVBRjgwQTkwMjkwNDAwQTVDRjNBIC8qIERPTU5vZGVMaXN0Lm1tICovOyB9
OworCQk4NUNBOTZCODBBOTYyMUE2MDA2OTBDQ0YgLyogRE9NRW50aXR5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUNBOTZCNjBBOTYyMUE2MDA2OTBD
Q0YgLyogRE9NRW50aXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJODVDQTk2QjkwQTk2MjFBNjAwNjkwQ0NGIC8qIERPTUVudGl0eS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1Q0E5NkI3MEE5NjIx
QTYwMDY5MENDRiAvKiBET01FbnRpdHkubW0gKi87IH07CisJCTg1Q0E5NkVBMEE5NjI0RTkwMDY5
MENDRiAvKiBET01Ob3RhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODVDQTk2RTgwQTk2MjRFOTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVDQTk2RUIw
QTk2MjRFOTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVDQTk2RTkwQTk2MjRFOTAwNjkwQ0NGIC8qIERPTU5v
dGF0aW9uLm1tICovOyB9OworCQk4NUNBOTc1QzBBOTYyRTU0MDA2OTBDQ0YgLyogRE9NRG9jdW1l
bnRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NUNBOTc1QTBBOTYyRTU0MDA2OTBDQ0YgLyogRE9NRG9jdW1lbnRUeXBlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVDQTk3NUQwQTk2MkU1NDAw
NjkwQ0NGIC8qIERPTURvY3VtZW50VHlwZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg1Q0E5NzVCMEE5NjJFNTQwMDY5MENDRiAvKiBET01Eb2N1bWVu
dFR5cGUubW0gKi87IH07CisJCTg1RDM4OUIyMEE5OTFBN0YwMDI4MjE0NSAvKiBET01BdHRyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUQzODlCMDBB
OTkxQTdGMDAyODIxNDUgLyogRE9NQXR0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTg1RDM4OUIzMEE5OTFBN0YwMDI4MjE0NSAvKiBET01BdHRy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVEMzg5
QjEwQTk5MUE3RjAwMjgyMTQ1IC8qIERPTUF0dHIubW0gKi87IH07CiAJCTg1RUM5QUZBMEE3MUEy
QzYwMEVFRUFFRCAvKiBGb250RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODVFQzlBRjgwQTcxQTJDNjAwRUVFQUVEIC8qIEZvbnREYXRhLmggKi87
IH07CiAJCTg1RUM5QUZCMEE3MUEyQzYwMEVFRUFFRCAvKiBMYW5ndWFnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVFQzlBRjkwQTcxQTJDNjAwRUVF
QUVEIC8qIExhbmd1YWdlLmggKi87IH07CisJCTg1RjU2QTdBMEE5OENFMzcwMEFEQjYwQSAvKiBE
T01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg1RjU2QTc4MEE5OENFMzcwMEFEQjYwQSAvKiBET01Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk4NUY1NkE3QjBBOThDRTM3MDBBREI2MEEgLyogRE9NUHJvY2Vzc2luZ0luc3RydWN0
aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVG
NTZBNzkwQTk4Q0UzNzAwQURCNjBBIC8qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5tbSAqLzsg
fTsKIAkJOTMwMzJDQzgwOUFFQzM0MzAwRjgyQTE4IC8qIFBhdGhDRy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzAzMkNDNzA5QUVDMzQzMDBGODJB
MTggLyogUGF0aENHLmNwcCAqLzsgfTsKIAkJOTMwMzJDQ0EwOUFFQzM0QjAwRjgyQTE4IC8qIFBh
dGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDMy
Q0M5MDlBRUMzNEIwMEY4MkExOCAvKiBQYXRoLmggKi87IH07CiAJCTkzMDVCMjREMDk4RjFCNkIw
MEMyODg1NSAvKiBUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTMwNUIyNEMwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggKi87IH07CkBAIC0x
NjAxLDIzICsxNjQwLDYgQEAKIAkJRkFFMDQxOTAwOTc1OTZDOTAwMDU0MEJFIC8qIFNWR0ltYWdl
TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
QUUwNDE4RTA5NzU5NkM5MDAwNTQwQkUgLyogU1ZHSW1hZ2VMb2FkZXIuaCAqLzsgfTsKIC8qIEVu
ZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCi0vKiBCZWdpbiBQQlhCdWlsZFN0eWxlIHNlY3Rp
b24gKi8KLQkJQkNEMzE4ODYwQTkyOTA5NDAwQkYxRDVGIC8qIERldmVsb3BtZW50ICovID0gewot
CQkJaXNhID0gUEJYQnVpbGRTdHlsZTsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJQ09QWV9Q
SEFTRV9TVFJJUCA9IE5POwotCQkJfTsKLQkJCW5hbWUgPSBEZXZlbG9wbWVudDsKLQkJfTsKLQkJ
QkNEMzE4ODcwQTkyOTA5NDAwQkYxRDVGIC8qIERlcGxveW1lbnQgKi8gPSB7Ci0JCQlpc2EgPSBQ
QlhCdWlsZFN0eWxlOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDT1BZX1BIQVNFX1NUUklQ
ID0gWUVTOwotCQkJfTsKLQkJCW5hbWUgPSBEZXBsb3ltZW50OwotCQl9OwotLyogRW5kIFBCWEJ1
aWxkU3R5bGUgc2VjdGlvbiAqLwotCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2Vj
dGlvbiAqLwogCQlERDA0MUZGMDA5RDlFMzI1MDAxMEFGMkEgLyogUEJYQ29udGFpbmVySXRlbVBy
b3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwpAQCAtMjA2NCw4ICsy
MDg2LDI3IEBACiAJCTg1MDMxQjM5MEE0NEVGQzcwMEY5OTJFMCAvKiBVSUV2ZW50V2l0aEtleVN0
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVSUV2ZW50V2l0aEtleVN0
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1MDMxQjNBMEE0NEVGQzcwMEY5
OTJFMCAvKiBXaGVlbEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXaGVlbEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODUwMzFC
M0IwQTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVsRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdoZWVsRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODUwODlDQzcwQTk4QzIyNjAwQTI3NUFBIC8qIENvbW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBDb21tZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwODlD
QzkwQTk4QzJBQjAwQTI3NUFBIC8qIENEQVRBU2VjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IENEQVRBU2VjdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1
MDg5Q0NCMEE5OEMzM0EwMEEyNzVBQSAvKiBFbnRpdHlSZWZlcmVuY2UuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBFbnRpdHlSZWZlcmVuY2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4NTA4OUNDRjBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01DREFUQVNlY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwODlDRDAwQTk4QzQyNzAwQTI3NUFBIC8qIERPTUNE
QVRBU2VjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBE
T01DREFUQVNlY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MDg5Q0Qx
MEE5OEM0MjcwMEEyNzVBQSAvKiBET01Db21tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01Db21tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1
MDg5Q0QyMEE5OEM0MjcwMEEyNzVBQSAvKiBET01Db21tZW50Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUNvbW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg1MDg5Q0QzMEE5OEM0MjgwMEEyNzVBQSAvKiBET01Eb2N1bWVudEZyYWdt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01Eb2N1bWVudEZyYWdt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MDg5Q0Q0MEE5OEM0MjgwMEEy
NzVBQSAvKiBET01Eb2N1bWVudEZyYWdtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IERPTURvY3VtZW50RnJhZ21lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg1MDg5Q0Q1MEE5OEM0MjgwMEEyNzVBQSAvKiBET01FbnRpdHlSZWZlcmVu
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUVudGl0eVJlZmVyZW5j
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTA4OUNENjBBOThDNDI4MDBBMjc1
QUEgLyogRE9NRW50aXR5UmVmZXJlbmNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IERPTUVudGl0eVJlZmVyZW5jZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODUyMTdFMDAwQTVFQ0Q0NzAwREI4RDAwIC8qIFhTTEltcG9ydFJ1bGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhTTEltcG9ydFJ1bGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTIxN0UwMTBBNUVDRDQ3MDBEQjhEMDAgLyog
WFNMSW1wb3J0UnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFNMSW1w
b3J0UnVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTI2RDVFRjBBOEZEQjJE
MDA5MjM0QjEgLyogRE9NVGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTI2RDVGMDBBOEZEQjJF
MDA5MjM0QjEgLyogRE9NVGV4dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBET01UZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTI2RDY1
QzBBOEZFNTVBMDA5MjM0QjEgLyogRE9NQ2hhcmFjdGVyRGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NQ2hhcmFjdGVyRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4NTI2RDY1RDBBOEZFNTVBMDA5MjM0QjEgLyogRE9NQ2hhcmFjdGVyRGF0YS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01DaGFyYWN0ZXJE
YXRhLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTI2RDc2MjBBOEZGMzkyMDA5
MjM0QjEgLyogRE9NTmFtZWROb2RlTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01OYW1lZE5vZGVNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUy
NkQ3NjMwQThGRjM5MjAwOTIzNEIxIC8qIERPTU5hbWVkTm9kZU1hcC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01OYW1lZE5vZGVNYXAubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MzlCNTA2MEE5MDNENDUwMDM2NkMyRCAvKiBET01ET01J
bXBsZW1lbnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRE9N
SW1wbGVtZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUzOUI1MDcw
QTkwM0Q0NTAwMzY2QzJEIC8qIERPTURPTUltcGxlbWVudGF0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTURPTUltcGxlbWVudGF0aW9uLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTRGRTcyNjBBMjI5N0JFMDA1OEQ3QUQgLyogTm9k
ZUZpbHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZUZp
bHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1NEZFNzI3MEEyMjk3QkUw
MDU4RDdBRCAvKiBOb2RlRmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOb2RlRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1NEZFNzI4MEEy
Mjk3QkUwMDU4RDdBRCAvKiBOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzYsOCArMjExNywyOSBAQAogCQk4NTRGRTcyRDBBMjI5
N0JFMDA1OEQ3QUQgLyogVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODU0RkU3MkUw
QTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFRyZWVXYWxrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NTRGRTcyRjBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJlZVdhbGtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4NTZDODk2QTBBOTBFMTg0MDA1QzY4N0IgLyogRE9NRG9jdW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTURvY3VtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg1NkM4OTZCMEE5MEUxODQwMDVDNjg3QiAvKiBET01Eb2N1bWVu
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01Eb2N1bWVu
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2Qzg5RkEwQTkwRjA2ODAwNUM2
ODdCIC8qIERPTU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU5v
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2Qzg5RkIwQTkwRjA2ODAwNUM2
ODdCIC8qIERPTU5vZGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRE9NTm9kZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2QzhBRTIwQTkx
MjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1NkM4QUUz
MEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gRE9NT2JqZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NTlCN0ZCOTBBOEQyODg4MDBBNUYxRUEgLyogQ29kZUdlbmVyYXRvck9iakMucG0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IENvZGVHZW5lcmF0b3JPYmpDLnBtOyBw
YXRoID0gYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbTsgc291cmNlVHJlZSA9
IFNPVVJDRV9ST09UOyB9OworCQk4NUE1QzU1NjBBOTAzMEJCMDBGOTFGMkMgLyogRE9NRWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUE1QzU1NzBBOTAzMEJCMDBGOTFGMkMgLyogRE9N
RWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01F
bGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUE4NUFGNzBBOTAyOTA0
MDBBNUNGM0EgLyogRE9NTm9kZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTU5vZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QTg1QUY4
MEE5MDI5MDQwMEE1Q0YzQSAvKiBET01Ob2RlTGlzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBET01Ob2RlTGlzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODVDQTk2QjYwQTk2MjFBNjAwNjkwQ0NGIC8qIERPTUVudGl0eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRW50aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg1Q0E5NkI3MEE5NjIxQTYwMDY5MENDRiAvKiBET01FbnRpdHkubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRW50aXR5Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUNBOTZFODBBOTYyNEU5MDA2OTBDQ0YgLyogRE9N
Tm90YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU5vdGF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1Q0E5NkU5MEE5NjI0RTkwMDY5MEND
RiAvKiBET01Ob3RhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBET01Ob3RhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVDQTk3
NUEwQTk2MkU1NDAwNjkwQ0NGIC8qIERPTURvY3VtZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NRG9jdW1lbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTg1Q0E5NzVCMEE5NjJFNTQwMDY5MENDRiAvKiBET01Eb2N1bWVudFR5cGUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRG9jdW1lbnRUeXBl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUQzODlCMDBBOTkxQTdGMDAyODIx
NDUgLyogRE9NQXR0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQXR0
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUQzODlCMTBBOTkxQTdGMDAyODIx
NDUgLyogRE9NQXR0ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBET01BdHRyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NUVDOUFGODBBNzFB
MkM2MDBFRUVBRUQgLyogRm9udERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1RUM5QUY5MEE3
MUEyQzYwMEVFRUFFRCAvKiBMYW5ndWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTGFuZ3VhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVGNTZBNzgw
QTk4Q0UzNzAwQURCNjBBIC8qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1RjU2QTc5MEE5OENFMzcwMEFEQjYwQSAvKiBET01Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzAzMkNDNzA5QUVDMzQzMDBGODJBMTggLyogUGF0aENHLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhdGhDRy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzMDMyQ0M5MDlBRUMzNEIwMEY4MkExOCAvKiBQYXRoLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTMwNUIyNEMwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRpbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zOTkwLDYgKzQwNTIsNTcgQEAKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwogCQl9OworCQk4NTRGMTJBQzBBOEVCQzE4MDAwOTQwQjUgLyogQ29yZSAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJODUyNkQ2NUMwQThG
RTU1QTAwOTIzNEIxIC8qIERPTUNoYXJhY3RlckRhdGEuaCAqLywKKwkJCQk4NTI2RDY1RDBBOEZF
NTVBMDA5MjM0QjEgLyogRE9NQ2hhcmFjdGVyRGF0YS5tbSAqLywKKwkJCQk4NTZDODk2QTBBOTBF
MTg0MDA1QzY4N0IgLyogRE9NRG9jdW1lbnQuaCAqLywKKwkJCQk4NTZDODk2QjBBOTBFMTg0MDA1
QzY4N0IgLyogRE9NRG9jdW1lbnQubW0gKi8sCisJCQkJODVBNUM1NTYwQTkwMzBCQjAwRjkxRjJD
IC8qIERPTUVsZW1lbnQuaCAqLywKKwkJCQk4NUE1QzU1NzBBOTAzMEJCMDBGOTFGMkMgLyogRE9N
RWxlbWVudC5tbSAqLywKKwkJCQk4NTM5QjUwNjBBOTAzRDQ1MDAzNjZDMkQgLyogRE9NRE9NSW1w
bGVtZW50YXRpb24uaCAqLywKKwkJCQk4NTM5QjUwNzBBOTAzRDQ1MDAzNjZDMkQgLyogRE9NRE9N
SW1wbGVtZW50YXRpb24ubW0gKi8sCisJCQkJODUyNkQ3NjIwQThGRjM5MjAwOTIzNEIxIC8qIERP
TU5hbWVkTm9kZU1hcC5oICovLAorCQkJCTg1MjZENzYzMEE4RkYzOTIwMDkyMzRCMSAvKiBET01O
YW1lZE5vZGVNYXAubW0gKi8sCisJCQkJODU2Qzg5RkEwQTkwRjA2ODAwNUM2ODdCIC8qIERPTU5v
ZGUuaCAqLywKKwkJCQk4NTZDODlGQjBBOTBGMDY4MDA1QzY4N0IgLyogRE9NTm9kZS5tbSAqLywK
KwkJCQk4NUE4NUFGNzBBOTAyOTA0MDBBNUNGM0EgLyogRE9NTm9kZUxpc3QuaCAqLywKKwkJCQk4
NUE4NUFGODBBOTAyOTA0MDBBNUNGM0EgLyogRE9NTm9kZUxpc3QubW0gKi8sCisJCQkJODU2QzhB
RTIwQTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5oICovLAorCQkJCTg1NkM4QUUzMEE5MTI2
NDkwMDVDNjg3QiAvKiBET01PYmplY3QubW0gKi8sCisJCQkJODUyNkQ1RUYwQThGREIyRDAwOTIz
NEIxIC8qIERPTVRleHQuaCAqLywKKwkJCQk4NTI2RDVGMDBBOEZEQjJFMDA5MjM0QjEgLyogRE9N
VGV4dC5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gQ29yZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CisJCTg1QjIzMjI2MEE4QkYzQTEwMEZERjQ3QiAvKiBEZXJpdmVkIFNvdXJj
ZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTg1RDM4
OUIwMEE5OTFBN0YwMDI4MjE0NSAvKiBET01BdHRyLmggKi8sCisJCQkJODVEMzg5QjEwQTk5MUE3
RjAwMjgyMTQ1IC8qIERPTUF0dHIubW0gKi8sCisJCQkJODUwODlDQ0YwQTk4QzQyNzAwQTI3NUFB
IC8qIERPTUNEQVRBU2VjdGlvbi5oICovLAorCQkJCTg1MDg5Q0QwMEE5OEM0MjcwMEEyNzVBQSAv
KiBET01DREFUQVNlY3Rpb24ubW0gKi8sCisJCQkJODUwODlDRDEwQTk4QzQyNzAwQTI3NUFBIC8q
IERPTUNvbW1lbnQuaCAqLywKKwkJCQk4NTA4OUNEMjBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ29t
bWVudC5tbSAqLywKKwkJCQk4NTA4OUNEMzBBOThDNDI4MDBBMjc1QUEgLyogRE9NRG9jdW1lbnRG
cmFnbWVudC5oICovLAorCQkJCTg1MDg5Q0Q0MEE5OEM0MjgwMEEyNzVBQSAvKiBET01Eb2N1bWVu
dEZyYWdtZW50Lm1tICovLAorCQkJCTg1Q0E5NzVBMEE5NjJFNTQwMDY5MENDRiAvKiBET01Eb2N1
bWVudFR5cGUuaCAqLywKKwkJCQk4NUNBOTc1QjBBOTYyRTU0MDA2OTBDQ0YgLyogRE9NRG9jdW1l
bnRUeXBlLm1tICovLAorCQkJCTg1Q0E5NkI2MEE5NjIxQTYwMDY5MENDRiAvKiBET01FbnRpdHku
aCAqLywKKwkJCQk4NUNBOTZCNzBBOTYyMUE2MDA2OTBDQ0YgLyogRE9NRW50aXR5Lm1tICovLAor
CQkJCTg1MDg5Q0Q1MEE5OEM0MjgwMEEyNzVBQSAvKiBET01FbnRpdHlSZWZlcmVuY2UuaCAqLywK
KwkJCQk4NTA4OUNENjBBOThDNDI4MDBBMjc1QUEgLyogRE9NRW50aXR5UmVmZXJlbmNlLm1tICov
LAorCQkJCTg1Q0E5NkU4MEE5NjI0RTkwMDY5MENDRiAvKiBET01Ob3RhdGlvbi5oICovLAorCQkJ
CTg1Q0E5NkU5MEE5NjI0RTkwMDY5MENDRiAvKiBET01Ob3RhdGlvbi5tbSAqLywKKwkJCQk4NUY1
NkE3ODBBOThDRTM3MDBBREI2MEEgLyogRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggKi8sCisJ
CQkJODVGNTZBNzkwQTk4Q0UzNzAwQURCNjBBIC8qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5t
bSAqLywKKwkJCSk7CisJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CisJCQlwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZTsKKwkJCXNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
CisJCX07CiAJCTkzMDMyQ0NDMDlBRUMzNjIwMEY4MkExOCAvKiBjZyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC00OTc3LDkgKzUwOTAsOSBAQAogCQlCQzFB
Mzc5NDA5N0M2RkM0MDAxOUYzRDggLyogb2JqYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCi0JCQkJMUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlw
dE9iamVjdC5oICovLAotCQkJCTFDQUYzNDdGMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRP
YmplY3QubW0gKi8sCi0JCQkJMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9i
amVjdFByaXZhdGUuaCAqLywKKwkJCQk4NUIyMzIyNjBBOEJGM0ExMDBGREY0N0IgLyogRGVyaXZl
ZCBTb3VyY2VzICovLAorCQkJCTg1NEYxMkFDMEE4RUJDMTgwMDA5NDBCNSAvKiBDb3JlICovLAor
CQkJCTg1OUI3RkI5MEE4RDI4ODgwMEE1RjFFQSAvKiBDb2RlR2VuZXJhdG9yT2JqQy5wbSAqLywK
IAkJCQlCQzFBMzc5NzA5N0M3MTVGMDAxOUYzRDggLyogRE9NLmggKi8sCiAJCQkJQkMxQTM3OTgw
OTdDNzE1RjAwMTlGM0Q4IC8qIERPTS5tbSAqLywKIAkJCQlCQzFBMzc5OTA5N0M3MTVGMDAxOUYz
RDggLyogRE9NQ29yZS5oICovLApAQCAtNTAwOSw2ICs1MTIyLDkgQEAKIAkJCQkxQTFEMTM3RTBB
NTMyNTUyMDA2NEJGNUYgLyogRE9NWFBhdGguaCAqLywKIAkJCQkxQTFEMTM3RjBBNTMyNTUyMDA2
NEJGNUYgLyogRE9NWFBhdGgubW0gKi8sCiAJCQkJMUExRDEzQzkwQTUzMjkwOTAwNjRCRjVGIC8q
IERPTVhQYXRoSW50ZXJuYWwuaCAqLywKKwkJCQkxQ0FGMzQ3RTBBNkM0MDUyMDBBQkUwNkUgLyog
V2ViU2NyaXB0T2JqZWN0LmggKi8sCisJCQkJMUNBRjM0N0YwQTZDNDA1MjAwQUJFMDZFIC8qIFdl
YlNjcmlwdE9iamVjdC5tbSAqLywKKwkJCQkxQ0FGMzQ4MDBBNkM0MDUyMDBBQkUwNkUgLyogV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBvYmpjOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTU0ODksNiArNTYwNSw3IEBACiAJCQkJODUwMzFCMjcw
QTQ0RUZDNzAwRjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50LmggKi8sCiAJCQkJNjU1MEI2OTMw
OTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5jcHAgKi8sCiAJCQkJNjU1MEI2OTQwOTlE
RjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5oICovLAorCQkJCTg1MDg5Q0M5MEE5OEMyQUIw
MEEyNzVBQSAvKiBDREFUQVNlY3Rpb24uaWRsICovLAogCQkJCTY1NTBCNjk1MDk5REYwMjcwMDkw
RDc4MSAvKiBDaGFyYWN0ZXJEYXRhLmNwcCAqLywKIAkJCQk2NTUwQjY5NjA5OURGMDI3MDA5MEQ3
ODEgLyogQ2hhcmFjdGVyRGF0YS5oICovLAogCQkJCTkzRUVDMUU2MDlDMjg3NzcwMEM1MTVEMSAv
KiBDaGFyYWN0ZXJEYXRhLmlkbCAqLywKQEAgLTU0OTksNiArNTYxNiw3IEBACiAJCQkJODUwMzFC
MkEwQTQ0RUZDNzAwRjk5MkUwIC8qIENsaXBib2FyZEV2ZW50LmggKi8sCiAJCQkJNjU1MEI2OTcw
OTlERjAyNzAwOTBENzgxIC8qIENvbW1lbnQuY3BwICovLAogCQkJCTY1NTBCNjk4MDk5REYwMjcw
MDkwRDc4MSAvKiBDb21tZW50LmggKi8sCisJCQkJODUwODlDQzcwQTk4QzIyNjAwQTI3NUFBIC8q
IENvbW1lbnQuaWRsICovLAogCQkJCUE4MTg3MjE0MDk3N0QzQzAwMDU4MjZEOSAvKiBDb250YWlu
ZXJOb2RlLmNwcCAqLywKIAkJCQlBODE4NzIxMTA5NzdEM0MwMDA1ODI2RDkgLyogQ29udGFpbmVy
Tm9kZS5oICovLAogCQkJCUE4QzRBN0Y4MDlENTYzMjcwMDAzQUM4RCAvKiBDU1NNYXBwZWRBdHRy
aWJ1dGVEZWNsYXJhdGlvbi5jcHAgKi8sCkBAIC01NTI3LDYgKzU2NDUsNyBAQAogCQkJCTkzRUVD
MUVCMDlDMjg3NzcwMEM1MTVEMSAvKiBFbnRpdHkuaWRsICovLAogCQkJCUE4RUE3RUI5MEExOTQ1
RDAwMEE4RUY1RiAvKiBFbnRpdHlSZWZlcmVuY2UuY3BwICovLAogCQkJCUE4RUE3RUI4MEExOTQ1
RDAwMEE4RUY1RiAvKiBFbnRpdHlSZWZlcmVuY2UuaCAqLywKKwkJCQk4NTA4OUNDQjBBOThDMzNB
MDBBMjc1QUEgLyogRW50aXR5UmVmZXJlbmNlLmlkbCAqLywKIAkJCQk4NTAzMUIyQjBBNDRFRkM3
MDBGOTkyRTAgLyogRXZlbnQuY3BwICovLAogCQkJCTg1MDMxQjJDMEE0NEVGQzcwMEY5OTJFMCAv
KiBFdmVudC5oICovLAogCQkJCTE0RTgzNkQyMDlGODUxMjAwMEI4NUFFNCAvKiBFdmVudC5pZGwg
Ki8sCkBAIC02MzkzLDYgKzY1MTIsMTggQEAKIAkJCQlCQ0FBOTBBMDBBN0VCMDNBMDA4QjEyMjkg
LyogUGxhdGZvcm1TY3JvbGxCYXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RUM5QUZBMEE3MUEy
QzYwMEVFRUFFRCAvKiBGb250RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFQzlBRkIwQTcx
QTJDNjAwRUVFQUVEIC8qIExhbmd1YWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTI2RDVGMTBB
OEZEQjJFMDA5MjM0QjEgLyogRE9NVGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODUyNkQ2NUUw
QThGRTU1QTAwOTIzNEIxIC8qIERPTUNoYXJhY3RlckRhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTg1MjZENzY0MEE4RkYzOTIwMDkyMzRCMSAvKiBET01OYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTg1QTg1QUY5MEE5MDI5MDQwMEE1Q0YzQSAvKiBET01Ob2RlTGlzdC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJODVBNUM1NTgwQTkwMzBCQjAwRjkxRjJDIC8qIERPTUVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTg1MzlCNTA4MEE5MDNENDUwMDM2NkMyRCAvKiBET01ET01JbXBs
ZW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU2Qzg5NkMwQTkwRTE4NDAwNUM2ODdC
IC8qIERPTURvY3VtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTZDODlGQzBBOTBGMDY4MDA1
QzY4N0IgLyogRE9NTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU2QzhBRTQwQTkxMjY0OTAw
NUM2ODdCIC8qIERPTU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODVDQTk2QjgwQTk2MjFB
NjAwNjkwQ0NGIC8qIERPTUVudGl0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODVDQTk2RUEwQTk2
MjRFOTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUNBOTc1
QzBBOTYyRTU0MDA2OTBDQ0YgLyogRE9NRG9jdW1lbnRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUI3RkM2OTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBQjdGQzZDMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTFBQjdGQzZGMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJl
c3Npb25Ob2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTY0MTMsNiArNjU0NCwxMiBAQAogCQkJCTFB
Q0U1M0Y3MEE4RDE5NDcwMDIyOTQ3RCAvKiBKU1hNTFNlcmlhbGl6ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBNzUwRDVEMEE5MERFRTEwMDBGRjIxNSAvKiBKU1RyZWVXYWxrZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBNzUwRDhFMEE5MEU1MjEwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJODUwODlDRDcwQTk4QzQyODAwQTI3NUFBIC8qIERPTUNEQVRB
U2VjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJODUwODlDRDkwQTk4QzQyODAwQTI3NUFBIC8q
IERPTUNvbW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1MDg5Q0RCMEE5OEM0MjgwMEEyNzVB
QSAvKiBET01Eb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTA4OUNERDBB
OThDNDI4MDBBMjc1QUEgLyogRE9NRW50aXR5UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4NUY1NkE3QTBBOThDRTM3MDBBREI2MEEgLyogRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk4NUQzODlCMjBBOTkxQTdGMDAyODIxNDUgLyogRE9NQXR0ci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC02NDQ2LDEyICs2NTgzLDYgQEAKIAkJMDg2N0Q2OTBGRTg0MDI4
RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0gewogCQkJaXNhID0gUEJYUHJvamVjdDsK
IAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDlDMjg0MzA4OTAyQjExMDA4QTlFRkMgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJXZWJDb3JlIiAqLzsKLQkJ
CWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQl9OwotCQkJYnVpbGRTdHlsZXMgPSAoCi0JCQkJQkNEMzE4
ODYwQTkyOTA5NDAwQkYxRDVGIC8qIERldmVsb3BtZW50ICovLAotCQkJCUJDRDMxODg3MEE5Mjkw
OTQwMEJGMUQ1RiAvKiBEZXBsb3ltZW50ICovLAotCQkJKTsKIAkJCWhhc1NjYW5uZWRGb3JFbmNv
ZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0gKAogCQkJCUVuZ2xpc2gsCkBAIC02NTEwLDYg
KzY2NDEsOSBAQAogCQkJCTFDRDQ0MThGMEE0Q0U3NkYwMEEwMDdBQiAvKiBub3J0aFNvdXRoUmVz
aXplQ3Vyc29yLnRpZmYgaW4gUmVzb3VyY2VzICovLAogCQkJCTFDRDQ0MTkwMEE0Q0U3NkYwMEEw
MDdBQiAvKiBub3J0aFdlc3RTb3V0aEVhc3RSZXNpemVDdXJzb3IudGlmZiBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkJMUE3NTBEODgwQTkwRTM5NDAwMEZGMjE1IC8qIE5vZGVJdGVyYXRvci5pZGwgaW4g
UmVzb3VyY2VzICovLAorCQkJCTg1MDg5Q0M4MEE5OEMyMjYwMEEyNzVBQSAvKiBDb21tZW50Lmlk
bCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJODUwODlDQ0EwQTk4QzJBQjAwQTI3NUFBIC8qIENEQVRB
U2VjdGlvbi5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCTg1MDg5Q0NDMEE5OEMzM0EwMEEyNzVB
QSAvKiBFbnRpdHlSZWZlcmVuY2UuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTcyNjksNiArNzQw
MywxOCBAQAogCQkJCUJDQUE5MEMzMEE3RUJBNjAwMDhCMTIyOSAvKiBTY3JvbGxCYXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTNCMEZEOEEwQTc1OUJFRDAwODBBRDQ0IC8qIFN0cmluZ0ltcGxN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0IwRkQ4QjBBNzU5QkVEMDA4MEFENDQgLyogU3Ry
aW5nTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODUyNkQ1RjIwQThGREIyRTAwOTIzNEIxIC8q
IERPTVRleHQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTI2RDY1RjBBOEZFNTVBMDA5MjM0QjEg
LyogRE9NQ2hhcmFjdGVyRGF0YS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1MjZENzY1MEE4RkYz
OTIwMDkyMzRCMSAvKiBET01OYW1lZE5vZGVNYXAubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NUE4
NUFGQTBBOTAyOTA1MDBBNUNGM0EgLyogRE9NTm9kZUxpc3QubW0gaW4gU291cmNlcyAqLywKKwkJ
CQk4NUE1QzU1OTBBOTAzMEJCMDBGOTFGMkMgLyogRE9NRWxlbWVudC5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTg1MzlCNTA5MEE5MDNENDUwMDM2NkMyRCAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTg1NkM4OTZEMEE5MEUxODQwMDVDNjg3QiAvKiBET01Eb2N1
bWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1NkM4OUZEMEE5MEYwNjgwMDVDNjg3QiAvKiBE
T01Ob2RlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODU2QzhBRTUwQTkxMjY0OTAwNUM2ODdCIC8q
IERPTU9iamVjdC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1Q0E5NkI5MEE5NjIxQTYwMDY5MEND
RiAvKiBET01FbnRpdHkubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NUNBOTZFQjBBOTYyNEU5MDA2
OTBDQ0YgLyogRE9NTm90YXRpb24ubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NUNBOTc1RDBBOTYy
RTU0MDA2OTBDQ0YgLyogRE9NRG9jdW1lbnRUeXBlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFC
N0ZDNjgwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBQjdGQzZCMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUFCN0ZDNkUwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVz
c2lvbk5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03MjkxLDYgKzc0MzcsMTIgQEAKIAkJCQkx
QTc1MEQ4RDBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUE3NTBERDQwQTkwRTcyOTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yQ3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNzUwRTM0MEE5MEY4OUYwMDBGRjIxNSAvKiBKU1Ry
ZWVXYWxrZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODUwODlDRDgwQTk4QzQyODAw
QTI3NUFBIC8qIERPTUNEQVRBU2VjdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1MDg5Q0RB
MEE5OEM0MjgwMEEyNzVBQSAvKiBET01Db21tZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODUw
ODlDREMwQTk4QzQyODAwQTI3NUFBIC8qIERPTURvY3VtZW50RnJhZ21lbnQubW0gaW4gU291cmNl
cyAqLywKKwkJCQk4NTA4OUNERTBBOThDNDI4MDBBMjc1QUEgLyogRE9NRW50aXR5UmVmZXJlbmNl
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODVGNTZBN0IwQTk4Q0UzNzAwQURCNjBBIC8qIERPTVBy
b2Nlc3NpbmdJbnN0cnVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1RDM4OUIzMEE5OTFB
N0YwMDI4MjE0NSAvKiBET01BdHRyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T00ubW0JKHJldmlzaW9uIDE1OTU5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAwNiBKYW1lcyBHLiBTcGV0aCAoc3BldGhAZW5kLmNvbSkKKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMTMgKzM0LDExIEBACiAjaW1wb3J0ICJDb21t
ZW50LmgiCiAjaW1wb3J0ICJET01FdmVudHNJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NSW1wbGVt
ZW50YXRpb25Gcm9udC5oIgorI2ltcG9ydCAiRE9NSFRNTC5oIgogI2ltcG9ydCAiRE9NSW50ZXJu
YWwuaCIKICNpbXBvcnQgIkRPTVByaXZhdGUuaCIKICNpbXBvcnQgIkRvY3VtZW50LmgiCiAjaW1w
b3J0ICJEb2N1bWVudEZyYWdtZW50LmgiCi0jaW1wb3J0ICJEb2N1bWVudFR5cGUuaCIKLSNpbXBv
cnQgIkVudGl0eS5oIgotI2ltcG9ydCAiRW50aXR5UmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJFdmVu
dC5oIgogI2ltcG9ydCAiRXZlbnRMaXN0ZW5lci5oIgogI2ltcG9ydCAiRm91bmRhdGlvbkV4dHJh
cy5oIgpAQCAtNTEsMzMgKzUwLDExMyBAQAogI2ltcG9ydCAiTm9kZUZpbHRlckNvbmRpdGlvbi5o
IgogI2ltcG9ydCAiTm9kZUl0ZXJhdG9yLmgiCiAjaW1wb3J0ICJOb2RlTGlzdC5oIgotI2ltcG9y
dCAiTm90YXRpb24uaCIKLSNpbXBvcnQgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogI2ltcG9y
dCAiUXVhbGlmaWVkTmFtZS5oIgogI2ltcG9ydCAiUmFuZ2UuaCIKICNpbXBvcnQgIlJlbmRlcklt
YWdlLmgiCiAjaW1wb3J0ICJUcmVlV2Fsa2VyLmgiCiAjaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmgiCisKKworLy8gRnJvbSBvbGQgRE9NQ29yZS5oCisjaW1wb3J0ICJET01BdHRyLmgi
CisjaW1wb3J0ICJET01DaGFyYWN0ZXJEYXRhLmgiCisjaW1wb3J0ICJET01ET01JbXBsZW1lbnRh
dGlvbi5oIgorI2ltcG9ydCAiRE9NRG9jdW1lbnQuaCIKKyNpbXBvcnQgIkRPTUVsZW1lbnQuaCIK
KyNpbXBvcnQgIkRPTU5hbWVkTm9kZU1hcC5oIgorI2ltcG9ydCAiRE9NTm9kZS5oIgorI2ltcG9y
dCAiRE9NTm9kZUxpc3QuaCIKKyNpbXBvcnQgIkRPTU9iamVjdC5oIgorI2ltcG9ydCAiRE9NUHJv
Y2Vzc2luZ0luc3RydWN0aW9uLmgiCisjaW1wb3J0ICJET01UZXh0LmgiCisKKy8vIEdlbmVyYXRl
ZCBPYmplY3RpdmUtQyBCaW5kaW5ncworI2ltcG9ydCAiRE9NQ0RBVEFTZWN0aW9uLmgiCisjaW1w
b3J0ICJET01Db21tZW50LmgiCisjaW1wb3J0ICJET01Eb2N1bWVudEZyYWdtZW50LmgiCisjaW1w
b3J0ICJET01Eb2N1bWVudFR5cGUuaCIKKyNpbXBvcnQgIkRPTUVudGl0eS5oIgorI2ltcG9ydCAi
RE9NRW50aXR5UmVmZXJlbmNlLmgiCisjaW1wb3J0ICJET01Ob3RhdGlvbi5oIgorCisKKy8vIEZy
b20gb2xkIERPTUhUTUwuaAorLy8jaW1wb3J0ICJET01IVE1MQW5jaG9yRWxlbWVudC5oIgorLy8j
aW1wb3J0ICJET01IVE1MQXBwbGV0RWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MQ29sbGVj
dGlvbi5oIgorLy8jaW1wb3J0ICJET01IVE1MRG9jdW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRN
TEVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTEZyYW1lRWxlbWVudC5oIgorLy8jaW1wb3J0
ICJET01IVE1MRnJhbWVTZXRFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxJRnJhbWVFbGVt
ZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxPYmplY3RFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRP
TUhUTUxPcHRpb25FbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxPcHRpb25zQ29sbGVjdGlv
bi5oIgorLy8jaW1wb3J0ICJET01IVE1MU2VsZWN0RWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01I
VE1MVGFibGVDYXB0aW9uRWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MVGFibGVDZWxsRWxl
bWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MVGFibGVDb2xFbGVtZW50LmgiCisvLyNpbXBvcnQg
IkRPTUhUTUxUYWJsZUVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTFRhYmxlUm93RWxlbWVu
dC5oIgorLy8jaW1wb3J0ICJET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oIgorCisvLyBHZW5l
cmF0ZWQgT2JqZWN0aXZlLUMgQmluZGluZ3MKKy8vI2ltcG9ydCAiRE9NSFRNTEFyZWFFbGVtZW50
LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxCUkVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTEJh
c2VFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxCYXNlRm9udEVsZW1lbnQuaCIKKy8vI2lt
cG9ydCAiRE9NSFRNTEJvZHlFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxCdXR0b25FbGVt
ZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxETGlzdEVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9N
SFRNTERpcmVjdG9yeUVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTERpdkVsZW1lbnQuaCIK
Ky8vI2ltcG9ydCAiRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1M
Rm9udEVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTEZvcm1FbGVtZW50LmgiCisvLyNpbXBv
cnQgIkRPTUhUTUxIUkVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTEhlYWRFbGVtZW50Lmgi
CisvLyNpbXBvcnQgIkRPTUhUTUxIZWFkaW5nRWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1M
SHRtbEVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTEltYWdlRWxlbWVudC5oIgorLy8jaW1w
b3J0ICJET01IVE1MSW5wdXRFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxJc0luZGV4RWxl
bWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MTElFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhU
TUxMYWJlbEVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTExlZ2VuZEVsZW1lbnQuaCIKKy8v
I2ltcG9ydCAiRE9NSFRNTExpbmtFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxNYXBFbGVt
ZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxNZW51RWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01I
VE1MTWV0YUVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTE1vZEVsZW1lbnQuaCIKKy8vI2lt
cG9ydCAiRE9NSFRNTE9MaXN0RWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MT2JqZWN0RWxl
bWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MT3B0R3JvdXBFbGVtZW50LmgiCisvLyNpbXBvcnQg
IkRPTUhUTUxQYXJhZ3JhcGhFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxQYXJhbUVsZW1l
bnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTFByZUVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRN
TFF1b3RlRWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MU2NyaXB0RWxlbWVudC5oIgorLy8j
aW1wb3J0ICJET01IVE1MU3R5bGVFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxUZXh0QXJl
YUVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTFRpdGxlRWxlbWVudC5oIgorLy8jaW1wb3J0
ICJET01IVE1MVUxpc3RFbGVtZW50LmgiCisKKwogI2ltcG9ydCA8b2JqYy9vYmpjLWNsYXNzLmg+
CiAKIHVzaW5nIFdlYkNvcmU6OkF0b21pY1N0cmluZzsKIHVzaW5nIFdlYkNvcmU6OkF0b21pY1N0
cmluZ0ltcGw7CiB1c2luZyBXZWJDb3JlOjpBdHRyOwotdXNpbmcgV2ViQ29yZTo6Q2hhcmFjdGVy
RGF0YTsKLXVzaW5nIFdlYkNvcmU6OkRlcHJlY2F0ZWRWYWx1ZUxpc3Q7CiB1c2luZyBXZWJDb3Jl
OjpEb2N1bWVudDsKIHVzaW5nIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ7Ci11c2luZyBXZWJD
b3JlOjpEb2N1bWVudFR5cGU7CiB1c2luZyBXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbkZyb250
OwogdXNpbmcgV2ViQ29yZTo6RWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6OkVudGl0eTsKIHVzaW5n
IFdlYkNvcmU6OkV2ZW50OwogdXNpbmcgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcjsKIHVzaW5nIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGU7CiB1c2luZyBXZWJDb3JlOjpIVE1MRG9jdW1lbnQ7CiB1c2lu
ZyBXZWJDb3JlOjpIVE1MRWxlbWVudDsKIHVzaW5nIFdlYkNvcmU6OkZyYW1lTWFjOwotdXNpbmcg
V2ViQ29yZTo6SW50UmVjdDsKIHVzaW5nIFdlYkNvcmU6OktVUkw7CiB1c2luZyBXZWJDb3JlOjpO
YW1lZE5vZGVNYXA7CiB1c2luZyBXZWJDb3JlOjpOb2RlOwpAQCAtODUsMzIgKzE2NCwxNSBAQCB1
c2luZyBXZWJDb3JlOjpOb2RlRmlsdGVyOwogdXNpbmcgV2ViQ29yZTo6Tm9kZUZpbHRlckNvbmRp
dGlvbjsKIHVzaW5nIFdlYkNvcmU6Ok5vZGVJdGVyYXRvcjsKIHVzaW5nIFdlYkNvcmU6Ok5vZGVM
aXN0OwotdXNpbmcgV2ViQ29yZTo6Tm90YXRpb247Ci11c2luZyBXZWJDb3JlOjpQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb247CiB1c2luZyBXZWJDb3JlOjpRdWFsaWZpZWROYW1lOwogdXNpbmcgV2ViQ29y
ZTo6UmFuZ2U7CiB1c2luZyBXZWJDb3JlOjpSZW5kZXJJbWFnZTsKIHVzaW5nIFdlYkNvcmU6OlJl
bmRlck9iamVjdDsKIHVzaW5nIFdlYkNvcmU6OlN0cmluZzsKLXVzaW5nIFdlYkNvcmU6OlRleHQ7
CiB1c2luZyBXZWJDb3JlOjpUcmVlV2Fsa2VyOwogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6
SFRNTE5hbWVzOwogCi1AaW50ZXJmYWNlIERPTUF0dHIgKFdlYkNvcmVJbnRlcm5hbCkKLSsgKERP
TUF0dHIgKilfYXR0cldpdGg6KEF0dHIgKilpbXBsOwotLSAoQXR0ciAqKV9hdHRyOwotQGVuZAot
Ci1AaW50ZXJmYWNlIERPTURvY3VtZW50VHlwZSAoV2ViQ29yZUludGVybmFsKQotLSAoRG9jdW1l
bnRUeXBlICopX2RvY3VtZW50VHlwZTsKLUBlbmQKLQotQGludGVyZmFjZSBET01JbXBsZW1lbnRh
dGlvbiAoV2ViQ29yZUludGVybmFsKQotKyAoRE9NSW1wbGVtZW50YXRpb24gKilfRE9NSW1wbGVt
ZW50YXRpb25XaXRoOihET01JbXBsZW1lbnRhdGlvbkZyb250ICopaW1wbDsKLS0gKERPTUltcGxl
bWVudGF0aW9uRnJvbnQgKilfRE9NSW1wbGVtZW50YXRpb247Ci1AZW5kCi0KIGNsYXNzIE9iakNF
dmVudExpc3RlbmVyIDogcHVibGljIEV2ZW50TGlzdGVuZXIgewogcHVibGljOgogICAgIHN0YXRp
YyBPYmpDRXZlbnRMaXN0ZW5lciAqZmluZChpZCA8RE9NRXZlbnRMaXN0ZW5lcj4pOwpAQCAtMTMx
LDQyICsxOTMsMTAgQEAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDbGFzcwog
c3RhdGljIE9iakNDbGFzc01hcCogZWxlbWVudENsYXNzTWFwOwogc3RhdGljIExpc3RlbmVyTWFw
KiBsaXN0ZW5lck1hcDsKIAorCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ly8gRE9NT2JqZWN0CiAKLUBpbXBsZW1lbnRhdGlvbiBET01PYmplY3QKLQotLy8gUHJldmVudCBj
cmVhdGlvbiBvZiBET00gb2JqZWN0cyBieSBjbGllbnRzIHdobyBqdXN0ICJbW3h4eCBhbGxvY10g
aW5pdF0iLgotLSAoaWQpaW5pdAotewotICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0dlbmVyaWNF
eGNlcHRpb24gZm9ybWF0OkAiK1slQCBpbml0XTogc2hvdWxkIG5ldmVyIGJlIHVzZWQiLCBOU1N0
cmluZ0Zyb21DbGFzcyhbc2VsZiBjbGFzc10pXTsKLSAgICBbc2VsZiByZWxlYXNlXTsKLSAgICBy
ZXR1cm4gbmlsOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7
Ci0gICAgICAgIHJlbW92ZURPTVdyYXBwZXIoX2ludGVybmFsKTsKLSAgICB9Ci0gICAgW3N1cGVy
IGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkg
ewotICAgICAgICByZW1vdmVET01XcmFwcGVyKF9pbnRlcm5hbCk7Ci0gICAgfQotICAgIFtzdXBl
ciBmaW5hbGl6ZV07Ci19Ci0KLS0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQotewot
ICAgIHJldHVybiBbc2VsZiByZXRhaW5dOwotfQotCi1AZW5kCi0KIEBpbXBsZW1lbnRhdGlvbiBE
T01PYmplY3QgKFdlYkNvcmVJbnRlcm5hbCkKIAogLSAoaWQpX2luaXQKQEAgLTE3NiwyNzEgKzIw
NiwxMCBAQCBzdGF0aWMgTGlzdGVuZXJNYXAqIGxpc3RlbmVyTWFwOwogCiBAZW5kCiAKKwogLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTU5vZGUKIAotQGltcGxlbWVu
dGF0aW9uIERPTU5vZGUKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkg
ewotICAgICAgICBET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQot
ICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6ZQotewotICAgIGlmIChf
aW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpLT5kZXJlZigp
OwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChOU1N0cmluZyAqKWRlc2Ny
aXB0aW9uCi17Ci0gICAgaWYgKCFfaW50ZXJuYWwpIHsKLSAgICAgICAgcmV0dXJuIFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiBudWxsPiIsCi0gICAgICAgICAgICBbW3NlbGYgY2xh
c3NdIGRlc2NyaXB0aW9uXSwgc2VsZl07Ci0gICAgfQotICAgIE5TU3RyaW5nICp2YWx1ZSA9IFtz
ZWxmIG5vZGVWYWx1ZV07Ci0gICAgaWYgKHZhbHVlKSB7Ci0gICAgICAgIHJldHVybiBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQCBbJUBdOiAlcCAnJUAnPiIsCi0gICAgICAgICAgICBb
W3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9uXSwgW3NlbGYgbm9kZU5hbWVdLCBfaW50ZXJuYWwsIHZh
bHVlXTsKLSAgICB9Ci0gICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVA
IFslQF06ICVwPiIsCi0gICAgICAgIFtbc2VsZiBjbGFzc10gZGVzY3JpcHRpb25dLCBbc2VsZiBu
b2RlTmFtZV0sIF9pbnRlcm5hbF07Ci19Ci0KLS0gKE5TU3RyaW5nICopbm9kZU5hbWUKLXsKLSAg
ICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2RlTmFtZSgpOwotfQotCi0tIChOU1N0cmluZyAqKW5v
ZGVWYWx1ZQotewotICAgIC8vIERvY3VtZW50YXRpb24gc2F5cyB3ZSBjYW4gcmFpc2UgYSBET01T
VFJJTkdfU0laRV9FUlIuCi0gICAgLy8gSG93ZXZlciwgdGhlIGxvd2VyIGxheWVyIGRvZXMgbm90
IHJlcG9ydCB0aGF0IGVycm9yIHVwIHRvIHVzLgotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPm5v
ZGVWYWx1ZSgpOwotfQotCi0tICh2b2lkKXNldE5vZGVWYWx1ZTooTlNTdHJpbmcgKilzdHJpbmcK
LXsKLSAgICBBU1NFUlQoc3RyaW5nKTsKLSAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBbc2VsZiBfbm9kZV0tPnNldE5vZGVWYWx1ZShzdHJpbmcsIGVjKTsKLSAgICByYWlzZU9u
RE9NRXJyb3IoZWMpOwotfQotCi0tICh1bnNpZ25lZCBzaG9ydClub2RlVHlwZQotewotICAgIHJl
dHVybiBbc2VsZiBfbm9kZV0tPm5vZGVUeXBlKCk7Ci19Ci0KLS0gKERPTU5vZGUgKilwYXJlbnRO
b2RlCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPnBhcmVu
dE5vZGUoKV07Ci19Ci0KLS0gKERPTU5vZGVMaXN0ICopY2hpbGROb2RlcwotewotICAgIHJldHVy
biBbRE9NTm9kZUxpc3QgX25vZGVMaXN0V2l0aDpbc2VsZiBfbm9kZV0tPmNoaWxkTm9kZXMoKS5n
ZXQoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilmaXJzdENoaWxkCi17Ci0gICAgcmV0dXJuIFtET01O
b2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPmZpcnN0Q2hpbGQoKV07Ci19Ci0KLS0gKERPTU5v
ZGUgKilsYXN0Q2hpbGQKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9u
b2RlXS0+bGFzdENoaWxkKCldOwotfQotCi0tIChET01Ob2RlICopcHJldmlvdXNTaWJsaW5nCi17
Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPnByZXZpb3VzU2li
bGluZygpXTsKLX0KLQotLSAoRE9NTm9kZSAqKW5leHRTaWJsaW5nCi17Ci0gICAgcmV0dXJuIFtE
T01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPm5leHRTaWJsaW5nKCldOwotfQotCi0tIChE
T01OYW1lZE5vZGVNYXAgKilhdHRyaWJ1dGVzCi17Ci0gICAgLy8gRE9NIGxldmVsIDIgY29yZSBz
cGVjaWZpY2F0aW9uIHNheXM6IAotICAgIC8vIEEgTmFtZWROb2RlTWFwIGNvbnRhaW5pbmcgdGhl
IGF0dHJpYnV0ZXMgb2YgdGhpcyBub2RlIChpZiBpdCBpcyBhbiBFbGVtZW50KSBvciBudWxsIG90
aGVyd2lzZS4KLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChET01Eb2N1bWVudCAqKW93bmVyRG9j
dW1lbnQKLXsKLSAgICByZXR1cm4gW0RPTURvY3VtZW50IF9kb2N1bWVudFdpdGg6W3NlbGYgX25v
ZGVdLT5kb2N1bWVudCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKWluc2VydEJlZm9yZTooRE9NTm9k
ZSAqKW5ld0NoaWxkIDooRE9NTm9kZSAqKXJlZkNoaWxkCi17Ci0gICAgQVNTRVJUKG5ld0NoaWxk
KTsKLSAgICBBU1NFUlQocmVmQ2hpbGQpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgaWYgKFtzZWxmIF9ub2RlXS0+aW5zZXJ0QmVmb3JlKFtuZXdDaGlsZCBfbm9kZV0sIFtyZWZD
aGlsZCBfbm9kZV0sIGVjKSkKLSAgICAgICAgcmV0dXJuIG5ld0NoaWxkOwotICAgIHJhaXNlT25E
T01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoRE9NTm9kZSAqKXJlcGxhY2VD
aGlsZDooRE9NTm9kZSAqKW5ld0NoaWxkIDooRE9NTm9kZSAqKW9sZENoaWxkCi17Ci0gICAgQVNT
RVJUKG5ld0NoaWxkKTsKLSAgICBBU1NFUlQob2xkQ2hpbGQpOwotCi0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgaWYgKFtzZWxmIF9ub2RlXS0+cmVwbGFjZUNoaWxkKFtuZXdDaGlsZCBf
bm9kZV0sIFtvbGRDaGlsZCBfbm9kZV0sIGVjKSkKLSAgICAgICAgcmV0dXJuIG9sZENoaWxkOwot
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoRE9NTm9k
ZSAqKXJlbW92ZUNoaWxkOihET01Ob2RlICopb2xkQ2hpbGQKLXsKLSAgICBBU1NFUlQob2xkQ2hp
bGQpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKFtzZWxmIF9ub2RlXS0+
cmVtb3ZlQ2hpbGQoW29sZENoaWxkIF9ub2RlXSwgZWMpKQotICAgICAgICByZXR1cm4gb2xkQ2hp
bGQ7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChE
T01Ob2RlICopYXBwZW5kQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGlsZAotewotICAgIEFTU0VSVChu
ZXdDaGlsZCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpZiAoW3NlbGYgX25v
ZGVdLT5hcHBlbmRDaGlsZChbbmV3Q2hpbGQgX25vZGVdLCBlYykpCi0gICAgICAgIHJldHVybiBu
ZXdDaGlsZDsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBuaWw7Ci19Ci0K
LS0gKEJPT0wpaGFzQ2hpbGROb2RlcwotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmhhc0No
aWxkTm9kZXMoKTsKLX0KLQotLSAoRE9NTm9kZSAqKWNsb25lTm9kZTooQk9PTClkZWVwCi17Ci0g
ICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPmNsb25lTm9kZShkZWVw
KS5nZXQoKV07Ci19Ci0KLS0gKHZvaWQpbm9ybWFsaXplCi17Ci0gICAgW3NlbGYgX25vZGVdLT5u
b3JtYWxpemUoKTsKLX0KLQotLSAoQk9PTClpc1N1cHBvcnRlZDooTlNTdHJpbmcgKilmZWF0dXJl
IDooTlNTdHJpbmcgKil2ZXJzaW9uCi17Ci0gICAgQVNTRVJUKGZlYXR1cmUpOwotICAgIEFTU0VS
VCh2ZXJzaW9uKTsKLQotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmlzU3VwcG9ydGVkKGZlYXR1
cmUsIHZlcnNpb24pOwotfQotCi0tIChOU1N0cmluZyAqKW5hbWVzcGFjZVVSSQotewotICAgIHJl
dHVybiBbc2VsZiBfbm9kZV0tPm5hbWVzcGFjZVVSSSgpOwotfQotCi0tIChOU1N0cmluZyAqKXBy
ZWZpeAotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPnByZWZpeCgpOwotfQotCi0tICh2b2lk
KXNldFByZWZpeDooTlNTdHJpbmcgKilwcmVmaXgKLXsKLSAgICBBU1NFUlQocHJlZml4KTsKLQot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFN0cmluZyBwcmVmaXhTdHIocHJlZml4KTsK
LSAgICBbc2VsZiBfbm9kZV0tPnNldFByZWZpeChwcmVmaXhTdHIuaW1wbCgpLCBlYyk7Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAg
ICByZXR1cm4gW3NlbGYgX25vZGVdLT5sb2NhbE5hbWUoKTsKLX0KLQotLSAoQk9PTCloYXNBdHRy
aWJ1dGVzCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aGFzQXR0cmlidXRlcygpOwotfQot
Ci0tIChCT09MKWlzU2FtZU5vZGU6KERPTU5vZGUgKilvdGhlcgotewotICAgIHJldHVybiBbc2Vs
ZiBfbm9kZV0tPmlzU2FtZU5vZGUoW290aGVyIF9ub2RlXSk7Ci19Ci0KLS0gKEJPT0wpaXNFcXVh
bE5vZGU6KERPTU5vZGUgKilvdGhlcgotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmlzRXF1
YWxOb2RlKFtvdGhlciBfbm9kZV0pOwotfQotCi0tIChCT09MKWlzRGVmYXVsdE5hbWVzcGFjZToo
TlNTdHJpbmcgKiluYW1lc3BhY2VVUkkKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc0Rl
ZmF1bHROYW1lc3BhY2UobmFtZXNwYWNlVVJJKTsKLX0KLQotLSAoTlNTdHJpbmcgKilsb29rdXBQ
cmVmaXg6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2Rl
XS0+bG9va3VwUHJlZml4KG5hbWVzcGFjZVVSSSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbG9va3Vw
TmFtZXNwYWNlVVJJOihOU1N0cmluZyAqKXByZWZpeAotewotICAgIHJldHVybiBbc2VsZiBfbm9k
ZV0tPmxvb2t1cE5hbWVzcGFjZVVSSShwcmVmaXgpOwotfQotCi0tIChOU1N0cmluZyAqKXRleHRD
b250ZW50Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+dGV4dENvbnRlbnQoKTsKLX0KLQot
LSAodm9pZClzZXRUZXh0Q29udGVudDooTlNTdHJpbmcgKil0ZXh0Ci17Ci0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX25vZGVdLT5zZXRUZXh0Q29udGVudCh0ZXh0LCBlYyk7
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoTlNSZWN0KWJvdW5kaW5nQm94Ci17
Ci0gICAgV2ViQ29yZTo6UmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9ub2RlXS0+cmVu
ZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIpCi0gICAgICAgIHJldHVybiByZW5kZXJlci0+YWJz
b2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKLSAgICByZXR1cm4gTlNaZXJvUmVjdDsKLX0KLQotLSAo
TlNBcnJheSAqKWxpbmVCb3hSZWN0cwotewotICAgIFdlYkNvcmU6OlJlbmRlck9iamVjdCAqcmVu
ZGVyZXIgPSBbc2VsZiBfbm9kZV0tPnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyKSB7Ci0g
ICAgICAgIE5TTXV0YWJsZUFycmF5ICpyZXN1bHRzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdF07Ci0gICAgICAgIERlcHJlY2F0ZWRWYWx1ZUxpc3Q8SW50UmVjdD4gcmVjdHMgPSByZW5k
ZXJlci0+bGluZUJveFJlY3RzKCk7Ci0gICAgICAgIGlmICghcmVjdHMuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICBmb3IgKERlcHJlY2F0ZWRWYWx1ZUxpc3Q8SW50UmVjdD46OkNvbnN0SXRlcmF0
b3IgaXQgPSByZWN0cy5iZWdpbigpOyBpdCAhPSByZWN0cy5lbmQoKTsgKytpdCkKLSAgICAgICAg
ICAgICAgICBbcmVzdWx0cyBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDoqaXRdXTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gW3Jlc3VsdHMgYXV0b3JlbGVhc2VdOwotICAgIH0K
LSAgICByZXR1cm4gbmlsOwotfQotCi1AZW5kCi0KIHN0YXRpYyB2b2lkIGFkZEVsZW1lbnRDbGFz
cyhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWcsIENsYXNzIG9iakNDbGFzcykKIHsKICAgICBlbGVt
ZW50Q2xhc3NNYXAtPnNldCh0YWcubG9jYWxOYW1lKCkuaW1wbCgpLCBvYmpDQ2xhc3MpOwpAQCAt
NjYxLDEwMSArNDMwLDEwIEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWlj
U3QKIAogQGVuZAogCisKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBE
T01OYW1lZE5vZGVNYXAKIAotQGltcGxlbWVudGF0aW9uIERPTU5hbWVkTm9kZU1hcAotCi0tICh2
b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5h
bWVkTm9kZU1hcCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZGVh
bGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0g
ICAgICAgIERPTV9jYXN0PE5hbWVkTm9kZU1hcCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAg
IH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChOYW1lZE5vZGVNYXAgKilfbmFtZWRO
b2RlTWFwCi17Ci0gICAgcmV0dXJuIERPTV9jYXN0PE5hbWVkTm9kZU1hcCAqPihfaW50ZXJuYWwp
OwotfQotCi0tIChET01Ob2RlICopZ2V0TmFtZWRJdGVtOihOU1N0cmluZyAqKW5hbWUKLXsKLSAg
ICBBU1NFUlQobmFtZSk7Ci0KLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9u
YW1lZE5vZGVNYXBdLT5nZXROYW1lZEl0ZW0obmFtZSkuZ2V0KCldOwotfQotCi0tIChET01Ob2Rl
ICopc2V0TmFtZWRJdGVtOihET01Ob2RlICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7Ci0KLSAg
ICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPnNldE5hbWVkSXRlbShbYXJnIF9ub2RlXSwgZXhj
ZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbTooTlNTdHJpbmcg
KiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0g
ICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVN
YXBdLT5yZW1vdmVOYW1lZEl0ZW0obmFtZSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9k
ZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4Ci17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0
aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+aXRlbShpbmRleCkuZ2V0KCldOwotfQotCi0tICh1bnNp
Z25lZClsZW5ndGgKLXsKLSAgICByZXR1cm4gW3NlbGYgX25hbWVkTm9kZU1hcF0tPmxlbmd0aCgp
OwotfQotCi0tIChET01Ob2RlICopZ2V0TmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNl
VVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICBpZiAoIW5hbWVzcGFjZVVSSSB8fCAh
bG9jYWxOYW1lKSB7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAgcmV0dXJuIFtE
T01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+Z2V0TmFtZWRJdGVtTlMobmFt
ZXNwYWNlVVJJLCBsb2NhbE5hbWUpLmdldCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKXNldE5hbWVk
SXRlbU5TOihET01Ob2RlICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7Ci0KLSAgICBpbnQgZXhj
ZXB0aW9uID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX25hbWVkTm9kZU1hcF0tPnNldE5hbWVkSXRlbU5TKFthcmcgX25vZGVdLCBleGNlcHRpb24p
LmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi0tIChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFt
ZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNl
VVJJKTsKLSAgICBBU1NFUlQobG9jYWxOYW1lKTsKLQotICAgIGludCBleGNlcHRpb24gPSAwOwot
ICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2Rl
TWFwXS0+cmVtb3ZlTmFtZWRJdGVtTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIGV4Y2VwdGlv
bikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLUBlbmQKLQogQGltcGxlbWVudGF0aW9uIERPTU5hbWVkTm9kZU1hcCAoV2Vi
Q29yZUludGVybmFsKQogCiAtIChpZClfaW5pdFdpdGhOYW1lZE5vZGVNYXA6KE5hbWVkTm9kZU1h
cCAqKWltcGwKQEAgLTc4NCw0NSArNDYyLDExIEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3Mo
Y29uc3QgQXRvbWljU3QKIAogQGVuZAogCisKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAvLyBET01Ob2RlTGlzdAogCi1AaW1wbGVtZW50YXRpb24gRE9NTm9kZUxpc3QKLQot
LSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2Fz
dDxOb2RlTGlzdCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZGVh
bGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0g
ICAgICAgIERPTV9jYXN0PE5vZGVMaXN0ICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQot
ICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19Ci0KLS0gKE5vZGVMaXN0ICopX25vZGVMaXN0Ci17Ci0g
ICAgcmV0dXJuIERPTV9jYXN0PE5vZGVMaXN0ICo+KF9pbnRlcm5hbCk7Ci19Ci0KLS0gKERPTU5v
ZGUgKilpdGVtOih1bnNpZ25lZClpbmRleAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdp
dGg6W3NlbGYgX25vZGVMaXN0XS0+aXRlbShpbmRleCldOwotfQotCi0tICh1bnNpZ25lZClsZW5n
dGgKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVMaXN0XS0+bGVuZ3RoKCk7Ci19Ci0KLUBlbmQK
LQotQGltcGxlbWVudGF0aW9uIERPTU5vZGVMaXN0IChXZWJDb3JlSW50ZXJuYWwpCitAaW1wbGVt
ZW50YXRpb24gRE9NTm9kZUxpc3QgKFdlYkNvcmVJbnRlcm5hbCkKIAogLSAoaWQpX2luaXRXaXRo
Tm9kZUxpc3Q6KE5vZGVMaXN0ICopaW1wbAogewpAQCAtODUwLDYyMCArNDk0LDE3OCBAQCBzdGF0
aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAKIEBlbmQKIAorCiAvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRE9NSW1wbGVtZW50YXRpb24KIAotQGlt
cGxlbWVudGF0aW9uIERPTUltcGxlbWVudGF0aW9uCi0KLS0gKHZvaWQpZGVhbGxvYwotewotICAg
IGlmIChfaW50ZXJuYWwpCi0gICAgICAgIERPTV9jYXN0PERPTUltcGxlbWVudGF0aW9uRnJvbnQg
Kj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZv
aWQpZmluYWxpemUKLXsKLSAgICBpZiAoX2ludGVybmFsKQotICAgICAgICBET01fY2FzdDxET01J
bXBsZW1lbnRhdGlvbkZyb250ICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgW3N1cGVyIGZp
bmFsaXplXTsKLX0KLQotLSAoQk9PTCloYXNGZWF0dXJlOihOU1N0cmluZyAqKWZlYXR1cmUgOihO
U1N0cmluZyAqKXZlcnNpb24KLXsKLSAgICBBU1NFUlQoZmVhdHVyZSk7Ci0gICAgQVNTRVJUKHZl
cnNpb24pOwotCi0gICAgcmV0dXJuIFtzZWxmIF9ET01JbXBsZW1lbnRhdGlvbl0tPmhhc0ZlYXR1
cmUoZmVhdHVyZSwgdmVyc2lvbik7Ci19Ci0KLS0gKERPTURvY3VtZW50VHlwZSAqKWNyZWF0ZURv
Y3VtZW50VHlwZTooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKilwdWJsaWNJ
ZCA6KE5TU3RyaW5nICopc3lzdGVtSWQKLXsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7Ci0g
ICAgQVNTRVJUKHB1YmxpY0lkKTsKLSAgICBBU1NFUlQoc3lzdGVtSWQpOwotCi0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPERvY3VtZW50VHlwZT4gaW1wbCA9IFtzZWxmIF9E
T01JbXBsZW1lbnRhdGlvbl0tPmNyZWF0ZURvY3VtZW50VHlwZShxdWFsaWZpZWROYW1lLCBwdWJs
aWNJZCwgc3lzdGVtSWQsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxET01Eb2N1bWVudFR5cGUgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGwu
Z2V0KCldKTsKLX0KLQotLSAoRE9NRG9jdW1lbnQgKiljcmVhdGVEb2N1bWVudDooTlNTdHJpbmcg
KiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihET01Eb2N1bWVudFR5
cGUgKilkb2N0eXBlCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1
YWxpZmllZE5hbWUpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPERv
Y3VtZW50PiBpbXBsID0gW3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+Y3JlYXRlRG9jdW1lbnQo
bmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCBbZG9jdHlwZSBfZG9jdW1lbnRUeXBlXSwgZWMp
OwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURv
Y3VtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsLmdldCgpXSk7Ci19CitAaW1wbGVtZW50
YXRpb24gRE9NSW1wbGVtZW50YXRpb24gKERPTUltcGxlbWVudGF0aW9uRXh0ZW5zaW9ucykKIAog
LSAoRE9NSFRNTERvY3VtZW50ICopY3JlYXRlSFRNTERvY3VtZW50OihOU1N0cmluZyAqKXRpdGxl
CiB7Ci0gICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gaW1wbCA9IFtzZWxmIF9ET01JbXBsZW1lbnRh
dGlvbl0tPmNyZWF0ZUhUTUxEb2N1bWVudCh0aXRsZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkhU
TUxEb2N1bWVudD4gaW1wbCA9IFtzZWxmIF9ET01JbXBsZW1lbnRhdGlvbl0tPmNyZWF0ZUhUTUxE
b2N1bWVudCh0aXRsZSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUhUTUxEb2N1bWVudCAq
PihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQoKV0pOwogfQotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gRE9NSW1wbGVtZW50YXRpb24gKERPTUltcGxlbWVudGF0aW9uQ1NTKQotCi0tIChET01D
U1NTdHlsZVNoZWV0ICopY3JlYXRlQ1NTU3R5bGVTaGVldDooTlNTdHJpbmcgKil0aXRsZSA6KE5T
U3RyaW5nICopbWVkaWEKLXsKLSAgICBBU1NFUlQodGl0bGUpOwotICAgIEFTU0VSVChtZWRpYSk7
Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01DU1NTdHlsZVNoZWV0ICpyZXN1
bHQgPSBbRE9NQ1NTU3R5bGVTaGVldCBfQ1NTU3R5bGVTaGVldFdpdGg6W3NlbGYgX0RPTUltcGxl
bWVudGF0aW9uXS0+Y3JlYXRlQ1NTU3R5bGVTaGVldCh0aXRsZSwgbWVkaWEsIGVjKS5nZXQoKV07
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1AZW5k
Ci0gCi1AaW1wbGVtZW50YXRpb24gRE9NSW1wbGVtZW50YXRpb24gKFdlYkNvcmVJbnRlcm5hbCkK
LQotLSAoaWQpX2luaXRXaXRoRE9NSW1wbGVtZW50YXRpb246KERPTUltcGxlbWVudGF0aW9uRnJv
bnQgKilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAg
ICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBp
bXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBz
ZWxmOwotfQotCi0rIChET01JbXBsZW1lbnRhdGlvbiAqKV9ET01JbXBsZW1lbnRhdGlvbldpdGg6
KERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAg
ICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZElu
c3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0g
ICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAg
IAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhET01JbXBsZW1lbnRhdGlvbjpp
bXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilfRE9N
SW1wbGVtZW50YXRpb24KLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8RE9NSW1wbGVtZW50YXRpb25G
cm9udCAqPihfaW50ZXJuYWwpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0vLyBET01Eb2N1bWVudEZyYWdtZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBE
T01Eb2N1bWVudEZyYWdtZW50Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50
RnJhZ21lbnQgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9k
b2N1bWVudEZyYWdtZW50V2l0aDooRG9jdW1lbnRGcmFnbWVudCAqKWltcGwKLXsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnRGcmFnbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6
aW1wbF0pOwotfQotCi0tIChEb2N1bWVudEZyYWdtZW50ICopX2ZyYWdtZW50Ci17Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50
ZXJuYWwpKTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotLy8gRE9NRG9jdW1lbnQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50Ci0KLS0gKERP
TU5vZGUgKilhZG9wdE5vZGU6KERPTU5vZGUgKilzb3VyY2UKLXsKLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYg
X2RvY3VtZW50XS0+YWRvcHROb2RlKFtzb3VyY2UgX25vZGVdLCBlYykuZ2V0KCldOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRG9jdW1l
bnRUeXBlICopZG9jdHlwZQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudFR5
cGUgKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmRvY3R5cGUoKV0pOwot
fQotCi0tIChET01JbXBsZW1lbnRhdGlvbiAqKWltcGxlbWVudGF0aW9uCi17Ci0gICAgcmV0dXJu
IFtET01JbXBsZW1lbnRhdGlvbiBfRE9NSW1wbGVtZW50YXRpb25XaXRoOmltcGxlbWVudGF0aW9u
RnJvbnQoW3NlbGYgX2RvY3VtZW50XSldOwotfQotCi0tIChET01FbGVtZW50ICopZG9jdW1lbnRF
bGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUg
X25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmRvY3VtZW50RWxlbWVudCgpXSk7Ci19Ci0KLS0g
KERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWUKLXsKLSAgICBB
U1NFUlQodGFnTmFtZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01FbGVt
ZW50ICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0
aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVFbGVtZW50KHRhZ05hbWUsIGVjKS5nZXQoKV0pOwot
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9N
RG9jdW1lbnRGcmFnbWVudCAqKWNyZWF0ZURvY3VtZW50RnJhZ21lbnQKLXsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnRGcmFnbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX2RvY3VtZW50XS0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLmdldCgpXSk7Ci19Ci0KLS0g
KERPTVRleHQgKiljcmVhdGVUZXh0Tm9kZTooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJU
KGRhdGEpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01UZXh0ICo+KFtET01Ob2RlIF9ub2Rl
V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVUZXh0Tm9kZShkYXRhKS5nZXQoKV0pOwotfQot
Ci0tIChET01Db21tZW50ICopY3JlYXRlQ29tbWVudDooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAg
QVNTRVJUKGRhdGEpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Db21tZW50ICo+KFtET01O
b2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDb21tZW50KGRhdGEpLmdldCgp
XSk7Ci19Ci0KLS0gKERPTUNEQVRBU2VjdGlvbiAqKWNyZWF0ZUNEQVRBU2VjdGlvbjooTlNTdHJp
bmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIGludCBleGNlcHRpb24gPSAwOwot
ICAgIERPTUNEQVRBU2VjdGlvbiAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RE9NQ0RBVEFTZWN0aW9u
ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDREFUQVNlY3Rp
b24oZGF0YSwgZXhjZXB0aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRp
b24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlv
biAqKWNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbjooTlNTdHJpbmcgKil0YXJnZXQgOihOU1N0
cmluZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQodGFyZ2V0KTsKLSAgICBBU1NFUlQoZGF0YSk7Ci0g
ICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICpyZXN1
bHQgPSBzdGF0aWNfY2FzdDxET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKj4oW0RPTU5vZGUgX25v
ZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbih0YXJn
ZXQsIGRhdGEsIGV4Y2VwdGlvbikuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0
aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01BdHRyICopY3JlYXRlQXR0cmli
dXRlOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0gICAgaW50IGV4Y2Vw
dGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxm
IF9kb2N1bWVudF0tPmNyZWF0ZUF0dHJpYnV0ZShuYW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0t
IChET01FbnRpdHlSZWZlcmVuY2UgKiljcmVhdGVFbnRpdHlSZWZlcmVuY2U6KE5TU3RyaW5nICop
bmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBE
T01FbnRpdHlSZWZlcmVuY2UgKnJlc3VsdCA9IHN0YXRpY19jYXN0PERPTUVudGl0eVJlZmVyZW5j
ZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRW50aXR5UmVm
ZXJlbmNlKG5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhj
ZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlTGlzdCAqKWdldEVs
ZW1lbnRzQnlUYWdOYW1lOihOU1N0cmluZyAqKXRhZ25hbWUKLXsKLSAgICBBU1NFUlQodGFnbmFt
ZSk7Ci0gICAgcmV0dXJuIFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOltzZWxmIF9kb2N1bWVu
dF0tPmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ25hbWUpLmdldCgpXTsKLX0KLQotLSAoRE9NTm9k
ZSAqKWltcG9ydE5vZGU6KERPTU5vZGUgKilpbXBvcnRlZE5vZGUgOihCT09MKWRlZXAKLXsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+aW1wb3J0Tm9kZShbaW1wb3J0ZWROb2RlIF9ub2Rl
XSwgZGVlcCwgZWMpLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLS0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50TlM6KE5TU3RyaW5n
ICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lCi17Ci0gICAgQVNTRVJU
KG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotCi0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRo
OltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHF1YWxpZmll
ZE5hbWUsIGVjKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihyZXN1bHQpOwotfQotCi0tIChET01BdHRyICopY3Jl
YXRlQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFs
aWZpZWROYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1YWxp
ZmllZE5hbWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0
ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUF0dHJpYnV0ZU5T
KG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9N
Tm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVS
SSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0g
ICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlz
dFdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhuYW1lc3BhY2VV
UkksIGxvY2FsTmFtZSkuZ2V0KCldOwotfQotCi0tIChET01FbGVtZW50ICopZ2V0RWxlbWVudEJ5
SWQ6KE5TU3RyaW5nICopZWxlbWVudElkCi17Ci0gICAgQVNTRVJUKGVsZW1lbnRJZCk7Ci0KLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX2RvY3VtZW50XS0+Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKV0pOwotfQotCi1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRSYW5nZSkKLQotLSAoRE9N
UmFuZ2UgKiljcmVhdGVSYW5nZQotewotICAgIHJldHVybiBbRE9NUmFuZ2UgX3JhbmdlV2l0aDpb
c2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVSYW5nZSgpLmdldCgpXTsKLX0KLQotQGVuZAotCi1AaW1w
bGVtZW50YXRpb24gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50Q1NTKQotCi0tIChET01DU1NTdHls
ZURlY2xhcmF0aW9uICopZ2V0T3ZlcnJpZGVTdHlsZTooRE9NRWxlbWVudCAqKWVsdCA6KE5TU3Ry
aW5nICopcHNldWRvRWx0Ci17Ci0gICAgRWxlbWVudCAqZWxlbWVudCA9IFtlbHQgX2VsZW1lbnRd
OwotICAgIFN0cmluZyBwc2V1ZG9FbHRTdHJpbmcocHNldWRvRWx0KTsKLSAgICByZXR1cm4gW0RP
TUNTU1N0eWxlRGVjbGFyYXRpb24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOltzZWxmIF9kb2N1bWVu
dF0tPmdldE92ZXJyaWRlU3R5bGUoZWxlbWVudCwgcHNldWRvRWx0U3RyaW5nLmltcGwoKSldOwot
fQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRTdHls
ZSkKLQotLSAoRE9NU3R5bGVTaGVldExpc3QgKilzdHlsZVNoZWV0cwotewotICAgIHJldHVybiBb
RE9NU3R5bGVTaGVldExpc3QgX3N0eWxlU2hlZXRMaXN0V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5z
dHlsZVNoZWV0cygpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQg
KERPTURvY3VtZW50RXh0ZW5zaW9ucykKLQotLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKWNy
ZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24KLXsKLSAgICByZXR1cm4gW0RPTUNTU1N0eWxlRGVjbGFy
YXRpb24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNTU1N0
eWxlRGVjbGFyYXRpb24oKS5nZXQoKV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERP
TURvY3VtZW50IChXZWJDb3JlSW50ZXJuYWwpCi0KLSsgKERPTURvY3VtZW50ICopX2RvY3VtZW50
V2l0aDooRG9jdW1lbnQgKilpbXBsCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURvY3Vt
ZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19Ci0KLS0gKERvY3VtZW50ICopX2Rv
Y3VtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50ICo+KERPTV9jYXN0PE5v
ZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilfb3duZXJFbGVtZW50Ci17
Ci0gICAgcmV0dXJuIFtET01FbGVtZW50IF9lbGVtZW50V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5v
d25lckVsZW1lbnQoKV07Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS8vIERPTUNoYXJhY3RlckRhdGEKLQotQGltcGxlbWVudGF0aW9uIERPTUNoYXJh
Y3RlckRhdGEKLQotLSAoQ2hhcmFjdGVyRGF0YSAqKV9jaGFyYWN0ZXJEYXRhCi17Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PENoYXJhY3RlckRhdGEgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJu
YWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgLy8gRG9jdW1lbnRhdGlvbiBz
YXlzIHdlIGNhbiByYWlzZSBhIERPTVNUUklOR19TSVpFX0VSUi4KLSAgICAvLyBIb3dldmVyLCB0
aGUgbG93ZXIgbGF5ZXIgZG9lcyBub3QgcmVwb3J0IHRoYXQgZXJyb3IgdXAgdG8gdXMuCi0gICAg
cmV0dXJuIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+ZGF0YSgpOwotfQotCi0tICh2b2lkKXNldERh
dGE6KE5TU3RyaW5nICopZGF0YQotewotICAgIEFTU0VSVChkYXRhKTsKLSAgICAKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPnNldERhdGEoZGF0
YSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHVuc2lnbmVkKWxlbmd0
aAotewotICAgIHJldHVybiBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPmxlbmd0aCgpOwotfQotCi0t
IChOU1N0cmluZyAqKXN1YnN0cmluZ0RhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKWNv
dW50Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgTlNTdHJpbmcgKnJlc3VsdCA9
IFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+c3Vic3RyaW5nRGF0YShvZmZzZXQsIGNvdW50LCBlYyk7
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2
b2lkKWFwcGVuZERhdGE6KE5TU3RyaW5nICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7Ci0gICAg
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5h
cHBlbmREYXRhKGFyZywgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZv
aWQpaW5zZXJ0RGF0YToodW5zaWduZWQpb2Zmc2V0IDooTlNTdHJpbmcgKilhcmcKLXsKLSAgICBB
U1NFUlQoYXJnKTsKLSAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBf
Y2hhcmFjdGVyRGF0YV0tPmluc2VydERhdGEob2Zmc2V0LCBhcmcsIGVjKTsKLSAgICByYWlzZU9u
RE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKWRlbGV0ZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6
KHVuc2lnbmVkKSBjb3VudAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxm
IF9jaGFyYWN0ZXJEYXRhXS0+ZGVsZXRlRGF0YShvZmZzZXQsIGNvdW50LCBlYyk7Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClyZXBsYWNlRGF0YToodW5zaWduZWQpb2Zm
c2V0IDoodW5zaWduZWQpY291bnQgOihOU1N0cmluZyAqKWFyZwotewotICAgIEFTU0VSVChhcmcp
OwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFd
LT5yZXBsYWNlRGF0YShvZmZzZXQsIGNvdW50LCBhcmcsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwotfQogCiBAZW5kCiAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyBET01BdHRyCi0KLUBpbXBsZW1lbnRhdGlvbiBET01BdHRyCitAaW1wbGVtZW50YXRpb24g
RE9NSW1wbGVtZW50YXRpb24gKERPTUltcGxlbWVudGF0aW9uQ1NTKQogCi0tIChOU1N0cmluZyAq
KW5hbWUKKy0gKERPTUNTU1N0eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNoZWV0OihOU1N0cmlu
ZyAqKXRpdGxlIDooTlNTdHJpbmcgKiltZWRpYQogewotICAgIHJldHVybiBbc2VsZiBfYXR0cl0t
Pm5vZGVOYW1lKCk7Ci19CisgICAgQVNTRVJUKHRpdGxlKTsKKyAgICBBU1NFUlQobWVkaWEpOwog
Ci0tIChCT09MKXNwZWNpZmllZAotewotICAgIHJldHVybiBbc2VsZiBfYXR0cl0tPnNwZWNpZmll
ZCgpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTUNTU1N0eWxlU2hlZXQgKnJl
c3VsdCA9IFtET01DU1NTdHlsZVNoZWV0IF9DU1NTdHlsZVNoZWV0V2l0aDpbc2VsZiBfRE9NSW1w
bGVtZW50YXRpb25dLT5jcmVhdGVDU1NTdHlsZVNoZWV0KHRpdGxlLCBtZWRpYSwgZWMpLmdldCgp
XTsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS0g
KE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2F0dHJdLT5ub2RlVmFsdWUo
KTsKLX0KK0BlbmQKKyAKK0BpbXBsZW1lbnRhdGlvbiBET01JbXBsZW1lbnRhdGlvbiAoV2ViQ29y
ZUludGVybmFsKQogCi0tICh2b2lkKXNldFZhbHVlOihOU1N0cmluZyAqKXZhbHVlCistIChpZClf
aW5pdFdpdGhET01JbXBsZW1lbnRhdGlvbjooRE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKWltcGwK
IHsKLSAgICBBU1NFUlQodmFsdWUpOworICAgIEFTU0VSVChpbXBsKTsKIAotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9hdHRyXS0+c2V0VmFsdWUodmFsdWUsIGVjKTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIFtzdXBlciBfaW5pdF07CisgICAgX2ludGVybmFs
ID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7CisgICAgaW1wbC0+cmVmKCk7
CisgICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsKKyAgICByZXR1cm4gc2VsZjsKIH0KIAot
LSAoRE9NRWxlbWVudCAqKW93bmVyRWxlbWVudAorKyAoRE9NSW1wbGVtZW50YXRpb24gKilfRE9N
SW1wbGVtZW50YXRpb25XaXRoOihET01JbXBsZW1lbnRhdGlvbkZyb250ICopaW1wbAogewotICAg
IHJldHVybiBbRE9NRWxlbWVudCBfZWxlbWVudFdpdGg6W3NlbGYgX2F0dHJdLT5vd25lckVsZW1l
bnQoKV07CisgICAgaWYgKCFpbXBsKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIGlk
IGNhY2hlZEluc3RhbmNlOworICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBs
KTsKKyAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCisgICAgICAgIHJldHVybiBbW2NhY2hlZEluc3Rh
bmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIAorICAgIHJldHVybiBbW1tzZWxmIGFsbG9j
XSBfaW5pdFdpdGhET01JbXBsZW1lbnRhdGlvbjppbXBsXSBhdXRvcmVsZWFzZV07CiB9CiAKLS0g
KERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZQorLSAoRE9NSW1wbGVtZW50YXRpb25Gcm9u
dCAqKV9ET01JbXBsZW1lbnRhdGlvbgogewotICAgIHJldHVybiBbRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6IFtzZWxmIF9hdHRyXS0+c3R5bGUoKV07CisgICAg
cmV0dXJuIERPTV9jYXN0PERPTUltcGxlbWVudGF0aW9uRnJvbnQgKj4oX2ludGVybmFsKTsKIH0K
IAogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gRE9NQXR0ciAoV2ViQ29yZUludGVybmFsKQogCi0r
IChET01BdHRyICopX2F0dHJXaXRoOihBdHRyICopaW1wbAorLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vIERPTURvY3VtZW50RnJhZ21lbnQKKworQGltcGxlbWVudGF0aW9u
IERPTURvY3VtZW50RnJhZ21lbnQgKFdlYkNvcmVJbnRlcm5hbCkKKworKyAoRE9NRG9jdW1lbnRG
cmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50V2l0aDooRG9jdW1lbnRGcmFnbWVudCAqKWltcGwK
IHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NQXR0ciAqPihbRE9NTm9kZSBfbm9kZVdpdGg6
aW1wbF0pOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudEZyYWdtZW50ICo+KFtE
T01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7CiB9CiAKLS0gKEF0dHIgKilfYXR0cgorLSAoRG9jdW1l
bnRGcmFnbWVudCAqKV9mcmFnbWVudAogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdHRyICo+
KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERv
Y3VtZW50RnJhZ21lbnQgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKIH0KIAogQGVu
ZAogCisKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01FbGVtZW50
CisvLyBET01Eb2N1bWVudAogCi1AaW1wbGVtZW50YXRpb24gRE9NRWxlbWVudAorQGltcGxlbWVu
dGF0aW9uIERPTURvY3VtZW50IChET01Eb2N1bWVudFJhbmdlKQogCi0tIChOU1N0cmluZyAqKXRh
Z05hbWUKKy0gKERPTVJhbmdlICopY3JlYXRlUmFuZ2UKIHsKLSAgICByZXR1cm4gW3NlbGYgX2Vs
ZW1lbnRdLT5ub2RlTmFtZSgpOworICAgIHJldHVybiBbRE9NUmFuZ2UgX3JhbmdlV2l0aDpbc2Vs
ZiBfZG9jdW1lbnRdLT5jcmVhdGVSYW5nZSgpLmdldCgpXTsKIH0KIAotLSAoRE9NTmFtZWROb2Rl
TWFwICopYXR0cmlidXRlcwotewotICAgIHJldHVybiBbRE9NTmFtZWROb2RlTWFwIF9uYW1lZE5v
ZGVNYXBXaXRoOltzZWxmIF9lbGVtZW50XS0+YXR0cmlidXRlcygpXTsKLX0KK0BlbmQKIAotLSAo
TlNTdHJpbmcgKilnZXRBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChu
YW1lKTsKLSAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5nZXRBdHRyaWJ1dGUobmFtZSk7Ci19
CitAaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50Q1NTKQogCi0tICh2b2lk
KXNldEF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lIDooTlNTdHJpbmcgKil2YWx1ZQorLSAoRE9N
Q1NTU3R5bGVEZWNsYXJhdGlvbiAqKWdldE92ZXJyaWRlU3R5bGU6KERPTUVsZW1lbnQgKillbHQg
OihOU1N0cmluZyAqKXBzZXVkb0VsdAogewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBBU1NFUlQo
dmFsdWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5z
ZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIGV4Y2VwdGlvbik7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGV4Y2VwdGlvbik7CisgICAgRWxlbWVudCAqZWxlbWVudCA9IFtlbHQgX2VsZW1lbnRdOworICAg
IFN0cmluZyBwc2V1ZG9FbHRTdHJpbmcocHNldWRvRWx0KTsKKyAgICByZXR1cm4gW0RPTUNTU1N0
eWxlRGVjbGFyYXRpb24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOltzZWxmIF9kb2N1bWVudF0tPmdl
dE92ZXJyaWRlU3R5bGUoZWxlbWVudCwgcHNldWRvRWx0U3RyaW5nLmltcGwoKSldOwogfQogCi0t
ICh2b2lkKXJlbW92ZUF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5h
bWUpOworQGVuZAogCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRd
LT5yZW1vdmVBdHRyaWJ1dGUobmFtZSwgZXhjZXB0aW9uKTsKLSAgICByYWlzZU9uRE9NRXJyb3Io
ZXhjZXB0aW9uKTsKLX0KK0BpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRT
dHlsZSkKIAotLSAoRE9NQXR0ciAqKWdldEF0dHJpYnV0ZU5vZGU6KE5TU3RyaW5nICopbmFtZQor
LSAoRE9NU3R5bGVTaGVldExpc3QgKilzdHlsZVNoZWV0cwogewotICAgIEFTU0VSVChuYW1lKTsK
LQotICAgIHJldHVybiBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2VsZW1lbnRdLT5nZXRBdHRy
aWJ1dGVOb2RlKG5hbWUpLmdldCgpXTsKKyAgICByZXR1cm4gW0RPTVN0eWxlU2hlZXRMaXN0IF9z
dHlsZVNoZWV0TGlzdFdpdGg6W3NlbGYgX2RvY3VtZW50XS0+c3R5bGVTaGVldHMoKV07CiB9CiAK
LS0gKERPTUF0dHIgKilzZXRBdHRyaWJ1dGVOb2RlOihET01BdHRyICopbmV3QXR0cgotewotICAg
IEFTU0VSVChuZXdBdHRyKTsKK0BlbmQKIAotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERP
TUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPnNldEF0
dHJpYnV0ZU5vZGUoW25ld0F0dHIgX2F0dHJdLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQorQGltcGxlbWVu
dGF0aW9uIERPTURvY3VtZW50IChET01Eb2N1bWVudEV4dGVuc2lvbnMpCiAKLS0gKERPTUF0dHIg
KilyZW1vdmVBdHRyaWJ1dGVOb2RlOihET01BdHRyICopb2xkQXR0cgorLSAoRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbiAqKWNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24KIHsKLSAgICBBU1NFUlQob2xk
QXR0cik7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01BdHRyICpyZXN1bHQgPSBb
RE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2VsZW1lbnRdLT5yZW1vdmVBdHRyaWJ1dGVOb2RlKFtv
bGRBdHRyIF9hdHRyXSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4
Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gW0RPTUNTU1N0eWxlRGVj
bGFyYXRpb24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNT
U1N0eWxlRGVjbGFyYXRpb24oKS5nZXQoKV07CiB9CiAKLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxl
bWVudHNCeVRhZ05hbWU6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKK0Bl
bmQKIAotICAgIHJldHVybiBbRE9NTm9kZUxpc3QgX25vZGVMaXN0V2l0aDpbc2VsZiBfZWxlbWVu
dF0tPmdldEVsZW1lbnRzQnlUYWdOYW1lKG5hbWUpLmdldCgpXTsKLX0KK0BpbXBsZW1lbnRhdGlv
biBET01Eb2N1bWVudCAoV2ViQ29yZUludGVybmFsKQogCi0tIChOU1N0cmluZyAqKWdldEF0dHJp
YnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCisr
IChET01Eb2N1bWVudCAqKV9kb2N1bWVudFdpdGg6KERvY3VtZW50ICopaW1wbAogewotICAgIEFT
U0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJu
IFtzZWxmIF9lbGVtZW50XS0+Z2V0QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudCAqPihbRE9NTm9kZSBfbm9kZVdp
dGg6aW1wbF0pOwogfQogCi0tICh2b2lkKXNldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVz
cGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICopdmFsdWUKKy0g
KERvY3VtZW50ICopX2RvY3VtZW50CiB7Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAg
QVNTRVJUKHF1YWxpZmllZE5hbWUpOwotICAgIEFTU0VSVCh2YWx1ZSk7Ci0KLSAgICBpbnQgZXhj
ZXB0aW9uID0gMDsKLSAgICBbc2VsZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFj
ZVVSSSwgcXVhbGlmaWVkTmFtZSwgdmFsdWUsIGV4Y2VwdGlvbik7Ci0gICAgcmFpc2VPbkRPTUVy
cm9yKGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50ICo+KERPTV9j
YXN0PE5vZGUgKj4oX2ludGVybmFsKSk7CiB9CiAKLS0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlTlM6
KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKKy0gKERPTUVs
ZW1lbnQgKilfb3duZXJFbGVtZW50CiB7Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAg
QVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBbc2VsZiBf
ZWxlbWVudF0tPnJlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCBleGNl
cHRpb24pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOworICAgIHJldHVybiBbRE9N
RWxlbWVudCBfZWxlbWVudFdpdGg6W3NlbGYgX2RvY3VtZW50XS0+b3duZXJFbGVtZW50KCldOwog
fQogCi0tIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9kZU5TOihOU1N0cmluZyAqKW5hbWVzcGFj
ZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7
Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7CitAZW5kCiAKLSAgICByZXR1cm4gW0RPTUF0dHIgX2F0
dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0QXR0cmlidXRlTm9kZU5TKG5hbWVzcGFjZVVSSSwg
bG9jYWxOYW1lKS5nZXQoKV07Ci19CiAKLS0gKERPTUF0dHIgKilzZXRBdHRyaWJ1dGVOb2RlTlM6
KERPTUF0dHIgKiluZXdBdHRyCi17Ci0gICAgQVNTRVJUKG5ld0F0dHIpOworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIERPTUF0dHIKIAotICAgIGludCBleGNlcHRpb24g
PSAwOwotICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxl
bWVudF0tPnNldEF0dHJpYnV0ZU5vZGVOUyhbbmV3QXR0ciBfYXR0cl0sIGV4Y2VwdGlvbikuZ2V0
KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19CitAaW1wbGVtZW50YXRpb24gRE9NQXR0ciAoV2ViQ29yZUludGVybmFsKQogCi0tIChET01O
b2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJ
IDooTlNTdHJpbmcgKilsb2NhbE5hbWUKKysgKERPTUF0dHIgKilfYXR0cldpdGg6KEF0dHIgKilp
bXBsCiB7Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7
Ci0KLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX2VsZW1lbnRd
LT5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKS5nZXQoKV07
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUF0dHIgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmlt
cGxdKTsKIH0KIAotLSAoQk9PTCloYXNBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZQorLSAoQXR0
ciAqKV9hdHRyCiB7Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0gICAgcmV0dXJuIFtzZWxmIF9lbGVt
ZW50XS0+aGFzQXR0cmlidXRlKG5hbWUpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdHRyICo+
KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7CiB9CiAKLS0gKEJPT0wpaGFzQXR0cmlidXRl
TlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAg
ICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQobG9jYWxOYW1lKTsKLQotICAgIHJl
dHVybiBbc2VsZiBfZWxlbWVudF0tPmhhc0F0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxO
YW1lKTsKLX0KK0BlbmQKIAotLSAodm9pZClmb2N1cwotewotICAgIFtzZWxmIF9lbGVtZW50XS0+
Zm9jdXMoKTsKLX0KK0BpbXBsZW1lbnRhdGlvbiBET01BdHRyIChET01BdHRyRXh0ZW5zaW9ucykK
IAotLSAodm9pZClibHVyCistIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGUKIHsKLSAg
ICBbc2VsZiBfZWxlbWVudF0tPmJsdXIoKTsKKyAgICByZXR1cm4gW0RPTUNTU1N0eWxlRGVjbGFy
YXRpb24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOiBbc2VsZiBfYXR0cl0tPnN0eWxlKCldOwogfQog
CiBAZW5kCiAKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIERPTUVs
ZW1lbnQKKwogQGltcGxlbWVudGF0aW9uIERPTUVsZW1lbnQgKERPTUVsZW1lbnRDU1NJbmxpbmVT
dHlsZSkKIAogLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKXN0eWxlCkBAIC0xNTYxLDE3MiAr
NzYzLDYgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogCiBAZW5k
CiAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01UZXh0Ci0KLUBp
bXBsZW1lbnRhdGlvbiBET01UZXh0Ci0KLS0gKFRleHQgKilfdGV4dAotewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxUZXh0ICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0g
KERPTVRleHQgKilzcGxpdFRleHQ6KHVuc2lnbmVkKW9mZnNldAotewotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2Vs
ZiBfdGV4dF0tPnNwbGl0VGV4dChvZmZzZXQsIGVjKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVj
KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NVGV4dCAqPihyZXN1bHQpOwotfQotCi1AZW5k
Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Db21tZW50Ci0K
LUBpbXBsZW1lbnRhdGlvbiBET01Db21tZW50Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUNEQVRBU2VjdGlvbgotCi1AaW1wbGVtZW50YXRpb24g
RE9NQ0RBVEFTZWN0aW9uCi0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLS8vIERPTURvY3VtZW50VHlwZQotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnRU
eXBlCi0KLS0gKE5TU3RyaW5nICopbmFtZQotewotICAgIHJldHVybiBbc2VsZiBfZG9jdW1lbnRU
eXBlXS0+cHVibGljSWQoKTsKLX0KLQotLSAoRE9NTmFtZWROb2RlTWFwICopZW50aXRpZXMKLXsK
LSAgICByZXR1cm4gW0RPTU5hbWVkTm9kZU1hcCBfbmFtZWROb2RlTWFwV2l0aDpbc2VsZiBfZG9j
dW1lbnRUeXBlXS0+ZW50aXRpZXMoKV07Ci19Ci0KLS0gKERPTU5hbWVkTm9kZU1hcCAqKW5vdGF0
aW9ucwotewotICAgIHJldHVybiBbRE9NTmFtZWROb2RlTWFwIF9uYW1lZE5vZGVNYXBXaXRoOltz
ZWxmIF9kb2N1bWVudFR5cGVdLT5ub3RhdGlvbnMoKV07Ci19Ci0KLS0gKE5TU3RyaW5nICopcHVi
bGljSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2RvY3VtZW50VHlwZV0tPnB1YmxpY0lkKCk7Ci19
Ci0KLS0gKE5TU3RyaW5nICopc3lzdGVtSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2RvY3VtZW50
VHlwZV0tPnN5c3RlbUlkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopaW50ZXJuYWxTdWJzZXQKLXsK
LSAgICByZXR1cm4gW3NlbGYgX2RvY3VtZW50VHlwZV0tPmludGVybmFsU3Vic2V0KCk7Ci19Ci0K
LUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50VHlwZSAoV2ViQ29yZUludGVybmFs
KQotCi0tIChEb2N1bWVudFR5cGUgKilfZG9jdW1lbnRUeXBlCi17Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PERvY3VtZW50VHlwZSAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQot
Ci1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Ob3Rh
dGlvbgotCi1AaW1wbGVtZW50YXRpb24gRE9NTm90YXRpb24KLQotLSAoTm90YXRpb24gKilfbm90
YXRpb24KLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Tm90YXRpb24gKj4oRE9NX2Nhc3Q8Tm9k
ZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKilwdWJsaWNJZAotewotICAgIHJl
dHVybiBbc2VsZiBfbm90YXRpb25dLT5wdWJsaWNJZCgpOwotfQotCi0tIChOU1N0cmluZyAqKXN5
c3RlbUlkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub3RhdGlvbl0tPnN5c3RlbUlkKCk7Ci19Ci0K
LUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUVudGl0
eQotCi1AaW1wbGVtZW50YXRpb24gRE9NRW50aXR5Ci0KLS0gKEVudGl0eSAqKV9lbnRpdHkKLXsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RW50aXR5ICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVy
bmFsKSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopcHVibGljSWQKLXsKLSAgICByZXR1cm4gW3NlbGYg
X2VudGl0eV0tPnB1YmxpY0lkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopc3lzdGVtSWQKLXsKLSAg
ICByZXR1cm4gW3NlbGYgX2VudGl0eV0tPnN5c3RlbUlkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICop
bm90YXRpb25OYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9lbnRpdHldLT5ub3RhdGlvbk5hbWUo
KTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8g
RE9NRW50aXR5UmVmZXJlbmNlCi0KLUBpbXBsZW1lbnRhdGlvbiBET01FbnRpdHlSZWZlcmVuY2UK
LQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NUHJv
Y2Vzc2luZ0luc3RydWN0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24KLQotLSAoUHJvY2Vzc2luZ0luc3RydWN0aW9uICopX3Byb2Nlc3NpbmdJbnN0cnVjdGlv
bgotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKj4oRE9N
X2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKil0YXJnZXQKLXsK
LSAgICByZXR1cm4gW3NlbGYgX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbl0tPnRhcmdldCgpOwotfQot
Ci0tIChOU1N0cmluZyAqKWRhdGEKLXsKLSAgICByZXR1cm4gW3NlbGYgX3Byb2Nlc3NpbmdJbnN0
cnVjdGlvbl0tPmRhdGEoKTsKLX0KLQotLSAodm9pZClzZXREYXRhOihOU1N0cmluZyAqKWRhdGEK
LXsKLSAgICBBU1NFUlQoZGF0YSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBb
c2VsZiBfcHJvY2Vzc2luZ0luc3RydWN0aW9uXS0+c2V0RGF0YShkYXRhLCBlYyk7Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLX0KLQotQGVuZAogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogLy8gRE9NUmFuZ2UKQEAgLTE5ODYsOSArMTAyMiw5IEBAIHN0YXRpYyBDbGFz
cyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogQGVuZAogCi0vLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8gRE9NTm9kZUZpbHRlcgogCiBAaW1wbGVtZW50YXRpb24gRE9NTm9kZUZpbHRlcgogCkBA
IC0yMDQzLDYgKzEwNzksOSBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21p
Y1N0CiBAZW5kCiAKIAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIERP
TU5vZGVJdGVyYXRvcgorCiBAaW1wbGVtZW50YXRpb24gRE9NTm9kZUl0ZXJhdG9yCiAKIC0gKGlk
KV9pbml0V2l0aE5vZGVJdGVyYXRvcjooTm9kZUl0ZXJhdG9yICopaW1wbCBmaWx0ZXI6KGlkIDxE
T01Ob2RlRmlsdGVyPilmaWx0ZXIKQEAgLTIxNDYsNiArMTE4NSwxMCBAQCBzdGF0aWMgQ2xhc3Mg
ZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAKIEBlbmQKIAorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRE9NVHJlZVdhbGtlcgorCiBAaW1wbGVtZW50YXRpb24g
RE9NVHJlZVdhbGtlcgogCiAtIChpZClfaW5pdFdpdGhUcmVlV2Fsa2VyOihUcmVlV2Fsa2VyICop
aW1wbCBmaWx0ZXI6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIKQEAgLTIyNzQsNyArMTMxNywx
MSBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAKIEBlbmQKIAot
Y2xhc3MgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24gOiBwdWJsaWMgTm9kZUZpbHRlckNvbmRpdGlv
biAKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIE9iakNOb2RlRmls
dGVyQ29uZGl0aW9uCisKK2NsYXNzIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uIDogcHVibGljIE5v
ZGVGaWx0ZXJDb25kaXRpb24KIHsKIHB1YmxpYzoKICAgICBPYmpDTm9kZUZpbHRlckNvbmRpdGlv
bihpZCA8RE9NTm9kZUZpbHRlcj4pOwpAQCAtMjMwNyw2ICsxMzU0LDEwIEBAIHNob3J0IE9iakNO
b2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2QKICAgICByZXR1cm4gW21fZmlsdGVyIGFjY2Vw
dE5vZGU6W0RPTU5vZGUgX25vZGVXaXRoOm5vZGVdXTsKIH0KIAorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50VHJhdmVyc2Fs
KQorCiBAaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50VHJhdmVyc2FsKQog
CiAtIChET01Ob2RlSXRlcmF0b3IgKiljcmVhdGVOb2RlSXRlcmF0b3I6KERPTU5vZGUgKilyb290
IDoodW5zaWduZWQpd2hhdFRvU2hvdyA6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIgOihCT09M
KWV4cGFuZEVudGl0eVJlZmVyZW5jZXMKQEAgLTIzMzMsNiArMTM4NCwxMCBAQCBzaG9ydCBPYmpD
Tm9kZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0Tm9kCiAKIEBlbmQKIAorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gT2JqQ0V2ZW50TGlzdGVuZXIKKwogT2JqQ0V2ZW50
TGlzdGVuZXIqIE9iakNFdmVudExpc3RlbmVyOjpmaW5kKGlkIDxET01FdmVudExpc3RlbmVyPiBs
aXN0ZW5lcikKIHsKICAgICBpZiAoTGlzdGVuZXJNYXAqIG1hcCA9IGxpc3RlbmVyTWFwKQpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTUy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01DU1MuaAkocmV2aXNpb24gMTU5NTkpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NQ1NTLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAogICovCiAKKyNpbXBvcnQgPFdlYkNvcmUvRE9NQ29yZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9ET01TdHlsZXNoZWV0cy5oPgogCiBAY2xhc3MgRE9NQ291bnRlcjsKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DaGFyYWN0ZXJEYXRhLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTUNoYXJhY3RlckRhdGEuaAkocmV2aXNpb24gMTU5NTkpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ2hhcmFjdGVyRGF0YS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsMTE4ICsyNCw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwog
Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdC5oPgotCi1AY2xhc3MgRE9NRG9jdW1l
bnQ7IAotQGNsYXNzIERPTURvY3VtZW50VHlwZTsKLUBjbGFzcyBET01FbGVtZW50OwotQGNsYXNz
IERPTU5hbWVkTm9kZU1hcDsKLUBjbGFzcyBET01Ob2RlTGlzdDsKLQotdHlwZWRlZiBzdHJ1Y3Qg
RE9NT2JqZWN0SW50ZXJuYWwgRE9NT2JqZWN0SW50ZXJuYWw7Ci0KLUBpbnRlcmZhY2UgRE9NT2Jq
ZWN0IDogV2ViU2NyaXB0T2JqZWN0IDxOU0NvcHlpbmc+Ci17Ci0gICAgRE9NT2JqZWN0SW50ZXJu
YWwgKl9pbnRlcm5hbDsKLX0KLUBlbmQKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgRE9N
VGltZVN0YW1wOwotCi1leHRlcm4gTlNTdHJpbmcgKiBjb25zdCBET01FeGNlcHRpb247Ci0KLWVu
dW0gewotICAgIC8vCi0gICAgLy8gRE9NIGV4Y2VwdGlvbiBjb2RlcwotICAgIC8vCi0gICAgRE9N
X0lOREVYX1NJWkVfRVJSICAgICAgICAgICAgICAgID0gMSwKLSAgICBET01fRE9NU1RSSU5HX1NJ
WkVfRVJSICAgICAgICAgICAgPSAyLAotICAgIERPTV9ISUVSQVJDSFlfUkVRVUVTVF9FUlIgICAg
ICAgICA9IDMsCi0gICAgRE9NX1dST05HX0RPQ1VNRU5UX0VSUiAgICAgICAgICAgID0gNCwKLSAg
ICBET01fSU5WQUxJRF9DSEFSQUNURVJfRVJSICAgICAgICAgPSA1LAotICAgIERPTV9OT19EQVRB
X0FMTE9XRURfRVJSICAgICAgICAgICA9IDYsCi0gICAgRE9NX05PX01PRElGSUNBVElPTl9BTExP
V0VEX0VSUiAgID0gNywKLSAgICBET01fTk9UX0ZPVU5EX0VSUiAgICAgICAgICAgICAgICAgPSA4
LAotICAgIERPTV9OT1RfU1VQUE9SVEVEX0VSUiAgICAgICAgICAgICA9IDksCi0gICAgRE9NX0lO
VVNFX0FUVFJJQlVURV9FUlIgICAgICAgICAgID0gMTAsCi0gICAgRE9NX0lOVkFMSURfU1RBVEVf
RVJSICAgICAgICAgICAgID0gMTEsCi0gICAgRE9NX1NZTlRBWF9FUlIgICAgICAgICAgICAgICAg
ICAgID0gMTIsCi0gICAgRE9NX0lOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiAgICAgID0gMTMsCi0g
ICAgRE9NX05BTUVTUEFDRV9FUlIgICAgICAgICAgICAgICAgID0gMTQsCi0gICAgRE9NX0lOVkFM
SURfQUNDRVNTX0VSUiAgICAgICAgICAgID0gMTUKLX07Ci0KLUBpbnRlcmZhY2UgRE9NSW1wbGVt
ZW50YXRpb24gOiBET01PYmplY3QKLS0gKEJPT0wpaGFzRmVhdHVyZTooTlNTdHJpbmcgKilmZWF0
dXJlIDooTlNTdHJpbmcgKil2ZXJzaW9uOwotLSAoRE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9j
dW1lbnRUeXBlOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXB1YmxpY0lk
IDooTlNTdHJpbmcgKilzeXN0ZW1JZDsKLS0gKERPTURvY3VtZW50ICopY3JlYXRlRG9jdW1lbnQ6
KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooRE9N
RG9jdW1lbnRUeXBlICopZG9jdHlwZTsKLUBlbmQKLQotZW51bSB7Ci0gICAgLy8KLSAgICAvLyBE
T00gbm9kZSB0eXBlcwotICAgIC8vCi0gICAgRE9NX0VMRU1FTlRfTk9ERSAgICAgICAgICAgICAg
ICAgID0gMSwKLSAgICBET01fQVRUUklCVVRFX05PREUgICAgICAgICAgICAgICAgPSAyLAotICAg
IERPTV9URVhUX05PREUgICAgICAgICAgICAgICAgICAgICA9IDMsCi0gICAgRE9NX0NEQVRBX1NF
Q1RJT05fTk9ERSAgICAgICAgICAgID0gNCwKLSAgICBET01fRU5USVRZX1JFRkVSRU5DRV9OT0RF
ICAgICAgICAgPSA1LAotICAgIERPTV9FTlRJVFlfTk9ERSAgICAgICAgICAgICAgICAgICA9IDYs
Ci0gICAgRE9NX1BST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSAgID0gNywKLSAgICBET01fQ09N
TUVOVF9OT0RFICAgICAgICAgICAgICAgICAgPSA4LAotICAgIERPTV9ET0NVTUVOVF9OT0RFICAg
ICAgICAgICAgICAgICA9IDksCi0gICAgRE9NX0RPQ1VNRU5UX1RZUEVfTk9ERSAgICAgICAgICAg
ID0gMTAsCi0gICAgRE9NX0RPQ1VNRU5UX0ZSQUdNRU5UX05PREUgICAgICAgID0gMTEsCi0gICAg
RE9NX05PVEFUSU9OX05PREUgICAgICAgICAgICAgICAgID0gMTIKLX07Ci0KLUBpbnRlcmZhY2Ug
RE9NTm9kZSA6IERPTU9iamVjdAotLSAoTlNTdHJpbmcgKilub2RlTmFtZTsKLS0gKE5TU3RyaW5n
ICopbm9kZVZhbHVlOwotLSAodm9pZClzZXROb2RlVmFsdWU6KE5TU3RyaW5nICopc3RyaW5nOwot
LSAodW5zaWduZWQgc2hvcnQpbm9kZVR5cGU7Ci0tIChET01Ob2RlICopcGFyZW50Tm9kZTsKLS0g
KERPTU5vZGVMaXN0ICopY2hpbGROb2RlczsKLS0gKERPTU5vZGUgKilmaXJzdENoaWxkOwotLSAo
RE9NTm9kZSAqKWxhc3RDaGlsZDsKLS0gKERPTU5vZGUgKilwcmV2aW91c1NpYmxpbmc7Ci0tIChE
T01Ob2RlICopbmV4dFNpYmxpbmc7Ci0tIChET01OYW1lZE5vZGVNYXAgKilhdHRyaWJ1dGVzOwot
LSAoRE9NRG9jdW1lbnQgKilvd25lckRvY3VtZW50OwotLSAoRE9NTm9kZSAqKWluc2VydEJlZm9y
ZTooRE9NTm9kZSAqKW5ld0NoaWxkIDooRE9NTm9kZSAqKXJlZkNoaWxkOwotLSAoRE9NTm9kZSAq
KXJlcGxhY2VDaGlsZDooRE9NTm9kZSAqKW5ld0NoaWxkIDooRE9NTm9kZSAqKW9sZENoaWxkOwot
LSAoRE9NTm9kZSAqKXJlbW92ZUNoaWxkOihET01Ob2RlICopb2xkQ2hpbGQ7Ci0tIChET01Ob2Rl
ICopYXBwZW5kQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGlsZDsKLS0gKEJPT0wpaGFzQ2hpbGROb2Rl
czsKLS0gKERPTU5vZGUgKiljbG9uZU5vZGU6KEJPT0wpZGVlcDsKLS0gKHZvaWQpbm9ybWFsaXpl
OwotLSAoQk9PTClpc1N1cHBvcnRlZDooTlNTdHJpbmcgKilmZWF0dXJlIDooTlNTdHJpbmcgKil2
ZXJzaW9uOwotLSAoTlNTdHJpbmcgKiluYW1lc3BhY2VVUkk7Ci0tIChOU1N0cmluZyAqKXByZWZp
eDsKLS0gKHZvaWQpc2V0UHJlZml4OihOU1N0cmluZyAqKXByZWZpeDsKLS0gKE5TU3RyaW5nICop
bG9jYWxOYW1lOwotLSAoQk9PTCloYXNBdHRyaWJ1dGVzOwotLSAoQk9PTClpc1NhbWVOb2RlOihE
T01Ob2RlICopb3RoZXI7Ci0tIChCT09MKWlzRXF1YWxOb2RlOihET01Ob2RlICopb3RoZXI7Ci0t
IChOU1N0cmluZyAqKXRleHRDb250ZW50OwotLSAodm9pZClzZXRUZXh0Q29udGVudDooTlNTdHJp
bmcgKil0ZXh0OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTU5vZGVMaXN0IDogRE9NT2JqZWN0Ci0t
IChET01Ob2RlICopaXRlbToodW5zaWduZWQpaW5kZXg7Ci0tICh1bnNpZ25lZClsZW5ndGg7Ci1A
ZW5kCi0KLUBpbnRlcmZhY2UgRE9NTmFtZWROb2RlTWFwIDogRE9NT2JqZWN0Ci0tIChET01Ob2Rl
ICopZ2V0TmFtZWRJdGVtOihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01Ob2RlICopc2V0TmFtZWRJ
dGVtOihET01Ob2RlICopYXJnOwotLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbTooTlNTdHJp
bmcgKiluYW1lOwotLSAoRE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4OwotLSAodW5zaWdu
ZWQpbGVuZ3RoOwotLSAoRE9NTm9kZSAqKWdldE5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVz
cGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAoRE9NTm9kZSAqKXNldE5hbWVkSXRl
bU5TOihET01Ob2RlICopYXJnOwotLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbU5TOihOU1N0
cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotQGVuZAorI2ltcG9y
dCA8V2ViQ29yZS9ET01Ob2RlLmg+CiAKIEBpbnRlcmZhY2UgRE9NQ2hhcmFjdGVyRGF0YSA6IERP
TU5vZGUKIC0gKE5TU3RyaW5nICopZGF0YTsKQEAgLTE0Niw5NSArMzYsMyBAQCBlbnVtIHsKIC0g
KHZvaWQpZGVsZXRlRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpIGNvdW50OwogLSAo
dm9pZClyZXBsYWNlRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpY291bnQgOihOU1N0
cmluZyAqKWFyZzsKIEBlbmQKLQotQGludGVyZmFjZSBET01BdHRyIDogRE9NTm9kZQotLSAoTlNT
dHJpbmcgKiluYW1lOwotLSAoQk9PTClzcGVjaWZpZWQ7Ci0tIChOU1N0cmluZyAqKXZhbHVlOwot
LSAodm9pZClzZXRWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZTsKLS0gKERPTUVsZW1lbnQgKilvd25l
ckVsZW1lbnQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRWxlbWVudCA6IERPTU5vZGUKLS0gKE5T
U3RyaW5nICopdGFnTmFtZTsKLS0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRlOihOU1N0cmluZyAq
KW5hbWU7Ci0tICh2b2lkKXNldEF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lIDooTlNTdHJpbmcg
Kil2YWx1ZTsKLS0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWU7Ci0tIChE
T01BdHRyICopZ2V0QXR0cmlidXRlTm9kZTooTlNTdHJpbmcgKiluYW1lOwotLSAoRE9NQXR0ciAq
KXNldEF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKiluZXdBdHRyOwotLSAoRE9NQXR0ciAqKXJlbW92
ZUF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKilvbGRBdHRyOwotLSAoRE9NTm9kZUxpc3QgKilnZXRF
bGVtZW50c0J5VGFnTmFtZTooTlNTdHJpbmcgKiluYW1lOwotLSAoTlNTdHJpbmcgKilnZXRBdHRy
aWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsK
LS0gKHZvaWQpc2V0QXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJp
bmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKil2YWx1ZTsKLS0gKHZvaWQpcmVtb3ZlQXR0
cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7
Ci0tIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9kZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVS
SSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAoRE9NQXR0ciAqKXNldEF0dHJpYnV0ZU5vZGVO
UzooRE9NQXR0ciAqKW5ld0F0dHI7Ci0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdO
YW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0t
IChCT09MKWhhc0F0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lOwotLSAoQk9PTCloYXNBdHRyaWJ1
dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0g
KHZvaWQpZm9jdXM7Ci0tICh2b2lkKWJsdXI7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NVGV4dCA6
IERPTUNoYXJhY3RlckRhdGEKLS0gKERPTVRleHQgKilzcGxpdFRleHQ6KHVuc2lnbmVkKW9mZnNl
dDsKLUBlbmQKLQotQGludGVyZmFjZSBET01Db21tZW50IDogRE9NQ2hhcmFjdGVyRGF0YQotQGVu
ZAotCi1AaW50ZXJmYWNlIERPTUNEQVRBU2VjdGlvbiA6IERPTVRleHQKLUBlbmQKLQotQGludGVy
ZmFjZSBET01Eb2N1bWVudFR5cGUgOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKW5hbWU7Ci0tIChE
T01OYW1lZE5vZGVNYXAgKillbnRpdGllczsKLS0gKERPTU5hbWVkTm9kZU1hcCAqKW5vdGF0aW9u
czsKLS0gKE5TU3RyaW5nICopcHVibGljSWQ7Ci0tIChOU1N0cmluZyAqKXN5c3RlbUlkOwotLSAo
TlNTdHJpbmcgKilpbnRlcm5hbFN1YnNldDsKLUBlbmQKLQotQGludGVyZmFjZSBET01Ob3RhdGlv
biA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopcHVibGljSWQ7Ci0tIChOU1N0cmluZyAqKXN5c3Rl
bUlkOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUVudGl0eSA6IERPTU5vZGUKLS0gKE5TU3RyaW5n
ICopcHVibGljSWQ7Ci0tIChOU1N0cmluZyAqKXN5c3RlbUlkOwotLSAoTlNTdHJpbmcgKilub3Rh
dGlvbk5hbWU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRW50aXR5UmVmZXJlbmNlIDogRE9NTm9k
ZQotQGVuZAotCi1AaW50ZXJmYWNlIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiA6IERPTU5vZGUK
LS0gKE5TU3RyaW5nICopdGFyZ2V0OwotLSAoTlNTdHJpbmcgKilkYXRhOwotLSAodm9pZClzZXRE
YXRhOihOU1N0cmluZyAqKWRhdGE7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRG9jdW1lbnRGcmFn
bWVudCA6IERPTU5vZGUKLUBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudCA6IERPTU5vZGUK
LS0gKERPTURvY3VtZW50VHlwZSAqKWRvY3R5cGU7Ci0tIChET01JbXBsZW1lbnRhdGlvbiAqKWlt
cGxlbWVudGF0aW9uOwotLSAoRE9NRWxlbWVudCAqKWRvY3VtZW50RWxlbWVudDsKLS0gKERPTUVs
ZW1lbnQgKiljcmVhdGVFbGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWU7Ci0tIChET01Eb2N1bWVu
dEZyYWdtZW50ICopY3JlYXRlRG9jdW1lbnRGcmFnbWVudDsKLS0gKERPTVRleHQgKiljcmVhdGVU
ZXh0Tm9kZTooTlNTdHJpbmcgKilkYXRhOwotLSAoRE9NQ29tbWVudCAqKWNyZWF0ZUNvbW1lbnQ6
KE5TU3RyaW5nICopZGF0YTsKLS0gKERPTUNEQVRBU2VjdGlvbiAqKWNyZWF0ZUNEQVRBU2VjdGlv
bjooTlNTdHJpbmcgKilkYXRhOwotLSAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICopY3JlYXRl
UHJvY2Vzc2luZ0luc3RydWN0aW9uOihOU1N0cmluZyAqKXRhcmdldCA6KE5TU3RyaW5nICopZGF0
YTsKLS0gKERPTUF0dHIgKiljcmVhdGVBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKERP
TUVudGl0eVJlZmVyZW5jZSAqKWNyZWF0ZUVudGl0eVJlZmVyZW5jZTooTlNTdHJpbmcgKiluYW1l
OwotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZTooTlNTdHJpbmcgKil0YWdu
YW1lOwotLSAoRE9NTm9kZSAqKWltcG9ydE5vZGU6KERPTU5vZGUgKilpbXBvcnRlZE5vZGUgOihC
T09MKWRlZXA7Ci0tIChET01FbGVtZW50ICopY3JlYXRlRWxlbWVudE5TOihOU1N0cmluZyAqKW5h
bWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZTsKLS0gKERPTUF0dHIgKiljcmVh
dGVBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxp
ZmllZE5hbWU7Ci0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3Ry
aW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tIChET01FbGVtZW50
ICopZ2V0RWxlbWVudEJ5SWQ6KE5TU3RyaW5nICopZWxlbWVudElkOwotLSAoRE9NTm9kZSAqKWFk
b3B0Tm9kZTooRE9NTm9kZSAqKXNvdXJjZTsKLUBlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01DaGFyYWN0ZXJEYXRhLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01DaGFyYWN0ZXJEYXRhLm1tCShyZXZpc2lvbiAxNTk1OSkKKysrIFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01DaGFyYWN0ZXJEYXRhLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2IEphbWVzIEcuIFNw
ZXRoIChzcGV0aEBlbmQuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA2IEphbWVzIEcuIFNwZXRo
IDxzcGV0aEBlbmQuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNh
bS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
NSwyMzQ4ICsyNiw3OSBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRE9N
LmgiCisjaW1wb3J0ICJET01DaGFyYWN0ZXJEYXRhLmgiCiAKLSNpbXBvcnQgIkNEQVRBU2VjdGlv
bi5oIgotI2ltcG9ydCAiY3NzaGVscGVyLmgiCi0jaW1wb3J0ICJDU1NTdHlsZVNoZWV0LmgiCi0j
aW1wb3J0ICJDb21tZW50LmgiCi0jaW1wb3J0ICJET01FdmVudHNJbnRlcm5hbC5oIgotI2ltcG9y
dCAiRE9NSW1wbGVtZW50YXRpb25Gcm9udC5oIgogI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKLSNp
bXBvcnQgIkRPTVByaXZhdGUuaCIKLSNpbXBvcnQgIkRvY3VtZW50LmgiCi0jaW1wb3J0ICJEb2N1
bWVudEZyYWdtZW50LmgiCi0jaW1wb3J0ICJEb2N1bWVudFR5cGUuaCIKLSNpbXBvcnQgIkVudGl0
eS5oIgotI2ltcG9ydCAiRW50aXR5UmVmZXJlbmNlLmgiCi0jaW1wb3J0ICJFdmVudC5oIgotI2lt
cG9ydCAiRXZlbnRMaXN0ZW5lci5oIgotI2ltcG9ydCAiRm91bmRhdGlvbkV4dHJhcy5oIgotI2lt
cG9ydCAiRnJhbWVNYWMuaCIKLSNpbXBvcnQgIkhUTUxEb2N1bWVudC5oIgotI2ltcG9ydCAiSFRN
TE5hbWVzLmgiCi0jaW1wb3J0ICJIVE1MUGx1Z0luRWxlbWVudC5oIgotI2ltcG9ydCAiTm9kZUZp
bHRlci5oIgotI2ltcG9ydCAiTm9kZUZpbHRlckNvbmRpdGlvbi5oIgotI2ltcG9ydCAiTm9kZUl0
ZXJhdG9yLmgiCi0jaW1wb3J0ICJOb2RlTGlzdC5oIgotI2ltcG9ydCAiTm90YXRpb24uaCIKLSNp
bXBvcnQgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgotI2ltcG9ydCAiUXVhbGlmaWVkTmFtZS5o
IgotI2ltcG9ydCAiUmFuZ2UuaCIKLSNpbXBvcnQgIlJlbmRlckltYWdlLmgiCi0jaW1wb3J0ICJU
cmVlV2Fsa2VyLmgiCi0jaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCi0jaW1wb3J0
IDxvYmpjL29iamMtY2xhc3MuaD4KKyNpbXBvcnQgIkNoYXJhY3RlckRhdGEuaCIKIAotdXNpbmcg
V2ViQ29yZTo6QXRvbWljU3RyaW5nOwotdXNpbmcgV2ViQ29yZTo6QXRvbWljU3RyaW5nSW1wbDsK
LXVzaW5nIFdlYkNvcmU6OkF0dHI7Ci11c2luZyBXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhOwotdXNp
bmcgV2ViQ29yZTo6RGVwcmVjYXRlZFZhbHVlTGlzdDsKLXVzaW5nIFdlYkNvcmU6OkRvY3VtZW50
OwotdXNpbmcgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDsKLXVzaW5nIFdlYkNvcmU6OkRvY3Vt
ZW50VHlwZTsKLXVzaW5nIFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uRnJvbnQ7Ci11c2luZyBX
ZWJDb3JlOjpFbGVtZW50OwotdXNpbmcgV2ViQ29yZTo6RW50aXR5OwotdXNpbmcgV2ViQ29yZTo6
RXZlbnQ7Ci11c2luZyBXZWJDb3JlOjpFdmVudExpc3RlbmVyOwotdXNpbmcgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZTsKLXVzaW5nIFdlYkNvcmU6OkhUTUxEb2N1bWVudDsKLXVzaW5nIFdlYkNvcmU6
OkhUTUxFbGVtZW50OwotdXNpbmcgV2ViQ29yZTo6RnJhbWVNYWM7Ci11c2luZyBXZWJDb3JlOjpJ
bnRSZWN0OwotdXNpbmcgV2ViQ29yZTo6S1VSTDsKLXVzaW5nIFdlYkNvcmU6Ok5hbWVkTm9kZU1h
cDsKLXVzaW5nIFdlYkNvcmU6Ok5vZGU7Ci11c2luZyBXZWJDb3JlOjpOb2RlRmlsdGVyOwotdXNp
bmcgV2ViQ29yZTo6Tm9kZUZpbHRlckNvbmRpdGlvbjsKLXVzaW5nIFdlYkNvcmU6Ok5vZGVJdGVy
YXRvcjsKLXVzaW5nIFdlYkNvcmU6Ok5vZGVMaXN0OwotdXNpbmcgV2ViQ29yZTo6Tm90YXRpb247
Ci11c2luZyBXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb247Ci11c2luZyBXZWJDb3JlOjpR
dWFsaWZpZWROYW1lOwotdXNpbmcgV2ViQ29yZTo6UmFuZ2U7Ci11c2luZyBXZWJDb3JlOjpSZW5k
ZXJJbWFnZTsKLXVzaW5nIFdlYkNvcmU6OlJlbmRlck9iamVjdDsKLXVzaW5nIFdlYkNvcmU6OlN0
cmluZzsKLXVzaW5nIFdlYkNvcmU6OlRleHQ7Ci11c2luZyBXZWJDb3JlOjpUcmVlV2Fsa2VyOwot
Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6SFRNTE5hbWVzOwotCi1AaW50ZXJmYWNlIERPTUF0
dHIgKFdlYkNvcmVJbnRlcm5hbCkKLSsgKERPTUF0dHIgKilfYXR0cldpdGg6KEF0dHIgKilpbXBs
OwotLSAoQXR0ciAqKV9hdHRyOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTURvY3VtZW50VHlwZSAo
V2ViQ29yZUludGVybmFsKQotLSAoRG9jdW1lbnRUeXBlICopX2RvY3VtZW50VHlwZTsKLUBlbmQK
LQotQGludGVyZmFjZSBET01JbXBsZW1lbnRhdGlvbiAoV2ViQ29yZUludGVybmFsKQotKyAoRE9N
SW1wbGVtZW50YXRpb24gKilfRE9NSW1wbGVtZW50YXRpb25XaXRoOihET01JbXBsZW1lbnRhdGlv
bkZyb250ICopaW1wbDsKLS0gKERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilfRE9NSW1wbGVtZW50
YXRpb247Ci1AZW5kCi0KLWNsYXNzIE9iakNFdmVudExpc3RlbmVyIDogcHVibGljIEV2ZW50TGlz
dGVuZXIgewotcHVibGljOgotICAgIHN0YXRpYyBPYmpDRXZlbnRMaXN0ZW5lciAqZmluZChpZCA8
RE9NRXZlbnRMaXN0ZW5lcj4pOwotICAgIHN0YXRpYyBPYmpDRXZlbnRMaXN0ZW5lciAqY3JlYXRl
KGlkIDxET01FdmVudExpc3RlbmVyPik7Ci0KLXByaXZhdGU6Ci0gICAgT2JqQ0V2ZW50TGlzdGVu
ZXIoaWQgPERPTUV2ZW50TGlzdGVuZXI+KTsKLSAgICB2aXJ0dWFsIH5PYmpDRXZlbnRMaXN0ZW5l
cigpOwotCi0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KEV2ZW50ICosIGJvb2wgaXNXaW5k
b3dFdmVudCk7Ci0KLSAgICBpZCA8RE9NRXZlbnRMaXN0ZW5lcj4gbV9saXN0ZW5lcjsKLX07Ci0K
LXR5cGVkZWYgSGFzaE1hcDxpZCwgT2JqQ0V2ZW50TGlzdGVuZXIqPiBMaXN0ZW5lck1hcDsKLXR5
cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ2xhc3M+IE9iakNDbGFzc01hcDsKLQot
c3RhdGljIE9iakNDbGFzc01hcCogZWxlbWVudENsYXNzTWFwOwotc3RhdGljIExpc3RlbmVyTWFw
KiBsaXN0ZW5lck1hcDsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8v
IERPTU9iamVjdAotCi1AaW1wbGVtZW50YXRpb24gRE9NT2JqZWN0Ci0KLS8vIFByZXZlbnQgY3Jl
YXRpb24gb2YgRE9NIG9iamVjdHMgYnkgY2xpZW50cyB3aG8ganVzdCAiW1t4eHggYWxsb2NdIGlu
aXRdIi4KLS0gKGlkKWluaXQKLXsKLSAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhj
ZXB0aW9uIGZvcm1hdDpAIitbJUAgaW5pdF06IHNob3VsZCBuZXZlciBiZSB1c2VkIiwgTlNTdHJp
bmdGcm9tQ2xhc3MoW3NlbGYgY2xhc3NdKV07Ci0gICAgW3NlbGYgcmVsZWFzZV07Ci0gICAgcmV0
dXJuIG5pbDsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewot
ICAgICAgICByZW1vdmVET01XcmFwcGVyKF9pbnRlcm5hbCk7Ci0gICAgfQotICAgIFtzdXBlciBk
ZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpIHsK
LSAgICAgICAgcmVtb3ZlRE9NV3JhcHBlcihfaW50ZXJuYWwpOwotICAgIH0KLSAgICBbc3VwZXIg
ZmluYWxpemVdOwotfQotCi0tIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKLXsKLSAg
ICByZXR1cm4gW3NlbGYgcmV0YWluXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9N
T2JqZWN0IChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKGlkKV9pbml0Ci17Ci0gICAgcmV0dXJuIFtz
dXBlciBfaW5pdF07Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLS8vIERPTU5vZGUKLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGUKLQotLSAodm9pZClk
ZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxOb2RlICo+
KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQot
LSAodm9pZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nh
c3Q8Tm9kZSAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxp
emVdOwotfQotCi0tIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCi17Ci0gICAgaWYgKCFfaW50ZXJu
YWwpIHsKLSAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiBu
dWxsPiIsCi0gICAgICAgICAgICBbW3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9uXSwgc2VsZl07Ci0g
ICAgfQotICAgIE5TU3RyaW5nICp2YWx1ZSA9IFtzZWxmIG5vZGVWYWx1ZV07Ci0gICAgaWYgKHZh
bHVlKSB7Ci0gICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQCBb
JUBdOiAlcCAnJUAnPiIsCi0gICAgICAgICAgICBbW3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9uXSwg
W3NlbGYgbm9kZU5hbWVdLCBfaW50ZXJuYWwsIHZhbHVlXTsKLSAgICB9Ci0gICAgcmV0dXJuIFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAIFslQF06ICVwPiIsCi0gICAgICAgIFtbc2Vs
ZiBjbGFzc10gZGVzY3JpcHRpb25dLCBbc2VsZiBub2RlTmFtZV0sIF9pbnRlcm5hbF07Ci19CitA
aW1wbGVtZW50YXRpb24gRE9NQ2hhcmFjdGVyRGF0YQogCi0tIChOU1N0cmluZyAqKW5vZGVOYW1l
CistIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhICopX2NoYXJhY3RlckRhdGEKIHsKLSAgICByZXR1
cm4gW3NlbGYgX25vZGVdLT5ub2RlTmFtZSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpDaGFyYWN0ZXJEYXRhICo+KERPTV9jYXN0PFdlYkNvcmU6Ok5vZGUgKj4oX2ludGVybmFs
KSk7CiB9CiAKLS0gKE5TU3RyaW5nICopbm9kZVZhbHVlCistIChOU1N0cmluZyAqKWRhdGEKIHsK
ICAgICAvLyBEb2N1bWVudGF0aW9uIHNheXMgd2UgY2FuIHJhaXNlIGEgRE9NU1RSSU5HX1NJWkVf
RVJSLgogICAgIC8vIEhvd2V2ZXIsIHRoZSBsb3dlciBsYXllciBkb2VzIG5vdCByZXBvcnQgdGhh
dCBlcnJvciB1cCB0byB1cy4KLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2RlVmFsdWUoKTsK
KyAgICByZXR1cm4gW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5kYXRhKCk7CiB9CiAKLS0gKHZvaWQp
c2V0Tm9kZVZhbHVlOihOU1N0cmluZyAqKXN0cmluZworLSAodm9pZClzZXREYXRhOihOU1N0cmlu
ZyAqKWRhdGEKIHsKLSAgICBBU1NFUlQoc3RyaW5nKTsKKyAgICBBU1NFUlQoZGF0YSk7CiAgICAg
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX25vZGVdLT5zZXROb2RlVmFs
dWUoc3RyaW5nLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodW5zaWdu
ZWQgc2hvcnQpbm9kZVR5cGUKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2RlVHlwZSgp
OwotfQotCi0tIChET01Ob2RlICopcGFyZW50Tm9kZQotewotICAgIHJldHVybiBbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX25vZGVdLT5wYXJlbnROb2RlKCldOwotfQotCi0tIChET01Ob2RlTGlz
dCAqKWNoaWxkTm9kZXMKLXsKLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6
W3NlbGYgX25vZGVdLT5jaGlsZE5vZGVzKCkuZ2V0KCldOwotfQotCi0tIChET01Ob2RlICopZmly
c3RDaGlsZAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5m
aXJzdENoaWxkKCldOwotfQotCi0tIChET01Ob2RlICopbGFzdENoaWxkCi17Ci0gICAgcmV0dXJu
IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPmxhc3RDaGlsZCgpXTsKLX0KLQotLSAo
RE9NTm9kZSAqKXByZXZpb3VzU2libGluZwotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdp
dGg6W3NlbGYgX25vZGVdLT5wcmV2aW91c1NpYmxpbmcoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilu
ZXh0U2libGluZwotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVd
LT5uZXh0U2libGluZygpXTsKLX0KLQotLSAoRE9NTmFtZWROb2RlTWFwICopYXR0cmlidXRlcwot
ewotICAgIC8vIERPTSBsZXZlbCAyIGNvcmUgc3BlY2lmaWNhdGlvbiBzYXlzOiAKLSAgICAvLyBB
IE5hbWVkTm9kZU1hcCBjb250YWluaW5nIHRoZSBhdHRyaWJ1dGVzIG9mIHRoaXMgbm9kZSAoaWYg
aXQgaXMgYW4gRWxlbWVudCkgb3IgbnVsbCBvdGhlcndpc2UuCi0gICAgcmV0dXJuIG5pbDsKLX0K
LQotLSAoRE9NRG9jdW1lbnQgKilvd25lckRvY3VtZW50Ci17Ci0gICAgcmV0dXJuIFtET01Eb2N1
bWVudCBfZG9jdW1lbnRXaXRoOltzZWxmIF9ub2RlXS0+ZG9jdW1lbnQoKV07Ci19Ci0KLS0gKERP
TU5vZGUgKilpbnNlcnRCZWZvcmU6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilyZWZD
aGlsZAotewotICAgIEFTU0VSVChuZXdDaGlsZCk7Ci0gICAgQVNTRVJUKHJlZkNoaWxkKTsKLQot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChbc2VsZiBfbm9kZV0tPmluc2VydEJl
Zm9yZShbbmV3Q2hpbGQgX25vZGVdLCBbcmVmQ2hpbGQgX25vZGVdLCBlYykpCi0gICAgICAgIHJl
dHVybiBuZXdDaGlsZDsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBuaWw7
Ci19Ci0KLS0gKERPTU5vZGUgKilyZXBsYWNlQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGlsZCA6KERP
TU5vZGUgKilvbGRDaGlsZAotewotICAgIEFTU0VSVChuZXdDaGlsZCk7Ci0gICAgQVNTRVJUKG9s
ZENoaWxkKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChbc2VsZiBfbm9k
ZV0tPnJlcGxhY2VDaGlsZChbbmV3Q2hpbGQgX25vZGVdLCBbb2xkQ2hpbGQgX25vZGVdLCBlYykp
Ci0gICAgICAgIHJldHVybiBvbGRDaGlsZDsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAg
IHJldHVybiBuaWw7Ci19Ci0KLS0gKERPTU5vZGUgKilyZW1vdmVDaGlsZDooRE9NTm9kZSAqKW9s
ZENoaWxkCi17Ci0gICAgQVNTRVJUKG9sZENoaWxkKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIGlmIChbc2VsZiBfbm9kZV0tPnJlbW92ZUNoaWxkKFtvbGRDaGlsZCBfbm9kZV0s
IGVjKSkKLSAgICAgICAgcmV0dXJuIG9sZENoaWxkOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7
Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoRE9NTm9kZSAqKWFwcGVuZENoaWxkOihET01Ob2Rl
ICopbmV3Q2hpbGQKLXsKLSAgICBBU1NFUlQobmV3Q2hpbGQpOwotCi0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgaWYgKFtzZWxmIF9ub2RlXS0+YXBwZW5kQ2hpbGQoW25ld0NoaWxkIF9u
b2RlXSwgZWMpKQotICAgICAgICByZXR1cm4gbmV3Q2hpbGQ7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChCT09MKWhhc0NoaWxkTm9kZXMKLXsKLSAg
ICByZXR1cm4gW3NlbGYgX25vZGVdLT5oYXNDaGlsZE5vZGVzKCk7Ci19Ci0KLS0gKERPTU5vZGUg
KiljbG9uZU5vZGU6KEJPT0wpZGVlcAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6
W3NlbGYgX25vZGVdLT5jbG9uZU5vZGUoZGVlcCkuZ2V0KCldOwotfQotCi0tICh2b2lkKW5vcm1h
bGl6ZQotewotICAgIFtzZWxmIF9ub2RlXS0+bm9ybWFsaXplKCk7Ci19Ci0KLS0gKEJPT0wpaXNT
dXBwb3J0ZWQ6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbgotewotICAg
IEFTU0VSVChmZWF0dXJlKTsKLSAgICBBU1NFUlQodmVyc2lvbik7Ci0KLSAgICByZXR1cm4gW3Nl
bGYgX25vZGVdLT5pc1N1cHBvcnRlZChmZWF0dXJlLCB2ZXJzaW9uKTsKLX0KLQotLSAoTlNTdHJp
bmcgKiluYW1lc3BhY2VVUkkKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5uYW1lc3BhY2VV
UkkoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilwcmVmaXgKLXsKLSAgICByZXR1cm4gW3NlbGYgX25v
ZGVdLT5wcmVmaXgoKTsKLX0KLQotLSAodm9pZClzZXRQcmVmaXg6KE5TU3RyaW5nICopcHJlZml4
Ci17Ci0gICAgQVNTRVJUKHByZWZpeCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBTdHJpbmcgcHJlZml4U3RyKHByZWZpeCk7Ci0gICAgW3NlbGYgX25vZGVdLT5zZXRQcmVmaXgo
cHJlZml4U3RyLmltcGwoKSwgZWMpOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+c2V0RGF0YShkYXRhLCBlYyk7CiAgICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKIH0KIAotLSAoTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICBy
ZXR1cm4gW3NlbGYgX25vZGVdLT5sb2NhbE5hbWUoKTsKLX0KLQotLSAoQk9PTCloYXNBdHRyaWJ1
dGVzCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aGFzQXR0cmlidXRlcygpOwotfQotCi0t
IChCT09MKWlzU2FtZU5vZGU6KERPTU5vZGUgKilvdGhlcgotewotICAgIHJldHVybiBbc2VsZiBf
bm9kZV0tPmlzU2FtZU5vZGUoW290aGVyIF9ub2RlXSk7Ci19Ci0KLS0gKEJPT0wpaXNFcXVhbE5v
ZGU6KERPTU5vZGUgKilvdGhlcgotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmlzRXF1YWxO
b2RlKFtvdGhlciBfbm9kZV0pOwotfQotCi0tIChCT09MKWlzRGVmYXVsdE5hbWVzcGFjZTooTlNT
dHJpbmcgKiluYW1lc3BhY2VVUkkKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc0RlZmF1
bHROYW1lc3BhY2UobmFtZXNwYWNlVVJJKTsKLX0KLQotLSAoTlNTdHJpbmcgKilsb29rdXBQcmVm
aXg6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+
bG9va3VwUHJlZml4KG5hbWVzcGFjZVVSSSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbG9va3VwTmFt
ZXNwYWNlVVJJOihOU1N0cmluZyAqKXByZWZpeAotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0t
Pmxvb2t1cE5hbWVzcGFjZVVSSShwcmVmaXgpOwotfQotCi0tIChOU1N0cmluZyAqKXRleHRDb250
ZW50CistICh1bnNpZ25lZClsZW5ndGgKIHsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT50ZXh0
Q29udGVudCgpOworICAgIHJldHVybiBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPmxlbmd0aCgpOwog
fQogCi0tICh2b2lkKXNldFRleHRDb250ZW50OihOU1N0cmluZyAqKXRleHQKKy0gKE5TU3RyaW5n
ICopc3Vic3RyaW5nRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpY291bnQKIHsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfbm9kZV0tPnNldFRleHRDb250ZW50
KHRleHQsIGVjKTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBOU1N0
cmluZyAqcmVzdWx0ID0gW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5zdWJzdHJpbmdEYXRhKG9mZnNl
dCwgY291bnQsIGVjKTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLS0gKE5TUmVjdClib3VuZGluZ0JveAotewotICAgIFdlYkNvcmU6OlJlbmRlck9i
amVjdCAqcmVuZGVyZXIgPSBbc2VsZiBfbm9kZV0tPnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRl
cmVyKQotICAgICAgICByZXR1cm4gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7
Ci0gICAgcmV0dXJuIE5TWmVyb1JlY3Q7Ci19Ci0KLS0gKE5TQXJyYXkgKilsaW5lQm94UmVjdHMK
LXsKLSAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gW3NlbGYgX25vZGVdLT5y
ZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlcikgewotICAgICAgICBOU011dGFibGVBcnJheSAq
cmVzdWx0cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAgICAgICBEZXByZWNh
dGVkVmFsdWVMaXN0PEludFJlY3Q+IHJlY3RzID0gcmVuZGVyZXItPmxpbmVCb3hSZWN0cygpOwot
ICAgICAgICBpZiAoIXJlY3RzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgZm9yIChEZXByZWNh
dGVkVmFsdWVMaXN0PEludFJlY3Q+OjpDb25zdEl0ZXJhdG9yIGl0ID0gcmVjdHMuYmVnaW4oKTsg
aXQgIT0gcmVjdHMuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICAgICAgW3Jlc3VsdHMgYWRkT2Jq
ZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6Kml0XV07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIFtyZXN1bHRzIGF1dG9yZWxlYXNlXTsKLSAgICB9Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQot
QGVuZAotCi1zdGF0aWMgdm9pZCBhZGRFbGVtZW50Q2xhc3MoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnLCBDbGFzcyBvYmpDQ2xhc3MpCi17Ci0gICAgZWxlbWVudENsYXNzTWFwLT5zZXQodGFnLmxv
Y2FsTmFtZSgpLmltcGwoKSwgb2JqQ0NsYXNzKTsKLX0KLQotc3RhdGljIHZvaWQgY3JlYXRlSFRN
TEVsZW1lbnRDbGFzc01hcCgpCi17Ci0gICAgLy8gQ3JlYXRlIHRoZSB0YWJsZS4KLSAgICBlbGVt
ZW50Q2xhc3NNYXAgPSBuZXcgT2JqQ0NsYXNzTWFwOwotICAgIAotICAgIC8vIFBvcHVsYXRlIGl0
IHdpdGggSFRNTCBlbGVtZW50IGNsYXNzZXMuCi0gICAgYWRkRWxlbWVudENsYXNzKGFUYWcsIFtE
T01IVE1MQW5jaG9yRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhhcHBsZXRU
YWcsIFtET01IVE1MQXBwbGV0RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhh
cmVhVGFnLCBbRE9NSFRNTEFyZWFFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KGJhc2VUYWcsIFtET01IVE1MQmFzZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xh
c3MoYmFzZWZvbnRUYWcsIFtET01IVE1MQmFzZUZvbnRFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRk
RWxlbWVudENsYXNzKGJvZHlUYWcsIFtET01IVE1MQm9keUVsZW1lbnQgY2xhc3NdKTsKLSAgICBh
ZGRFbGVtZW50Q2xhc3MoYnJUYWcsIFtET01IVE1MQlJFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRk
RWxlbWVudENsYXNzKGJ1dHRvblRhZywgW0RPTUhUTUxCdXR0b25FbGVtZW50IGNsYXNzXSk7Ci0g
ICAgYWRkRWxlbWVudENsYXNzKGNhbnZhc1RhZywgW0RPTUhUTUxJbWFnZUVsZW1lbnQgY2xhc3Nd
KTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoY2FwdGlvblRhZywgW0RPTUhUTUxUYWJsZUNhcHRpb25F
bGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGNvbFRhZywgW0RPTUhUTUxUYWJs
ZUNvbEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoY29sZ3JvdXBUYWcsIFtE
T01IVE1MVGFibGVDb2xFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGRpclRh
ZywgW0RPTUhUTUxEaXJlY3RvcnlFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KGRpdlRhZywgW0RPTUhUTUxEaXZFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KGRsVGFnLCBbRE9NSFRNTERMaXN0RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFz
cyhmaWVsZHNldFRhZywgW0RPTUhUTUxGaWVsZFNldEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRF
bGVtZW50Q2xhc3MoZm9udFRhZywgW0RPTUhUTUxGb250RWxlbWVudCBjbGFzc10pOwotICAgIGFk
ZEVsZW1lbnRDbGFzcyhmb3JtVGFnLCBbRE9NSFRNTEZvcm1FbGVtZW50IGNsYXNzXSk7Ci0gICAg
YWRkRWxlbWVudENsYXNzKGZyYW1lVGFnLCBbRE9NSFRNTEZyYW1lRWxlbWVudCBjbGFzc10pOwot
ICAgIGFkZEVsZW1lbnRDbGFzcyhmcmFtZXNldFRhZywgW0RPTUhUTUxGcmFtZVNldEVsZW1lbnQg
Y2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDFUYWcsIFtET01IVE1MSGVhZGluZ0VsZW1l
bnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDJUYWcsIFtET01IVE1MSGVhZGluZ0Vs
ZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDNUYWcsIFtET01IVE1MSGVhZGlu
Z0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDRUYWcsIFtET01IVE1MSGVh
ZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDVUYWcsIFtET01IVE1M
SGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDZUYWcsIFtET01I
VE1MSGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaGVhZFRhZywg
W0RPTUhUTUxIZWFkRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoclRhZywg
W0RPTUhUTUxIUkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaHRtbFRhZywg
W0RPTUhUTUxIdG1sRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhpZnJhbWVU
YWcsIFtET01IVE1MSUZyYW1lRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhp
bWdUYWcsIFtET01IVE1MSW1hZ2VFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KGlucHV0VGFnLCBbRE9NSFRNTElucHV0RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyhpc2luZGV4VGFnLCBbRE9NSFRNTElzSW5kZXhFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRk
RWxlbWVudENsYXNzKGxhYmVsVGFnLCBbRE9NSFRNTExhYmVsRWxlbWVudCBjbGFzc10pOwotICAg
IGFkZEVsZW1lbnRDbGFzcyhsZWdlbmRUYWcsIFtET01IVE1MTGVnZW5kRWxlbWVudCBjbGFzc10p
OwotICAgIGFkZEVsZW1lbnRDbGFzcyhsaVRhZywgW0RPTUhUTUxMSUVsZW1lbnQgY2xhc3NdKTsK
LSAgICBhZGRFbGVtZW50Q2xhc3MobGlua1RhZywgW0RPTUhUTUxMaW5rRWxlbWVudCBjbGFzc10p
OwotICAgIGFkZEVsZW1lbnRDbGFzcyhsaXN0aW5nVGFnLCBbRE9NSFRNTFByZUVsZW1lbnQgY2xh
c3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MobWFwVGFnLCBbRE9NSFRNTE1hcEVsZW1lbnQgY2xh
c3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MobWVudVRhZywgW0RPTUhUTUxNZW51RWxlbWVudCBj
bGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhtZXRhVGFnLCBbRE9NSFRNTE1ldGFFbGVtZW50
IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKG9iamVjdFRhZywgW0RPTUhUTUxPYmplY3RF
bGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKG9sVGFnLCBbRE9NSFRNTE9MaXN0
RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhvcHRncm91cFRhZywgW0RPTUhU
TUxPcHRHcm91cEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mob3B0aW9uVGFn
LCBbRE9NSFRNTE9wdGlvbkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MocFRh
ZywgW0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KHBhcmFtVGFnLCBbRE9NSFRNTFBhcmFtRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyhwcmVUYWcsIFtET01IVE1MUHJlRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyhxVGFnLCBbRE9NSFRNTFF1b3RlRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyhzY3JpcHRUYWcsIFtET01IVE1MU2NyaXB0RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVs
ZW1lbnRDbGFzcyhzZWxlY3RUYWcsIFtET01IVE1MU2VsZWN0RWxlbWVudCBjbGFzc10pOwotICAg
IGFkZEVsZW1lbnRDbGFzcyhzdHlsZVRhZywgW0RPTUhUTUxTdHlsZUVsZW1lbnQgY2xhc3NdKTsK
LSAgICBhZGRFbGVtZW50Q2xhc3ModGFibGVUYWcsIFtET01IVE1MVGFibGVFbGVtZW50IGNsYXNz
XSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHRib2R5VGFnLCBbRE9NSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModGRUYWcsIFtET01IVE1MVGFibGVD
ZWxsRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh0ZXh0YXJlYVRhZywgW0RP
TUhUTUxUZXh0QXJlYUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModGZvb3RU
YWcsIFtET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyh0aGVhZFRhZywgW0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50IGNsYXNzXSk7Ci0gICAg
YWRkRWxlbWVudENsYXNzKHRpdGxlVGFnLCBbRE9NSFRNTFRpdGxlRWxlbWVudCBjbGFzc10pOwot
ICAgIGFkZEVsZW1lbnRDbGFzcyh0clRhZywgW0RPTUhUTUxUYWJsZVJvd0VsZW1lbnQgY2xhc3Nd
KTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModWxUYWcsIFtET01IVE1MVUxpc3RFbGVtZW50IGNsYXNz
XSk7Ci0KLSAgICAvLyBGSVhNRTogUmVmbGVjdCBtYXJxdWVlIG9uY2UgdGhlIEFQSSBoYXMgYmVl
biBkZXRlcm1pbmVkLgotfQotCi1zdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21p
Y1N0cmluZyYgdGFnTmFtZSkKLXsKLSAgICBpZiAoIWVsZW1lbnRDbGFzc01hcCkKLSAgICAgICAg
Y3JlYXRlSFRNTEVsZW1lbnRDbGFzc01hcCgpOwotICAgIENsYXNzIG9iamNDbGFzcyA9IGVsZW1l
bnRDbGFzc01hcC0+Z2V0KHRhZ05hbWUuaW1wbCgpKTsKLSAgICBpZiAoIW9iamNDbGFzcykKLSAg
ICAgICAgb2JqY0NsYXNzID0gW0RPTUhUTUxFbGVtZW50IGNsYXNzXTsKLSAgICByZXR1cm4gb2Jq
Y0NsYXNzOwotfQotCi1AaW1wbGVtZW50YXRpb24gRE9NTm9kZSAoV2ViQ29yZUludGVybmFsKQot
Ci0tIChpZClfaW5pdFdpdGhOb2RlOihOb2RlICopaW1wbAotewotICAgIEFTU0VSVChpbXBsKTsK
LQotICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0
SW50ZXJuYWwgKj4oaW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcihz
ZWxmLCBpbXBsKTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotKyAoRE9NTm9kZSAqKV9ub2RlV2l0
aDooTm9kZSAqKWltcGwKLXsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAgY2FjaGVkSW5zdGFuY2UgPSBnZXRET01X
cmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIFtb
Y2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgCi0gICAgQ2xhc3Mgd3Jh
cHBlckNsYXNzID0gbmlsOwotICAgIHN3aXRjaCAoaW1wbC0+bm9kZVR5cGUoKSkgewotICAgICAg
ICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERToKLSAgICAgICAgICAgIGlmIChpbXBsLT5pc0hUTUxF
bGVtZW50KCkpCi0gICAgICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gZWxlbWVudENsYXNzKHN0
YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oaW1wbCktPmxvY2FsTmFtZSgpKTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NRWxlbWVudCBjbGFzc107
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToK
LSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01BdHRyIGNsYXNzXTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKLSAgICAgICAgICAgIHdyYXBw
ZXJDbGFzcyA9IFtET01UZXh0IGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKLSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9
IFtET01DREFUQVNlY3Rpb24gY2xhc3NdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgotICAgICAgICAgICAgd3JhcHBlckNsYXNz
ID0gW0RPTUVudGl0eVJlZmVyZW5jZSBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKLSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtE
T01FbnRpdHkgY2xhc3NdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6
UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgotICAgICAgICAgICAgd3JhcHBlckNsYXNzID0g
W0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBOb2RlOjpDT01NRU5UX05PREU6Ci0gICAgICAgICAgICB3cmFwcGVyQ2xhc3Mg
PSBbRE9NQ29tbWVudCBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBO
b2RlOjpET0NVTUVOVF9OT0RFOgotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PERvY3VtZW50
Kj4oaW1wbCktPmlzSFRNTERvY3VtZW50KCkpCi0gICAgICAgICAgICAgICAgd3JhcHBlckNsYXNz
ID0gW0RPTUhUTUxEb2N1bWVudCBjbGFzc107Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgd3JhcHBlckNsYXNzID0gW0RPTURvY3VtZW50IGNsYXNzXTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKLSAgICAgICAgICAg
IHdyYXBwZXJDbGFzcyA9IFtET01Eb2N1bWVudFR5cGUgY2xhc3NdOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICAgICAg
ICAgIHdyYXBwZXJDbGFzcyA9IFtET01Eb2N1bWVudEZyYWdtZW50IGNsYXNzXTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6Ci0gICAgICAgICAg
ICB3cmFwcGVyQ2xhc3MgPSBbRE9NTm90YXRpb24gY2xhc3NdOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgICAgICAgICAv
LyBGSVhNRTogQ3JlYXRlIGFuIFhQYXRoIG9iamVjdGl2ZSBDIHdyYXBwZXIKLSAgICAgICAgICAg
IC8vIFNlZSBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTg3
NTUKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotICAgIHJldHVybiBbW1t3cmFwcGVy
Q2xhc3MgYWxsb2NdIF9pbml0V2l0aE5vZGU6aW1wbF0gYXV0b3JlbGVhc2VdOwotfQotCi0tIChO
b2RlICopX25vZGUKLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpOwot
fQotCi0tIChjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICopX2V4ZWN1dGlvbkNvbnRl
eHQKLXsKLSAgICBpZiAoTm9kZSAqbiA9IFtzZWxmIF9ub2RlXSkKLSAgICAgICAgaWYgKEZyYW1l
TWFjICpmID0gTWFjKG4tPmRvY3VtZW50KCktPmZyYW1lKCkpKQotICAgICAgICAgICAgcmV0dXJu
IGYtPmV4ZWN1dGlvbkNvbnRleHRGb3JET00oKTsKLQotICAgIHJldHVybiAwOwotfQotCi1AZW5k
Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChXZWJQcml2YXRlKQotCi0tIChCT09MKWlzQ29u
dGVudEVkaXRhYmxlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aXNDb250ZW50RWRpdGFi
bGUoKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NTm9kZSAoRE9NRXZlbnRUYXJn
ZXQpCi0KLS0gKHZvaWQpYWRkRXZlbnRMaXN0ZW5lcjooTlNTdHJpbmcgKil0eXBlIDooaWQgPERP
TUV2ZW50TGlzdGVuZXI+KWxpc3RlbmVyIDooQk9PTCl1c2VDYXB0dXJlCistICh2b2lkKWFwcGVu
ZERhdGE6KE5TU3RyaW5nICopYXJnCiB7Ci0gICAgaWYgKCFbc2VsZiBfbm9kZV0tPmlzRXZlbnRU
YXJnZXROb2RlKCkpCi0gICAgICAgIHJhaXNlRE9NRXhjZXB0aW9uKERPTV9OT1RfU1VQUE9SVEVE
X0VSUik7CisgICAgQVNTRVJUKGFyZyk7CiAgICAgCi0gICAgRXZlbnRMaXN0ZW5lciAqd3JhcHBl
ciA9IE9iakNFdmVudExpc3RlbmVyOjpjcmVhdGUobGlzdGVuZXIpOwotICAgIEV2ZW50VGFyZ2V0
Tm9kZUNhc3QoW3NlbGYgX25vZGVdKS0+YWRkRXZlbnRMaXN0ZW5lcih0eXBlLCB3cmFwcGVyLCB1
c2VDYXB0dXJlKTsKLSAgICB3cmFwcGVyLT5kZXJlZigpOwotfQotCi0tICh2b2lkKXJlbW92ZUV2
ZW50TGlzdGVuZXI6KE5TU3RyaW5nICopdHlwZSA6KGlkIDxET01FdmVudExpc3RlbmVyPilsaXN0
ZW5lciA6KEJPT0wpdXNlQ2FwdHVyZQotewotICAgIGlmICghW3NlbGYgX25vZGVdLT5pc0V2ZW50
VGFyZ2V0Tm9kZSgpKQotICAgICAgICByYWlzZURPTUV4Y2VwdGlvbihET01fTk9UX1NVUFBPUlRF
RF9FUlIpOwotCi0gICAgaWYgKEV2ZW50TGlzdGVuZXIgKndyYXBwZXIgPSBPYmpDRXZlbnRMaXN0
ZW5lcjo6ZmluZChsaXN0ZW5lcikpCi0gICAgICAgIEV2ZW50VGFyZ2V0Tm9kZUNhc3QoW3NlbGYg
X25vZGVdKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCB3cmFwcGVyLCB1c2VDYXB0dXJlKTsK
LX0KLQotLSAoQk9PTClkaXNwYXRjaEV2ZW50OihET01FdmVudCAqKWV2ZW50Ci17Ci0gICAgaWYg
KCFbc2VsZiBfbm9kZV0tPmlzRXZlbnRUYXJnZXROb2RlKCkpCi0gICAgICAgIHJhaXNlRE9NRXhj
ZXB0aW9uKERPTV9OT1RfU1VQUE9SVEVEX0VSUik7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBCT09MIHJlc3VsdCA9IEV2ZW50VGFyZ2V0Tm9kZUNhc3QoW3NlbGYgX25vZGVdKS0+
ZGlzcGF0Y2hFdmVudChbZXZlbnQgX2V2ZW50XSwgZWMpOworICAgIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+YXBwZW5kRGF0YShhcmcs
IGVjKTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTU5hbWVk
Tm9kZU1hcAotCi1AaW1wbGVtZW50YXRpb24gRE9NTmFtZWROb2RlTWFwCi0KLS0gKHZvaWQpZGVh
bGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8TmFtZWROb2Rl
TWFwICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsK
LX0KLQotLSAodm9pZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAg
RE9NX2Nhc3Q8TmFtZWROb2RlTWFwICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAg
IFtzdXBlciBmaW5hbGl6ZV07CiB9CiAKLS0gKE5hbWVkTm9kZU1hcCAqKV9uYW1lZE5vZGVNYXAK
LXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8TmFtZWROb2RlTWFwICo+KF9pbnRlcm5hbCk7Ci19Ci0K
LS0gKERPTU5vZGUgKilnZXROYW1lZEl0ZW06KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VS
VChuYW1lKTsKLQotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9k
ZU1hcF0tPmdldE5hbWVkSXRlbShuYW1lKS5nZXQoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilzZXRO
YW1lZEl0ZW06KERPTU5vZGUgKilhcmcKKy0gKHZvaWQpaW5zZXJ0RGF0YToodW5zaWduZWQpb2Zm
c2V0IDooTlNTdHJpbmcgKilhcmcKIHsKICAgICBBU1NFUlQoYXJnKTsKLQotICAgIGludCBleGNl
cHRpb24gPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2Vs
ZiBfbmFtZWROb2RlTWFwXS0+c2V0TmFtZWRJdGVtKFthcmcgX25vZGVdLCBleGNlcHRpb24pLmdl
dCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi0tIChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVtOihOU1N0cmluZyAqKW5hbWUKLXsK
LSAgICBBU1NFUlQobmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01Ob2Rl
ICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPnJlbW92
ZU5hbWVkSXRlbShuYW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3Io
ZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlICopaXRlbToo
dW5zaWduZWQpaW5kZXgKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9u
YW1lZE5vZGVNYXBdLT5pdGVtKGluZGV4KS5nZXQoKV07Ci19Ci0KLS0gKHVuc2lnbmVkKWxlbmd0
aAotewotICAgIHJldHVybiBbc2VsZiBfbmFtZWROb2RlTWFwXS0+bGVuZ3RoKCk7CisgICAgCisg
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgW3NlbGYgX2NoYXJhY3RlckRh
dGFdLT5pbnNlcnREYXRhKG9mZnNldCwgYXJnLCBlYyk7CisgICAgcmFpc2VPbkRPTUVycm9yKGVj
KTsKIH0KIAotLSAoRE9NTm9kZSAqKWdldE5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVzcGFj
ZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCistICh2b2lkKWRlbGV0ZURhdGE6KHVuc2lnbmVk
KW9mZnNldCA6KHVuc2lnbmVkKSBjb3VudAogewotICAgIGlmICghbmFtZXNwYWNlVVJJIHx8ICFs
b2NhbE5hbWUpIHsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICByZXR1cm4gW0RP
TU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5nZXROYW1lZEl0ZW1OUyhuYW1l
c3BhY2VVUkksIGxvY2FsTmFtZSkuZ2V0KCldOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+ZGVsZXRlRGF0YShvZmZzZXQsIGNv
dW50LCBlYyk7CisgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKIH0KIAotLSAoRE9NTm9kZSAqKXNl
dE5hbWVkSXRlbU5TOihET01Ob2RlICopYXJnCistICh2b2lkKXJlcGxhY2VEYXRhOih1bnNpZ25l
ZClvZmZzZXQgOih1bnNpZ25lZCljb3VudCA6KE5TU3RyaW5nICopYXJnCiB7CiAgICAgQVNTRVJU
KGFyZyk7CiAKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBb
RE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPnNldE5hbWVkSXRlbU5TKFth
cmcgX25vZGVdLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0
aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlICopcmVtb3ZlTmFtZWRJ
dGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsK
LSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQobG9jYWxOYW1lKTsKLQotICAg
IGludCBleGNlcHRpb24gPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2Rl
V2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+cmVtb3ZlTmFtZWRJdGVtTlMobmFtZXNwYWNlVVJJ
LCBsb2NhbE5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNl
cHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5yZXBsYWNlRGF0YShvZmZzZXQsIGNv
dW50LCBhcmcsIGVjKTsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogfQogCiBAZW5kCi0KLUBp
bXBsZW1lbnRhdGlvbiBET01OYW1lZE5vZGVNYXAgKFdlYkNvcmVJbnRlcm5hbCkKLQotLSAoaWQp
X2luaXRXaXRoTmFtZWROb2RlTWFwOihOYW1lZE5vZGVNYXAgKilpbXBsCi17Ci0gICAgQVNTRVJU
KGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxE
T01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01X
cmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01OYW1lZE5v
ZGVNYXAgKilfbmFtZWROb2RlTWFwV2l0aDooTmFtZWROb2RlTWFwICopaW1wbAotewotICAgIGlm
ICghaW1wbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5j
ZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNh
Y2hlZEluc3RhbmNlKQotICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1
dG9yZWxlYXNlXTsKLSAgICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTmFt
ZWROb2RlTWFwOmltcGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NTm9kZUxpc3QKLQotQGltcGxlbWVudGF0aW9u
IERPTU5vZGVMaXN0Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpIHsK
LSAgICAgICAgRE9NX2Nhc3Q8Tm9kZUxpc3QgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9
Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgaWYg
KF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50ZXJuYWwpLT5k
ZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChOb2RlTGlzdCAq
KV9ub2RlTGlzdAotewotICAgIHJldHVybiBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50ZXJuYWwp
OwotfQotCi0tIChET01Ob2RlICopaXRlbToodW5zaWduZWQpaW5kZXgKLXsKLSAgICByZXR1cm4g
W0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9ub2RlTGlzdF0tPml0ZW0oaW5kZXgpXTsKLX0KLQot
LSAodW5zaWduZWQpbGVuZ3RoCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlTGlzdF0tPmxlbmd0
aCgpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlTGlzdCAoV2ViQ29yZUlu
dGVybmFsKQotCi0tIChpZClfaW5pdFdpdGhOb2RlTGlzdDooTm9kZUxpc3QgKilpbXBsCi17Ci0g
ICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBE
T01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAg
ICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChE
T01Ob2RlTGlzdCAqKV9ub2RlTGlzdFdpdGg6KE5vZGVMaXN0ICopaW1wbAotewotICAgIGlmICgh
aW1wbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsK
LSAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hl
ZEluc3RhbmNlKQotICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKLSAgICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTm9kZUxp
c3Q6aW1wbF0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0vLyBET01JbXBsZW1lbnRhdGlvbgotCi1AaW1wbGVtZW50YXRpb24g
RE9NSW1wbGVtZW50YXRpb24KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5h
bCkKLSAgICAgICAgRE9NX2Nhc3Q8RE9NSW1wbGVtZW50YXRpb25Gcm9udCAqPihfaW50ZXJuYWwp
LT5kZXJlZigpOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6ZQot
ewotICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIERPTV9jYXN0PERPTUltcGxlbWVudGF0aW9u
RnJvbnQgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQot
Ci0tIChCT09MKWhhc0ZlYXR1cmU6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVy
c2lvbgotewotICAgIEFTU0VSVChmZWF0dXJlKTsKLSAgICBBU1NFUlQodmVyc2lvbik7Ci0KLSAg
ICByZXR1cm4gW3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+aGFzRmVhdHVyZShmZWF0dXJlLCB2
ZXJzaW9uKTsKLX0KLQotLSAoRE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBlOihO
U1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXB1YmxpY0lkIDooTlNTdHJpbmcg
KilzeXN0ZW1JZAotewotICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsKLSAgICBBU1NFUlQocHVi
bGljSWQpOwotICAgIEFTU0VSVChzeXN0ZW1JZCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBSZWZQdHI8RG9jdW1lbnRUeXBlPiBpbXBsID0gW3NlbGYgX0RPTUltcGxlbWVudGF0
aW9uXS0+Y3JlYXRlRG9jdW1lbnRUeXBlKHF1YWxpZmllZE5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1J
ZCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PERPTURvY3VtZW50VHlwZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQoKV0pOwotfQot
Ci0tIChET01Eb2N1bWVudCAqKWNyZWF0ZURvY3VtZW50OihOU1N0cmluZyAqKW5hbWVzcGFjZVVS
SSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KERPTURvY3VtZW50VHlwZSAqKWRvY3R5cGUK
LXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7
Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8RG9jdW1lbnQ+IGltcGwg
PSBbc2VsZiBfRE9NSW1wbGVtZW50YXRpb25dLT5jcmVhdGVEb2N1bWVudChuYW1lc3BhY2VVUkks
IHF1YWxpZmllZE5hbWUsIFtkb2N0eXBlIF9kb2N1bWVudFR5cGVdLCBlYyk7Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnQgKj4oW0RP
TU5vZGUgX25vZGVXaXRoOmltcGwuZ2V0KCldKTsKLX0KLQotLSAoRE9NSFRNTERvY3VtZW50ICop
Y3JlYXRlSFRNTERvY3VtZW50OihOU1N0cmluZyAqKXRpdGxlCi17Ci0gICAgUmVmUHRyPEhUTUxE
b2N1bWVudD4gaW1wbCA9IFtzZWxmIF9ET01JbXBsZW1lbnRhdGlvbl0tPmNyZWF0ZUhUTUxEb2N1
bWVudCh0aXRsZSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUhUTUxEb2N1bWVudCAqPihb
RE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQoKV0pOwotfQotQGVuZAotCi1AaW1wbGVtZW50YXRp
b24gRE9NSW1wbGVtZW50YXRpb24gKERPTUltcGxlbWVudGF0aW9uQ1NTKQotCi0tIChET01DU1NT
dHlsZVNoZWV0ICopY3JlYXRlQ1NTU3R5bGVTaGVldDooTlNTdHJpbmcgKil0aXRsZSA6KE5TU3Ry
aW5nICopbWVkaWEKLXsKLSAgICBBU1NFUlQodGl0bGUpOwotICAgIEFTU0VSVChtZWRpYSk7Ci0K
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01DU1NTdHlsZVNoZWV0ICpyZXN1bHQg
PSBbRE9NQ1NTU3R5bGVTaGVldCBfQ1NTU3R5bGVTaGVldFdpdGg6W3NlbGYgX0RPTUltcGxlbWVu
dGF0aW9uXS0+Y3JlYXRlQ1NTU3R5bGVTaGVldCh0aXRsZSwgbWVkaWEsIGVjKS5nZXQoKV07Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1AZW5kCi0g
Ci1AaW1wbGVtZW50YXRpb24gRE9NSW1wbGVtZW50YXRpb24gKFdlYkNvcmVJbnRlcm5hbCkKLQot
LSAoaWQpX2luaXRXaXRoRE9NSW1wbGVtZW50YXRpb246KERPTUltcGxlbWVudGF0aW9uRnJvbnQg
KilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBf
aW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBs
LT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxm
OwotfQotCi0rIChET01JbXBsZW1lbnRhdGlvbiAqKV9ET01JbXBsZW1lbnRhdGlvbldpdGg6KERP
TUltcGxlbWVudGF0aW9uRnJvbnQgKilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3Rh
bmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAg
ICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAot
ICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhET01JbXBsZW1lbnRhdGlvbjppbXBs
XSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilfRE9NSW1w
bGVtZW50YXRpb24KLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8RE9NSW1wbGVtZW50YXRpb25Gcm9u
dCAqPihfaW50ZXJuYWwpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyBET01Eb2N1bWVudEZyYWdtZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01E
b2N1bWVudEZyYWdtZW50Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50RnJh
Z21lbnQgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1
bWVudEZyYWdtZW50V2l0aDooRG9jdW1lbnRGcmFnbWVudCAqKWltcGwKLXsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnRGcmFnbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1w
bF0pOwotfQotCi0tIChEb2N1bWVudEZyYWdtZW50ICopX2ZyYWdtZW50Ci17Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJu
YWwpKTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ly8gRE9NRG9jdW1lbnQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50Ci0KLS0gKERPTU5v
ZGUgKilhZG9wdE5vZGU6KERPTU5vZGUgKilzb3VyY2UKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2Rv
Y3VtZW50XS0+YWRvcHROb2RlKFtzb3VyY2UgX25vZGVdLCBlYykuZ2V0KCldOwotICAgIHJhaXNl
T25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRG9jdW1lbnRU
eXBlICopZG9jdHlwZQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudFR5cGUg
Kj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmRvY3R5cGUoKV0pOwotfQot
Ci0tIChET01JbXBsZW1lbnRhdGlvbiAqKWltcGxlbWVudGF0aW9uCi17Ci0gICAgcmV0dXJuIFtE
T01JbXBsZW1lbnRhdGlvbiBfRE9NSW1wbGVtZW50YXRpb25XaXRoOmltcGxlbWVudGF0aW9uRnJv
bnQoW3NlbGYgX2RvY3VtZW50XSldOwotfQotCi0tIChET01FbGVtZW50ICopZG9jdW1lbnRFbGVt
ZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUgX25v
ZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmRvY3VtZW50RWxlbWVudCgpXSk7Ci19Ci0KLS0gKERP
TUVsZW1lbnQgKiljcmVhdGVFbGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWUKLXsKLSAgICBBU1NF
UlQodGFnTmFtZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01FbGVtZW50
ICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpb
c2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVFbGVtZW50KHRhZ05hbWUsIGVjKS5nZXQoKV0pOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRG9j
dW1lbnRGcmFnbWVudCAqKWNyZWF0ZURvY3VtZW50RnJhZ21lbnQKLXsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RE9NRG9jdW1lbnRGcmFnbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYg
X2RvY3VtZW50XS0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLmdldCgpXSk7Ci19Ci0KLS0gKERP
TVRleHQgKiljcmVhdGVUZXh0Tm9kZTooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRh
dGEpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01UZXh0ICo+KFtET01Ob2RlIF9ub2RlV2l0
aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVUZXh0Tm9kZShkYXRhKS5nZXQoKV0pOwotfQotCi0t
IChET01Db21tZW50ICopY3JlYXRlQ29tbWVudDooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNT
RVJUKGRhdGEpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Db21tZW50ICo+KFtET01Ob2Rl
IF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDb21tZW50KGRhdGEpLmdldCgpXSk7
Ci19Ci0KLS0gKERPTUNEQVRBU2VjdGlvbiAqKWNyZWF0ZUNEQVRBU2VjdGlvbjooTlNTdHJpbmcg
KilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIGludCBleGNlcHRpb24gPSAwOwotICAg
IERPTUNEQVRBU2VjdGlvbiAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RE9NQ0RBVEFTZWN0aW9uICo+
KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDREFUQVNlY3Rpb24o
ZGF0YSwgZXhjZXB0aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAq
KWNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbjooTlNTdHJpbmcgKil0YXJnZXQgOihOU1N0cmlu
ZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQodGFyZ2V0KTsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAg
aW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICpyZXN1bHQg
PSBzdGF0aWNfY2FzdDxET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKj4oW0RPTU5vZGUgX25vZGVX
aXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbih0YXJnZXQs
IGRhdGEsIGV4Y2VwdGlvbikuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9u
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01BdHRyICopY3JlYXRlQXR0cmlidXRl
OihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0gICAgaW50IGV4Y2VwdGlv
biA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9k
b2N1bWVudF0tPmNyZWF0ZUF0dHJpYnV0ZShuYW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICBy
YWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChE
T01FbnRpdHlSZWZlcmVuY2UgKiljcmVhdGVFbnRpdHlSZWZlcmVuY2U6KE5TU3RyaW5nICopbmFt
ZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01F
bnRpdHlSZWZlcmVuY2UgKnJlc3VsdCA9IHN0YXRpY19jYXN0PERPTUVudGl0eVJlZmVyZW5jZSAq
PihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRW50aXR5UmVmZXJl
bmNlKG5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0
aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1l
bnRzQnlUYWdOYW1lOihOU1N0cmluZyAqKXRhZ25hbWUKLXsKLSAgICBBU1NFUlQodGFnbmFtZSk7
Ci0gICAgcmV0dXJuIFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOltzZWxmIF9kb2N1bWVudF0t
PmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ25hbWUpLmdldCgpXTsKLX0KLQotLSAoRE9NTm9kZSAq
KWltcG9ydE5vZGU6KERPTU5vZGUgKilpbXBvcnRlZE5vZGUgOihCT09MKWRlZXAKLXsKLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+aW1wb3J0Tm9kZShbaW1wb3J0ZWROb2RlIF9ub2RlXSwg
ZGVlcCwgZWMpLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLS0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50TlM6KE5TU3RyaW5nICop
bmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lCi17Ci0gICAgQVNTRVJUKG5h
bWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotCi0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltz
ZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5h
bWUsIGVjKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RE9NRWxlbWVudCAqPihyZXN1bHQpOwotfQotCi0tIChET01BdHRyICopY3JlYXRl
QXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZp
ZWROYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1YWxpZmll
ZE5hbWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0g
W0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUF0dHJpYnV0ZU5TKG5h
bWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9k
ZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6
KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAg
QVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdp
dGg6W3NlbGYgX2RvY3VtZW50XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhuYW1lc3BhY2VVUkks
IGxvY2FsTmFtZSkuZ2V0KCldOwotfQotCi0tIChET01FbGVtZW50ICopZ2V0RWxlbWVudEJ5SWQ6
KE5TU3RyaW5nICopZWxlbWVudElkCi17Ci0gICAgQVNTRVJUKGVsZW1lbnRJZCk7Ci0KLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYg
X2RvY3VtZW50XS0+Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKV0pOwotfQotCi1AZW5kCi0KLUBp
bXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRSYW5nZSkKLQotLSAoRE9NUmFu
Z2UgKiljcmVhdGVSYW5nZQotewotICAgIHJldHVybiBbRE9NUmFuZ2UgX3JhbmdlV2l0aDpbc2Vs
ZiBfZG9jdW1lbnRdLT5jcmVhdGVSYW5nZSgpLmdldCgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVt
ZW50YXRpb24gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50Q1NTKQotCi0tIChET01DU1NTdHlsZURl
Y2xhcmF0aW9uICopZ2V0T3ZlcnJpZGVTdHlsZTooRE9NRWxlbWVudCAqKWVsdCA6KE5TU3RyaW5n
ICopcHNldWRvRWx0Ci17Ci0gICAgRWxlbWVudCAqZWxlbWVudCA9IFtlbHQgX2VsZW1lbnRdOwot
ICAgIFN0cmluZyBwc2V1ZG9FbHRTdHJpbmcocHNldWRvRWx0KTsKLSAgICByZXR1cm4gW0RPTUNT
U1N0eWxlRGVjbGFyYXRpb24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOltzZWxmIF9kb2N1bWVudF0t
PmdldE92ZXJyaWRlU3R5bGUoZWxlbWVudCwgcHNldWRvRWx0U3RyaW5nLmltcGwoKSldOwotfQot
Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRTdHlsZSkK
LQotLSAoRE9NU3R5bGVTaGVldExpc3QgKilzdHlsZVNoZWV0cwotewotICAgIHJldHVybiBbRE9N
U3R5bGVTaGVldExpc3QgX3N0eWxlU2hlZXRMaXN0V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5zdHls
ZVNoZWV0cygpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQgKERP
TURvY3VtZW50RXh0ZW5zaW9ucykKLQotLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKWNyZWF0
ZUNTU1N0eWxlRGVjbGFyYXRpb24KLXsKLSAgICByZXR1cm4gW0RPTUNTU1N0eWxlRGVjbGFyYXRp
b24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNTU1N0eWxl
RGVjbGFyYXRpb24oKS5nZXQoKV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURv
Y3VtZW50IChXZWJDb3JlSW50ZXJuYWwpCi0KLSsgKERPTURvY3VtZW50ICopX2RvY3VtZW50V2l0
aDooRG9jdW1lbnQgKilpbXBsCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURvY3VtZW50
ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19Ci0KLS0gKERvY3VtZW50ICopX2RvY3Vt
ZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50ICo+KERPTV9jYXN0PE5vZGUg
Kj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilfb3duZXJFbGVtZW50Ci17Ci0g
ICAgcmV0dXJuIFtET01FbGVtZW50IF9lbGVtZW50V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5vd25l
ckVsZW1lbnQoKV07Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLS8vIERPTUNoYXJhY3RlckRhdGEKLQotQGltcGxlbWVudGF0aW9uIERPTUNoYXJhY3Rl
ckRhdGEKLQotLSAoQ2hhcmFjdGVyRGF0YSAqKV9jaGFyYWN0ZXJEYXRhCi17Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PENoYXJhY3RlckRhdGEgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwp
KTsKLX0KLQotLSAoTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgLy8gRG9jdW1lbnRhdGlvbiBzYXlz
IHdlIGNhbiByYWlzZSBhIERPTVNUUklOR19TSVpFX0VSUi4KLSAgICAvLyBIb3dldmVyLCB0aGUg
bG93ZXIgbGF5ZXIgZG9lcyBub3QgcmVwb3J0IHRoYXQgZXJyb3IgdXAgdG8gdXMuCi0gICAgcmV0
dXJuIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+ZGF0YSgpOwotfQotCi0tICh2b2lkKXNldERhdGE6
KE5TU3RyaW5nICopZGF0YQotewotICAgIEFTU0VSVChkYXRhKTsKLSAgICAKLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPnNldERhdGEoZGF0YSwg
ZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHVuc2lnbmVkKWxlbmd0aAot
ewotICAgIHJldHVybiBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPmxlbmd0aCgpOwotfQotCi0tIChO
U1N0cmluZyAqKXN1YnN0cmluZ0RhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKWNvdW50
Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgTlNTdHJpbmcgKnJlc3VsdCA9IFtz
ZWxmIF9jaGFyYWN0ZXJEYXRhXS0+c3Vic3RyaW5nRGF0YShvZmZzZXQsIGNvdW50LCBlYyk7Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lk
KWFwcGVuZERhdGE6KE5TU3RyaW5nICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7Ci0gICAgCi0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5hcHBl
bmREYXRhKGFyZywgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQp
aW5zZXJ0RGF0YToodW5zaWduZWQpb2Zmc2V0IDooTlNTdHJpbmcgKilhcmcKLXsKLSAgICBBU1NF
UlQoYXJnKTsKLSAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hh
cmFjdGVyRGF0YV0tPmluc2VydERhdGEob2Zmc2V0LCBhcmcsIGVjKTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOwotfQotCi0tICh2b2lkKWRlbGV0ZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVu
c2lnbmVkKSBjb3VudAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9j
aGFyYWN0ZXJEYXRhXS0+ZGVsZXRlRGF0YShvZmZzZXQsIGNvdW50LCBlYyk7Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClyZXBsYWNlRGF0YToodW5zaWduZWQpb2Zmc2V0
IDoodW5zaWduZWQpY291bnQgOihOU1N0cmluZyAqKWFyZwotewotICAgIEFTU0VSVChhcmcpOwot
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5y
ZXBsYWNlRGF0YShvZmZzZXQsIGNvdW50LCBhcmcsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3Io
ZWMpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0v
LyBET01BdHRyCi0KLUBpbXBsZW1lbnRhdGlvbiBET01BdHRyCi0KLS0gKE5TU3RyaW5nICopbmFt
ZQotewotICAgIHJldHVybiBbc2VsZiBfYXR0cl0tPm5vZGVOYW1lKCk7Ci19Ci0KLS0gKEJPT0wp
c3BlY2lmaWVkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9hdHRyXS0+c3BlY2lmaWVkKCk7Ci19Ci0K
LS0gKE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2F0dHJdLT5ub2RlVmFs
dWUoKTsKLX0KLQotLSAodm9pZClzZXRWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZQotewotICAgIEFT
U0VSVCh2YWx1ZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfYXR0
cl0tPnNldFZhbHVlKHZhbHVlLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQot
LSAoRE9NRWxlbWVudCAqKW93bmVyRWxlbWVudAotewotICAgIHJldHVybiBbRE9NRWxlbWVudCBf
ZWxlbWVudFdpdGg6W3NlbGYgX2F0dHJdLT5vd25lckVsZW1lbnQoKV07Ci19Ci0KLS0gKERPTUNT
U1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZQotewotICAgIHJldHVybiBbRE9NQ1NTU3R5bGVEZWNs
YXJhdGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6IFtzZWxmIF9hdHRyXS0+c3R5bGUoKV07Ci19
Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUF0dHIgKFdlYkNvcmVJbnRlcm5hbCkKLQot
KyAoRE9NQXR0ciAqKV9hdHRyV2l0aDooQXR0ciAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RE9NQXR0ciAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwotfQotCi0tIChBdHRy
ICopX2F0dHIKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXR0ciAqPihET01fY2FzdDxOb2Rl
ICo+KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyBET01FbGVtZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01FbGVtZW50Ci0K
LS0gKE5TU3RyaW5nICopdGFnTmFtZQotewotICAgIHJldHVybiBbc2VsZiBfZWxlbWVudF0tPm5v
ZGVOYW1lKCk7Ci19Ci0KLS0gKERPTU5hbWVkTm9kZU1hcCAqKWF0dHJpYnV0ZXMKLXsKLSAgICBy
ZXR1cm4gW0RPTU5hbWVkTm9kZU1hcCBfbmFtZWROb2RlTWFwV2l0aDpbc2VsZiBfZWxlbWVudF0t
PmF0dHJpYnV0ZXMoKV07Ci19Ci0KLS0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRlOihOU1N0cmlu
ZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0gICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50
XS0+Z2V0QXR0cmlidXRlKG5hbWUpOwotfQotCi0tICh2b2lkKXNldEF0dHJpYnV0ZTooTlNTdHJp
bmcgKiluYW1lIDooTlNTdHJpbmcgKil2YWx1ZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBB
U1NFUlQodmFsdWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYgX2VsZW1l
bnRdLT5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIGV4Y2VwdGlvbik7Ci0gICAgcmFpc2VPbkRP
TUVycm9yKGV4Y2VwdGlvbik7Ci19Ci0KLS0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlOihOU1N0cmlu
ZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsK
LSAgICBbc2VsZiBfZWxlbWVudF0tPnJlbW92ZUF0dHJpYnV0ZShuYW1lLCBleGNlcHRpb24pOwot
ICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotfQotCi0tIChET01BdHRyICopZ2V0QXR0
cmlidXRlTm9kZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0gICAg
cmV0dXJuIFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0ZU5v
ZGUobmFtZSkuZ2V0KCldOwotfQotCi0tIChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZTooRE9N
QXR0ciAqKW5ld0F0dHIKLXsKLSAgICBBU1NFUlQobmV3QXR0cik7Ci0KLSAgICBpbnQgZXhjZXB0
aW9uID0gMDsKLSAgICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYg
X2VsZW1lbnRdLT5zZXRBdHRyaWJ1dGVOb2RlKFtuZXdBdHRyIF9hdHRyXSwgZXhjZXB0aW9uKS5n
ZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotLSAoRE9NQXR0ciAqKXJlbW92ZUF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKilvbGRB
dHRyCi17Ci0gICAgQVNTRVJUKG9sZEF0dHIpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0g
ICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+
cmVtb3ZlQXR0cmlidXRlTm9kZShbb2xkQXR0ciBfYXR0cl0sIGV4Y2VwdGlvbikuZ2V0KCldOwot
ICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWU6KE5TU3RyaW5nICopbmFtZQot
ewotICAgIEFTU0VSVChuYW1lKTsKLQotICAgIHJldHVybiBbRE9NTm9kZUxpc3QgX25vZGVMaXN0
V2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEVsZW1lbnRzQnlUYWdOYW1lKG5hbWUpLmdldCgpXTsK
LX0KLQotLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VV
UkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwot
ICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50XS0+Z2V0
QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwotfQotCi0tICh2b2lkKXNldEF0
dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVk
TmFtZSA6KE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAg
ICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7Ci0gICAgQVNTRVJUKHZhbHVlKTsKLQotICAgIGludCBl
eGNlcHRpb24gPSAwOwotICAgIFtzZWxmIF9lbGVtZW50XS0+c2V0QXR0cmlidXRlTlMobmFtZXNw
YWNlVVJJLCBxdWFsaWZpZWROYW1lLCB2YWx1ZSwgZXhjZXB0aW9uKTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZXhjZXB0aW9uKTsKLX0KLQotLSAodm9pZClyZW1vdmVBdHRyaWJ1dGVOUzooTlNTdHJp
bmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VSVChu
YW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgaW50IGV4Y2VwdGlv
biA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5yZW1vdmVBdHRyaWJ1dGVOUyhuYW1lc3BhY2VV
UkksIGxvY2FsTmFtZSwgZXhjZXB0aW9uKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9u
KTsKLX0KLQotLSAoRE9NQXR0ciAqKWdldEF0dHJpYnV0ZU5vZGVOUzooTlNTdHJpbmcgKiluYW1l
c3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VV
UkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtET01BdHRyIF9hdHRy
V2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0ZU5vZGVOUyhuYW1lc3BhY2VVUkksIGxv
Y2FsTmFtZSkuZ2V0KCldOwotfQotCi0tIChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZU5TOihE
T01BdHRyICopbmV3QXR0cgotewotICAgIEFTU0VSVChuZXdBdHRyKTsKLQotICAgIGludCBleGNl
cHRpb24gPSAwOwotICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0aDpbc2Vs
ZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZU5vZGVOUyhbbmV3QXR0ciBfYXR0cl0sIGV4Y2VwdGlv
bikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWVOUzooTlNT
dHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VS
VChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtE
T01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0RWxlbWVudHNCeVRh
Z05hbWVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkuZ2V0KCldOwotfQotCi0tIChCT09MKWhh
c0F0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0gICAg
cmV0dXJuIFtzZWxmIF9lbGVtZW50XS0+aGFzQXR0cmlidXRlKG5hbWUpOwotfQotCi0tIChCT09M
KWhhc0F0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9j
YWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFt
ZSk7Ci0KLSAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5oYXNBdHRyaWJ1dGVOUyhuYW1lc3Bh
Y2VVUkksIGxvY2FsTmFtZSk7Ci19Ci0KLS0gKHZvaWQpZm9jdXMKLXsKLSAgICBbc2VsZiBfZWxl
bWVudF0tPmZvY3VzKCk7Ci19Ci0KLS0gKHZvaWQpYmx1cgotewotICAgIFtzZWxmIF9lbGVtZW50
XS0+Ymx1cigpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01FbGVtZW50IChET01F
bGVtZW50Q1NTSW5saW5lU3R5bGUpCi0KLS0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHls
ZQotewotICAgIHJldHVybiBbRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBfc3R5bGVEZWNsYXJhdGlv
bldpdGg6W3NlbGYgX2VsZW1lbnRdLT5zdHlsZSgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gRE9NRWxlbWVudCAoRE9NRWxlbWVudEV4dGVuc2lvbnMpCi0KLS0gKE5TSW1hZ2UqKWlt
YWdlCi17Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IFtzZWxmIF9lbGVtZW50XS0+cmVu
ZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzSW1hZ2UoKSkgewotICAg
ICAgICBSZW5kZXJJbWFnZSogaW1nID0gc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UqPihyZW5kZXJl
cik7Ci0gICAgICAgIGlmIChpbWctPmNhY2hlZEltYWdlKCkgJiYgIWltZy0+Y2FjaGVkSW1hZ2Uo
KS0+aXNFcnJvckltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gaW1nLT5jYWNoZWRJbWFnZSgp
LT5pbWFnZSgpLT5nZXROU0ltYWdlKCk7Ci0gICAgfQotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0g
KHZvaWQpc2Nyb2xsSW50b1ZpZXc6KEJPT0wpYWxpZ25Ub3AKLXsKLSAgICBbc2VsZiBfZWxlbWVu
dF0tPnNjcm9sbEludG9WaWV3KGFsaWduVG9wKTsKLX0KLQotLSAodm9pZClzY3JvbGxJbnRvVmll
d0lmTmVlZGVkOihCT09MKWNlbnRlcklmTmVlZGVkCi17Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5z
Y3JvbGxJbnRvVmlld0lmTmVlZGVkKGNlbnRlcklmTmVlZGVkKTsKLX0KLQotQGVuZAotCi1AaW1w
bGVtZW50YXRpb24gRE9NRWxlbWVudCAoV2ViQ29yZUludGVybmFsKQotCi0rIChET01FbGVtZW50
ICopX2VsZW1lbnRXaXRoOihFbGVtZW50ICopaW1wbAotewotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19Ci0KLS0gKEVsZW1l
bnQgKilfZWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50ICo+KERPTV9j
YXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERP
TUVsZW1lbnQgKFdlYlByaXZhdGUpCi0KLS0gKE5TRm9udCAqKV9mb250Ci17Ci0gICAgUmVuZGVy
T2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9lbGVtZW50XS0+cmVuZGVyZXIoKTsKLSAgICBpZiAo
cmVuZGVyZXIpIHsKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5zdHlsZSgpLT5mb250KCkuZ2V0
TlNGb250KCk7Ci0gICAgfQotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKE5TRGF0YSopX2ltYWdl
VElGRlJlcHJlc2VudGF0aW9uCi17Ci0gICAgUmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxm
IF9lbGVtZW50XS0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlz
SW1hZ2UoKSkgewotICAgICAgICBSZW5kZXJJbWFnZSogaW1nID0gc3RhdGljX2Nhc3Q8UmVuZGVy
SW1hZ2UqPihyZW5kZXJlcik7Ci0gICAgICAgIGlmIChpbWctPmNhY2hlZEltYWdlKCkgJiYgIWlt
Zy0+Y2FjaGVkSW1hZ2UoKS0+aXNFcnJvckltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gKE5T
RGF0YSopKGltZy0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKS0+Z2V0VElGRlJlcHJlc2VudGF0aW9u
KCkpOwotICAgIH0KLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChOU1VSTCAqKV9nZXRVUkxBdHRy
aWJ1dGU6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBFbGVtZW50
ICplID0gW3NlbGYgX2VsZW1lbnRdOwotICAgIEFTU0VSVChlKTsKLSAgICByZXR1cm4gS1VSTChl
LT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChwYXJzZVVSTChlLT5nZXRBdHRyaWJ1dGUobmFtZSkp
LmRlcHJlY2F0ZWRTdHJpbmcoKSkpLmdldE5TVVJMKCk7Ci19Ci0KLS0gKHZvaWQgKilfTlBPYmpl
Y3QKLXsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gW3NlbGYgX2VsZW1lbnRdOwotICAgIGlmIChl
bGVtZW50LT5oYXNUYWdOYW1lKGFwcGxldFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShlbWJl
ZFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqPihlbGVtZW50KS0+Z2V0TlBP
YmplY3QoKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiAwOwotfQotCi0tIChCT09MKWlzRm9j
dXNlZAotewotICAgIEVsZW1lbnQqIGltcGwgPSBbc2VsZiBfZWxlbWVudF07Ci0gICAgaWYgKGlt
cGwtPmRvY3VtZW50KCktPmZvY3VzTm9kZSgpID09IGltcGwpCi0gICAgICAgIHJldHVybiBZRVM7
Ci0gICAgcmV0dXJuIE5POwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyBET01UZXh0Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01UZXh0Ci0KLS0gKFRl
eHQgKilfdGV4dAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0ICo+KERPTV9jYXN0PE5v
ZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKERPTVRleHQgKilzcGxpdFRleHQ6KHVuc2lnbmVk
KW9mZnNldAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3Vs
dCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfdGV4dF0tPnNwbGl0VGV4dChvZmZzZXQsIGVj
KV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9N
VGV4dCAqPihyZXN1bHQpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyBET01Db21tZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Db21tZW50Ci0K
LUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUNEQVRB
U2VjdGlvbgotCi1AaW1wbGVtZW50YXRpb24gRE9NQ0RBVEFTZWN0aW9uCi0KLUBlbmQKLQotLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTURvY3VtZW50VHlwZQotCi1A
aW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnRUeXBlCi0KLS0gKE5TU3RyaW5nICopbmFtZQotewot
ICAgIHJldHVybiBbc2VsZiBfZG9jdW1lbnRUeXBlXS0+cHVibGljSWQoKTsKLX0KLQotLSAoRE9N
TmFtZWROb2RlTWFwICopZW50aXRpZXMKLXsKLSAgICByZXR1cm4gW0RPTU5hbWVkTm9kZU1hcCBf
bmFtZWROb2RlTWFwV2l0aDpbc2VsZiBfZG9jdW1lbnRUeXBlXS0+ZW50aXRpZXMoKV07Ci19Ci0K
LS0gKERPTU5hbWVkTm9kZU1hcCAqKW5vdGF0aW9ucwotewotICAgIHJldHVybiBbRE9NTmFtZWRO
b2RlTWFwIF9uYW1lZE5vZGVNYXBXaXRoOltzZWxmIF9kb2N1bWVudFR5cGVdLT5ub3RhdGlvbnMo
KV07Ci19Ci0KLS0gKE5TU3RyaW5nICopcHVibGljSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2Rv
Y3VtZW50VHlwZV0tPnB1YmxpY0lkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopc3lzdGVtSWQKLXsK
LSAgICByZXR1cm4gW3NlbGYgX2RvY3VtZW50VHlwZV0tPnN5c3RlbUlkKCk7Ci19Ci0KLS0gKE5T
U3RyaW5nICopaW50ZXJuYWxTdWJzZXQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2RvY3VtZW50VHlw
ZV0tPmludGVybmFsU3Vic2V0KCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURv
Y3VtZW50VHlwZSAoV2ViQ29yZUludGVybmFsKQotCi0tIChEb2N1bWVudFR5cGUgKilfZG9jdW1l
bnRUeXBlCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50VHlwZSAqPihET01fY2Fz
dDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0vLyBET01Ob3RhdGlvbgotCi1AaW1wbGVtZW50YXRpb24gRE9NTm90
YXRpb24KLQotLSAoTm90YXRpb24gKilfbm90YXRpb24KLXsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Tm90YXRpb24gKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNT
dHJpbmcgKilwdWJsaWNJZAotewotICAgIHJldHVybiBbc2VsZiBfbm90YXRpb25dLT5wdWJsaWNJ
ZCgpOwotfQotCi0tIChOU1N0cmluZyAqKXN5c3RlbUlkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9u
b3RhdGlvbl0tPnN5c3RlbUlkKCk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS8vIERPTUVudGl0eQotCi1AaW1wbGVtZW50YXRpb24gRE9NRW50aXR5
Ci0KLS0gKEVudGl0eSAqKV9lbnRpdHkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RW50aXR5
ICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopcHVi
bGljSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2VudGl0eV0tPnB1YmxpY0lkKCk7Ci19Ci0KLS0g
KE5TU3RyaW5nICopc3lzdGVtSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2VudGl0eV0tPnN5c3Rl
bUlkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbm90YXRpb25OYW1lCi17Ci0gICAgcmV0dXJuIFtz
ZWxmIF9lbnRpdHldLT5ub3RhdGlvbk5hbWUoKTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NRW50aXR5UmVmZXJlbmNlCi0KLUBpbXBsZW1l
bnRhdGlvbiBET01FbnRpdHlSZWZlcmVuY2UKLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uCi0KLUBpbXBsZW1l
bnRhdGlvbiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KLQotLSAoUHJvY2Vzc2luZ0luc3RydWN0
aW9uICopX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbgotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0K
LQotLSAoTlNTdHJpbmcgKil0YXJnZXQKLXsKLSAgICByZXR1cm4gW3NlbGYgX3Byb2Nlc3NpbmdJ
bnN0cnVjdGlvbl0tPnRhcmdldCgpOwotfQotCi0tIChOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBy
ZXR1cm4gW3NlbGYgX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbl0tPmRhdGEoKTsKLX0KLQotLSAodm9p
ZClzZXREYXRhOihOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQoZGF0YSk7Ci0KLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcHJvY2Vzc2luZ0luc3RydWN0aW9uXS0+
c2V0RGF0YShkYXRhLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotQGVuZAot
Ci0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NUmFuZ2UKLQotQGlt
cGxlbWVudGF0aW9uIERPTVJhbmdlCi0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChfaW50
ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8UmFuZ2UgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsK
LSAgICB9Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0g
ICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxSYW5nZSAqPihfaW50ZXJuYWwp
LT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChOU1N0cmlu
ZyAqKWRlc2NyaXB0aW9uCi17Ci0gICAgaWYgKCFfaW50ZXJuYWwpCi0gICAgICAgIHJldHVybiBA
IjxET01SYW5nZTogbnVsbD4iOwotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIjxET01SYW5nZTogJUAgJWQgJUAgJWQ+IiwKLSAgICAgICAgW3NlbGYgc3RhcnRDb250YWlu
ZXJdLCBbc2VsZiBzdGFydE9mZnNldF0sCi0gICAgICAgIFtzZWxmIGVuZENvbnRhaW5lcl0sIFtz
ZWxmIGVuZE9mZnNldF1dOwotfQotCi0tIChET01Ob2RlICopc3RhcnRDb250YWluZXIKLXsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX3JhbmdlXS0+c3RhcnRDb250YWluZXIoZWMpXTsKLSAgICByYWlzZU9u
RE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKGludClzdGFydE9mZnNl
dAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGludCByZXN1bHQgPSBbc2VsZiBf
cmFuZ2VdLT5zdGFydE9mZnNldChlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlICopZW5kQ29udGFpbmVyCi17Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVX
aXRoOltzZWxmIF9yYW5nZV0tPmVuZENvbnRhaW5lcihlYyldOwotICAgIHJhaXNlT25ET01FcnJv
cihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoaW50KWVuZE9mZnNldAotewotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGludCByZXN1bHQgPSBbc2VsZiBfcmFuZ2VdLT5l
bmRPZmZzZXQoZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotLSAoQk9PTCljb2xsYXBzZWQKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBCT09MIHJlc3VsdCA9IFtzZWxmIF9yYW5nZV0tPmNvbGxhcHNlZChlYyk7Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlICop
Y29tbW9uQW5jZXN0b3JDb250YWluZXIKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3JhbmdlXS0+Y29t
bW9uQW5jZXN0b3JDb250YWluZXIoZWMpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKHZvaWQpc2V0U3RhcnQ6KERPTU5vZGUgKilyZWZOb2Rl
IDooaW50KW9mZnNldAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9y
YW5nZV0tPnNldFN0YXJ0KFtyZWZOb2RlIF9ub2RlXSwgb2Zmc2V0LCBlYyk7Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClzZXRFbmQ6KERPTU5vZGUgKilyZWZOb2RlIDoo
aW50KW9mZnNldAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9yYW5n
ZV0tPnNldEVuZChbcmVmTm9kZSBfbm9kZV0sIG9mZnNldCwgZWMpOwotICAgIHJhaXNlT25ET01F
cnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc2V0U3RhcnRCZWZvcmU6KERPTU5vZGUgKilyZWZOb2Rl
Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+c2V0U3Rh
cnRCZWZvcmUoW3JlZk5vZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsK
LX0KLQotLSAodm9pZClzZXRTdGFydEFmdGVyOihET01Ob2RlICopcmVmTm9kZQotewotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9yYW5nZV0tPnNldFN0YXJ0QWZ0ZXIoW3Jl
Zk5vZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9p
ZClzZXRFbmRCZWZvcmU6KERPTU5vZGUgKilyZWZOb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+c2V0RW5kQmVmb3JlKFtyZWZOb2RlIF9ub2RlXSwg
ZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc2V0RW5kQWZ0ZXI6
KERPTU5vZGUgKilyZWZOb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3Nl
bGYgX3JhbmdlXS0+c2V0RW5kQWZ0ZXIoW3JlZk5vZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZCljb2xsYXBzZTooQk9PTCl0b1N0YXJ0Ci17Ci0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+Y29sbGFwc2UodG9T
dGFydCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc2VsZWN0
Tm9kZTooRE9NTm9kZSAqKXJlZk5vZGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBbc2VsZiBfcmFuZ2VdLT5zZWxlY3ROb2RlKFtyZWZOb2RlIF9ub2RlXSwgZWMpOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc2VsZWN0Tm9kZUNvbnRlbnRzOihET01O
b2RlICopcmVmTm9kZQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9y
YW5nZV0tPnNlbGVjdE5vZGVDb250ZW50cyhbcmVmTm9kZSBfbm9kZV0sIGVjKTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tIChzaG9ydCljb21wYXJlQm91bmRhcnlQb2ludHM6KHVu
c2lnbmVkIHNob3J0KWhvdyA6KERPTVJhbmdlICopc291cmNlUmFuZ2UKLXsKLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBzaG9ydCByZXN1bHQgPSBbc2VsZiBfcmFuZ2VdLT5jb21wYXJl
Qm91bmRhcnlQb2ludHMoc3RhdGljX2Nhc3Q8UmFuZ2U6OkNvbXBhcmVIb3c+KGhvdyksIFtzb3Vy
Y2VSYW5nZSBfcmFuZ2VdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKWRlbGV0ZUNvbnRlbnRzCi17Ci0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+ZGVsZXRlQ29udGVudHMoZWMpOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKERPTURvY3VtZW50RnJhZ21lbnQgKilleHRy
YWN0Q29udGVudHMKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Eb2N1bWVu
dEZyYWdtZW50ICpyZXN1bHQgPSBbRE9NRG9jdW1lbnRGcmFnbWVudCBfZG9jdW1lbnRGcmFnbWVu
dFdpdGg6W3NlbGYgX3JhbmdlXS0+ZXh0cmFjdENvbnRlbnRzKGVjKS5nZXQoKV07Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Eb2N1bWVu
dEZyYWdtZW50ICopY2xvbmVDb250ZW50cwotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIERPTURvY3VtZW50RnJhZ21lbnQgKnJlc3VsdCA9IFtET01Eb2N1bWVudEZyYWdtZW50IF9k
b2N1bWVudEZyYWdtZW50V2l0aDpbc2VsZiBfcmFuZ2VdLT5jbG9uZUNvbnRlbnRzKGVjKS5nZXQo
KV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0t
ICh2b2lkKWluc2VydE5vZGU6KERPTU5vZGUgKiluZXdOb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+aW5zZXJ0Tm9kZShbbmV3Tm9kZSBfbm9kZV0s
IGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKXN1cnJvdW5kQ29u
dGVudHM6KERPTU5vZGUgKiluZXdQYXJlbnQKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBbc2VsZiBfcmFuZ2VdLT5zdXJyb3VuZENvbnRlbnRzKFtuZXdQYXJlbnQgX25vZGVdLCBl
Yyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoRE9NUmFuZ2UgKiljbG9uZVJh
bmdlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NUmFuZ2UgKnJlc3VsdCA9
IFtET01SYW5nZSBfcmFuZ2VXaXRoOltzZWxmIF9yYW5nZV0tPmNsb25lUmFuZ2UoZWMpLmdldCgp
XTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0g
KE5TU3RyaW5nICopdG9TdHJpbmcKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBO
U1N0cmluZyAqcmVzdWx0ID0gW3NlbGYgX3JhbmdlXS0+dG9TdHJpbmcoZWMpOwotICAgIHJhaXNl
T25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoTlNTdHJpbmcgKil0
ZXh0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9yYW5nZV0tPnRleHQoKTsKLX0KLQotLSAodm9pZClk
ZXRhY2gKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5k
ZXRhY2goZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLUBlbmQKLQotQGltcGxl
bWVudGF0aW9uIERPTVJhbmdlIChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKGlkKV9pbml0V2l0aFJh
bmdlOihSYW5nZSAqKWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2lu
aXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwp
OwotICAgIGltcGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAg
cmV0dXJuIHNlbGY7Ci19Ci0KLSsgKERPTVJhbmdlICopX3JhbmdlV2l0aDooUmFuZ2UgKilpbXBs
Ci17Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNh
Y2hlZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsK
LSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNl
IHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBf
aW5pdFdpdGhSYW5nZTppbXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKFJhbmdlICopX3Jhbmdl
Ci17Ci0gICAgcmV0dXJuIERPTV9jYXN0PFJhbmdlICo+KF9pbnRlcm5hbCk7Ci19Ci0KLUBlbmQK
LQotQGltcGxlbWVudGF0aW9uIERPTVJhbmdlIChXZWJQcml2YXRlKQotCi0tIChOU1N0cmluZyAq
KV90ZXh0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIHRleHRdOwotfQotCi1AZW5kCi0KLS8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlRmlsdGVyCi0KLS0gKGlkKV9pbml0
V2l0aE5vZGVGaWx0ZXI6KE5vZGVGaWx0ZXIgKilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwpOwot
Ci0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJ
bnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNl
bGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01Ob2RlRmlsdGVyICopX25v
ZGVGaWx0ZXJXaXRoOihOb2RlRmlsdGVyICopaW1wbAotewotICAgIGlmICghaW1wbCkKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJ
bnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQot
ICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAg
ICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTm9kZUZpbHRlcjppbXBsXSBh
dXRvcmVsZWFzZV07Ci19Ci0KLS0gKE5vZGVGaWx0ZXIgKilfbm9kZUZpbHRlcgotewotICAgIHJl
dHVybiBET01fY2FzdDxOb2RlRmlsdGVyICo+KF9pbnRlcm5hbCk7Ci19Ci0KLS0gKHZvaWQpZGVh
bGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIERPTV9jYXN0PE5vZGVGaWx0ZXIg
Kj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZv
aWQpZmluYWxpemUKLXsKLSAgICBpZiAoX2ludGVybmFsKQotICAgICAgICBET01fY2FzdDxOb2Rl
RmlsdGVyICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0K
LQotLSAoc2hvcnQpYWNjZXB0Tm9kZTooRE9NTm9kZSAqKW5vZGUKLXsKLSAgICByZXR1cm4gW3Nl
bGYgX25vZGVGaWx0ZXJdLT5hY2NlcHROb2RlKFtub2RlIF9ub2RlXSk7Ci19Ci0KLUBlbmQKLQot
Ci1AaW1wbGVtZW50YXRpb24gRE9NTm9kZUl0ZXJhdG9yCi0KLS0gKGlkKV9pbml0V2l0aE5vZGVJ
dGVyYXRvcjooTm9kZUl0ZXJhdG9yICopaW1wbCBmaWx0ZXI6KGlkIDxET01Ob2RlRmlsdGVyPilm
aWx0ZXIKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9p
bnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGltcGwt
PnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgbV9maWx0ZXIgPSBb
ZmlsdGVyIHJldGFpbl07Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKE5vZGVJdGVyYXRvciAq
KV9ub2RlSXRlcmF0b3IKLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8Tm9kZUl0ZXJhdG9yICo+KF9p
bnRlcm5hbCk7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFttX2ZpbHRlciByZWxlYXNl
XTsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIFtzZWxmIGRldGFjaF07Ci0gICAgICAg
IERPTV9jYXN0PE5vZGVJdGVyYXRvciAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAg
ICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAoX2lu
dGVybmFsKSB7Ci0gICAgICAgIFtzZWxmIGRldGFjaF07Ci0gICAgICAgIERPTV9jYXN0PE5vZGVJ
dGVyYXRvciAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxp
emVdOwotfQotCi0tIChET01Ob2RlICopcm9vdAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX25vZGVJdGVyYXRvcl0tPnJvb3QoKV07Ci19Ci0KLS0gKHVuc2lnbmVkKXdo
YXRUb1Nob3cKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVJdGVyYXRvcl0tPndoYXRUb1Nob3co
KTsKLX0KLQotLSAoaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgotewotICAgIGlmIChtX2ZpbHRl
cikKLSAgICAgICAgLy8gVGhpcyBub2RlIGl0ZXJhdG9yIHdhcyBjcmVhdGVkIGZyb20gdGhlIG9i
amMgc2lkZQotICAgICAgICByZXR1cm4gW1ttX2ZpbHRlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsK
LQotICAgIC8vIFRoaXMgbm9kZSBpdGVyYXRvciB3YXMgY3JlYXRlZCBmcm9tIHRoZSBjKysgc2lk
ZQotICAgIHJldHVybiBbRE9NTm9kZUZpbHRlciBfbm9kZUZpbHRlcldpdGg6W3NlbGYgX25vZGVJ
dGVyYXRvcl0tPmZpbHRlcigpXTsKLX0KLQotLSAoQk9PTClleHBhbmRFbnRpdHlSZWZlcmVuY2Vz
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlSXRlcmF0b3JdLT5leHBhbmRFbnRpdHlSZWZlcmVu
Y2VzKCk7Ci19Ci0KLS0gKERPTU5vZGUgKiluZXh0Tm9kZQotewotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBf
bm9kZUl0ZXJhdG9yXS0+bmV4dE5vZGUoZWMpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUgKilwcmV2aW91c05vZGUKLXsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX25vZGVJdGVyYXRvcl0tPnByZXZpb3VzTm9kZShlYyldOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAodm9pZClkZXRh
Y2gKLXsKLSAgICBbc2VsZiBfbm9kZUl0ZXJhdG9yXS0+ZGV0YWNoKCk7Ci19Ci0KLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIERPTU5vZGVJdGVyYXRvcihXZWJDb3JlSW50ZXJuYWwpCi0KLSsgKERP
TU5vZGVJdGVyYXRvciAqKV9ub2RlSXRlcmF0b3JXaXRoOihOb2RlSXRlcmF0b3IgKilpbXBsIGZp
bHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgotewotICAgIGlmICghaW1wbCkKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJ
bnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQot
ICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAg
ICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTm9kZUl0ZXJhdG9yOmltcGwg
ZmlsdGVyOmZpbHRlcl0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlv
biBET01UcmVlV2Fsa2VyCi0KLS0gKGlkKV9pbml0V2l0aFRyZWVXYWxrZXI6KFRyZWVXYWxrZXIg
KilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgotewotICAgIEFTU0VSVChp
bXBsKTsKLQotICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9N
T2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9NV3Jh
cHBlcihzZWxmLCBpbXBsKTsKLSAgICBtX2ZpbHRlciA9IFtmaWx0ZXIgcmV0YWluXTsKLSAgICBy
ZXR1cm4gc2VsZjsKLX0KLQotLSAoVHJlZVdhbGtlciAqKV90cmVlV2Fsa2VyCi17Ci0gICAgcmV0
dXJuIERPTV9jYXN0PFRyZWVXYWxrZXIgKj4oX2ludGVybmFsKTsKLX0KLQotLSAodm9pZClkZWFs
bG9jCi17Ci0gICAgaWYgKG1fZmlsdGVyKQotICAgICAgICBbbV9maWx0ZXIgcmVsZWFzZV07Ci0g
ICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxUcmVlV2Fsa2VyICo+KF9pbnRl
cm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9p
ZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8VHJl
ZVdhbGtlciAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxp
emVdOwotfQotCi0tIChET01Ob2RlICopcm9vdAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5yb290KCldOwotfQotCi0tICh1bnNpZ25lZCl3aGF0
VG9TaG93Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF90cmVlV2Fsa2VyXS0+d2hhdFRvU2hvdygpOwot
fQotCi0tIChpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgaWYgKG1fZmlsdGVyKQot
ICAgICAgICAvLyBUaGlzIHRyZWUgd2Fsa2VyIHdhcyBjcmVhdGVkIGZyb20gdGhlIG9iamMgc2lk
ZQotICAgICAgICByZXR1cm4gW1ttX2ZpbHRlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLQotICAg
IC8vIFRoaXMgdHJlZSB3YWxrZXIgd2FzIGNyZWF0ZWQgZnJvbSB0aGUgYysrIHNpZGUKLSAgICBy
ZXR1cm4gW0RPTU5vZGVGaWx0ZXIgX25vZGVGaWx0ZXJXaXRoOltzZWxmIF90cmVlV2Fsa2VyXS0+
ZmlsdGVyKCldOwotfQotCi0tIChCT09MKWV4cGFuZEVudGl0eVJlZmVyZW5jZXMKLXsKLSAgICBy
ZXR1cm4gW3NlbGYgX3RyZWVXYWxrZXJdLT5leHBhbmRFbnRpdHlSZWZlcmVuY2VzKCk7Ci19Ci0K
LS0gKERPTU5vZGUgKiljdXJyZW50Tm9kZQotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdp
dGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5jdXJyZW50Tm9kZSgpXTsKLX0KLQotLSAodm9pZClzZXRD
dXJyZW50Tm9kZTooRE9NTm9kZSAqKWN1cnJlbnROb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgW3NlbGYgX3RyZWVXYWxrZXJdLT5zZXRDdXJyZW50Tm9kZShbY3VycmVudE5v
ZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoRE9NTm9k
ZSAqKXBhcmVudE5vZGUKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90
cmVlV2Fsa2VyXS0+cGFyZW50Tm9kZSgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKWZpcnN0Q2hpbGQK
LXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90cmVlV2Fsa2VyXS0+Zmly
c3RDaGlsZCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKWxhc3RDaGlsZAotewotICAgIHJldHVybiBb
RE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5sYXN0Q2hpbGQoKV07Ci19Ci0K
LS0gKERPTU5vZGUgKilwcmV2aW91c1NpYmxpbmcKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25v
ZGVXaXRoOltzZWxmIF90cmVlV2Fsa2VyXS0+cHJldmlvdXNTaWJsaW5nKCldOwotfQotCi0tIChE
T01Ob2RlICopbmV4dFNpYmxpbmcKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltz
ZWxmIF90cmVlV2Fsa2VyXS0+bmV4dFNpYmxpbmcoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilwcmV2
aW91c05vZGUKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90cmVlV2Fs
a2VyXS0+cHJldmlvdXNOb2RlKCldOwotfQotCi0tIChET01Ob2RlICopbmV4dE5vZGUKLXsKLSAg
ICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90cmVlV2Fsa2VyXS0+bmV4dE5vZGUo
KV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTVRyZWVXYWxrZXIgKFdlYkNvcmVJ
bnRlcm5hbCkKLQotKyAoRE9NVHJlZVdhbGtlciAqKV90cmVlV2Fsa2VyV2l0aDooVHJlZVdhbGtl
ciAqKWltcGwgZmlsdGVyOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgaWYgKCFp
bXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwot
ICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVk
SW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3Jl
bGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhUcmVlV2Fs
a2VyOmltcGwgZmlsdGVyOmZpbHRlcl0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLWNsYXNz
IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uIDogcHVibGljIE5vZGVGaWx0ZXJDb25kaXRpb24gCi17
Ci1wdWJsaWM6Ci0gICAgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oaWQgPERPTU5vZGVGaWx0ZXI+
KTsKLSAgICB2aXJ0dWFsIH5PYmpDTm9kZUZpbHRlckNvbmRpdGlvbigpOwotICAgIHZpcnR1YWwg
c2hvcnQgYWNjZXB0Tm9kZShOb2RlKikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgT2JqQ05vZGVG
aWx0ZXJDb25kaXRpb24oY29uc3QgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24gJik7Ci0gICAgT2Jq
Q05vZGVGaWx0ZXJDb25kaXRpb24gJm9wZXJhdG9yPShjb25zdCBPYmpDTm9kZUZpbHRlckNvbmRp
dGlvbiAmKTsKLQotICAgIGlkIDxET01Ob2RlRmlsdGVyPiBtX2ZpbHRlcjsKLX07Ci0KLU9iakNO
b2RlRmlsdGVyQ29uZGl0aW9uOjpPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihpZCA8RE9NTm9kZUZp
bHRlcj4gZmlsdGVyKQotICAgIDogbV9maWx0ZXIoZmlsdGVyKQotewotICAgIEFTU0VSVChtX2Zp
bHRlcik7Ci0gICAgQ0ZSZXRhaW4obV9maWx0ZXIpOwotfQotCi1PYmpDTm9kZUZpbHRlckNvbmRp
dGlvbjo6fk9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKCkKLXsKLSAgICBDRlJlbGVhc2UobV9maWx0
ZXIpOwotfQotCi1zaG9ydCBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0Tm9kZShOb2Rl
KiBub2RlKSBjb25zdAotewotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIE5vZGVGaWx0
ZXI6OkZJTFRFUl9SRUpFQ1Q7Ci0gICAgcmV0dXJuIFttX2ZpbHRlciBhY2NlcHROb2RlOltET01O
b2RlIF9ub2RlV2l0aDpub2RlXV07Ci19Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAo
RE9NRG9jdW1lbnRUcmF2ZXJzYWwpCi0KLS0gKERPTU5vZGVJdGVyYXRvciAqKWNyZWF0ZU5vZGVJ
dGVyYXRvcjooRE9NTm9kZSAqKXJvb3QgOih1bnNpZ25lZCl3aGF0VG9TaG93IDooaWQgPERPTU5v
ZGVGaWx0ZXI+KWZpbHRlciA6KEJPT0wpZXhwYW5kRW50aXR5UmVmZXJlbmNlcwotewotICAgIFJl
ZlB0cjxOb2RlRmlsdGVyPiBjcHBGaWx0ZXI7Ci0gICAgaWYgKGZpbHRlcikKLSAgICAgICAgY3Bw
RmlsdGVyID0gbmV3IE5vZGVGaWx0ZXIobmV3IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKGZpbHRl
cikpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxOb2RlSXRlcmF0b3I+
IGltcGwgPSBbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVOb2RlSXRlcmF0b3IoW3Jvb3QgX25vZGVd
LCB3aGF0VG9TaG93LCBjcHBGaWx0ZXIsIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMsIGVjKTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBbRE9NTm9kZUl0ZXJhdG9yIF9ub2Rl
SXRlcmF0b3JXaXRoOmltcGwuZ2V0KCkgZmlsdGVyOmZpbHRlcl07Ci19Ci0KLS0gKERPTVRyZWVX
YWxrZXIgKiljcmVhdGVUcmVlV2Fsa2VyOihET01Ob2RlICopcm9vdCA6KHVuc2lnbmVkKXdoYXRU
b1Nob3cgOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyIDooQk9PTClleHBhbmRFbnRpdHlSZWZl
cmVuY2VzCi17Ci0gICAgUmVmUHRyPE5vZGVGaWx0ZXI+IGNwcEZpbHRlcjsKLSAgICBpZiAoZmls
dGVyKQotICAgICAgICBjcHBGaWx0ZXIgPSBuZXcgTm9kZUZpbHRlcihuZXcgT2JqQ05vZGVGaWx0
ZXJDb25kaXRpb24oZmlsdGVyKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVm
UHRyPFRyZWVXYWxrZXI+IGltcGwgPSBbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVUcmVlV2Fsa2Vy
KFtyb290IF9ub2RlXSwgd2hhdFRvU2hvdywgY3BwRmlsdGVyLCBleHBhbmRFbnRpdHlSZWZlcmVu
Y2VzLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gW0RPTVRyZWVX
YWxrZXIgX3RyZWVXYWxrZXJXaXRoOmltcGwuZ2V0KCkgZmlsdGVyOmZpbHRlcl07Ci19Ci0KLUBl
bmQKLQotT2JqQ0V2ZW50TGlzdGVuZXIqIE9iakNFdmVudExpc3RlbmVyOjpmaW5kKGlkIDxET01F
dmVudExpc3RlbmVyPiBsaXN0ZW5lcikKLXsKLSAgICBpZiAoTGlzdGVuZXJNYXAqIG1hcCA9IGxp
c3RlbmVyTWFwKQotICAgICAgICByZXR1cm4gbWFwLT5nZXQobGlzdGVuZXIpOwotICAgIHJldHVy
biBOVUxMOwotfQotCi1PYmpDRXZlbnRMaXN0ZW5lciAqT2JqQ0V2ZW50TGlzdGVuZXI6OmNyZWF0
ZShpZCA8RE9NRXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpCi17Ci0gICAgT2JqQ0V2ZW50TGlzdGVu
ZXIgKndyYXBwZXIgPSBmaW5kKGxpc3RlbmVyKTsKLSAgICBpZiAoIXdyYXBwZXIpCi0gICAgICAg
IHdyYXBwZXIgPSBuZXcgT2JqQ0V2ZW50TGlzdGVuZXIobGlzdGVuZXIpOwotICAgIHdyYXBwZXIt
PnJlZigpOwotICAgIHJldHVybiB3cmFwcGVyOwotfQotCi1PYmpDRXZlbnRMaXN0ZW5lcjo6T2Jq
Q0V2ZW50TGlzdGVuZXIoaWQgPERPTUV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKQotICAgIDogbV9s
aXN0ZW5lcihbbGlzdGVuZXIgcmV0YWluXSkKLXsKLSAgICBMaXN0ZW5lck1hcCogbWFwID0gbGlz
dGVuZXJNYXA7Ci0gICAgaWYgKCFtYXApIHsKLSAgICAgICAgbWFwID0gbmV3IExpc3RlbmVyTWFw
OwotICAgICAgICBsaXN0ZW5lck1hcCA9IG1hcDsKLSAgICB9Ci0gICAgbWFwLT5zZXQobGlzdGVu
ZXIsIHRoaXMpOwotfQotCi1PYmpDRXZlbnRMaXN0ZW5lcjo6fk9iakNFdmVudExpc3RlbmVyKCkK
LXsKLSAgICBsaXN0ZW5lck1hcC0+cmVtb3ZlKG1fbGlzdGVuZXIpOwotICAgIFttX2xpc3RlbmVy
IHJlbGVhc2VdOwotfQotCi12b2lkIE9iakNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChFdmVu
dCAqZXZlbnQsIGJvb2wpCi17Ci0gICAgW21fbGlzdGVuZXIgaGFuZGxlRXZlbnQ6W0RPTUV2ZW50
IF9ldmVudFdpdGg6ZXZlbnRdXTsKLX0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01D
b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNvcmUuaAkocmV2
aXNpb24gMTU5NTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ29yZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjE4ICsyNCwyMSBAQAogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CiAgKi8KIAotI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3QuaD4KLQotQGNsYXNzIERP
TURvY3VtZW50OyAKLUBjbGFzcyBET01Eb2N1bWVudFR5cGU7Ci1AY2xhc3MgRE9NRWxlbWVudDsK
LUBjbGFzcyBET01OYW1lZE5vZGVNYXA7Ci1AY2xhc3MgRE9NTm9kZUxpc3Q7Ci0KLXR5cGVkZWYg
c3RydWN0IERPTU9iamVjdEludGVybmFsIERPTU9iamVjdEludGVybmFsOwotCi1AaW50ZXJmYWNl
IERPTU9iamVjdCA6IFdlYlNjcmlwdE9iamVjdCA8TlNDb3B5aW5nPgotewotICAgIERPTU9iamVj
dEludGVybmFsICpfaW50ZXJuYWw7Ci19Ci1AZW5kCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBs
b25nIERPTVRpbWVTdGFtcDsKLQotZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgRE9NRXhjZXB0aW9u
OwotCi1lbnVtIHsKLSAgICAvLwotICAgIC8vIERPTSBleGNlcHRpb24gY29kZXMKLSAgICAvLwot
ICAgIERPTV9JTkRFWF9TSVpFX0VSUiAgICAgICAgICAgICAgICA9IDEsCi0gICAgRE9NX0RPTVNU
UklOR19TSVpFX0VSUiAgICAgICAgICAgID0gMiwKLSAgICBET01fSElFUkFSQ0hZX1JFUVVFU1Rf
RVJSICAgICAgICAgPSAzLAotICAgIERPTV9XUk9OR19ET0NVTUVOVF9FUlIgICAgICAgICAgICA9
IDQsCi0gICAgRE9NX0lOVkFMSURfQ0hBUkFDVEVSX0VSUiAgICAgICAgID0gNSwKLSAgICBET01f
Tk9fREFUQV9BTExPV0VEX0VSUiAgICAgICAgICAgPSA2LAotICAgIERPTV9OT19NT0RJRklDQVRJ
T05fQUxMT1dFRF9FUlIgICA9IDcsCi0gICAgRE9NX05PVF9GT1VORF9FUlIgICAgICAgICAgICAg
ICAgID0gOCwKLSAgICBET01fTk9UX1NVUFBPUlRFRF9FUlIgICAgICAgICAgICAgPSA5LAotICAg
IERPTV9JTlVTRV9BVFRSSUJVVEVfRVJSICAgICAgICAgICA9IDEwLAotICAgIERPTV9JTlZBTElE
X1NUQVRFX0VSUiAgICAgICAgICAgICA9IDExLAotICAgIERPTV9TWU5UQVhfRVJSICAgICAgICAg
ICAgICAgICAgICA9IDEyLAotICAgIERPTV9JTlZBTElEX01PRElGSUNBVElPTl9FUlIgICAgICA9
IDEzLAotICAgIERPTV9OQU1FU1BBQ0VfRVJSICAgICAgICAgICAgICAgICA9IDE0LAotICAgIERP
TV9JTlZBTElEX0FDQ0VTU19FUlIgICAgICAgICAgICA9IDE1Ci19OwotCi1AaW50ZXJmYWNlIERP
TUltcGxlbWVudGF0aW9uIDogRE9NT2JqZWN0Ci0tIChCT09MKWhhc0ZlYXR1cmU6KE5TU3RyaW5n
ICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbjsKLS0gKERPTURvY3VtZW50VHlwZSAqKWNy
ZWF0ZURvY3VtZW50VHlwZTooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKilw
dWJsaWNJZCA6KE5TU3RyaW5nICopc3lzdGVtSWQ7Ci0tIChET01Eb2N1bWVudCAqKWNyZWF0ZURv
Y3VtZW50OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFt
ZSA6KERPTURvY3VtZW50VHlwZSAqKWRvY3R5cGU7Ci1AZW5kCi0KLWVudW0gewotICAgIC8vCi0g
ICAgLy8gRE9NIG5vZGUgdHlwZXMKLSAgICAvLwotICAgIERPTV9FTEVNRU5UX05PREUgICAgICAg
ICAgICAgICAgICA9IDEsCi0gICAgRE9NX0FUVFJJQlVURV9OT0RFICAgICAgICAgICAgICAgID0g
MiwKLSAgICBET01fVEVYVF9OT0RFICAgICAgICAgICAgICAgICAgICAgPSAzLAotICAgIERPTV9D
REFUQV9TRUNUSU9OX05PREUgICAgICAgICAgICA9IDQsCi0gICAgRE9NX0VOVElUWV9SRUZFUkVO
Q0VfTk9ERSAgICAgICAgID0gNSwKLSAgICBET01fRU5USVRZX05PREUgICAgICAgICAgICAgICAg
ICAgPSA2LAotICAgIERPTV9QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUgICA9IDcsCi0gICAg
RE9NX0NPTU1FTlRfTk9ERSAgICAgICAgICAgICAgICAgID0gOCwKLSAgICBET01fRE9DVU1FTlRf
Tk9ERSAgICAgICAgICAgICAgICAgPSA5LAotICAgIERPTV9ET0NVTUVOVF9UWVBFX05PREUgICAg
ICAgICAgICA9IDEwLAotICAgIERPTV9ET0NVTUVOVF9GUkFHTUVOVF9OT0RFICAgICAgICA9IDEx
LAotICAgIERPTV9OT1RBVElPTl9OT0RFICAgICAgICAgICAgICAgICA9IDEyCi19OwotCi1AaW50
ZXJmYWNlIERPTU5vZGUgOiBET01PYmplY3QKLS0gKE5TU3RyaW5nICopbm9kZU5hbWU7Ci0tIChO
U1N0cmluZyAqKW5vZGVWYWx1ZTsKLS0gKHZvaWQpc2V0Tm9kZVZhbHVlOihOU1N0cmluZyAqKXN0
cmluZzsKLS0gKHVuc2lnbmVkIHNob3J0KW5vZGVUeXBlOwotLSAoRE9NTm9kZSAqKXBhcmVudE5v
ZGU7Ci0tIChET01Ob2RlTGlzdCAqKWNoaWxkTm9kZXM7Ci0tIChET01Ob2RlICopZmlyc3RDaGls
ZDsKLS0gKERPTU5vZGUgKilsYXN0Q2hpbGQ7Ci0tIChET01Ob2RlICopcHJldmlvdXNTaWJsaW5n
OwotLSAoRE9NTm9kZSAqKW5leHRTaWJsaW5nOwotLSAoRE9NTmFtZWROb2RlTWFwICopYXR0cmli
dXRlczsKLS0gKERPTURvY3VtZW50ICopb3duZXJEb2N1bWVudDsKLS0gKERPTU5vZGUgKilpbnNl
cnRCZWZvcmU6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilyZWZDaGlsZDsKLS0gKERP
TU5vZGUgKilyZXBsYWNlQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilvbGRD
aGlsZDsKLS0gKERPTU5vZGUgKilyZW1vdmVDaGlsZDooRE9NTm9kZSAqKW9sZENoaWxkOwotLSAo
RE9NTm9kZSAqKWFwcGVuZENoaWxkOihET01Ob2RlICopbmV3Q2hpbGQ7Ci0tIChCT09MKWhhc0No
aWxkTm9kZXM7Ci0tIChET01Ob2RlICopY2xvbmVOb2RlOihCT09MKWRlZXA7Ci0tICh2b2lkKW5v
cm1hbGl6ZTsKLS0gKEJPT0wpaXNTdXBwb3J0ZWQ6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3Ry
aW5nICopdmVyc2lvbjsKLS0gKE5TU3RyaW5nICopbmFtZXNwYWNlVVJJOwotLSAoTlNTdHJpbmcg
KilwcmVmaXg7Ci0tICh2b2lkKXNldFByZWZpeDooTlNTdHJpbmcgKilwcmVmaXg7Ci0tIChOU1N0
cmluZyAqKWxvY2FsTmFtZTsKLS0gKEJPT0wpaGFzQXR0cmlidXRlczsKLS0gKEJPT0wpaXNTYW1l
Tm9kZTooRE9NTm9kZSAqKW90aGVyOwotLSAoQk9PTClpc0VxdWFsTm9kZTooRE9NTm9kZSAqKW90
aGVyOwotLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudDsKLS0gKHZvaWQpc2V0VGV4dENvbnRlbnQ6
KE5TU3RyaW5nICopdGV4dDsKLUBlbmQKLQotQGludGVyZmFjZSBET01Ob2RlTGlzdCA6IERPTU9i
amVjdAotLSAoRE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4OwotLSAodW5zaWduZWQpbGVu
Z3RoOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTU5hbWVkTm9kZU1hcCA6IERPTU9iamVjdAotLSAo
RE9NTm9kZSAqKWdldE5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1lOwotLSAoRE9NTm9kZSAqKXNl
dE5hbWVkSXRlbTooRE9NTm9kZSAqKWFyZzsKLS0gKERPTU5vZGUgKilyZW1vdmVOYW1lZEl0ZW06
KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleDsKLS0g
KHVuc2lnbmVkKWxlbmd0aDsKLS0gKERPTU5vZGUgKilnZXROYW1lZEl0ZW1OUzooTlNTdHJpbmcg
KiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKERPTU5vZGUgKilzZXRO
YW1lZEl0ZW1OUzooRE9NTm9kZSAqKWFyZzsKLS0gKERPTU5vZGUgKilyZW1vdmVOYW1lZEl0ZW1O
UzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLUBlbmQK
LQotQGludGVyZmFjZSBET01DaGFyYWN0ZXJEYXRhIDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKilk
YXRhOwotLSAodm9pZClzZXREYXRhOihOU1N0cmluZyAqKWRhdGE7Ci0tICh1bnNpZ25lZClsZW5n
dGg7Ci0tIChOU1N0cmluZyAqKXN1YnN0cmluZ0RhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2ln
bmVkKWNvdW50OwotLSAodm9pZClhcHBlbmREYXRhOihOU1N0cmluZyAqKWFyZzsKLS0gKHZvaWQp
aW5zZXJ0RGF0YToodW5zaWduZWQpb2Zmc2V0IDooTlNTdHJpbmcgKilhcmc7Ci0tICh2b2lkKWRl
bGV0ZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKSBjb3VudDsKLS0gKHZvaWQpcmVw
bGFjZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKWNvdW50IDooTlNTdHJpbmcgKilh
cmc7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NQXR0ciA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICop
bmFtZTsKLS0gKEJPT0wpc3BlY2lmaWVkOwotLSAoTlNTdHJpbmcgKil2YWx1ZTsKLS0gKHZvaWQp
c2V0VmFsdWU6KE5TU3RyaW5nICopdmFsdWU7Ci0tIChET01FbGVtZW50ICopb3duZXJFbGVtZW50
OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUVsZW1lbnQgOiBET01Ob2RlCi0tIChOU1N0cmluZyAq
KXRhZ05hbWU7Ci0tIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lOwot
LSAodm9pZClzZXRBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZSA6KE5TU3RyaW5nICopdmFsdWU7
Ci0tICh2b2lkKXJlbW92ZUF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lOwotLSAoRE9NQXR0ciAq
KWdldEF0dHJpYnV0ZU5vZGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTUF0dHIgKilzZXRBdHRy
aWJ1dGVOb2RlOihET01BdHRyICopbmV3QXR0cjsKLS0gKERPTUF0dHIgKilyZW1vdmVBdHRyaWJ1
dGVOb2RlOihET01BdHRyICopb2xkQXR0cjsKLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNC
eVRhZ05hbWU6KE5TU3RyaW5nICopbmFtZTsKLS0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRlTlM6
KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tICh2b2lk
KXNldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVh
bGlmaWVkTmFtZSA6KE5TU3RyaW5nICopdmFsdWU7Ci0tICh2b2lkKXJlbW92ZUF0dHJpYnV0ZU5T
OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAoRE9N
QXR0ciAqKWdldEF0dHJpYnV0ZU5vZGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0
cmluZyAqKWxvY2FsTmFtZTsKLS0gKERPTUF0dHIgKilzZXRBdHRyaWJ1dGVOb2RlTlM6KERPTUF0
dHIgKiluZXdBdHRyOwotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZU5TOihO
U1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAoQk9PTClo
YXNBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKEJPT0wpaGFzQXR0cmlidXRlTlM6KE5T
U3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tICh2b2lkKWZv
Y3VzOwotLSAodm9pZClibHVyOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTVRleHQgOiBET01DaGFy
YWN0ZXJEYXRhCi0tIChET01UZXh0ICopc3BsaXRUZXh0Oih1bnNpZ25lZClvZmZzZXQ7Ci1AZW5k
Ci0KLUBpbnRlcmZhY2UgRE9NQ29tbWVudCA6IERPTUNoYXJhY3RlckRhdGEKLUBlbmQKLQotQGlu
dGVyZmFjZSBET01DREFUQVNlY3Rpb24gOiBET01UZXh0Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9N
RG9jdW1lbnRUeXBlIDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKiluYW1lOwotLSAoRE9NTmFtZWRO
b2RlTWFwICopZW50aXRpZXM7Ci0tIChET01OYW1lZE5vZGVNYXAgKilub3RhdGlvbnM7Ci0tIChO
U1N0cmluZyAqKXB1YmxpY0lkOwotLSAoTlNTdHJpbmcgKilzeXN0ZW1JZDsKLS0gKE5TU3RyaW5n
ICopaW50ZXJuYWxTdWJzZXQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NTm90YXRpb24gOiBET01O
b2RlCi0tIChOU1N0cmluZyAqKXB1YmxpY0lkOwotLSAoTlNTdHJpbmcgKilzeXN0ZW1JZDsKLUBl
bmQKLQotQGludGVyZmFjZSBET01FbnRpdHkgOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKXB1Ymxp
Y0lkOwotLSAoTlNTdHJpbmcgKilzeXN0ZW1JZDsKLS0gKE5TU3RyaW5nICopbm90YXRpb25OYW1l
OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUVudGl0eVJlZmVyZW5jZSA6IERPTU5vZGUKLUBlbmQK
LQotQGludGVyZmFjZSBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gOiBET01Ob2RlCi0tIChOU1N0
cmluZyAqKXRhcmdldDsKLS0gKE5TU3RyaW5nICopZGF0YTsKLS0gKHZvaWQpc2V0RGF0YTooTlNT
dHJpbmcgKilkYXRhOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTURvY3VtZW50RnJhZ21lbnQgOiBE
T01Ob2RlCi1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgOiBET01Ob2RlCi0tIChET01E
b2N1bWVudFR5cGUgKilkb2N0eXBlOwotLSAoRE9NSW1wbGVtZW50YXRpb24gKilpbXBsZW1lbnRh
dGlvbjsKLS0gKERPTUVsZW1lbnQgKilkb2N1bWVudEVsZW1lbnQ7Ci0tIChET01FbGVtZW50ICop
Y3JlYXRlRWxlbWVudDooTlNTdHJpbmcgKil0YWdOYW1lOwotLSAoRE9NRG9jdW1lbnRGcmFnbWVu
dCAqKWNyZWF0ZURvY3VtZW50RnJhZ21lbnQ7Ci0tIChET01UZXh0ICopY3JlYXRlVGV4dE5vZGU6
KE5TU3RyaW5nICopZGF0YTsKLS0gKERPTUNvbW1lbnQgKiljcmVhdGVDb21tZW50OihOU1N0cmlu
ZyAqKWRhdGE7Ci0tIChET01DREFUQVNlY3Rpb24gKiljcmVhdGVDREFUQVNlY3Rpb246KE5TU3Ry
aW5nICopZGF0YTsKLS0gKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKWNyZWF0ZVByb2Nlc3Np
bmdJbnN0cnVjdGlvbjooTlNTdHJpbmcgKil0YXJnZXQgOihOU1N0cmluZyAqKWRhdGE7Ci0tIChE
T01BdHRyICopY3JlYXRlQXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01FbnRpdHlS
ZWZlcmVuY2UgKiljcmVhdGVFbnRpdHlSZWZlcmVuY2U6KE5TU3RyaW5nICopbmFtZTsKLS0gKERP
TU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWU6KE5TU3RyaW5nICopdGFnbmFtZTsKLS0g
KERPTU5vZGUgKilpbXBvcnROb2RlOihET01Ob2RlICopaW1wb3J0ZWROb2RlIDooQk9PTClkZWVw
OwotLSAoRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnROUzooTlNTdHJpbmcgKiluYW1lc3BhY2VV
UkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWU7Ci0tIChET01BdHRyICopY3JlYXRlQXR0cmli
dXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1l
OwotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5h
bWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAoRE9NRWxlbWVudCAqKWdldEVs
ZW1lbnRCeUlkOihOU1N0cmluZyAqKWVsZW1lbnRJZDsKLS0gKERPTU5vZGUgKilhZG9wdE5vZGU6
KERPTU5vZGUgKilzb3VyY2U7Ci1AZW5kCisjaW1wb3J0IDxXZWJDb3JlL0RPTUF0dHIuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvRE9NQ0RBVEFTZWN0aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUNo
YXJhY3RlckRhdGEuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NQ29tbWVudC5oPgorI2ltcG9ydCA8
V2ViQ29yZS9ET01ET01JbXBsZW1lbnRhdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Eb2N1
bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Eb2N1bWVudEZyYWdtZW50Lmg+CisjaW1wb3J0
IDxXZWJDb3JlL0RPTURvY3VtZW50VHlwZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01FbGVtZW50
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUVudGl0eS5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01F
bnRpdHlSZWZlcmVuY2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NTmFtZWROb2RlTWFwLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0RPTU5vZGUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NTm9kZUxpc3Qu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NTm90YXRpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9N
T2JqZWN0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oPgor
I2ltcG9ydCA8V2ViQ29yZS9ET01UZXh0Lmg+CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NRE9NSW1wbGVtZW50YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NRE9NSW1wbGVtZW50YXRpb24uaAkocmV2aXNpb24gMTU5NTkpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NRE9NSW1wbGVtZW50YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVs
IFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIzLDIxOCArMjQsMTMgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpbXBv
cnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVj
dC5oPgogCiBAY2xhc3MgRE9NRG9jdW1lbnQ7IAotQGNsYXNzIERPTURvY3VtZW50VHlwZTsKLUBj
bGFzcyBET01FbGVtZW50OwotQGNsYXNzIERPTU5hbWVkTm9kZU1hcDsKLUBjbGFzcyBET01Ob2Rl
TGlzdDsKLQotdHlwZWRlZiBzdHJ1Y3QgRE9NT2JqZWN0SW50ZXJuYWwgRE9NT2JqZWN0SW50ZXJu
YWw7Ci0KLUBpbnRlcmZhY2UgRE9NT2JqZWN0IDogV2ViU2NyaXB0T2JqZWN0IDxOU0NvcHlpbmc+
Ci17Ci0gICAgRE9NT2JqZWN0SW50ZXJuYWwgKl9pbnRlcm5hbDsKLX0KLUBlbmQKLQotdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIGxvbmcgRE9NVGltZVN0YW1wOwotCi1leHRlcm4gTlNTdHJpbmcgKiBj
b25zdCBET01FeGNlcHRpb247Ci0KLWVudW0gewotICAgIC8vCi0gICAgLy8gRE9NIGV4Y2VwdGlv
biBjb2RlcwotICAgIC8vCi0gICAgRE9NX0lOREVYX1NJWkVfRVJSICAgICAgICAgICAgICAgID0g
MSwKLSAgICBET01fRE9NU1RSSU5HX1NJWkVfRVJSICAgICAgICAgICAgPSAyLAotICAgIERPTV9I
SUVSQVJDSFlfUkVRVUVTVF9FUlIgICAgICAgICA9IDMsCi0gICAgRE9NX1dST05HX0RPQ1VNRU5U
X0VSUiAgICAgICAgICAgID0gNCwKLSAgICBET01fSU5WQUxJRF9DSEFSQUNURVJfRVJSICAgICAg
ICAgPSA1LAotICAgIERPTV9OT19EQVRBX0FMTE9XRURfRVJSICAgICAgICAgICA9IDYsCi0gICAg
RE9NX05PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiAgID0gNywKLSAgICBET01fTk9UX0ZPVU5E
X0VSUiAgICAgICAgICAgICAgICAgPSA4LAotICAgIERPTV9OT1RfU1VQUE9SVEVEX0VSUiAgICAg
ICAgICAgICA9IDksCi0gICAgRE9NX0lOVVNFX0FUVFJJQlVURV9FUlIgICAgICAgICAgID0gMTAs
Ci0gICAgRE9NX0lOVkFMSURfU1RBVEVfRVJSICAgICAgICAgICAgID0gMTEsCi0gICAgRE9NX1NZ
TlRBWF9FUlIgICAgICAgICAgICAgICAgICAgID0gMTIsCi0gICAgRE9NX0lOVkFMSURfTU9ESUZJ
Q0FUSU9OX0VSUiAgICAgID0gMTMsCi0gICAgRE9NX05BTUVTUEFDRV9FUlIgICAgICAgICAgICAg
ICAgID0gMTQsCi0gICAgRE9NX0lOVkFMSURfQUNDRVNTX0VSUiAgICAgICAgICAgID0gMTUKLX07
CitAY2xhc3MgRE9NRG9jdW1lbnRUeXBlOyAKIAogQGludGVyZmFjZSBET01JbXBsZW1lbnRhdGlv
biA6IERPTU9iamVjdAogLSAoQk9PTCloYXNGZWF0dXJlOihOU1N0cmluZyAqKWZlYXR1cmUgOihO
U1N0cmluZyAqKXZlcnNpb247CiAtIChET01Eb2N1bWVudFR5cGUgKiljcmVhdGVEb2N1bWVudFR5
cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICopcHVibGljSWQgOihOU1N0
cmluZyAqKXN5c3RlbUlkOwogLSAoRE9NRG9jdW1lbnQgKiljcmVhdGVEb2N1bWVudDooTlNTdHJp
bmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihET01Eb2N1bWVu
dFR5cGUgKilkb2N0eXBlOwogQGVuZAotCi1lbnVtIHsKLSAgICAvLwotICAgIC8vIERPTSBub2Rl
IHR5cGVzCi0gICAgLy8KLSAgICBET01fRUxFTUVOVF9OT0RFICAgICAgICAgICAgICAgICAgPSAx
LAotICAgIERPTV9BVFRSSUJVVEVfTk9ERSAgICAgICAgICAgICAgICA9IDIsCi0gICAgRE9NX1RF
WFRfTk9ERSAgICAgICAgICAgICAgICAgICAgID0gMywKLSAgICBET01fQ0RBVEFfU0VDVElPTl9O
T0RFICAgICAgICAgICAgPSA0LAotICAgIERPTV9FTlRJVFlfUkVGRVJFTkNFX05PREUgICAgICAg
ICA9IDUsCi0gICAgRE9NX0VOVElUWV9OT0RFICAgICAgICAgICAgICAgICAgID0gNiwKLSAgICBE
T01fUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFICAgPSA3LAotICAgIERPTV9DT01NRU5UX05P
REUgICAgICAgICAgICAgICAgICA9IDgsCi0gICAgRE9NX0RPQ1VNRU5UX05PREUgICAgICAgICAg
ICAgICAgID0gOSwKLSAgICBET01fRE9DVU1FTlRfVFlQRV9OT0RFICAgICAgICAgICAgPSAxMCwK
LSAgICBET01fRE9DVU1FTlRfRlJBR01FTlRfTk9ERSAgICAgICAgPSAxMSwKLSAgICBET01fTk9U
QVRJT05fTk9ERSAgICAgICAgICAgICAgICAgPSAxMgotfTsKLQotQGludGVyZmFjZSBET01Ob2Rl
IDogRE9NT2JqZWN0Ci0tIChOU1N0cmluZyAqKW5vZGVOYW1lOwotLSAoTlNTdHJpbmcgKilub2Rl
VmFsdWU7Ci0tICh2b2lkKXNldE5vZGVWYWx1ZTooTlNTdHJpbmcgKilzdHJpbmc7Ci0tICh1bnNp
Z25lZCBzaG9ydClub2RlVHlwZTsKLS0gKERPTU5vZGUgKilwYXJlbnROb2RlOwotLSAoRE9NTm9k
ZUxpc3QgKiljaGlsZE5vZGVzOwotLSAoRE9NTm9kZSAqKWZpcnN0Q2hpbGQ7Ci0tIChET01Ob2Rl
ICopbGFzdENoaWxkOwotLSAoRE9NTm9kZSAqKXByZXZpb3VzU2libGluZzsKLS0gKERPTU5vZGUg
KiluZXh0U2libGluZzsKLS0gKERPTU5hbWVkTm9kZU1hcCAqKWF0dHJpYnV0ZXM7Ci0tIChET01E
b2N1bWVudCAqKW93bmVyRG9jdW1lbnQ7Ci0tIChET01Ob2RlICopaW5zZXJ0QmVmb3JlOihET01O
b2RlICopbmV3Q2hpbGQgOihET01Ob2RlICopcmVmQ2hpbGQ7Ci0tIChET01Ob2RlICopcmVwbGFj
ZUNoaWxkOihET01Ob2RlICopbmV3Q2hpbGQgOihET01Ob2RlICopb2xkQ2hpbGQ7Ci0tIChET01O
b2RlICopcmVtb3ZlQ2hpbGQ6KERPTU5vZGUgKilvbGRDaGlsZDsKLS0gKERPTU5vZGUgKilhcHBl
bmRDaGlsZDooRE9NTm9kZSAqKW5ld0NoaWxkOwotLSAoQk9PTCloYXNDaGlsZE5vZGVzOwotLSAo
RE9NTm9kZSAqKWNsb25lTm9kZTooQk9PTClkZWVwOwotLSAodm9pZClub3JtYWxpemU7Ci0tIChC
T09MKWlzU3VwcG9ydGVkOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0cmluZyAqKXZlcnNpb247
Ci0tIChOU1N0cmluZyAqKW5hbWVzcGFjZVVSSTsKLS0gKE5TU3RyaW5nICopcHJlZml4OwotLSAo
dm9pZClzZXRQcmVmaXg6KE5TU3RyaW5nICopcHJlZml4OwotLSAoTlNTdHJpbmcgKilsb2NhbE5h
bWU7Ci0tIChCT09MKWhhc0F0dHJpYnV0ZXM7Ci0tIChCT09MKWlzU2FtZU5vZGU6KERPTU5vZGUg
KilvdGhlcjsKLS0gKEJPT0wpaXNFcXVhbE5vZGU6KERPTU5vZGUgKilvdGhlcjsKLS0gKE5TU3Ry
aW5nICopdGV4dENvbnRlbnQ7Ci0tICh2b2lkKXNldFRleHRDb250ZW50OihOU1N0cmluZyAqKXRl
eHQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NTm9kZUxpc3QgOiBET01PYmplY3QKLS0gKERPTU5v
ZGUgKilpdGVtOih1bnNpZ25lZClpbmRleDsKLS0gKHVuc2lnbmVkKWxlbmd0aDsKLUBlbmQKLQot
QGludGVyZmFjZSBET01OYW1lZE5vZGVNYXAgOiBET01PYmplY3QKLS0gKERPTU5vZGUgKilnZXRO
YW1lZEl0ZW06KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTU5vZGUgKilzZXROYW1lZEl0ZW06KERP
TU5vZGUgKilhcmc7Ci0tIChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVtOihOU1N0cmluZyAqKW5h
bWU7Ci0tIChET01Ob2RlICopaXRlbToodW5zaWduZWQpaW5kZXg7Ci0tICh1bnNpZ25lZClsZW5n
dGg7Ci0tIChET01Ob2RlICopZ2V0TmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJ
IDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tIChET01Ob2RlICopc2V0TmFtZWRJdGVtTlM6KERP
TU5vZGUgKilhcmc7Ci0tIChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVtTlM6KE5TU3RyaW5nICop
bmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci1AZW5kCi0KLUBpbnRlcmZhY2Ug
RE9NQ2hhcmFjdGVyRGF0YSA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopZGF0YTsKLS0gKHZvaWQp
c2V0RGF0YTooTlNTdHJpbmcgKilkYXRhOwotLSAodW5zaWduZWQpbGVuZ3RoOwotLSAoTlNTdHJp
bmcgKilzdWJzdHJpbmdEYXRhOih1bnNpZ25lZClvZmZzZXQgOih1bnNpZ25lZCljb3VudDsKLS0g
KHZvaWQpYXBwZW5kRGF0YTooTlNTdHJpbmcgKilhcmc7Ci0tICh2b2lkKWluc2VydERhdGE6KHVu
c2lnbmVkKW9mZnNldCA6KE5TU3RyaW5nICopYXJnOwotLSAodm9pZClkZWxldGVEYXRhOih1bnNp
Z25lZClvZmZzZXQgOih1bnNpZ25lZCkgY291bnQ7Ci0tICh2b2lkKXJlcGxhY2VEYXRhOih1bnNp
Z25lZClvZmZzZXQgOih1bnNpZ25lZCljb3VudCA6KE5TU3RyaW5nICopYXJnOwotQGVuZAotCi1A
aW50ZXJmYWNlIERPTUF0dHIgOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKW5hbWU7Ci0tIChCT09M
KXNwZWNpZmllZDsKLS0gKE5TU3RyaW5nICopdmFsdWU7Ci0tICh2b2lkKXNldFZhbHVlOihOU1N0
cmluZyAqKXZhbHVlOwotLSAoRE9NRWxlbWVudCAqKW93bmVyRWxlbWVudDsKLUBlbmQKLQotQGlu
dGVyZmFjZSBET01FbGVtZW50IDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKil0YWdOYW1lOwotLSAo
TlNTdHJpbmcgKilnZXRBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKHZvaWQpc2V0QXR0
cmlidXRlOihOU1N0cmluZyAqKW5hbWUgOihOU1N0cmluZyAqKXZhbHVlOwotLSAodm9pZClyZW1v
dmVBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTUF0dHIgKilnZXRBdHRyaWJ1dGVO
b2RlOihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZTooRE9N
QXR0ciAqKW5ld0F0dHI7Ci0tIChET01BdHRyICopcmVtb3ZlQXR0cmlidXRlTm9kZTooRE9NQXR0
ciAqKW9sZEF0dHI7Ci0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lOihOU1N0
cmluZyAqKW5hbWU7Ci0tIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5h
bWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAodm9pZClzZXRBdHRyaWJ1dGVO
UzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihO
U1N0cmluZyAqKXZhbHVlOwotLSAodm9pZClyZW1vdmVBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKilu
YW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKERPTUF0dHIgKilnZXRBdHRy
aWJ1dGVOb2RlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5h
bWU7Ci0tIChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZU5TOihET01BdHRyICopbmV3QXR0cjsK
LS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWVOUzooTlNTdHJpbmcgKiluYW1l
c3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKEJPT0wpaGFzQXR0cmlidXRlOihO
U1N0cmluZyAqKW5hbWU7Ci0tIChCT09MKWhhc0F0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVz
cGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAodm9pZClmb2N1czsKLS0gKHZvaWQp
Ymx1cjsKLUBlbmQKLQotQGludGVyZmFjZSBET01UZXh0IDogRE9NQ2hhcmFjdGVyRGF0YQotLSAo
RE9NVGV4dCAqKXNwbGl0VGV4dDoodW5zaWduZWQpb2Zmc2V0OwotQGVuZAotCi1AaW50ZXJmYWNl
IERPTUNvbW1lbnQgOiBET01DaGFyYWN0ZXJEYXRhCi1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NQ0RB
VEFTZWN0aW9uIDogRE9NVGV4dAotQGVuZAotCi1AaW50ZXJmYWNlIERPTURvY3VtZW50VHlwZSA6
IERPTU5vZGUKLS0gKE5TU3RyaW5nICopbmFtZTsKLS0gKERPTU5hbWVkTm9kZU1hcCAqKWVudGl0
aWVzOwotLSAoRE9NTmFtZWROb2RlTWFwICopbm90YXRpb25zOwotLSAoTlNTdHJpbmcgKilwdWJs
aWNJZDsKLS0gKE5TU3RyaW5nICopc3lzdGVtSWQ7Ci0tIChOU1N0cmluZyAqKWludGVybmFsU3Vi
c2V0OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTU5vdGF0aW9uIDogRE9NTm9kZQotLSAoTlNTdHJp
bmcgKilwdWJsaWNJZDsKLS0gKE5TU3RyaW5nICopc3lzdGVtSWQ7Ci1AZW5kCi0KLUBpbnRlcmZh
Y2UgRE9NRW50aXR5IDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKilwdWJsaWNJZDsKLS0gKE5TU3Ry
aW5nICopc3lzdGVtSWQ7Ci0tIChOU1N0cmluZyAqKW5vdGF0aW9uTmFtZTsKLUBlbmQKLQotQGlu
dGVyZmFjZSBET01FbnRpdHlSZWZlcmVuY2UgOiBET01Ob2RlCi1AZW5kCi0KLUBpbnRlcmZhY2Ug
RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uIDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKil0YXJnZXQ7
Ci0tIChOU1N0cmluZyAqKWRhdGE7Ci0tICh2b2lkKXNldERhdGE6KE5TU3RyaW5nICopZGF0YTsK
LUBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudEZyYWdtZW50IDogRE9NTm9kZQotQGVuZAot
Ci1AaW50ZXJmYWNlIERPTURvY3VtZW50IDogRE9NTm9kZQotLSAoRE9NRG9jdW1lbnRUeXBlICop
ZG9jdHlwZTsKLS0gKERPTUltcGxlbWVudGF0aW9uICopaW1wbGVtZW50YXRpb247Ci0tIChET01F
bGVtZW50ICopZG9jdW1lbnRFbGVtZW50OwotLSAoRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnQ6
KE5TU3RyaW5nICopdGFnTmFtZTsKLS0gKERPTURvY3VtZW50RnJhZ21lbnQgKiljcmVhdGVEb2N1
bWVudEZyYWdtZW50OwotLSAoRE9NVGV4dCAqKWNyZWF0ZVRleHROb2RlOihOU1N0cmluZyAqKWRh
dGE7Ci0tIChET01Db21tZW50ICopY3JlYXRlQ29tbWVudDooTlNTdHJpbmcgKilkYXRhOwotLSAo
RE9NQ0RBVEFTZWN0aW9uICopY3JlYXRlQ0RBVEFTZWN0aW9uOihOU1N0cmluZyAqKWRhdGE7Ci0t
IChET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKiljcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246
KE5TU3RyaW5nICopdGFyZ2V0IDooTlNTdHJpbmcgKilkYXRhOwotLSAoRE9NQXR0ciAqKWNyZWF0
ZUF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lOwotLSAoRE9NRW50aXR5UmVmZXJlbmNlICopY3Jl
YXRlRW50aXR5UmVmZXJlbmNlOihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01Ob2RlTGlzdCAqKWdl
dEVsZW1lbnRzQnlUYWdOYW1lOihOU1N0cmluZyAqKXRhZ25hbWU7Ci0tIChET01Ob2RlICopaW1w
b3J0Tm9kZTooRE9NTm9kZSAqKWltcG9ydGVkTm9kZSA6KEJPT0wpZGVlcDsKLS0gKERPTUVsZW1l
bnQgKiljcmVhdGVFbGVtZW50TlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcg
KilxdWFsaWZpZWROYW1lOwotLSAoRE9NQXR0ciAqKWNyZWF0ZUF0dHJpYnV0ZU5TOihOU1N0cmlu
ZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZTsKLS0gKERPTU5vZGVM
aXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihO
U1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKERPTUVsZW1lbnQgKilnZXRFbGVtZW50QnlJZDooTlNT
dHJpbmcgKillbGVtZW50SWQ7Ci0tIChET01Ob2RlICopYWRvcHROb2RlOihET01Ob2RlICopc291
cmNlOwotQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURPTUltcGxlbWVudGF0
aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01ET01JbXBsZW1l
bnRhdGlvbi5tbQkocmV2aXNpb24gMTU5NTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
RE9NSW1wbGVtZW50YXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgSmFtZXMgRy4gU3BldGggKHNwZXRo
QGVuZC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgSmFtZXMgRy4gU3BldGggPHNwZXRoQGVu
ZC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0Bn
bWFpbC5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDIzNDggKzI2
LDY1IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJET00uaCIKLQotI2lt
cG9ydCAiQ0RBVEFTZWN0aW9uLmgiCi0jaW1wb3J0ICJjc3NoZWxwZXIuaCIKLSNpbXBvcnQgIkNT
U1N0eWxlU2hlZXQuaCIKLSNpbXBvcnQgIkNvbW1lbnQuaCIKLSNpbXBvcnQgIkRPTUV2ZW50c0lu
dGVybmFsLmgiCisjaW1wb3J0ICJET01ET01JbXBsZW1lbnRhdGlvbi5oIgogI2ltcG9ydCAiRE9N
SW1wbGVtZW50YXRpb25Gcm9udC5oIgorCiAjaW1wb3J0ICJET01JbnRlcm5hbC5oIgotI2ltcG9y
dCAiRE9NUHJpdmF0ZS5oIgorI2ltcG9ydCAiRE9NSW1wbGVtZW50YXRpb24uaCIKKworI2ltcG9y
dCAiRE9NRG9jdW1lbnQuaCIKKyNpbXBvcnQgIkRPTURvY3VtZW50VHlwZS5oIgorI2ltcG9ydCAi
RE9NTm9kZS5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkRvY3VtZW50RnJhZ21l
bnQuaCIKICNpbXBvcnQgIkRvY3VtZW50VHlwZS5oIgotI2ltcG9ydCAiRW50aXR5LmgiCi0jaW1w
b3J0ICJFbnRpdHlSZWZlcmVuY2UuaCIKLSNpbXBvcnQgIkV2ZW50LmgiCi0jaW1wb3J0ICJFdmVu
dExpc3RlbmVyLmgiCi0jaW1wb3J0ICJGb3VuZGF0aW9uRXh0cmFzLmgiCi0jaW1wb3J0ICJGcmFt
ZU1hYy5oIgotI2ltcG9ydCAiSFRNTERvY3VtZW50LmgiCi0jaW1wb3J0ICJIVE1MTmFtZXMuaCIK
LSNpbXBvcnQgIkhUTUxQbHVnSW5FbGVtZW50LmgiCi0jaW1wb3J0ICJOb2RlRmlsdGVyLmgiCi0j
aW1wb3J0ICJOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCi0jaW1wb3J0ICJOb2RlSXRlcmF0b3IuaCIK
LSNpbXBvcnQgIk5vZGVMaXN0LmgiCi0jaW1wb3J0ICJOb3RhdGlvbi5oIgotI2ltcG9ydCAiUHJv
Y2Vzc2luZ0luc3RydWN0aW9uLmgiCi0jaW1wb3J0ICJRdWFsaWZpZWROYW1lLmgiCi0jaW1wb3J0
ICJSYW5nZS5oIgotI2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKLSNpbXBvcnQgIlRyZWVXYWxrZXIu
aCIKLSNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKLSNpbXBvcnQgPG9iamMvb2Jq
Yy1jbGFzcy5oPgotCi11c2luZyBXZWJDb3JlOjpBdG9taWNTdHJpbmc7Ci11c2luZyBXZWJDb3Jl
OjpBdG9taWNTdHJpbmdJbXBsOwotdXNpbmcgV2ViQ29yZTo6QXR0cjsKLXVzaW5nIFdlYkNvcmU6
OkNoYXJhY3RlckRhdGE7Ci11c2luZyBXZWJDb3JlOjpEZXByZWNhdGVkVmFsdWVMaXN0OwotdXNp
bmcgV2ViQ29yZTo6RG9jdW1lbnQ7Ci11c2luZyBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50Owot
dXNpbmcgV2ViQ29yZTo6RG9jdW1lbnRUeXBlOwotdXNpbmcgV2ViQ29yZTo6RE9NSW1wbGVtZW50
YXRpb25Gcm9udDsKLXVzaW5nIFdlYkNvcmU6OkVsZW1lbnQ7Ci11c2luZyBXZWJDb3JlOjpFbnRp
dHk7Ci11c2luZyBXZWJDb3JlOjpFdmVudDsKLXVzaW5nIFdlYkNvcmU6OkV2ZW50TGlzdGVuZXI7
Ci11c2luZyBXZWJDb3JlOjpFeGNlcHRpb25Db2RlOwotdXNpbmcgV2ViQ29yZTo6SFRNTERvY3Vt
ZW50OwotdXNpbmcgV2ViQ29yZTo6SFRNTEVsZW1lbnQ7Ci11c2luZyBXZWJDb3JlOjpGcmFtZU1h
YzsKLXVzaW5nIFdlYkNvcmU6OkludFJlY3Q7Ci11c2luZyBXZWJDb3JlOjpLVVJMOwotdXNpbmcg
V2ViQ29yZTo6TmFtZWROb2RlTWFwOwotdXNpbmcgV2ViQ29yZTo6Tm9kZTsKLXVzaW5nIFdlYkNv
cmU6Ok5vZGVGaWx0ZXI7Ci11c2luZyBXZWJDb3JlOjpOb2RlRmlsdGVyQ29uZGl0aW9uOwotdXNp
bmcgV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yOwotdXNpbmcgV2ViQ29yZTo6Tm9kZUxpc3Q7Ci11c2lu
ZyBXZWJDb3JlOjpOb3RhdGlvbjsKLXVzaW5nIFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlv
bjsKLXVzaW5nIFdlYkNvcmU6OlF1YWxpZmllZE5hbWU7Ci11c2luZyBXZWJDb3JlOjpSYW5nZTsK
LXVzaW5nIFdlYkNvcmU6OlJlbmRlckltYWdlOwotdXNpbmcgV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OwotdXNpbmcgV2ViQ29yZTo6U3RyaW5nOwotdXNpbmcgV2ViQ29yZTo6VGV4dDsKLXVzaW5nIFdl
YkNvcmU6OlRyZWVXYWxrZXI7Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpIVE1MTmFtZXM7
Ci0KLUBpbnRlcmZhY2UgRE9NQXR0ciAoV2ViQ29yZUludGVybmFsKQotKyAoRE9NQXR0ciAqKV9h
dHRyV2l0aDooQXR0ciAqKWltcGw7Ci0tIChBdHRyICopX2F0dHI7Ci1AZW5kCi0KLUBpbnRlcmZh
Y2UgRE9NRG9jdW1lbnRUeXBlIChXZWJDb3JlSW50ZXJuYWwpCi0tIChEb2N1bWVudFR5cGUgKilf
ZG9jdW1lbnRUeXBlOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUltcGxlbWVudGF0aW9uIChXZWJD
b3JlSW50ZXJuYWwpCi0rIChET01JbXBsZW1lbnRhdGlvbiAqKV9ET01JbXBsZW1lbnRhdGlvbldp
dGg6KERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilpbXBsOwotLSAoRE9NSW1wbGVtZW50YXRpb25G
cm9udCAqKV9ET01JbXBsZW1lbnRhdGlvbjsKLUBlbmQKLQotY2xhc3MgT2JqQ0V2ZW50TGlzdGVu
ZXIgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIE9iakNFdmVu
dExpc3RlbmVyICpmaW5kKGlkIDxET01FdmVudExpc3RlbmVyPik7Ci0gICAgc3RhdGljIE9iakNF
dmVudExpc3RlbmVyICpjcmVhdGUoaWQgPERPTUV2ZW50TGlzdGVuZXI+KTsKLQotcHJpdmF0ZToK
LSAgICBPYmpDRXZlbnRMaXN0ZW5lcihpZCA8RE9NRXZlbnRMaXN0ZW5lcj4pOwotICAgIHZpcnR1
YWwgfk9iakNFdmVudExpc3RlbmVyKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQo
RXZlbnQgKiwgYm9vbCBpc1dpbmRvd0V2ZW50KTsKLQotICAgIGlkIDxET01FdmVudExpc3RlbmVy
PiBtX2xpc3RlbmVyOwotfTsKLQotdHlwZWRlZiBIYXNoTWFwPGlkLCBPYmpDRXZlbnRMaXN0ZW5l
cio+IExpc3RlbmVyTWFwOwotdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDbGFz
cz4gT2JqQ0NsYXNzTWFwOwotCi1zdGF0aWMgT2JqQ0NsYXNzTWFwKiBlbGVtZW50Q2xhc3NNYXA7
Ci1zdGF0aWMgTGlzdGVuZXJNYXAqIGxpc3RlbmVyTWFwOwotCi0vLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NT2JqZWN0Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01PYmpl
Y3QKLQotLy8gUHJldmVudCBjcmVhdGlvbiBvZiBET00gb2JqZWN0cyBieSBjbGllbnRzIHdobyBq
dXN0ICJbW3h4eCBhbGxvY10gaW5pdF0iLgotLSAoaWQpaW5pdAotewotICAgIFtOU0V4Y2VwdGlv
biByYWlzZTpOU0dlbmVyaWNFeGNlcHRpb24gZm9ybWF0OkAiK1slQCBpbml0XTogc2hvdWxkIG5l
dmVyIGJlIHVzZWQiLCBOU1N0cmluZ0Zyb21DbGFzcyhbc2VsZiBjbGFzc10pXTsKLSAgICBbc2Vs
ZiByZWxlYXNlXTsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAg
ICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIHJlbW92ZURPTVdyYXBwZXIoX2ludGVybmFsKTsK
LSAgICB9Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0g
ICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICByZW1vdmVET01XcmFwcGVyKF9pbnRlcm5hbCk7
Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19CisjaW1wb3J0ICJQbGF0Zm9ybVN0cmlu
Zy5oIgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIAotLSAoaWQpY29weVdpdGhab25lOihO
U1pvbmUgKil6b25lCi17Ci0gICAgcmV0dXJuIFtzZWxmIHJldGFpbl07Ci19Ci0KLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIERPTU9iamVjdCAoV2ViQ29yZUludGVybmFsKQotCi0tIChpZClfaW5p
dAotewotICAgIHJldHVybiBbc3VwZXIgX2luaXRdOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Ob2RlCi0KLUBpbXBsZW1lbnRhdGlvbiBE
T01Ob2RlCitAaW1wbGVtZW50YXRpb24gRE9NSW1wbGVtZW50YXRpb24KIAogLSAodm9pZClkZWFs
bG9jCiB7Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxOb2RlICo+KF9p
bnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQorICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIERP
TV9jYXN0PFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uRnJvbnQgKj4oX2ludGVybmFsKS0+ZGVy
ZWYoKTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKIC0gKHZvaWQpZmluYWxpemUKIHsKLSAg
ICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKS0+
ZGVyZWYoKTsKLSAgICB9CisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAgRE9NX2Nhc3Q8V2Vi
Q29yZTo6RE9NSW1wbGVtZW50YXRpb25Gcm9udCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwogICAg
IFtzdXBlciBmaW5hbGl6ZV07CiB9CiAKLS0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KLXsKLSAg
ICBpZiAoIV9pbnRlcm5hbCkgewotICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCI8JUA6IG51bGw+IiwKLSAgICAgICAgICAgIFtbc2VsZiBjbGFzc10gZGVzY3JpcHRp
b25dLCBzZWxmXTsKLSAgICB9Ci0gICAgTlNTdHJpbmcgKnZhbHVlID0gW3NlbGYgbm9kZVZhbHVl
XTsKLSAgICBpZiAodmFsdWUpIHsKLSAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiPCVAIFslQF06ICVwICclQCc+IiwKLSAgICAgICAgICAgIFtbc2VsZiBjbGFzc10g
ZGVzY3JpcHRpb25dLCBbc2VsZiBub2RlTmFtZV0sIF9pbnRlcm5hbCwgdmFsdWVdOwotICAgIH0K
LSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUAgWyVAXTogJXA+IiwK
LSAgICAgICAgW1tzZWxmIGNsYXNzXSBkZXNjcmlwdGlvbl0sIFtzZWxmIG5vZGVOYW1lXSwgX2lu
dGVybmFsXTsKLX0KLQotLSAoTlNTdHJpbmcgKilub2RlTmFtZQotewotICAgIHJldHVybiBbc2Vs
ZiBfbm9kZV0tPm5vZGVOYW1lKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbm9kZVZhbHVlCi17Ci0g
ICAgLy8gRG9jdW1lbnRhdGlvbiBzYXlzIHdlIGNhbiByYWlzZSBhIERPTVNUUklOR19TSVpFX0VS
Ui4KLSAgICAvLyBIb3dldmVyLCB0aGUgbG93ZXIgbGF5ZXIgZG9lcyBub3QgcmVwb3J0IHRoYXQg
ZXJyb3IgdXAgdG8gdXMuCi0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bm9kZVZhbHVlKCk7Ci19
Ci0KLS0gKHZvaWQpc2V0Tm9kZVZhbHVlOihOU1N0cmluZyAqKXN0cmluZwotewotICAgIEFTU0VS
VChzdHJpbmcpOwotICAgIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9u
b2RlXS0+c2V0Tm9kZVZhbHVlKHN0cmluZywgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7
Ci19Ci0KLS0gKHVuc2lnbmVkIHNob3J0KW5vZGVUeXBlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9u
b2RlXS0+bm9kZVR5cGUoKTsKLX0KLQotLSAoRE9NTm9kZSAqKXBhcmVudE5vZGUKLXsKLSAgICBy
ZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9ub2RlXS0+cGFyZW50Tm9kZSgpXTsKLX0K
LQotLSAoRE9NTm9kZUxpc3QgKiljaGlsZE5vZGVzCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlTGlz
dCBfbm9kZUxpc3RXaXRoOltzZWxmIF9ub2RlXS0+Y2hpbGROb2RlcygpLmdldCgpXTsKLX0KLQot
LSAoRE9NTm9kZSAqKWZpcnN0Q2hpbGQKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRo
OltzZWxmIF9ub2RlXS0+Zmlyc3RDaGlsZCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKWxhc3RDaGls
ZAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5sYXN0Q2hp
bGQoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilwcmV2aW91c1NpYmxpbmcKLXsKLSAgICByZXR1cm4g
W0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9ub2RlXS0+cHJldmlvdXNTaWJsaW5nKCldOwotfQot
Ci0tIChET01Ob2RlICopbmV4dFNpYmxpbmcKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVX
aXRoOltzZWxmIF9ub2RlXS0+bmV4dFNpYmxpbmcoKV07Ci19Ci0KLS0gKERPTU5hbWVkTm9kZU1h
cCAqKWF0dHJpYnV0ZXMKLXsKLSAgICAvLyBET00gbGV2ZWwgMiBjb3JlIHNwZWNpZmljYXRpb24g
c2F5czogCi0gICAgLy8gQSBOYW1lZE5vZGVNYXAgY29udGFpbmluZyB0aGUgYXR0cmlidXRlcyBv
ZiB0aGlzIG5vZGUgKGlmIGl0IGlzIGFuIEVsZW1lbnQpIG9yIG51bGwgb3RoZXJ3aXNlLgotICAg
IHJldHVybiBuaWw7Ci19Ci0KLS0gKERPTURvY3VtZW50ICopb3duZXJEb2N1bWVudAotewotICAg
IHJldHVybiBbRE9NRG9jdW1lbnQgX2RvY3VtZW50V2l0aDpbc2VsZiBfbm9kZV0tPmRvY3VtZW50
KCldOwotfQotCi0tIChET01Ob2RlICopaW5zZXJ0QmVmb3JlOihET01Ob2RlICopbmV3Q2hpbGQg
OihET01Ob2RlICopcmVmQ2hpbGQKLXsKLSAgICBBU1NFUlQobmV3Q2hpbGQpOwotICAgIEFTU0VS
VChyZWZDaGlsZCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpZiAoW3NlbGYg
X25vZGVdLT5pbnNlcnRCZWZvcmUoW25ld0NoaWxkIF9ub2RlXSwgW3JlZkNoaWxkIF9ub2RlXSwg
ZWMpKQotICAgICAgICByZXR1cm4gbmV3Q2hpbGQ7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsK
LSAgICByZXR1cm4gbmlsOwotfQotCi0tIChET01Ob2RlICopcmVwbGFjZUNoaWxkOihET01Ob2Rl
ICopbmV3Q2hpbGQgOihET01Ob2RlICopb2xkQ2hpbGQKLXsKLSAgICBBU1NFUlQobmV3Q2hpbGQp
OwotICAgIEFTU0VSVChvbGRDaGlsZCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBpZiAoW3NlbGYgX25vZGVdLT5yZXBsYWNlQ2hpbGQoW25ld0NoaWxkIF9ub2RlXSwgW29sZENo
aWxkIF9ub2RlXSwgZWMpKQotICAgICAgICByZXR1cm4gb2xkQ2hpbGQ7Ci0gICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChET01Ob2RlICopcmVtb3ZlQ2hp
bGQ6KERPTU5vZGUgKilvbGRDaGlsZAotewotICAgIEFTU0VSVChvbGRDaGlsZCk7Ci0KLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpZiAoW3NlbGYgX25vZGVdLT5yZW1vdmVDaGlsZChb
b2xkQ2hpbGQgX25vZGVdLCBlYykpCi0gICAgICAgIHJldHVybiBvbGRDaGlsZDsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKERPTU5vZGUgKilhcHBl
bmRDaGlsZDooRE9NTm9kZSAqKW5ld0NoaWxkCi17Ci0gICAgQVNTRVJUKG5ld0NoaWxkKTsKLQot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChbc2VsZiBfbm9kZV0tPmFwcGVuZENo
aWxkKFtuZXdDaGlsZCBfbm9kZV0sIGVjKSkKLSAgICAgICAgcmV0dXJuIG5ld0NoaWxkOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoQk9PTCloYXND
aGlsZE5vZGVzCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aGFzQ2hpbGROb2RlcygpOwot
fQotCi0tIChET01Ob2RlICopY2xvbmVOb2RlOihCT09MKWRlZXAKLXsKLSAgICByZXR1cm4gW0RP
TU5vZGUgX25vZGVXaXRoOltzZWxmIF9ub2RlXS0+Y2xvbmVOb2RlKGRlZXApLmdldCgpXTsKLX0K
LQotLSAodm9pZClub3JtYWxpemUKLXsKLSAgICBbc2VsZiBfbm9kZV0tPm5vcm1hbGl6ZSgpOwot
fQotCi0tIChCT09MKWlzU3VwcG9ydGVkOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0cmluZyAq
KXZlcnNpb24KKy0gKEJPT0wpaGFzRmVhdHVyZTooTlNTdHJpbmcgKilmZWF0dXJlIDooTlNTdHJp
bmcgKil2ZXJzaW9uCiB7CiAgICAgQVNTRVJUKGZlYXR1cmUpOwogICAgIEFTU0VSVCh2ZXJzaW9u
KTsKIAotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmlzU3VwcG9ydGVkKGZlYXR1cmUsIHZlcnNp
b24pOwotfQotCi0tIChOU1N0cmluZyAqKW5hbWVzcGFjZVVSSQotewotICAgIHJldHVybiBbc2Vs
ZiBfbm9kZV0tPm5hbWVzcGFjZVVSSSgpOwotfQotCi0tIChOU1N0cmluZyAqKXByZWZpeAotewot
ICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPnByZWZpeCgpOwotfQotCi0tICh2b2lkKXNldFByZWZp
eDooTlNTdHJpbmcgKilwcmVmaXgKLXsKLSAgICBBU1NFUlQocHJlZml4KTsKLQotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIFN0cmluZyBwcmVmaXhTdHIocHJlZml4KTsKLSAgICBbc2Vs
ZiBfbm9kZV0tPnNldFByZWZpeChwcmVmaXhTdHIuaW1wbCgpLCBlYyk7Ci0gICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKLX0KLQotLSAoTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICByZXR1cm4g
W3NlbGYgX25vZGVdLT5sb2NhbE5hbWUoKTsKLX0KLQotLSAoQk9PTCloYXNBdHRyaWJ1dGVzCi17
Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aGFzQXR0cmlidXRlcygpOwotfQotCi0tIChCT09M
KWlzU2FtZU5vZGU6KERPTU5vZGUgKilvdGhlcgotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0t
PmlzU2FtZU5vZGUoW290aGVyIF9ub2RlXSk7Ci19Ci0KLS0gKEJPT0wpaXNFcXVhbE5vZGU6KERP
TU5vZGUgKilvdGhlcgotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmlzRXF1YWxOb2RlKFtv
dGhlciBfbm9kZV0pOwotfQotCi0tIChCT09MKWlzRGVmYXVsdE5hbWVzcGFjZTooTlNTdHJpbmcg
KiluYW1lc3BhY2VVUkkKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc0RlZmF1bHROYW1l
c3BhY2UobmFtZXNwYWNlVVJJKTsKLX0KLQotLSAoTlNTdHJpbmcgKilsb29rdXBQcmVmaXg6KE5T
U3RyaW5nICopbmFtZXNwYWNlVVJJCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bG9va3Vw
UHJlZml4KG5hbWVzcGFjZVVSSSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbG9va3VwTmFtZXNwYWNl
VVJJOihOU1N0cmluZyAqKXByZWZpeAotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmxvb2t1
cE5hbWVzcGFjZVVSSShwcmVmaXgpOworICAgIHJldHVybiBbc2VsZiBfRE9NSW1wbGVtZW50YXRp
b25dLT5oYXNGZWF0dXJlKGZlYXR1cmUsIHZlcnNpb24pOwogfQogCi0tIChOU1N0cmluZyAqKXRl
eHRDb250ZW50CistIChET01Eb2N1bWVudFR5cGUgKiljcmVhdGVEb2N1bWVudFR5cGU6KE5TU3Ry
aW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICopcHVibGljSWQgOihOU1N0cmluZyAqKXN5
c3RlbUlkCiB7Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+dGV4dENvbnRlbnQoKTsKLX0KKyAg
ICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7CisgICAgQVNTRVJUKHB1YmxpY0lkKTsKKyAgICBBU1NF
UlQoc3lzdGVtSWQpOwogCi0tICh2b2lkKXNldFRleHRDb250ZW50OihOU1N0cmluZyAqKXRleHQK
LXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfbm9kZV0tPnNldFRleHRD
b250ZW50KHRleHQsIGVjKTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRUeXBlPiBpbXBsID0gW3NlbGYgX0RPTUltcGxlbWVu
dGF0aW9uXS0+Y3JlYXRlRG9jdW1lbnRUeXBlKHF1YWxpZmllZE5hbWUsIHB1YmxpY0lkLCBzeXN0
ZW1JZCwgZWMpOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PERPTURvY3VtZW50VHlwZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQoKV0pOwog
fQogCi0tIChOU1JlY3QpYm91bmRpbmdCb3gKLXsKLSAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3Qg
KnJlbmRlcmVyID0gW3NlbGYgX25vZGVdLT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlcikK
LSAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwotICAg
IHJldHVybiBOU1plcm9SZWN0OwotfQotCi0tIChOU0FycmF5ICopbGluZUJveFJlY3RzCi17Ci0g
ICAgV2ViQ29yZTo6UmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9ub2RlXS0+cmVuZGVy
ZXIoKTsKLSAgICBpZiAocmVuZGVyZXIpIHsKLSAgICAgICAgTlNNdXRhYmxlQXJyYXkgKnJlc3Vs
dHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKLSAgICAgICAgRGVwcmVjYXRlZFZh
bHVlTGlzdDxJbnRSZWN0PiByZWN0cyA9IHJlbmRlcmVyLT5saW5lQm94UmVjdHMoKTsKLSAgICAg
ICAgaWYgKCFyZWN0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGZvciAoRGVwcmVjYXRlZFZh
bHVlTGlzdDxJbnRSZWN0Pjo6Q29uc3RJdGVyYXRvciBpdCA9IHJlY3RzLmJlZ2luKCk7IGl0ICE9
IHJlY3RzLmVuZCgpOyArK2l0KQotICAgICAgICAgICAgICAgIFtyZXN1bHRzIGFkZE9iamVjdDpb
TlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OippdF1dOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBb
cmVzdWx0cyBhdXRvcmVsZWFzZV07Ci0gICAgfQotICAgIHJldHVybiBuaWw7Ci19Ci0KLUBlbmQK
LQotc3RhdGljIHZvaWQgYWRkRWxlbWVudENsYXNzKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZywg
Q2xhc3Mgb2JqQ0NsYXNzKQotewotICAgIGVsZW1lbnRDbGFzc01hcC0+c2V0KHRhZy5sb2NhbE5h
bWUoKS5pbXBsKCksIG9iakNDbGFzcyk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNyZWF0ZUhUTUxFbGVt
ZW50Q2xhc3NNYXAoKQotewotICAgIC8vIENyZWF0ZSB0aGUgdGFibGUuCi0gICAgZWxlbWVudENs
YXNzTWFwID0gbmV3IE9iakNDbGFzc01hcDsKLSAgICAKLSAgICAvLyBQb3B1bGF0ZSBpdCB3aXRo
IEhUTUwgZWxlbWVudCBjbGFzc2VzLgotICAgIGFkZEVsZW1lbnRDbGFzcyhhVGFnLCBbRE9NSFRN
TEFuY2hvckVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoYXBwbGV0VGFnLCBb
RE9NSFRNTEFwcGxldEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoYXJlYVRh
ZywgW0RPTUhUTUxBcmVhRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhiYXNl
VGFnLCBbRE9NSFRNTEJhc2VFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGJh
c2Vmb250VGFnLCBbRE9NSFRNTEJhc2VGb250RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1l
bnRDbGFzcyhib2R5VGFnLCBbRE9NSFRNTEJvZHlFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxl
bWVudENsYXNzKGJyVGFnLCBbRE9NSFRNTEJSRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1l
bnRDbGFzcyhidXR0b25UYWcsIFtET01IVE1MQnV0dG9uRWxlbWVudCBjbGFzc10pOwotICAgIGFk
ZEVsZW1lbnRDbGFzcyhjYW52YXNUYWcsIFtET01IVE1MSW1hZ2VFbGVtZW50IGNsYXNzXSk7Ci0g
ICAgYWRkRWxlbWVudENsYXNzKGNhcHRpb25UYWcsIFtET01IVE1MVGFibGVDYXB0aW9uRWxlbWVu
dCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhjb2xUYWcsIFtET01IVE1MVGFibGVDb2xF
bGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGNvbGdyb3VwVGFnLCBbRE9NSFRN
TFRhYmxlQ29sRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhkaXJUYWcsIFtE
T01IVE1MRGlyZWN0b3J5RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhkaXZU
YWcsIFtET01IVE1MRGl2RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhkbFRh
ZywgW0RPTUhUTUxETGlzdEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoZmll
bGRzZXRUYWcsIFtET01IVE1MRmllbGRTZXRFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVu
dENsYXNzKGZvbnRUYWcsIFtET01IVE1MRm9udEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVt
ZW50Q2xhc3MoZm9ybVRhZywgW0RPTUhUTUxGb3JtRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVs
ZW1lbnRDbGFzcyhmcmFtZVRhZywgW0RPTUhUTUxGcmFtZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBh
ZGRFbGVtZW50Q2xhc3MoZnJhbWVzZXRUYWcsIFtET01IVE1MRnJhbWVTZXRFbGVtZW50IGNsYXNz
XSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGgxVGFnLCBbRE9NSFRNTEhlYWRpbmdFbGVtZW50IGNs
YXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGgyVGFnLCBbRE9NSFRNTEhlYWRpbmdFbGVtZW50
IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGgzVGFnLCBbRE9NSFRNTEhlYWRpbmdFbGVt
ZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGg0VGFnLCBbRE9NSFRNTEhlYWRpbmdF
bGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGg1VGFnLCBbRE9NSFRNTEhlYWRp
bmdFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGg2VGFnLCBbRE9NSFRNTEhl
YWRpbmdFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGhlYWRUYWcsIFtET01I
VE1MSGVhZEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaHJUYWcsIFtET01I
VE1MSFJFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGh0bWxUYWcsIFtET01I
VE1MSHRtbEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaWZyYW1lVGFnLCBb
RE9NSFRNTElGcmFtZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaW1nVGFn
LCBbRE9NSFRNTEltYWdlRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhpbnB1
dFRhZywgW0RPTUhUTUxJbnB1dEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mo
aXNpbmRleFRhZywgW0RPTUhUTUxJc0luZGV4RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1l
bnRDbGFzcyhsYWJlbFRhZywgW0RPTUhUTUxMYWJlbEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRF
bGVtZW50Q2xhc3MobGVnZW5kVGFnLCBbRE9NSFRNTExlZ2VuZEVsZW1lbnQgY2xhc3NdKTsKLSAg
ICBhZGRFbGVtZW50Q2xhc3MobGlUYWcsIFtET01IVE1MTElFbGVtZW50IGNsYXNzXSk7Ci0gICAg
YWRkRWxlbWVudENsYXNzKGxpbmtUYWcsIFtET01IVE1MTGlua0VsZW1lbnQgY2xhc3NdKTsKLSAg
ICBhZGRFbGVtZW50Q2xhc3MobGlzdGluZ1RhZywgW0RPTUhUTUxQcmVFbGVtZW50IGNsYXNzXSk7
Ci0gICAgYWRkRWxlbWVudENsYXNzKG1hcFRhZywgW0RPTUhUTUxNYXBFbGVtZW50IGNsYXNzXSk7
Ci0gICAgYWRkRWxlbWVudENsYXNzKG1lbnVUYWcsIFtET01IVE1MTWVudUVsZW1lbnQgY2xhc3Nd
KTsKLSAgICBhZGRFbGVtZW50Q2xhc3MobWV0YVRhZywgW0RPTUhUTUxNZXRhRWxlbWVudCBjbGFz
c10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhvYmplY3RUYWcsIFtET01IVE1MT2JqZWN0RWxlbWVu
dCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhvbFRhZywgW0RPTUhUTUxPTGlzdEVsZW1l
bnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mob3B0Z3JvdXBUYWcsIFtET01IVE1MT3B0
R3JvdXBFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKG9wdGlvblRhZywgW0RP
TUhUTUxPcHRpb25FbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHBUYWcsIFtE
T01IVE1MUGFyYWdyYXBoRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhwYXJh
bVRhZywgW0RPTUhUTUxQYXJhbUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mo
cHJlVGFnLCBbRE9NSFRNTFByZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mo
cVRhZywgW0RPTUhUTUxRdW90ZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mo
c2NyaXB0VGFnLCBbRE9NSFRNTFNjcmlwdEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50
Q2xhc3Moc2VsZWN0VGFnLCBbRE9NSFRNTFNlbGVjdEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRF
bGVtZW50Q2xhc3Moc3R5bGVUYWcsIFtET01IVE1MU3R5bGVFbGVtZW50IGNsYXNzXSk7Ci0gICAg
YWRkRWxlbWVudENsYXNzKHRhYmxlVGFnLCBbRE9NSFRNTFRhYmxlRWxlbWVudCBjbGFzc10pOwot
ICAgIGFkZEVsZW1lbnRDbGFzcyh0Ym9keVRhZywgW0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50
IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHRkVGFnLCBbRE9NSFRNTFRhYmxlQ2VsbEVs
ZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModGV4dGFyZWFUYWcsIFtET01IVE1M
VGV4dEFyZWFFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHRmb290VGFnLCBb
RE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mo
dGhlYWRUYWcsIFtET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVs
ZW1lbnRDbGFzcyh0aXRsZVRhZywgW0RPTUhUTUxUaXRsZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBh
ZGRFbGVtZW50Q2xhc3ModHJUYWcsIFtET01IVE1MVGFibGVSb3dFbGVtZW50IGNsYXNzXSk7Ci0g
ICAgYWRkRWxlbWVudENsYXNzKHVsVGFnLCBbRE9NSFRNTFVMaXN0RWxlbWVudCBjbGFzc10pOwot
Ci0gICAgLy8gRklYTUU6IFJlZmxlY3QgbWFycXVlZSBvbmNlIHRoZSBBUEkgaGFzIGJlZW4gZGV0
ZXJtaW5lZC4KLX0KLQotc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdHJp
bmcmIHRhZ05hbWUpCi17Ci0gICAgaWYgKCFlbGVtZW50Q2xhc3NNYXApCi0gICAgICAgIGNyZWF0
ZUhUTUxFbGVtZW50Q2xhc3NNYXAoKTsKLSAgICBDbGFzcyBvYmpjQ2xhc3MgPSBlbGVtZW50Q2xh
c3NNYXAtPmdldCh0YWdOYW1lLmltcGwoKSk7Ci0gICAgaWYgKCFvYmpjQ2xhc3MpCi0gICAgICAg
IG9iamNDbGFzcyA9IFtET01IVE1MRWxlbWVudCBjbGFzc107Ci0gICAgcmV0dXJuIG9iamNDbGFz
czsKLX0KLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGUgKFdlYkNvcmVJbnRlcm5hbCkKLQotLSAo
aWQpX2luaXRXaXRoTm9kZTooTm9kZSAqKWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAg
ICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVy
bmFsICo+KGltcGwpOwotICAgIGltcGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwg
aW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLSsgKERPTU5vZGUgKilfbm9kZVdpdGg6KE5v
ZGUgKilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAot
ICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBl
cihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hl
ZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIENsYXNzIHdyYXBwZXJD
bGFzcyA9IG5pbDsKLSAgICBzd2l0Y2ggKGltcGwtPm5vZGVUeXBlKCkpIHsKLSAgICAgICAgY2Fz
ZSBOb2RlOjpFTEVNRU5UX05PREU6Ci0gICAgICAgICAgICBpZiAoaW1wbC0+aXNIVE1MRWxlbWVu
dCgpKQotICAgICAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IGVsZW1lbnRDbGFzcyhzdGF0aWNf
Y2FzdDxIVE1MRWxlbWVudCo+KGltcGwpLT5sb2NhbE5hbWUoKSk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTUVsZW1lbnQgY2xhc3NdOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6QVRUUklCVVRFX05PREU6Ci0gICAg
ICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NQXR0ciBjbGFzc107Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBOb2RlOjpURVhUX05PREU6Ci0gICAgICAgICAgICB3cmFwcGVyQ2xh
c3MgPSBbRE9NVGV4dCBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBO
b2RlOjpDREFUQV9TRUNUSU9OX05PREU6Ci0gICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9N
Q0RBVEFTZWN0aW9uIGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5v
ZGU6OkVOVElUWV9SRUZFUkVOQ0VfTk9ERToKLSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtE
T01FbnRpdHlSZWZlcmVuY2UgY2xhc3NdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgTm9kZTo6RU5USVRZX05PREU6Ci0gICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NRW50
aXR5IGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OlBST0NF
U1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKLSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24gY2xhc3NdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgTm9kZTo6Q09NTUVOVF9OT0RFOgotICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RP
TUNvbW1lbnQgY2xhc3NdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6
RE9DVU1FTlRfTk9ERToKLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGlt
cGwpLT5pc0hUTUxEb2N1bWVudCgpKQotICAgICAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtE
T01IVE1MRG9jdW1lbnQgY2xhc3NdOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHdyYXBwZXJDbGFzcyA9IFtET01Eb2N1bWVudCBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6Ci0gICAgICAgICAgICB3cmFw
cGVyQ2xhc3MgPSBbRE9NRG9jdW1lbnRUeXBlIGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgICAgICAgICB3
cmFwcGVyQ2xhc3MgPSBbRE9NRG9jdW1lbnRGcmFnbWVudCBjbGFzc107Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgotICAgICAgICAgICAgd3Jh
cHBlckNsYXNzID0gW0RPTU5vdGF0aW9uIGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgICAgICAgICAgLy8gRklY
TUU6IENyZWF0ZSBhbiBYUGF0aCBvYmplY3RpdmUgQyB3cmFwcGVyCi0gICAgICAgICAgICAvLyBT
ZWUgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD04NzU1Ci0g
ICAgICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLSAgICByZXR1cm4gW1tbd3JhcHBlckNsYXNz
IGFsbG9jXSBfaW5pdFdpdGhOb2RlOmltcGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoTm9kZSAq
KV9ub2RlCi17Ci0gICAgcmV0dXJuIERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKTsKLX0KLQot
LSAoY29uc3QgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqKV9leGVjdXRpb25Db250ZXh0Ci17
Ci0gICAgaWYgKE5vZGUgKm4gPSBbc2VsZiBfbm9kZV0pCi0gICAgICAgIGlmIChGcmFtZU1hYyAq
ZiA9IE1hYyhuLT5kb2N1bWVudCgpLT5mcmFtZSgpKSkKLSAgICAgICAgICAgIHJldHVybiBmLT5l
eGVjdXRpb25Db250ZXh0Rm9yRE9NKCk7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotQGVuZAotCi1A
aW1wbGVtZW50YXRpb24gRE9NTm9kZSAoV2ViUHJpdmF0ZSkKLQotLSAoQk9PTClpc0NvbnRlbnRF
ZGl0YWJsZQotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmlzQ29udGVudEVkaXRhYmxlKCk7
Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGUgKERPTUV2ZW50VGFyZ2V0KQot
Ci0tICh2b2lkKWFkZEV2ZW50TGlzdGVuZXI6KE5TU3RyaW5nICopdHlwZSA6KGlkIDxET01FdmVu
dExpc3RlbmVyPilsaXN0ZW5lciA6KEJPT0wpdXNlQ2FwdHVyZQotewotICAgIGlmICghW3NlbGYg
X25vZGVdLT5pc0V2ZW50VGFyZ2V0Tm9kZSgpKQotICAgICAgICByYWlzZURPTUV4Y2VwdGlvbihE
T01fTk9UX1NVUFBPUlRFRF9FUlIpOwotICAgIAotICAgIEV2ZW50TGlzdGVuZXIgKndyYXBwZXIg
PSBPYmpDRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsKLSAgICBFdmVudFRhcmdldE5v
ZGVDYXN0KFtzZWxmIF9ub2RlXSktPmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgd3JhcHBlciwgdXNl
Q2FwdHVyZSk7Ci0gICAgd3JhcHBlci0+ZGVyZWYoKTsKLX0KLQotLSAodm9pZClyZW1vdmVFdmVu
dExpc3RlbmVyOihOU1N0cmluZyAqKXR5cGUgOihpZCA8RE9NRXZlbnRMaXN0ZW5lcj4pbGlzdGVu
ZXIgOihCT09MKXVzZUNhcHR1cmUKLXsKLSAgICBpZiAoIVtzZWxmIF9ub2RlXS0+aXNFdmVudFRh
cmdldE5vZGUoKSkKLSAgICAgICAgcmFpc2VET01FeGNlcHRpb24oRE9NX05PVF9TVVBQT1JURURf
RVJSKTsKLQotICAgIGlmIChFdmVudExpc3RlbmVyICp3cmFwcGVyID0gT2JqQ0V2ZW50TGlzdGVu
ZXI6OmZpbmQobGlzdGVuZXIpKQotICAgICAgICBFdmVudFRhcmdldE5vZGVDYXN0KFtzZWxmIF9u
b2RlXSktPnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgd3JhcHBlciwgdXNlQ2FwdHVyZSk7Ci19
Ci0KLS0gKEJPT0wpZGlzcGF0Y2hFdmVudDooRE9NRXZlbnQgKilldmVudAorLSAoRE9NRG9jdW1l
bnQgKiljcmVhdGVEb2N1bWVudDooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAq
KXF1YWxpZmllZE5hbWUgOihET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlCiB7Ci0gICAgaWYgKCFb
c2VsZiBfbm9kZV0tPmlzRXZlbnRUYXJnZXROb2RlKCkpCi0gICAgICAgIHJhaXNlRE9NRXhjZXB0
aW9uKERPTV9OT1RfU1VQUE9SVEVEX0VSUik7CisgICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Cisg
ICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgQk9PTCByZXN1bHQgPSBFdmVudFRhcmdldE5vZGVDYXN0KFtzZWxmIF9ub2RlXSktPmRpc3Bh
dGNoRXZlbnQoW2V2ZW50IF9ldmVudF0sIGVjKTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnQ+IGltcGwgPSBbc2VsZiBfRE9N
SW1wbGVtZW50YXRpb25dLT5jcmVhdGVEb2N1bWVudChuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5h
bWUsIFtkb2N0eXBlIF9Eb2N1bWVudFR5cGVdLCBlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVj
KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVu
dCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQoKV0pOwogfQogCiBAZW5kCi0KLS8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01OYW1lZE5vZGVNYXAKLQotQGlt
cGxlbWVudGF0aW9uIERPTU5hbWVkTm9kZU1hcAotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBp
ZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5hbWVkTm9kZU1hcCAqPihfaW50ZXJu
YWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQp
ZmluYWxpemUKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5hbWVk
Tm9kZU1hcCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxp
emVdOwotfQotCi0tIChOYW1lZE5vZGVNYXAgKilfbmFtZWROb2RlTWFwCi17Ci0gICAgcmV0dXJu
IERPTV9jYXN0PE5hbWVkTm9kZU1hcCAqPihfaW50ZXJuYWwpOwotfQotCi0tIChET01Ob2RlICop
Z2V0TmFtZWRJdGVtOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0KLSAg
ICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5nZXROYW1l
ZEl0ZW0obmFtZSkuZ2V0KCldOwotfQotCi0tIChET01Ob2RlICopc2V0TmFtZWRJdGVtOihET01O
b2RlICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsK
LSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9k
ZU1hcF0tPnNldE5hbWVkSXRlbShbYXJnIF9ub2RlXSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAo
RE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJU
KG5hbWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0g
W0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5yZW1vdmVOYW1lZEl0ZW0o
bmFtZSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWlu
ZGV4Ci17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFw
XS0+aXRlbShpbmRleCkuZ2V0KCldOwotfQotCi0tICh1bnNpZ25lZClsZW5ndGgKLXsKLSAgICBy
ZXR1cm4gW3NlbGYgX25hbWVkTm9kZU1hcF0tPmxlbmd0aCgpOwotfQotCi0tIChET01Ob2RlICop
Z2V0TmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2Nh
bE5hbWUKLXsKLSAgICBpZiAoIW5hbWVzcGFjZVVSSSB8fCAhbG9jYWxOYW1lKSB7Ci0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2Vs
ZiBfbmFtZWROb2RlTWFwXS0+Z2V0TmFtZWRJdGVtTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUp
LmdldCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbU5TOihET01Ob2RlICopYXJn
Ci17Ci0gICAgQVNTRVJUKGFyZyk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01O
b2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPnNl
dE5hbWVkSXRlbU5TKFthcmcgX25vZGVdLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9u
RE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2Rl
ICopcmVtb3ZlTmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcg
Kilsb2NhbE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQobG9j
YWxOYW1lKTsKLQotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9
IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+cmVtb3ZlTmFtZWRJdGVt
TlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNl
T25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIERPTU5hbWVkTm9kZU1hcCAoV2ViQ29yZUludGVybmFsKQotCi0tIChp
ZClfaW5pdFdpdGhOYW1lZE5vZGVNYXA6KE5hbWVkTm9kZU1hcCAqKWltcGwKLXsKLSAgICBBU1NF
UlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0
PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGltcGwtPnJlZigpOwotICAgIGFkZERP
TVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLSsgKERPTU5hbWVk
Tm9kZU1hcCAqKV9uYW1lZE5vZGVNYXBXaXRoOihOYW1lZE5vZGVNYXAgKilpbXBsCi17Ci0gICAg
aWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3Rh
bmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAo
Y2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0g
YXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhO
YW1lZE5vZGVNYXA6aW1wbF0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Ob2RlTGlzdAotCi1AaW1wbGVtZW50YXRp
b24gRE9NTm9kZUxpc3QKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkg
ewotICAgICAgICBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAg
IH0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBp
ZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5vZGVMaXN0ICo+KF9pbnRlcm5hbCkt
PmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19Ci0KLS0gKE5vZGVMaXN0
ICopX25vZGVMaXN0Ci17Ci0gICAgcmV0dXJuIERPTV9jYXN0PE5vZGVMaXN0ICo+KF9pbnRlcm5h
bCk7Ci19Ci0KLS0gKERPTU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleAotewotICAgIHJldHVy
biBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVMaXN0XS0+aXRlbShpbmRleCldOwotfQot
Ci0tICh1bnNpZ25lZClsZW5ndGgKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVMaXN0XS0+bGVu
Z3RoKCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGVMaXN0IChXZWJDb3Jl
SW50ZXJuYWwpCi0KLS0gKGlkKV9pbml0V2l0aE5vZGVMaXN0OihOb2RlTGlzdCAqKWltcGwKLXsK
LSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9
IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGltcGwtPnJlZigpOwot
ICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLSsg
KERPTU5vZGVMaXN0ICopX25vZGVMaXN0V2l0aDooTm9kZUxpc3QgKilpbXBsCi17Ci0gICAgaWYg
KCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNl
OwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2Fj
aGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0
b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhOb2Rl
TGlzdDppbXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUltcGxlbWVudGF0aW9uCi0KLUBpbXBsZW1lbnRhdGlv
biBET01JbXBsZW1lbnRhdGlvbgotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAoX2ludGVy
bmFsKQotICAgICAgICBET01fY2FzdDxET01JbXBsZW1lbnRhdGlvbkZyb250ICo+KF9pbnRlcm5h
bCktPmRlcmVmKCk7Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXpl
Ci17Ci0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAgICAgRE9NX2Nhc3Q8RE9NSW1wbGVtZW50YXRp
b25Gcm9udCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19
Ci0KLS0gKEJPT0wpaGFzRmVhdHVyZTooTlNTdHJpbmcgKilmZWF0dXJlIDooTlNTdHJpbmcgKil2
ZXJzaW9uCi17Ci0gICAgQVNTRVJUKGZlYXR1cmUpOwotICAgIEFTU0VSVCh2ZXJzaW9uKTsKLQot
ICAgIHJldHVybiBbc2VsZiBfRE9NSW1wbGVtZW50YXRpb25dLT5oYXNGZWF0dXJlKGZlYXR1cmUs
IHZlcnNpb24pOwotfQotCi0tIChET01Eb2N1bWVudFR5cGUgKiljcmVhdGVEb2N1bWVudFR5cGU6
KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICopcHVibGljSWQgOihOU1N0cmlu
ZyAqKXN5c3RlbUlkCi17Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotICAgIEFTU0VSVChw
dWJsaWNJZCk7Ci0gICAgQVNTRVJUKHN5c3RlbUlkKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIFJlZlB0cjxEb2N1bWVudFR5cGU+IGltcGwgPSBbc2VsZiBfRE9NSW1wbGVtZW50
YXRpb25dLT5jcmVhdGVEb2N1bWVudFR5cGUocXVhbGlmaWVkTmFtZSwgcHVibGljSWQsIHN5c3Rl
bUlkLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RE9NRG9jdW1lbnRUeXBlICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsLmdldCgpXSk7Ci19
Ci0KLS0gKERPTURvY3VtZW50ICopY3JlYXRlRG9jdW1lbnQ6KE5TU3RyaW5nICopbmFtZXNwYWNl
VVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooRE9NRG9jdW1lbnRUeXBlICopZG9jdHlw
ZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChxdWFsaWZpZWROYW1l
KTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxEb2N1bWVudD4gaW1w
bCA9IFtzZWxmIF9ET01JbXBsZW1lbnRhdGlvbl0tPmNyZWF0ZURvY3VtZW50KG5hbWVzcGFjZVVS
SSwgcXVhbGlmaWVkTmFtZSwgW2RvY3R5cGUgX2RvY3VtZW50VHlwZV0sIGVjKTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudCAqPihb
RE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQoKV0pOwotfQotCi0tIChET01IVE1MRG9jdW1lbnQg
KiljcmVhdGVIVE1MRG9jdW1lbnQ6KE5TU3RyaW5nICopdGl0bGUKLXsKLSAgICBSZWZQdHI8SFRN
TERvY3VtZW50PiBpbXBsID0gW3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+Y3JlYXRlSFRNTERv
Y3VtZW50KHRpdGxlKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NSFRNTERvY3VtZW50ICo+
KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsLmdldCgpXSk7Ci19Ci1AZW5kCi0KLUBpbXBsZW1lbnRh
dGlvbiBET01JbXBsZW1lbnRhdGlvbiAoRE9NSW1wbGVtZW50YXRpb25DU1MpCi0KLS0gKERPTUNT
U1N0eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNoZWV0OihOU1N0cmluZyAqKXRpdGxlIDooTlNT
dHJpbmcgKiltZWRpYQotewotICAgIEFTU0VSVCh0aXRsZSk7Ci0gICAgQVNTRVJUKG1lZGlhKTsK
LQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTUNTU1N0eWxlU2hlZXQgKnJlc3Vs
dCA9IFtET01DU1NTdHlsZVNoZWV0IF9DU1NTdHlsZVNoZWV0V2l0aDpbc2VsZiBfRE9NSW1wbGVt
ZW50YXRpb25dLT5jcmVhdGVDU1NTdHlsZVNoZWV0KHRpdGxlLCBtZWRpYSwgZWMpLmdldCgpXTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUBlbmQK
LSAKLUBpbXBsZW1lbnRhdGlvbiBET01JbXBsZW1lbnRhdGlvbiAoV2ViQ29yZUludGVybmFsKQot
Ci0tIChpZClfaW5pdFdpdGhET01JbXBsZW1lbnRhdGlvbjooRE9NSW1wbGVtZW50YXRpb25Gcm9u
dCAqKWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAg
IF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGlt
cGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNl
bGY7Ci19Ci0KLSsgKERPTUltcGxlbWVudGF0aW9uICopX0RPTUltcGxlbWVudGF0aW9uV2l0aDoo
RE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKWltcGwKLXsKLSAgICBpZiAoIWltcGwpCi0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAgY2FjaGVkSW5z
dGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKLSAg
ICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAg
Ci0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aERPTUltcGxlbWVudGF0aW9uOmlt
cGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoRE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKV9ET01J
bXBsZW1lbnRhdGlvbgotewotICAgIHJldHVybiBET01fY2FzdDxET01JbXBsZW1lbnRhdGlvbkZy
b250ICo+KF9pbnRlcm5hbCk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS8vIERPTURvY3VtZW50RnJhZ21lbnQKLQotQGltcGxlbWVudGF0aW9uIERP
TURvY3VtZW50RnJhZ21lbnQKLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnRG
cmFnbWVudCAoV2ViQ29yZUludGVybmFsKQotCi0rIChET01Eb2N1bWVudEZyYWdtZW50ICopX2Rv
Y3VtZW50RnJhZ21lbnRXaXRoOihEb2N1bWVudEZyYWdtZW50ICopaW1wbAotewotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxET01Eb2N1bWVudEZyYWdtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpp
bXBsXSk7Ci19Ci0KLS0gKERvY3VtZW50RnJhZ21lbnQgKilfZnJhZ21lbnQKLXsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnRGcmFnbWVudCAqPihET01fY2FzdDxOb2RlICo+KF9pbnRl
cm5hbCkpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyBET01Eb2N1bWVudAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQKLQotLSAoRE9N
Tm9kZSAqKWFkb3B0Tm9kZTooRE9NTm9kZSAqKXNvdXJjZQotewotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBf
ZG9jdW1lbnRdLT5hZG9wdE5vZGUoW3NvdXJjZSBfbm9kZV0sIGVjKS5nZXQoKV07Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Eb2N1bWVu
dFR5cGUgKilkb2N0eXBlCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURvY3VtZW50VHlw
ZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+ZG9jdHlwZSgpXSk7Ci19
Ci0KLS0gKERPTUltcGxlbWVudGF0aW9uICopaW1wbGVtZW50YXRpb24KLXsKLSAgICByZXR1cm4g
W0RPTUltcGxlbWVudGF0aW9uIF9ET01JbXBsZW1lbnRhdGlvbldpdGg6aW1wbGVtZW50YXRpb25G
cm9udChbc2VsZiBfZG9jdW1lbnRdKV07Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilkb2N1bWVudEVs
ZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+ZG9jdW1lbnRFbGVtZW50KCldKTsKLX0KLQotLSAo
RE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnQ6KE5TU3RyaW5nICopdGFnTmFtZQotewotICAgIEFT
U0VSVCh0YWdOYW1lKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTUVsZW1l
bnQgKnJlc3VsdCA9IHN0YXRpY19jYXN0PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRo
OltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUVsZW1lbnQodGFnTmFtZSwgZWMpLmdldCgpXSk7Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01E
b2N1bWVudEZyYWdtZW50ICopY3JlYXRlRG9jdW1lbnRGcmFnbWVudAotewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxET01Eb2N1bWVudEZyYWdtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2Vs
ZiBfZG9jdW1lbnRdLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuZ2V0KCldKTsKLX0KLQotLSAo
RE9NVGV4dCAqKWNyZWF0ZVRleHROb2RlOihOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQo
ZGF0YSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTVRleHQgKj4oW0RPTU5vZGUgX25vZGVX
aXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVRleHROb2RlKGRhdGEpLmdldCgpXSk7Ci19Ci0K
LS0gKERPTUNvbW1lbnQgKiljcmVhdGVDb21tZW50OihOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBB
U1NFUlQoZGF0YSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUNvbW1lbnQgKj4oW0RPTU5v
ZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNvbW1lbnQoZGF0YSkuZ2V0KCld
KTsKLX0KLQotLSAoRE9NQ0RBVEFTZWN0aW9uICopY3JlYXRlQ0RBVEFTZWN0aW9uOihOU1N0cmlu
ZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0g
ICAgRE9NQ0RBVEFTZWN0aW9uICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxET01DREFUQVNlY3Rpb24g
Kj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNEQVRBU2VjdGlv
bihkYXRhLCBleGNlcHRpb24pLmdldCgpXSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlv
bik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9u
ICopY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uOihOU1N0cmluZyAqKXRhcmdldCA6KE5TU3Ry
aW5nICopZGF0YQotewotICAgIEFTU0VSVCh0YXJnZXQpOwotICAgIEFTU0VSVChkYXRhKTsKLSAg
ICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKnJlc3Vs
dCA9IHN0YXRpY19jYXN0PERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqPihbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKHRhcmdl
dCwgZGF0YSwgZXhjZXB0aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRp
b24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTUF0dHIgKiljcmVhdGVBdHRyaWJ1
dGU6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBpbnQgZXhjZXB0
aW9uID0gMDsKLSAgICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYg
X2RvY3VtZW50XS0+Y3JlYXRlQXR0cmlidXRlKG5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldOwotICAg
IHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0g
KERPTUVudGl0eVJlZmVyZW5jZSAqKWNyZWF0ZUVudGl0eVJlZmVyZW5jZTooTlNTdHJpbmcgKilu
YW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERP
TUVudGl0eVJlZmVyZW5jZSAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RE9NRW50aXR5UmVmZXJlbmNl
ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVFbnRpdHlSZWZl
cmVuY2UobmFtZSwgZXhjZXB0aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNl
cHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxl
bWVudHNCeVRhZ05hbWU6KE5TU3RyaW5nICopdGFnbmFtZQotewotICAgIEFTU0VSVCh0YWduYW1l
KTsKLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX2RvY3VtZW50
XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWUodGFnbmFtZSkuZ2V0KCldOwotfQotCi0tIChET01Ob2Rl
ICopaW1wb3J0Tm9kZTooRE9NTm9kZSAqKWltcG9ydGVkTm9kZSA6KEJPT0wpZGVlcAotewotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9u
b2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5pbXBvcnROb2RlKFtpbXBvcnRlZE5vZGUgX25vZGVd
LCBkZWVwLCBlYykuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotLSAoRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnROUzooTlNTdHJpbmcg
KiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUKLXsKLSAgICBBU1NFUlQo
bmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7Ci0KLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6
W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVk
TmFtZSwgZWMpLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxET01FbGVtZW50ICo+KHJlc3VsdCk7Ci19Ci0KLS0gKERPTUF0dHIgKiljcmVh
dGVBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxp
ZmllZE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQocXVhbGlm
aWVkTmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01BdHRyICpyZXN1bHQg
PSBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlQXR0cmlidXRlTlMo
bmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01O
b2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJ
IDooTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAg
ICBBU1NFUlQobG9jYWxOYW1lKTsKLQotICAgIHJldHVybiBbRE9NTm9kZUxpc3QgX25vZGVMaXN0
V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKG5hbWVzcGFjZVVS
SSwgbG9jYWxOYW1lKS5nZXQoKV07Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilnZXRFbGVtZW50QnlJ
ZDooTlNTdHJpbmcgKillbGVtZW50SWQKLXsKLSAgICBBU1NFUlQoZWxlbWVudElkKTsKLQotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2Vs
ZiBfZG9jdW1lbnRdLT5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpXSk7Ci19Ci0KLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChET01Eb2N1bWVudFJhbmdlKQotCi0tIChET01S
YW5nZSAqKWNyZWF0ZVJhbmdlCi17Ci0gICAgcmV0dXJuIFtET01SYW5nZSBfcmFuZ2VXaXRoOltz
ZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVJhbmdlKCkuZ2V0KCldOwotfQotCi1AZW5kCi0KLUBpbXBs
ZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRDU1MpCi0KLS0gKERPTUNTU1N0eWxl
RGVjbGFyYXRpb24gKilnZXRPdmVycmlkZVN0eWxlOihET01FbGVtZW50ICopZWx0IDooTlNTdHJp
bmcgKilwc2V1ZG9FbHQKLXsKLSAgICBFbGVtZW50ICplbGVtZW50ID0gW2VsdCBfZWxlbWVudF07
Ci0gICAgU3RyaW5nIHBzZXVkb0VsdFN0cmluZyhwc2V1ZG9FbHQpOwotICAgIHJldHVybiBbRE9N
Q1NTU3R5bGVEZWNsYXJhdGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6W3NlbGYgX2RvY3VtZW50
XS0+Z2V0T3ZlcnJpZGVTdHlsZShlbGVtZW50LCBwc2V1ZG9FbHRTdHJpbmcuaW1wbCgpKV07Ci19
Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChET01Eb2N1bWVudFN0eWxl
KQotCi0tIChET01TdHlsZVNoZWV0TGlzdCAqKXN0eWxlU2hlZXRzCi17Ci0gICAgcmV0dXJuIFtE
T01TdHlsZVNoZWV0TGlzdCBfc3R5bGVTaGVldExpc3RXaXRoOltzZWxmIF9kb2N1bWVudF0tPnN0
eWxlU2hlZXRzKCldOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAo
RE9NRG9jdW1lbnRFeHRlbnNpb25zKQotCi0tIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopY3Jl
YXRlQ1NTU3R5bGVEZWNsYXJhdGlvbgotewotICAgIHJldHVybiBbRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlQ1NTU3R5
bGVEZWNsYXJhdGlvbigpLmdldCgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9N
RG9jdW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NRG9jdW1lbnQgKilfZG9jdW1lbnRX
aXRoOihEb2N1bWVudCAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1l
bnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTsKLX0KLQotLSAoRG9jdW1lbnQgKilfZG9j
dW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQgKj4oRE9NX2Nhc3Q8Tm9k
ZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoRE9NRWxlbWVudCAqKV9vd25lckVsZW1lbnQKLXsK
LSAgICByZXR1cm4gW0RPTUVsZW1lbnQgX2VsZW1lbnRXaXRoOltzZWxmIF9kb2N1bWVudF0tPm93
bmVyRWxlbWVudCgpXTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotLy8gRE9NQ2hhcmFjdGVyRGF0YQotCi1AaW1wbGVtZW50YXRpb24gRE9NQ2hhcmFj
dGVyRGF0YQotCi0tIChDaGFyYWN0ZXJEYXRhICopX2NoYXJhY3RlckRhdGEKLXsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyRGF0YSAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5h
bCkpOwotfQotCi0tIChOU1N0cmluZyAqKWRhdGEKLXsKLSAgICAvLyBEb2N1bWVudGF0aW9uIHNh
eXMgd2UgY2FuIHJhaXNlIGEgRE9NU1RSSU5HX1NJWkVfRVJSLgotICAgIC8vIEhvd2V2ZXIsIHRo
ZSBsb3dlciBsYXllciBkb2VzIG5vdCByZXBvcnQgdGhhdCBlcnJvciB1cCB0byB1cy4KLSAgICBy
ZXR1cm4gW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5kYXRhKCk7Ci19Ci0KLS0gKHZvaWQpc2V0RGF0
YTooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIAotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+c2V0RGF0YShkYXRh
LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodW5zaWduZWQpbGVuZ3Ro
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+bGVuZ3RoKCk7Ci19Ci0KLS0g
KE5TU3RyaW5nICopc3Vic3RyaW5nRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpY291
bnQKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBOU1N0cmluZyAqcmVzdWx0ID0g
W3NlbGYgX2NoYXJhY3RlckRhdGFdLT5zdWJzdHJpbmdEYXRhKG9mZnNldCwgY291bnQsIGVjKTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKHZv
aWQpYXBwZW5kRGF0YTooTlNTdHJpbmcgKilhcmcKLXsKLSAgICBBU1NFUlQoYXJnKTsKLSAgICAK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPmFw
cGVuZERhdGEoYXJnLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9p
ZClpbnNlcnREYXRhOih1bnNpZ25lZClvZmZzZXQgOihOU1N0cmluZyAqKWFyZwotewotICAgIEFT
U0VSVChhcmcpOwotICAgIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9j
aGFyYWN0ZXJEYXRhXS0+aW5zZXJ0RGF0YShvZmZzZXQsIGFyZywgZWMpOwotICAgIHJhaXNlT25E
T01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpZGVsZXRlRGF0YToodW5zaWduZWQpb2Zmc2V0IDoo
dW5zaWduZWQpIGNvdW50Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYg
X2NoYXJhY3RlckRhdGFdLT5kZWxldGVEYXRhKG9mZnNldCwgY291bnQsIGVjKTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKXJlcGxhY2VEYXRhOih1bnNpZ25lZClvZmZz
ZXQgOih1bnNpZ25lZCljb3VudCA6KE5TU3RyaW5nICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7
Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0t
PnJlcGxhY2VEYXRhKG9mZnNldCwgY291bnQsIGFyZywgZWMpOwotICAgIHJhaXNlT25ET01FcnJv
cihlYyk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LS8vIERPTUF0dHIKLQotQGltcGxlbWVudGF0aW9uIERPTUF0dHIKLQotLSAoTlNTdHJpbmcgKilu
YW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9hdHRyXS0+bm9kZU5hbWUoKTsKLX0KLQotLSAoQk9P
TClzcGVjaWZpZWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2F0dHJdLT5zcGVjaWZpZWQoKTsKLX0K
LQotLSAoTlNTdHJpbmcgKil2YWx1ZQotewotICAgIHJldHVybiBbc2VsZiBfYXR0cl0tPm5vZGVW
YWx1ZSgpOwotfQotCi0tICh2b2lkKXNldFZhbHVlOihOU1N0cmluZyAqKXZhbHVlCi17Ci0gICAg
QVNTRVJUKHZhbHVlKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9h
dHRyXS0+c2V0VmFsdWUodmFsdWUsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQot
Ci0tIChET01FbGVtZW50ICopb3duZXJFbGVtZW50Ci17Ci0gICAgcmV0dXJuIFtET01FbGVtZW50
IF9lbGVtZW50V2l0aDpbc2VsZiBfYXR0cl0tPm93bmVyRWxlbWVudCgpXTsKLX0KLQotLSAoRE9N
Q1NTU3R5bGVEZWNsYXJhdGlvbiAqKXN0eWxlCi17Ci0gICAgcmV0dXJuIFtET01DU1NTdHlsZURl
Y2xhcmF0aW9uIF9zdHlsZURlY2xhcmF0aW9uV2l0aDogW3NlbGYgX2F0dHJdLT5zdHlsZSgpXTsK
LX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NQXR0ciAoV2ViQ29yZUludGVybmFsKQot
Ci0rIChET01BdHRyICopX2F0dHJXaXRoOihBdHRyICopaW1wbAotewotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxET01BdHRyICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19Ci0KLS0gKEF0
dHIgKilfYXR0cgotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdHRyICo+KERPTV9jYXN0PE5v
ZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS8vIERPTUVsZW1lbnQKLQotQGltcGxlbWVudGF0aW9uIERPTUVsZW1lbnQK
LQotLSAoTlNTdHJpbmcgKil0YWdOYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50XS0+
bm9kZU5hbWUoKTsKLX0KLQotLSAoRE9NTmFtZWROb2RlTWFwICopYXR0cmlidXRlcwotewotICAg
IHJldHVybiBbRE9NTmFtZWROb2RlTWFwIF9uYW1lZE5vZGVNYXBXaXRoOltzZWxmIF9lbGVtZW50
XS0+YXR0cmlidXRlcygpXTsKLX0KLQotLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1dGU6KE5TU3Ry
aW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICByZXR1cm4gW3NlbGYgX2VsZW1l
bnRdLT5nZXRBdHRyaWJ1dGUobmFtZSk7Ci19Ci0KLS0gKHZvaWQpc2V0QXR0cmlidXRlOihOU1N0
cmluZyAqKW5hbWUgOihOU1N0cmluZyAqKXZhbHVlCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotICAg
IEFTU0VSVCh2YWx1ZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBbc2VsZiBfZWxl
bWVudF0tPnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgZXhjZXB0aW9uKTsKLSAgICByYWlzZU9u
RE9NRXJyb3IoZXhjZXB0aW9uKTsKLX0KLQotLSAodm9pZClyZW1vdmVBdHRyaWJ1dGU6KE5TU3Ry
aW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLQotICAgIGludCBleGNlcHRpb24gPSAw
OwotICAgIFtzZWxmIF9lbGVtZW50XS0+cmVtb3ZlQXR0cmlidXRlKG5hbWUsIGV4Y2VwdGlvbik7
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci19Ci0KLS0gKERPTUF0dHIgKilnZXRB
dHRyaWJ1dGVOb2RlOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0KLSAg
ICByZXR1cm4gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0QXR0cmlidXRl
Tm9kZShuYW1lKS5nZXQoKV07Ci19Ci0KLS0gKERPTUF0dHIgKilzZXRBdHRyaWJ1dGVOb2RlOihE
T01BdHRyICopbmV3QXR0cgotewotICAgIEFTU0VSVChuZXdBdHRyKTsKLQotICAgIGludCBleGNl
cHRpb24gPSAwOwotICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0aDpbc2Vs
ZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZU5vZGUoW25ld0F0dHIgX2F0dHJdLCBleGNlcHRpb24p
LmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi0tIChET01BdHRyICopcmVtb3ZlQXR0cmlidXRlTm9kZTooRE9NQXR0ciAqKW9s
ZEF0dHIKLXsKLSAgICBBU1NFUlQob2xkQXR0cik7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsK
LSAgICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2VsZW1lbnRd
LT5yZW1vdmVBdHRyaWJ1dGVOb2RlKFtvbGRBdHRyIF9hdHRyXSwgZXhjZXB0aW9uKS5nZXQoKV07
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZTooTlNTdHJpbmcgKiluYW1l
Ci17Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0gICAgcmV0dXJuIFtET01Ob2RlTGlzdCBfbm9kZUxp
c3RXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWUobmFtZSkuZ2V0KCld
OwotfQotCi0tIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFj
ZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7
Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5n
ZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7Ci19Ci0KLS0gKHZvaWQpc2V0
QXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZp
ZWROYW1lIDooTlNTdHJpbmcgKil2YWx1ZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwot
ICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsKLSAgICBBU1NFUlQodmFsdWUpOwotCi0gICAgaW50
IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5zZXRBdHRyaWJ1dGVOUyhuYW1l
c3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIHZhbHVlLCBleGNlcHRpb24pOwotICAgIHJhaXNlT25E
T01FcnJvcihleGNlcHRpb24pOwotfQotCi0tICh2b2lkKXJlbW92ZUF0dHJpYnV0ZU5TOihOU1N0
cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJU
KG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0
aW9uID0gMDsKLSAgICBbc2VsZiBfZWxlbWVudF0tPnJlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFj
ZVVSSSwgbG9jYWxOYW1lLCBleGNlcHRpb24pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRp
b24pOwotfQotCi0tIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9kZU5TOihOU1N0cmluZyAqKW5h
bWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFj
ZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICByZXR1cm4gW0RPTUF0dHIgX2F0
dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0QXR0cmlidXRlTm9kZU5TKG5hbWVzcGFjZVVSSSwg
bG9jYWxOYW1lKS5nZXQoKV07Ci19Ci0KLS0gKERPTUF0dHIgKilzZXRBdHRyaWJ1dGVOb2RlTlM6
KERPTUF0dHIgKiluZXdBdHRyCi17Ci0gICAgQVNTRVJUKG5ld0F0dHIpOwotCi0gICAgaW50IGV4
Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltz
ZWxmIF9lbGVtZW50XS0+c2V0QXR0cmlidXRlTm9kZU5TKFtuZXdBdHRyIF9hdHRyXSwgZXhjZXB0
aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZU5TOihO
U1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNT
RVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICByZXR1cm4g
W0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX2VsZW1lbnRdLT5nZXRFbGVtZW50c0J5
VGFnTmFtZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKS5nZXQoKV07Ci19Ci0KLS0gKEJPT0wp
aGFzQXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0KLSAg
ICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5oYXNBdHRyaWJ1dGUobmFtZSk7Ci19Ci0KLS0gKEJP
T0wpaGFzQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKils
b2NhbE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQobG9jYWxO
YW1lKTsKLQotICAgIHJldHVybiBbc2VsZiBfZWxlbWVudF0tPmhhc0F0dHJpYnV0ZU5TKG5hbWVz
cGFjZVVSSSwgbG9jYWxOYW1lKTsKLX0KLQotLSAodm9pZClmb2N1cwotewotICAgIFtzZWxmIF9l
bGVtZW50XS0+Zm9jdXMoKTsKLX0KLQotLSAodm9pZClibHVyCi17Ci0gICAgW3NlbGYgX2VsZW1l
bnRdLT5ibHVyKCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUVsZW1lbnQgKERP
TUVsZW1lbnRDU1NJbmxpbmVTdHlsZSkKLQotLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKXN0
eWxlCi17Ci0gICAgcmV0dXJuIFtET01DU1NTdHlsZURlY2xhcmF0aW9uIF9zdHlsZURlY2xhcmF0
aW9uV2l0aDpbc2VsZiBfZWxlbWVudF0tPnN0eWxlKCldOwotfQotCi1AZW5kCi0KLUBpbXBsZW1l
bnRhdGlvbiBET01FbGVtZW50IChET01FbGVtZW50RXh0ZW5zaW9ucykKLQotLSAoTlNJbWFnZSop
aW1hZ2UKLXsKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gW3NlbGYgX2VsZW1lbnRdLT5y
ZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNJbWFnZSgpKSB7Ci0g
ICAgICAgIFJlbmRlckltYWdlKiBpbWcgPSBzdGF0aWNfY2FzdDxSZW5kZXJJbWFnZSo+KHJlbmRl
cmVyKTsKLSAgICAgICAgaWYgKGltZy0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1nLT5jYWNoZWRJbWFn
ZSgpLT5pc0Vycm9ySW1hZ2UoKSkKLSAgICAgICAgICAgIHJldHVybiBpbWctPmNhY2hlZEltYWdl
KCktPmltYWdlKCktPmdldE5TSW1hZ2UoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQot
LSAodm9pZClzY3JvbGxJbnRvVmlldzooQk9PTClhbGlnblRvcAotewotICAgIFtzZWxmIF9lbGVt
ZW50XS0+c2Nyb2xsSW50b1ZpZXcoYWxpZ25Ub3ApOwotfQotCi0tICh2b2lkKXNjcm9sbEludG9W
aWV3SWZOZWVkZWQ6KEJPT0wpY2VudGVySWZOZWVkZWQKLXsKLSAgICBbc2VsZiBfZWxlbWVudF0t
PnNjcm9sbEludG9WaWV3SWZOZWVkZWQoY2VudGVySWZOZWVkZWQpOwotfQotCi1AZW5kCi0KLUBp
bXBsZW1lbnRhdGlvbiBET01FbGVtZW50IChXZWJDb3JlSW50ZXJuYWwpCi0KLSsgKERPTUVsZW1l
bnQgKilfZWxlbWVudFdpdGg6KEVsZW1lbnQgKilpbXBsCi17Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTsKLX0KLQotLSAoRWxl
bWVudCAqKV9lbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQgKj4oRE9N
X2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24g
RE9NRWxlbWVudCAoV2ViUHJpdmF0ZSkKLQotLSAoTlNGb250ICopX2ZvbnQKLXsKLSAgICBSZW5k
ZXJPYmplY3QgKnJlbmRlcmVyID0gW3NlbGYgX2VsZW1lbnRdLT5yZW5kZXJlcigpOwotICAgIGlm
IChyZW5kZXJlcikgewotICAgICAgICByZXR1cm4gcmVuZGVyZXItPnN0eWxlKCktPmZvbnQoKS5n
ZXROU0ZvbnQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoTlNEYXRhKilfaW1h
Z2VUSUZGUmVwcmVzZW50YXRpb24KLXsKLSAgICBSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gW3Nl
bGYgX2VsZW1lbnRdLT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+
aXNJbWFnZSgpKSB7Ci0gICAgICAgIFJlbmRlckltYWdlKiBpbWcgPSBzdGF0aWNfY2FzdDxSZW5k
ZXJJbWFnZSo+KHJlbmRlcmVyKTsKLSAgICAgICAgaWYgKGltZy0+Y2FjaGVkSW1hZ2UoKSAmJiAh
aW1nLT5jYWNoZWRJbWFnZSgpLT5pc0Vycm9ySW1hZ2UoKSkKLSAgICAgICAgICAgIHJldHVybiAo
TlNEYXRhKikoaW1nLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpLT5nZXRUSUZGUmVwcmVzZW50YXRp
b24oKSk7Ci0gICAgfQotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKE5TVVJMICopX2dldFVSTEF0
dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotICAgIEVsZW1l
bnQgKmUgPSBbc2VsZiBfZWxlbWVudF07Ci0gICAgQVNTRVJUKGUpOwotICAgIHJldHVybiBLVVJM
KGUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHBhcnNlVVJMKGUtPmdldEF0dHJpYnV0ZShuYW1l
KSkuZGVwcmVjYXRlZFN0cmluZygpKSkuZ2V0TlNVUkwoKTsKLX0KLQotLSAodm9pZCAqKV9OUE9i
amVjdAotewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBbc2VsZiBfZWxlbWVudF07Ci0gICAgaWYg
KGVsZW1lbnQtPmhhc1RhZ05hbWUoYXBwbGV0VGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKGVt
YmVkVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKG9iamVjdFRhZykpCi0gICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCo+KGVsZW1lbnQpLT5nZXRO
UE9iamVjdCgpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIDA7Ci19Ci0KLS0gKEJPT0wpaXNG
b2N1c2VkCi17Ci0gICAgRWxlbWVudCogaW1wbCA9IFtzZWxmIF9lbGVtZW50XTsKLSAgICBpZiAo
aW1wbC0+ZG9jdW1lbnQoKS0+Zm9jdXNOb2RlKCkgPT0gaW1wbCkKLSAgICAgICAgcmV0dXJuIFlF
UzsKLSAgICByZXR1cm4gTk87Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS8vIERPTVRleHQKLQotQGltcGxlbWVudGF0aW9uIERPTVRleHQKLQotLSAo
VGV4dCAqKV90ZXh0Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHQgKj4oRE9NX2Nhc3Q8
Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoRE9NVGV4dCAqKXNwbGl0VGV4dDoodW5zaWdu
ZWQpb2Zmc2V0Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVz
dWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90ZXh0XS0+c3BsaXRUZXh0KG9mZnNldCwg
ZWMpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxE
T01UZXh0ICo+KHJlc3VsdCk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS8vIERPTUNvbW1lbnQKLQotQGltcGxlbWVudGF0aW9uIERPTUNvbW1lbnQK
LQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NQ0RB
VEFTZWN0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBET01DREFUQVNlY3Rpb24KLQotQGVuZAotCi0v
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NRG9jdW1lbnRUeXBlCi0K
LUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudFR5cGUKLQotLSAoTlNTdHJpbmcgKiluYW1lCi17
Ci0gICAgcmV0dXJuIFtzZWxmIF9kb2N1bWVudFR5cGVdLT5wdWJsaWNJZCgpOwotfQotCi0tIChE
T01OYW1lZE5vZGVNYXAgKillbnRpdGllcwotewotICAgIHJldHVybiBbRE9NTmFtZWROb2RlTWFw
IF9uYW1lZE5vZGVNYXBXaXRoOltzZWxmIF9kb2N1bWVudFR5cGVdLT5lbnRpdGllcygpXTsKLX0K
LQotLSAoRE9NTmFtZWROb2RlTWFwICopbm90YXRpb25zCi17Ci0gICAgcmV0dXJuIFtET01OYW1l
ZE5vZGVNYXAgX25hbWVkTm9kZU1hcFdpdGg6W3NlbGYgX2RvY3VtZW50VHlwZV0tPm5vdGF0aW9u
cygpXTsKLX0KLQotLSAoTlNTdHJpbmcgKilwdWJsaWNJZAotewotICAgIHJldHVybiBbc2VsZiBf
ZG9jdW1lbnRUeXBlXS0+cHVibGljSWQoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilzeXN0ZW1JZAot
ewotICAgIHJldHVybiBbc2VsZiBfZG9jdW1lbnRUeXBlXS0+c3lzdGVtSWQoKTsKLX0KLQotLSAo
TlNTdHJpbmcgKilpbnRlcm5hbFN1YnNldAotewotICAgIHJldHVybiBbc2VsZiBfZG9jdW1lbnRU
eXBlXS0+aW50ZXJuYWxTdWJzZXQoKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9N
RG9jdW1lbnRUeXBlIChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKERvY3VtZW50VHlwZSAqKV9kb2N1
bWVudFR5cGUKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnRUeXBlICo+KERPTV9j
YXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTU5vdGF0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBET01O
b3RhdGlvbgotCi0tIChOb3RhdGlvbiAqKV9ub3RhdGlvbgotewotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxOb3RhdGlvbiAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChO
U1N0cmluZyAqKXB1YmxpY0lkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub3RhdGlvbl0tPnB1Ymxp
Y0lkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopc3lzdGVtSWQKLXsKLSAgICByZXR1cm4gW3NlbGYg
X25vdGF0aW9uXS0+c3lzdGVtSWQoKTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NRW50aXR5Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01FbnRp
dHkKLQotLSAoRW50aXR5ICopX2VudGl0eQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbnRp
dHkgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKilw
dWJsaWNJZAotewotICAgIHJldHVybiBbc2VsZiBfZW50aXR5XS0+cHVibGljSWQoKTsKLX0KLQot
LSAoTlNTdHJpbmcgKilzeXN0ZW1JZAotewotICAgIHJldHVybiBbc2VsZiBfZW50aXR5XS0+c3lz
dGVtSWQoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilub3RhdGlvbk5hbWUKLXsKLSAgICByZXR1cm4g
W3NlbGYgX2VudGl0eV0tPm5vdGF0aW9uTmFtZSgpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01FbnRpdHlSZWZlcmVuY2UKLQotQGltcGxl
bWVudGF0aW9uIERPTUVudGl0eVJlZmVyZW5jZQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KLQotQGltcGxl
bWVudGF0aW9uIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbgotCi0tIChQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24gKilfcHJvY2Vzc2luZ0luc3RydWN0aW9uCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PFByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwot
fQotCi0tIChOU1N0cmluZyAqKXRhcmdldAotewotICAgIHJldHVybiBbc2VsZiBfcHJvY2Vzc2lu
Z0luc3RydWN0aW9uXS0+dGFyZ2V0KCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopZGF0YQotewotICAg
IHJldHVybiBbc2VsZiBfcHJvY2Vzc2luZ0luc3RydWN0aW9uXS0+ZGF0YSgpOwotfQotCi0tICh2
b2lkKXNldERhdGE6KE5TU3RyaW5nICopZGF0YQotewotICAgIEFTU0VSVChkYXRhKTsKLQotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9wcm9jZXNzaW5nSW5zdHJ1Y3Rpb25d
LT5zZXREYXRhKGRhdGEsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi1AZW5k
Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01SYW5nZQotCi1A
aW1wbGVtZW50YXRpb24gRE9NUmFuZ2UKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9p
bnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxSYW5nZSAqPihfaW50ZXJuYWwpLT5kZXJlZigp
OwotICAgIH0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsK
LSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PFJhbmdlICo+KF9pbnRlcm5h
bCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19Ci0KLS0gKE5TU3Ry
aW5nICopZGVzY3JpcHRpb24KLXsKLSAgICBpZiAoIV9pbnRlcm5hbCkKLSAgICAgICAgcmV0dXJu
IEAiPERPTVJhbmdlOiBudWxsPiI7Ci0gICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiPERPTVJhbmdlOiAlQCAlZCAlQCAlZD4iLAotICAgICAgICBbc2VsZiBzdGFydENvbnRh
aW5lcl0sIFtzZWxmIHN0YXJ0T2Zmc2V0XSwKLSAgICAgICAgW3NlbGYgZW5kQ29udGFpbmVyXSwg
W3NlbGYgZW5kT2Zmc2V0XV07Ci19Ci0KLS0gKERPTU5vZGUgKilzdGFydENvbnRhaW5lcgotewot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2Rl
IF9ub2RlV2l0aDpbc2VsZiBfcmFuZ2VdLT5zdGFydENvbnRhaW5lcihlYyldOwotICAgIHJhaXNl
T25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoaW50KXN0YXJ0T2Zm
c2V0Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW50IHJlc3VsdCA9IFtzZWxm
IF9yYW5nZV0tPnN0YXJ0T2Zmc2V0KGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUgKillbmRDb250YWluZXIKLXsKLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX3JhbmdlXS0+ZW5kQ29udGFpbmVyKGVjKV07Ci0gICAgcmFpc2VPbkRPTUVy
cm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChpbnQpZW5kT2Zmc2V0Ci17Ci0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW50IHJlc3VsdCA9IFtzZWxmIF9yYW5nZV0t
PmVuZE9mZnNldChlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi0tIChCT09MKWNvbGxhcHNlZAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIEJPT0wgcmVzdWx0ID0gW3NlbGYgX3JhbmdlXS0+Y29sbGFwc2VkKGVjKTsKLSAgICBy
YWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUg
Kiljb21tb25BbmNlc3RvckNvbnRhaW5lcgotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfcmFuZ2VdLT5j
b21tb25BbmNlc3RvckNvbnRhaW5lcihlYyldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAodm9pZClzZXRTdGFydDooRE9NTm9kZSAqKXJlZk5v
ZGUgOihpbnQpb2Zmc2V0Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYg
X3JhbmdlXS0+c2V0U3RhcnQoW3JlZk5vZGUgX25vZGVdLCBvZmZzZXQsIGVjKTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKXNldEVuZDooRE9NTm9kZSAqKXJlZk5vZGUg
OihpbnQpb2Zmc2V0Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3Jh
bmdlXS0+c2V0RW5kKFtyZWZOb2RlIF9ub2RlXSwgb2Zmc2V0LCBlYyk7Ci0gICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClzZXRTdGFydEJlZm9yZTooRE9NTm9kZSAqKXJlZk5v
ZGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5zZXRT
dGFydEJlZm9yZShbcmVmTm9kZSBfbm9kZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OwotfQotCi0tICh2b2lkKXNldFN0YXJ0QWZ0ZXI6KERPTU5vZGUgKilyZWZOb2RlCi17Ci0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+c2V0U3RhcnRBZnRlcihb
cmVmTm9kZSBfbm9kZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2
b2lkKXNldEVuZEJlZm9yZTooRE9NTm9kZSAqKXJlZk5vZGUKLXsKLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5zZXRFbmRCZWZvcmUoW3JlZk5vZGUgX25vZGVd
LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClzZXRFbmRBZnRl
cjooRE9NTm9kZSAqKXJlZk5vZGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBb
c2VsZiBfcmFuZ2VdLT5zZXRFbmRBZnRlcihbcmVmTm9kZSBfbm9kZV0sIGVjKTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKWNvbGxhcHNlOihCT09MKXRvU3RhcnQKLXsK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5jb2xsYXBzZSh0
b1N0YXJ0LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClzZWxl
Y3ROb2RlOihET01Ob2RlICopcmVmTm9kZQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIFtzZWxmIF9yYW5nZV0tPnNlbGVjdE5vZGUoW3JlZk5vZGUgX25vZGVdLCBlYyk7Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClzZWxlY3ROb2RlQ29udGVudHM6KERP
TU5vZGUgKilyZWZOb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYg
X3JhbmdlXS0+c2VsZWN0Tm9kZUNvbnRlbnRzKFtyZWZOb2RlIF9ub2RlXSwgZWMpOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHNob3J0KWNvbXBhcmVCb3VuZGFyeVBvaW50czoo
dW5zaWduZWQgc2hvcnQpaG93IDooRE9NUmFuZ2UgKilzb3VyY2VSYW5nZQotewotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIHNob3J0IHJlc3VsdCA9IFtzZWxmIF9yYW5nZV0tPmNvbXBh
cmVCb3VuZGFyeVBvaW50cyhzdGF0aWNfY2FzdDxSYW5nZTo6Q29tcGFyZUhvdz4oaG93KSwgW3Nv
dXJjZVJhbmdlIF9yYW5nZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLS0gKHZvaWQpZGVsZXRlQ29udGVudHMKLXsKLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5kZWxldGVDb250ZW50cyhlYyk7Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWV4
dHJhY3RDb250ZW50cwotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTURvY3Vt
ZW50RnJhZ21lbnQgKnJlc3VsdCA9IFtET01Eb2N1bWVudEZyYWdtZW50IF9kb2N1bWVudEZyYWdt
ZW50V2l0aDpbc2VsZiBfcmFuZ2VdLT5leHRyYWN0Q29udGVudHMoZWMpLmdldCgpXTsKLSAgICBy
YWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTURvY3Vt
ZW50RnJhZ21lbnQgKiljbG9uZUNvbnRlbnRzCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqcmVzdWx0ID0gW0RPTURvY3VtZW50RnJhZ21lbnQg
X2RvY3VtZW50RnJhZ21lbnRXaXRoOltzZWxmIF9yYW5nZV0tPmNsb25lQ29udGVudHMoZWMpLmdl
dCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LS0gKHZvaWQpaW5zZXJ0Tm9kZTooRE9NTm9kZSAqKW5ld05vZGUKLXsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5pbnNlcnROb2RlKFtuZXdOb2RlIF9ub2Rl
XSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc3Vycm91bmRD
b250ZW50czooRE9NTm9kZSAqKW5ld1BhcmVudAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIFtzZWxmIF9yYW5nZV0tPnN1cnJvdW5kQ29udGVudHMoW25ld1BhcmVudCBfbm9kZV0s
IGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tIChET01SYW5nZSAqKWNsb25l
UmFuZ2UKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01SYW5nZSAqcmVzdWx0
ID0gW0RPTVJhbmdlIF9yYW5nZVdpdGg6W3NlbGYgX3JhbmdlXS0+Y2xvbmVSYW5nZShlYykuZ2V0
KCldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
LSAoTlNTdHJpbmcgKil0b1N0cmluZwotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IE5TU3RyaW5nICpyZXN1bHQgPSBbc2VsZiBfcmFuZ2VdLT50b1N0cmluZyhlYyk7Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChOU1N0cmluZyAq
KXRleHQKLXsKLSAgICByZXR1cm4gW3NlbGYgX3JhbmdlXS0+dGV4dCgpOwotfQotCi0tICh2b2lk
KWRldGFjaAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9yYW5nZV0t
PmRldGFjaChlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotQGVuZAotCi1AaW1w
bGVtZW50YXRpb24gRE9NUmFuZ2UgKFdlYkNvcmVJbnRlcm5hbCkKLQotLSAoaWQpX2luaXRXaXRo
UmFuZ2U6KFJhbmdlICopaW1wbAotewotICAgIEFTU0VSVChpbXBsKTsKLQotICAgIFtzdXBlciBf
aW5pdF07Ci0gICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1w
bCk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsKLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotKyAoRE9NUmFuZ2UgKilfcmFuZ2VXaXRoOihSYW5nZSAqKWlt
cGwKLXsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWQg
Y2FjaGVkSW5zdGFuY2U7Ci0gICAgY2FjaGVkSW5zdGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwp
OwotICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFu
Y2UgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgCi0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2Nd
IF9pbml0V2l0aFJhbmdlOmltcGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoUmFuZ2UgKilfcmFu
Z2UKLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8UmFuZ2UgKj4oX2ludGVybmFsKTsKLX0KLQotQGVu
ZAotCi1AaW1wbGVtZW50YXRpb24gRE9NUmFuZ2UgKFdlYlByaXZhdGUpCi0KLS0gKE5TU3RyaW5n
ICopX3RleHQKLXsKLSAgICByZXR1cm4gW3NlbGYgdGV4dF07Ci19Ci0KLUBlbmQKLQotLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGVGaWx0ZXIKLQotLSAoaWQpX2lu
aXRXaXRoTm9kZUZpbHRlcjooTm9kZUZpbHRlciAqKWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7
Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVj
dEludGVybmFsICo+KGltcGwpOwotICAgIGltcGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIo
c2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLSsgKERPTU5vZGVGaWx0ZXIgKilf
bm9kZUZpbHRlcldpdGg6KE5vZGVGaWx0ZXIgKilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAg
ICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hl
ZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2Up
Ci0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwot
ICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhOb2RlRmlsdGVyOmltcGxd
IGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoTm9kZUZpbHRlciAqKV9ub2RlRmlsdGVyCi17Ci0gICAg
cmV0dXJuIERPTV9jYXN0PE5vZGVGaWx0ZXIgKj4oX2ludGVybmFsKTsKLX0KLQotLSAodm9pZClk
ZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZUZpbHRl
ciAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAo
dm9pZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIERPTV9jYXN0PE5v
ZGVGaWx0ZXIgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZmluYWxpemVdOwot
fQotCi0tIChzaG9ydClhY2NlcHROb2RlOihET01Ob2RlICopbm9kZQotewotICAgIHJldHVybiBb
c2VsZiBfbm9kZUZpbHRlcl0tPmFjY2VwdE5vZGUoW25vZGUgX25vZGVdKTsKLX0KLQotQGVuZAot
Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlSXRlcmF0b3IKLQotLSAoaWQpX2luaXRXaXRoTm9k
ZUl0ZXJhdG9yOihOb2RlSXRlcmF0b3IgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+
KWZpbHRlcgotewotICAgIEFTU0VSVChpbXBsKTsKLQotICAgIFtzdXBlciBfaW5pdF07Ci0gICAg
X2ludGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7Ci0gICAgaW1w
bC0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsKLSAgICBtX2ZpbHRlciA9
IFtmaWx0ZXIgcmV0YWluXTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAoTm9kZUl0ZXJhdG9y
ICopX25vZGVJdGVyYXRvcgotewotICAgIHJldHVybiBET01fY2FzdDxOb2RlSXRlcmF0b3IgKj4o
X2ludGVybmFsKTsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW21fZmlsdGVyIHJlbGVh
c2VdOwotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgW3NlbGYgZGV0YWNoXTsKLSAgICAg
ICAgRE9NX2Nhc3Q8Tm9kZUl0ZXJhdG9yICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQot
ICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6ZQotewotICAgIGlmIChf
aW50ZXJuYWwpIHsKLSAgICAgICAgW3NlbGYgZGV0YWNoXTsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9k
ZUl0ZXJhdG9yICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5h
bGl6ZV07Ci19Ci0KLS0gKERPTU5vZGUgKilyb290Ci17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9u
b2RlV2l0aDpbc2VsZiBfbm9kZUl0ZXJhdG9yXS0+cm9vdCgpXTsKLX0KLQotLSAodW5zaWduZWQp
d2hhdFRvU2hvdwotewotICAgIHJldHVybiBbc2VsZiBfbm9kZUl0ZXJhdG9yXS0+d2hhdFRvU2hv
dygpOwotfQotCi0tIChpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgaWYgKG1fZmls
dGVyKQotICAgICAgICAvLyBUaGlzIG5vZGUgaXRlcmF0b3Igd2FzIGNyZWF0ZWQgZnJvbSB0aGUg
b2JqYyBzaWRlCi0gICAgICAgIHJldHVybiBbW21fZmlsdGVyIHJldGFpbl0gYXV0b3JlbGVhc2Vd
OwotCi0gICAgLy8gVGhpcyBub2RlIGl0ZXJhdG9yIHdhcyBjcmVhdGVkIGZyb20gdGhlIGMrKyBz
aWRlCi0gICAgcmV0dXJuIFtET01Ob2RlRmlsdGVyIF9ub2RlRmlsdGVyV2l0aDpbc2VsZiBfbm9k
ZUl0ZXJhdG9yXS0+ZmlsdGVyKCldOwotfQotCi0tIChCT09MKWV4cGFuZEVudGl0eVJlZmVyZW5j
ZXMKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVJdGVyYXRvcl0tPmV4cGFuZEVudGl0eVJlZmVy
ZW5jZXMoKTsKLX0KLQotLSAoRE9NTm9kZSAqKW5leHROb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxm
IF9ub2RlSXRlcmF0b3JdLT5uZXh0Tm9kZShlYyldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZSAqKXByZXZpb3VzTm9kZQotewot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2Rl
IF9ub2RlV2l0aDpbc2VsZiBfbm9kZUl0ZXJhdG9yXS0+cHJldmlvdXNOb2RlKGVjKV07Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKWRl
dGFjaAotewotICAgIFtzZWxmIF9ub2RlSXRlcmF0b3JdLT5kZXRhY2goKTsKLX0KLQotQGVuZAot
Ci1AaW1wbGVtZW50YXRpb24gRE9NTm9kZUl0ZXJhdG9yKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAo
RE9NTm9kZUl0ZXJhdG9yICopX25vZGVJdGVyYXRvcldpdGg6KE5vZGVJdGVyYXRvciAqKWltcGwg
ZmlsdGVyOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgaWYgKCFpbXBsKQotICAg
ICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hl
ZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2Up
Ci0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwot
ICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhOb2RlSXRlcmF0b3I6aW1w
bCBmaWx0ZXI6ZmlsdGVyXSBhdXRvcmVsZWFzZV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0
aW9uIERPTVRyZWVXYWxrZXIKLQotLSAoaWQpX2luaXRXaXRoVHJlZVdhbGtlcjooVHJlZVdhbGtl
ciAqKWltcGwgZmlsdGVyOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgQVNTRVJU
KGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxE
T01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01X
cmFwcGVyKHNlbGYsIGltcGwpOwotICAgIG1fZmlsdGVyID0gW2ZpbHRlciByZXRhaW5dOwotICAg
IHJldHVybiBzZWxmOwotfQotCi0tIChUcmVlV2Fsa2VyICopX3RyZWVXYWxrZXIKLXsKLSAgICBy
ZXR1cm4gRE9NX2Nhc3Q8VHJlZVdhbGtlciAqPihfaW50ZXJuYWwpOwotfQotCi0tICh2b2lkKWRl
YWxsb2MKLXsKLSAgICBpZiAobV9maWx0ZXIpCi0gICAgICAgIFttX2ZpbHRlciByZWxlYXNlXTsK
LSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PFRyZWVXYWxrZXIgKj4oX2lu
dGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2
b2lkKWZpbmFsaXplCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxU
cmVlV2Fsa2VyICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5h
bGl6ZV07Ci19Ci0KLS0gKERPTU5vZGUgKilyb290Ci17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9u
b2RlV2l0aDpbc2VsZiBfdHJlZVdhbGtlcl0tPnJvb3QoKV07Ci19Ci0KLS0gKHVuc2lnbmVkKXdo
YXRUb1Nob3cKLXsKLSAgICByZXR1cm4gW3NlbGYgX3RyZWVXYWxrZXJdLT53aGF0VG9TaG93KCk7
Ci19Ci0KLS0gKGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIKLXsKLSAgICBpZiAobV9maWx0ZXIp
Ci0gICAgICAgIC8vIFRoaXMgdHJlZSB3YWxrZXIgd2FzIGNyZWF0ZWQgZnJvbSB0aGUgb2JqYyBz
aWRlCi0gICAgICAgIHJldHVybiBbW21fZmlsdGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotCi0g
ICAgLy8gVGhpcyB0cmVlIHdhbGtlciB3YXMgY3JlYXRlZCBmcm9tIHRoZSBjKysgc2lkZQotICAg
IHJldHVybiBbRE9NTm9kZUZpbHRlciBfbm9kZUZpbHRlcldpdGg6W3NlbGYgX3RyZWVXYWxrZXJd
LT5maWx0ZXIoKV07Ci19Ci0KLS0gKEJPT0wpZXhwYW5kRW50aXR5UmVmZXJlbmNlcwotewotICAg
IHJldHVybiBbc2VsZiBfdHJlZVdhbGtlcl0tPmV4cGFuZEVudGl0eVJlZmVyZW5jZXMoKTsKLX0K
LQotLSAoRE9NTm9kZSAqKWN1cnJlbnROb2RlCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2Rl
V2l0aDpbc2VsZiBfdHJlZVdhbGtlcl0tPmN1cnJlbnROb2RlKCldOwotfQotCi0tICh2b2lkKXNl
dEN1cnJlbnROb2RlOihET01Ob2RlICopY3VycmVudE5vZGUKLXsKLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBbc2VsZiBfdHJlZVdhbGtlcl0tPnNldEN1cnJlbnROb2RlKFtjdXJyZW50
Tm9kZSBfbm9kZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tIChET01O
b2RlICopcGFyZW50Tm9kZQotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYg
X3RyZWVXYWxrZXJdLT5wYXJlbnROb2RlKCldOwotfQotCi0tIChET01Ob2RlICopZmlyc3RDaGls
ZAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5m
aXJzdENoaWxkKCldOwotfQotCi0tIChET01Ob2RlICopbGFzdENoaWxkCi17Ci0gICAgcmV0dXJu
IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfdHJlZVdhbGtlcl0tPmxhc3RDaGlsZCgpXTsKLX0K
LQotLSAoRE9NTm9kZSAqKXByZXZpb3VzU2libGluZwotewotICAgIHJldHVybiBbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5wcmV2aW91c1NpYmxpbmcoKV07Ci19Ci0KLS0g
KERPTU5vZGUgKiluZXh0U2libGluZwotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6
W3NlbGYgX3RyZWVXYWxrZXJdLT5uZXh0U2libGluZygpXTsKLX0KLQotLSAoRE9NTm9kZSAqKXBy
ZXZpb3VzTm9kZQotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVX
YWxrZXJdLT5wcmV2aW91c05vZGUoKV07Ci19Ci0KLS0gKERPTU5vZGUgKiluZXh0Tm9kZQotewot
ICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5uZXh0Tm9k
ZSgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NVHJlZVdhbGtlciAoV2ViQ29y
ZUludGVybmFsKQotCi0rIChET01UcmVlV2Fsa2VyICopX3RyZWVXYWxrZXJXaXRoOihUcmVlV2Fs
a2VyICopaW1wbCBmaWx0ZXI6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIKLXsKLSAgICBpZiAo
IWltcGwpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7
Ci0gICAgY2FjaGVkSW5zdGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNo
ZWRJbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRv
cmVsZWFzZV07Ci0gICAgCi0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aFRyZWVX
YWxrZXI6aW1wbCBmaWx0ZXI6ZmlsdGVyXSBhdXRvcmVsZWFzZV07Ci19Ci0KLUBlbmQKLQotY2xh
c3MgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24gOiBwdWJsaWMgTm9kZUZpbHRlckNvbmRpdGlvbiAK
LXsKLXB1YmxpYzoKLSAgICBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihpZCA8RE9NTm9kZUZpbHRl
cj4pOwotICAgIHZpcnR1YWwgfk9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKCk7Ci0gICAgdmlydHVh
bCBzaG9ydCBhY2NlcHROb2RlKE5vZGUqKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBPYmpDTm9k
ZUZpbHRlckNvbmRpdGlvbihjb25zdCBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbiAmKTsKLSAgICBP
YmpDTm9kZUZpbHRlckNvbmRpdGlvbiAmb3BlcmF0b3I9KGNvbnN0IE9iakNOb2RlRmlsdGVyQ29u
ZGl0aW9uICYpOwotCi0gICAgaWQgPERPTU5vZGVGaWx0ZXI+IG1fZmlsdGVyOwotfTsKLQotT2Jq
Q05vZGVGaWx0ZXJDb25kaXRpb246Ok9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKGlkIDxET01Ob2Rl
RmlsdGVyPiBmaWx0ZXIpCi0gICAgOiBtX2ZpbHRlcihmaWx0ZXIpCi17Ci0gICAgQVNTRVJUKG1f
ZmlsdGVyKTsKLSAgICBDRlJldGFpbihtX2ZpbHRlcik7Ci19Ci0KLU9iakNOb2RlRmlsdGVyQ29u
ZGl0aW9uOjp+T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oKQotewotICAgIENGUmVsZWFzZShtX2Zp
bHRlcik7Ci19Ci0KLXNob3J0IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2RlKE5v
ZGUqIG5vZGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gTm9kZUZp
bHRlcjo6RklMVEVSX1JFSkVDVDsKLSAgICByZXR1cm4gW21fZmlsdGVyIGFjY2VwdE5vZGU6W0RP
TU5vZGUgX25vZGVXaXRoOm5vZGVdXTsKLX0KLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50
IChET01Eb2N1bWVudFRyYXZlcnNhbCkKLQotLSAoRE9NTm9kZUl0ZXJhdG9yICopY3JlYXRlTm9k
ZUl0ZXJhdG9yOihET01Ob2RlICopcm9vdCA6KHVuc2lnbmVkKXdoYXRUb1Nob3cgOihpZCA8RE9N
Tm9kZUZpbHRlcj4pZmlsdGVyIDooQk9PTClleHBhbmRFbnRpdHlSZWZlcmVuY2VzCi17Ci0gICAg
UmVmUHRyPE5vZGVGaWx0ZXI+IGNwcEZpbHRlcjsKLSAgICBpZiAoZmlsdGVyKQotICAgICAgICBj
cHBGaWx0ZXIgPSBuZXcgTm9kZUZpbHRlcihuZXcgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oZmls
dGVyKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPE5vZGVJdGVyYXRv
cj4gaW1wbCA9IFtzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZU5vZGVJdGVyYXRvcihbcm9vdCBfbm9k
ZV0sIHdoYXRUb1Nob3csIGNwcEZpbHRlciwgZXhwYW5kRW50aXR5UmVmZXJlbmNlcywgZWMpOwot
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIFtET01Ob2RlSXRlcmF0b3IgX25v
ZGVJdGVyYXRvcldpdGg6aW1wbC5nZXQoKSBmaWx0ZXI6ZmlsdGVyXTsKLX0KLQotLSAoRE9NVHJl
ZVdhbGtlciAqKWNyZWF0ZVRyZWVXYWxrZXI6KERPTU5vZGUgKilyb290IDoodW5zaWduZWQpd2hh
dFRvU2hvdyA6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIgOihCT09MKWV4cGFuZEVudGl0eVJl
ZmVyZW5jZXMKLXsKLSAgICBSZWZQdHI8Tm9kZUZpbHRlcj4gY3BwRmlsdGVyOwotICAgIGlmIChm
aWx0ZXIpCi0gICAgICAgIGNwcEZpbHRlciA9IG5ldyBOb2RlRmlsdGVyKG5ldyBPYmpDTm9kZUZp
bHRlckNvbmRpdGlvbihmaWx0ZXIpKTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBS
ZWZQdHI8VHJlZVdhbGtlcj4gaW1wbCA9IFtzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVRyZWVXYWxr
ZXIoW3Jvb3QgX25vZGVdLCB3aGF0VG9TaG93LCBjcHBGaWx0ZXIsIGV4cGFuZEVudGl0eVJlZmVy
ZW5jZXMsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBbRE9NVHJl
ZVdhbGtlciBfdHJlZVdhbGtlcldpdGg6aW1wbC5nZXQoKSBmaWx0ZXI6ZmlsdGVyXTsKLX0KLQot
QGVuZAotCi1PYmpDRXZlbnRMaXN0ZW5lciogT2JqQ0V2ZW50TGlzdGVuZXI6OmZpbmQoaWQgPERP
TUV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKQotewotICAgIGlmIChMaXN0ZW5lck1hcCogbWFwID0g
bGlzdGVuZXJNYXApCi0gICAgICAgIHJldHVybiBtYXAtPmdldChsaXN0ZW5lcik7Ci0gICAgcmV0
dXJuIE5VTEw7Ci19Ci0KLU9iakNFdmVudExpc3RlbmVyICpPYmpDRXZlbnRMaXN0ZW5lcjo6Y3Jl
YXRlKGlkIDxET01FdmVudExpc3RlbmVyPiBsaXN0ZW5lcikKLXsKLSAgICBPYmpDRXZlbnRMaXN0
ZW5lciAqd3JhcHBlciA9IGZpbmQobGlzdGVuZXIpOwotICAgIGlmICghd3JhcHBlcikKLSAgICAg
ICAgd3JhcHBlciA9IG5ldyBPYmpDRXZlbnRMaXN0ZW5lcihsaXN0ZW5lcik7Ci0gICAgd3JhcHBl
ci0+cmVmKCk7Ci0gICAgcmV0dXJuIHdyYXBwZXI7Ci19Ci0KLU9iakNFdmVudExpc3RlbmVyOjpP
YmpDRXZlbnRMaXN0ZW5lcihpZCA8RE9NRXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpCi0gICAgOiBt
X2xpc3RlbmVyKFtsaXN0ZW5lciByZXRhaW5dKQotewotICAgIExpc3RlbmVyTWFwKiBtYXAgPSBs
aXN0ZW5lck1hcDsKLSAgICBpZiAoIW1hcCkgewotICAgICAgICBtYXAgPSBuZXcgTGlzdGVuZXJN
YXA7Ci0gICAgICAgIGxpc3RlbmVyTWFwID0gbWFwOwotICAgIH0KLSAgICBtYXAtPnNldChsaXN0
ZW5lciwgdGhpcyk7Ci19Ci0KLU9iakNFdmVudExpc3RlbmVyOjp+T2JqQ0V2ZW50TGlzdGVuZXIo
KQotewotICAgIGxpc3RlbmVyTWFwLT5yZW1vdmUobV9saXN0ZW5lcik7Ci0gICAgW21fbGlzdGVu
ZXIgcmVsZWFzZV07Ci19Ci0KLXZvaWQgT2JqQ0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KEV2
ZW50ICpldmVudCwgYm9vbCkKLXsKLSAgICBbbV9saXN0ZW5lciBoYW5kbGVFdmVudDpbRE9NRXZl
bnQgX2V2ZW50V2l0aDpldmVudF1dOwotfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TURvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURvY3Vt
ZW50LmgJKHJldmlzaW9uIDE1OTU5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURvY3Vt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29t
PgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyMDAgKzI0LDE5IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9ET01Ob2RlLmg+CiAKLUBjbGFzcyBET01Eb2N1bWVudDsgCitA
Y2xhc3MgRE9NQXR0cjsKK0BjbGFzcyBET01DREFUQVNlY3Rpb247CitAY2xhc3MgRE9NQ29tbWVu
dDsKK0BjbGFzcyBET01Eb2N1bWVudEZyYWdtZW50OwogQGNsYXNzIERPTURvY3VtZW50VHlwZTsK
IEBjbGFzcyBET01FbGVtZW50OwotQGNsYXNzIERPTU5hbWVkTm9kZU1hcDsKK0BjbGFzcyBET01F
bnRpdHlSZWZlcmVuY2U7CitAY2xhc3MgRE9NSW1wbGVtZW50YXRpb247CiBAY2xhc3MgRE9NTm9k
ZUxpc3Q7Ci0KLXR5cGVkZWYgc3RydWN0IERPTU9iamVjdEludGVybmFsIERPTU9iamVjdEludGVy
bmFsOwotCi1AaW50ZXJmYWNlIERPTU9iamVjdCA6IFdlYlNjcmlwdE9iamVjdCA8TlNDb3B5aW5n
PgotewotICAgIERPTU9iamVjdEludGVybmFsICpfaW50ZXJuYWw7Ci19Ci1AZW5kCi0KLXR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBsb25nIERPTVRpbWVTdGFtcDsKLQotZXh0ZXJuIE5TU3RyaW5nICog
Y29uc3QgRE9NRXhjZXB0aW9uOwotCi1lbnVtIHsKLSAgICAvLwotICAgIC8vIERPTSBleGNlcHRp
b24gY29kZXMKLSAgICAvLwotICAgIERPTV9JTkRFWF9TSVpFX0VSUiAgICAgICAgICAgICAgICA9
IDEsCi0gICAgRE9NX0RPTVNUUklOR19TSVpFX0VSUiAgICAgICAgICAgID0gMiwKLSAgICBET01f
SElFUkFSQ0hZX1JFUVVFU1RfRVJSICAgICAgICAgPSAzLAotICAgIERPTV9XUk9OR19ET0NVTUVO
VF9FUlIgICAgICAgICAgICA9IDQsCi0gICAgRE9NX0lOVkFMSURfQ0hBUkFDVEVSX0VSUiAgICAg
ICAgID0gNSwKLSAgICBET01fTk9fREFUQV9BTExPV0VEX0VSUiAgICAgICAgICAgPSA2LAotICAg
IERPTV9OT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIgICA9IDcsCi0gICAgRE9NX05PVF9GT1VO
RF9FUlIgICAgICAgICAgICAgICAgID0gOCwKLSAgICBET01fTk9UX1NVUFBPUlRFRF9FUlIgICAg
ICAgICAgICAgPSA5LAotICAgIERPTV9JTlVTRV9BVFRSSUJVVEVfRVJSICAgICAgICAgICA9IDEw
LAotICAgIERPTV9JTlZBTElEX1NUQVRFX0VSUiAgICAgICAgICAgICA9IDExLAotICAgIERPTV9T
WU5UQVhfRVJSICAgICAgICAgICAgICAgICAgICA9IDEyLAotICAgIERPTV9JTlZBTElEX01PRElG
SUNBVElPTl9FUlIgICAgICA9IDEzLAotICAgIERPTV9OQU1FU1BBQ0VfRVJSICAgICAgICAgICAg
ICAgICA9IDE0LAotICAgIERPTV9JTlZBTElEX0FDQ0VTU19FUlIgICAgICAgICAgICA9IDE1Ci19
OwotCi1AaW50ZXJmYWNlIERPTUltcGxlbWVudGF0aW9uIDogRE9NT2JqZWN0Ci0tIChCT09MKWhh
c0ZlYXR1cmU6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbjsKLS0gKERP
TURvY3VtZW50VHlwZSAqKWNyZWF0ZURvY3VtZW50VHlwZTooTlNTdHJpbmcgKilxdWFsaWZpZWRO
YW1lIDooTlNTdHJpbmcgKilwdWJsaWNJZCA6KE5TU3RyaW5nICopc3lzdGVtSWQ7Ci0tIChET01E
b2N1bWVudCAqKWNyZWF0ZURvY3VtZW50OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3Ry
aW5nICopcXVhbGlmaWVkTmFtZSA6KERPTURvY3VtZW50VHlwZSAqKWRvY3R5cGU7Ci1AZW5kCi0K
LWVudW0gewotICAgIC8vCi0gICAgLy8gRE9NIG5vZGUgdHlwZXMKLSAgICAvLwotICAgIERPTV9F
TEVNRU5UX05PREUgICAgICAgICAgICAgICAgICA9IDEsCi0gICAgRE9NX0FUVFJJQlVURV9OT0RF
ICAgICAgICAgICAgICAgID0gMiwKLSAgICBET01fVEVYVF9OT0RFICAgICAgICAgICAgICAgICAg
ICAgPSAzLAotICAgIERPTV9DREFUQV9TRUNUSU9OX05PREUgICAgICAgICAgICA9IDQsCi0gICAg
RE9NX0VOVElUWV9SRUZFUkVOQ0VfTk9ERSAgICAgICAgID0gNSwKLSAgICBET01fRU5USVRZX05P
REUgICAgICAgICAgICAgICAgICAgPSA2LAotICAgIERPTV9QUk9DRVNTSU5HX0lOU1RSVUNUSU9O
X05PREUgICA9IDcsCi0gICAgRE9NX0NPTU1FTlRfTk9ERSAgICAgICAgICAgICAgICAgID0gOCwK
LSAgICBET01fRE9DVU1FTlRfTk9ERSAgICAgICAgICAgICAgICAgPSA5LAotICAgIERPTV9ET0NV
TUVOVF9UWVBFX05PREUgICAgICAgICAgICA9IDEwLAotICAgIERPTV9ET0NVTUVOVF9GUkFHTUVO
VF9OT0RFICAgICAgICA9IDExLAotICAgIERPTV9OT1RBVElPTl9OT0RFICAgICAgICAgICAgICAg
ICA9IDEyCi19OwotCi1AaW50ZXJmYWNlIERPTU5vZGUgOiBET01PYmplY3QKLS0gKE5TU3RyaW5n
ICopbm9kZU5hbWU7Ci0tIChOU1N0cmluZyAqKW5vZGVWYWx1ZTsKLS0gKHZvaWQpc2V0Tm9kZVZh
bHVlOihOU1N0cmluZyAqKXN0cmluZzsKLS0gKHVuc2lnbmVkIHNob3J0KW5vZGVUeXBlOwotLSAo
RE9NTm9kZSAqKXBhcmVudE5vZGU7Ci0tIChET01Ob2RlTGlzdCAqKWNoaWxkTm9kZXM7Ci0tIChE
T01Ob2RlICopZmlyc3RDaGlsZDsKLS0gKERPTU5vZGUgKilsYXN0Q2hpbGQ7Ci0tIChET01Ob2Rl
ICopcHJldmlvdXNTaWJsaW5nOwotLSAoRE9NTm9kZSAqKW5leHRTaWJsaW5nOwotLSAoRE9NTmFt
ZWROb2RlTWFwICopYXR0cmlidXRlczsKLS0gKERPTURvY3VtZW50ICopb3duZXJEb2N1bWVudDsK
LS0gKERPTU5vZGUgKilpbnNlcnRCZWZvcmU6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUg
KilyZWZDaGlsZDsKLS0gKERPTU5vZGUgKilyZXBsYWNlQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGls
ZCA6KERPTU5vZGUgKilvbGRDaGlsZDsKLS0gKERPTU5vZGUgKilyZW1vdmVDaGlsZDooRE9NTm9k
ZSAqKW9sZENoaWxkOwotLSAoRE9NTm9kZSAqKWFwcGVuZENoaWxkOihET01Ob2RlICopbmV3Q2hp
bGQ7Ci0tIChCT09MKWhhc0NoaWxkTm9kZXM7Ci0tIChET01Ob2RlICopY2xvbmVOb2RlOihCT09M
KWRlZXA7Ci0tICh2b2lkKW5vcm1hbGl6ZTsKLS0gKEJPT0wpaXNTdXBwb3J0ZWQ6KE5TU3RyaW5n
ICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbjsKLS0gKE5TU3RyaW5nICopbmFtZXNwYWNl
VVJJOwotLSAoTlNTdHJpbmcgKilwcmVmaXg7Ci0tICh2b2lkKXNldFByZWZpeDooTlNTdHJpbmcg
KilwcmVmaXg7Ci0tIChOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKEJPT0wpaGFzQXR0cmlidXRl
czsKLS0gKEJPT0wpaXNTYW1lTm9kZTooRE9NTm9kZSAqKW90aGVyOwotLSAoQk9PTClpc0VxdWFs
Tm9kZTooRE9NTm9kZSAqKW90aGVyOwotLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudDsKLS0gKHZv
aWQpc2V0VGV4dENvbnRlbnQ6KE5TU3RyaW5nICopdGV4dDsKLUBlbmQKLQotQGludGVyZmFjZSBE
T01Ob2RlTGlzdCA6IERPTU9iamVjdAotLSAoRE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4
OwotLSAodW5zaWduZWQpbGVuZ3RoOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTU5hbWVkTm9kZU1h
cCA6IERPTU9iamVjdAotLSAoRE9NTm9kZSAqKWdldE5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1l
OwotLSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbTooRE9NTm9kZSAqKWFyZzsKLS0gKERPTU5vZGUg
KilyZW1vdmVOYW1lZEl0ZW06KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTU5vZGUgKilpdGVtOih1
bnNpZ25lZClpbmRleDsKLS0gKHVuc2lnbmVkKWxlbmd0aDsKLS0gKERPTU5vZGUgKilnZXROYW1l
ZEl0ZW1OUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsK
LS0gKERPTU5vZGUgKilzZXROYW1lZEl0ZW1OUzooRE9NTm9kZSAqKWFyZzsKLS0gKERPTU5vZGUg
KilyZW1vdmVOYW1lZEl0ZW1OUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAq
KWxvY2FsTmFtZTsKLUBlbmQKLQotQGludGVyZmFjZSBET01DaGFyYWN0ZXJEYXRhIDogRE9NTm9k
ZQotLSAoTlNTdHJpbmcgKilkYXRhOwotLSAodm9pZClzZXREYXRhOihOU1N0cmluZyAqKWRhdGE7
Ci0tICh1bnNpZ25lZClsZW5ndGg7Ci0tIChOU1N0cmluZyAqKXN1YnN0cmluZ0RhdGE6KHVuc2ln
bmVkKW9mZnNldCA6KHVuc2lnbmVkKWNvdW50OwotLSAodm9pZClhcHBlbmREYXRhOihOU1N0cmlu
ZyAqKWFyZzsKLS0gKHZvaWQpaW5zZXJ0RGF0YToodW5zaWduZWQpb2Zmc2V0IDooTlNTdHJpbmcg
Kilhcmc7Ci0tICh2b2lkKWRlbGV0ZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKSBj
b3VudDsKLS0gKHZvaWQpcmVwbGFjZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKWNv
dW50IDooTlNTdHJpbmcgKilhcmc7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NQXR0ciA6IERPTU5v
ZGUKLS0gKE5TU3RyaW5nICopbmFtZTsKLS0gKEJPT0wpc3BlY2lmaWVkOwotLSAoTlNTdHJpbmcg
Kil2YWx1ZTsKLS0gKHZvaWQpc2V0VmFsdWU6KE5TU3RyaW5nICopdmFsdWU7Ci0tIChET01FbGVt
ZW50ICopb3duZXJFbGVtZW50OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUVsZW1lbnQgOiBET01O
b2RlCi0tIChOU1N0cmluZyAqKXRhZ05hbWU7Ci0tIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZToo
TlNTdHJpbmcgKiluYW1lOwotLSAodm9pZClzZXRBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZSA6
KE5TU3RyaW5nICopdmFsdWU7Ci0tICh2b2lkKXJlbW92ZUF0dHJpYnV0ZTooTlNTdHJpbmcgKilu
YW1lOwotLSAoRE9NQXR0ciAqKWdldEF0dHJpYnV0ZU5vZGU6KE5TU3RyaW5nICopbmFtZTsKLS0g
KERPTUF0dHIgKilzZXRBdHRyaWJ1dGVOb2RlOihET01BdHRyICopbmV3QXR0cjsKLS0gKERPTUF0
dHIgKilyZW1vdmVBdHRyaWJ1dGVOb2RlOihET01BdHRyICopb2xkQXR0cjsKLS0gKERPTU5vZGVM
aXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWU6KE5TU3RyaW5nICopbmFtZTsKLS0gKE5TU3RyaW5n
ICopZ2V0QXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKils
b2NhbE5hbWU7Ci0tICh2b2lkKXNldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVS
SSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICopdmFsdWU7Ci0tICh2b2lk
KXJlbW92ZUF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICop
bG9jYWxOYW1lOwotLSAoRE9NQXR0ciAqKWdldEF0dHJpYnV0ZU5vZGVOUzooTlNTdHJpbmcgKilu
YW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKERPTUF0dHIgKilzZXRBdHRy
aWJ1dGVOb2RlTlM6KERPTUF0dHIgKiluZXdBdHRyOwotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVt
ZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9j
YWxOYW1lOwotLSAoQk9PTCloYXNBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKEJPT0wp
aGFzQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2Nh
bE5hbWU7Ci0tICh2b2lkKWZvY3VzOwotLSAodm9pZClibHVyOwotQGVuZAotCi1AaW50ZXJmYWNl
IERPTVRleHQgOiBET01DaGFyYWN0ZXJEYXRhCi0tIChET01UZXh0ICopc3BsaXRUZXh0Oih1bnNp
Z25lZClvZmZzZXQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NQ29tbWVudCA6IERPTUNoYXJhY3Rl
ckRhdGEKLUBlbmQKLQotQGludGVyZmFjZSBET01DREFUQVNlY3Rpb24gOiBET01UZXh0Ci1AZW5k
Ci0KLUBpbnRlcmZhY2UgRE9NRG9jdW1lbnRUeXBlIDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKilu
YW1lOwotLSAoRE9NTmFtZWROb2RlTWFwICopZW50aXRpZXM7Ci0tIChET01OYW1lZE5vZGVNYXAg
Kilub3RhdGlvbnM7Ci0tIChOU1N0cmluZyAqKXB1YmxpY0lkOwotLSAoTlNTdHJpbmcgKilzeXN0
ZW1JZDsKLS0gKE5TU3RyaW5nICopaW50ZXJuYWxTdWJzZXQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2Ug
RE9NTm90YXRpb24gOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKXB1YmxpY0lkOwotLSAoTlNTdHJp
bmcgKilzeXN0ZW1JZDsKLUBlbmQKLQotQGludGVyZmFjZSBET01FbnRpdHkgOiBET01Ob2RlCi0t
IChOU1N0cmluZyAqKXB1YmxpY0lkOwotLSAoTlNTdHJpbmcgKilzeXN0ZW1JZDsKLS0gKE5TU3Ry
aW5nICopbm90YXRpb25OYW1lOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUVudGl0eVJlZmVyZW5j
ZSA6IERPTU5vZGUKLUBlbmQKLQotQGludGVyZmFjZSBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24g
OiBET01Ob2RlCi0tIChOU1N0cmluZyAqKXRhcmdldDsKLS0gKE5TU3RyaW5nICopZGF0YTsKLS0g
KHZvaWQpc2V0RGF0YTooTlNTdHJpbmcgKilkYXRhOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTURv
Y3VtZW50RnJhZ21lbnQgOiBET01Ob2RlCi1AZW5kCitAY2xhc3MgRE9NUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uOworQGNsYXNzIERPTVRleHQ7CiAKIEBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgOiBET01O
b2RlCiAtIChET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlOwpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTURvY3VtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01Eb2N1bWVudC5tbQkocmV2aXNpb24gMTU5NTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NRG9jdW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA0LTIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgSmFtZXMgRy4gU3BldGggKHNwZXRoQGVu
ZC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgSmFtZXMgRy4gU3BldGggPHNwZXRoQGVuZC5j
b20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDIzNDggKzI2LDE4
MiBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRE9NLmgiCisjaW1wb3J0
ICJET01Eb2N1bWVudC5oIgogCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIiAvLyBmb3IgRE9NX2Nh
c3Q8PgorI2ltcG9ydCAiRG9jdW1lbnQuaCIgLy8gSW1wbGVtZW50YXRpb24KKworI2ltcG9ydCAi
QXR0ci5oIgogI2ltcG9ydCAiQ0RBVEFTZWN0aW9uLmgiCi0jaW1wb3J0ICJjc3NoZWxwZXIuaCIK
LSNpbXBvcnQgIkNTU1N0eWxlU2hlZXQuaCIKICNpbXBvcnQgIkNvbW1lbnQuaCIKLSNpbXBvcnQg
IkRPTUV2ZW50c0ludGVybmFsLmgiCisjaW1wb3J0ICJET01BdHRyLmgiCisjaW1wb3J0ICJET01D
REFUQVNlY3Rpb24uaCIKKyNpbXBvcnQgIkRPTUNvbW1lbnQuaCIKKyNpbXBvcnQgIkRPTURPTUlt
cGxlbWVudGF0aW9uLmgiCisjaW1wb3J0ICJET01Eb2N1bWVudEZyYWdtZW50LmgiCisjaW1wb3J0
ICJET01Eb2N1bWVudFR5cGUuaCIKKyNpbXBvcnQgIkRPTUVsZW1lbnQuaCIKKyNpbXBvcnQgIkRP
TUVudGl0eVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbXBv
cnQgIkRPTUltcGxlbWVudGF0aW9uRnJvbnQuaCIKLSNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0j
aW1wb3J0ICJET01Qcml2YXRlLmgiCi0jaW1wb3J0ICJEb2N1bWVudC5oIgorI2ltcG9ydCAiRE9N
Tm9kZS5oIgorI2ltcG9ydCAiRE9NTm9kZUxpc3QuaCIKKyNpbXBvcnQgIkRPTVByb2Nlc3NpbmdJ
bnN0cnVjdGlvbi5oIgorI2ltcG9ydCAiRE9NVGV4dC5oIgogI2ltcG9ydCAiRG9jdW1lbnRGcmFn
bWVudC5oIgogI2ltcG9ydCAiRG9jdW1lbnRUeXBlLmgiCi0jaW1wb3J0ICJFbnRpdHkuaCIKKyNp
bXBvcnQgIkVsZW1lbnQuaCIKICNpbXBvcnQgIkVudGl0eVJlZmVyZW5jZS5oIgotI2ltcG9ydCAi
RXZlbnQuaCIKLSNpbXBvcnQgIkV2ZW50TGlzdGVuZXIuaCIKLSNpbXBvcnQgIkZvdW5kYXRpb25F
eHRyYXMuaCIKLSNpbXBvcnQgIkZyYW1lTWFjLmgiCi0jaW1wb3J0ICJIVE1MRG9jdW1lbnQuaCIK
LSNpbXBvcnQgIkhUTUxOYW1lcy5oIgotI2ltcG9ydCAiSFRNTFBsdWdJbkVsZW1lbnQuaCIKLSNp
bXBvcnQgIk5vZGVGaWx0ZXIuaCIKLSNpbXBvcnQgIk5vZGVGaWx0ZXJDb25kaXRpb24uaCIKLSNp
bXBvcnQgIk5vZGVJdGVyYXRvci5oIgogI2ltcG9ydCAiTm9kZUxpc3QuaCIKLSNpbXBvcnQgIk5v
dGF0aW9uLmgiCiAjaW1wb3J0ICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKLSNpbXBvcnQgIlF1
YWxpZmllZE5hbWUuaCIKLSNpbXBvcnQgIlJhbmdlLmgiCi0jaW1wb3J0ICJSZW5kZXJJbWFnZS5o
IgotI2ltcG9ydCAiVHJlZVdhbGtlci5oIgotI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5oIgotI2ltcG9ydCA8b2JqYy9vYmpjLWNsYXNzLmg+Ci0KLXVzaW5nIFdlYkNvcmU6OkF0b21p
Y1N0cmluZzsKLXVzaW5nIFdlYkNvcmU6OkF0b21pY1N0cmluZ0ltcGw7Ci11c2luZyBXZWJDb3Jl
OjpBdHRyOwotdXNpbmcgV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTsKLXVzaW5nIFdlYkNvcmU6OkRl
cHJlY2F0ZWRWYWx1ZUxpc3Q7Ci11c2luZyBXZWJDb3JlOjpEb2N1bWVudDsKLXVzaW5nIFdlYkNv
cmU6OkRvY3VtZW50RnJhZ21lbnQ7Ci11c2luZyBXZWJDb3JlOjpEb2N1bWVudFR5cGU7Ci11c2lu
ZyBXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbkZyb250OwotdXNpbmcgV2ViQ29yZTo6RWxlbWVu
dDsKLXVzaW5nIFdlYkNvcmU6OkVudGl0eTsKLXVzaW5nIFdlYkNvcmU6OkV2ZW50OwotdXNpbmcg
V2ViQ29yZTo6RXZlbnRMaXN0ZW5lcjsKLXVzaW5nIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGU7Ci11
c2luZyBXZWJDb3JlOjpIVE1MRG9jdW1lbnQ7Ci11c2luZyBXZWJDb3JlOjpIVE1MRWxlbWVudDsK
LXVzaW5nIFdlYkNvcmU6OkZyYW1lTWFjOwotdXNpbmcgV2ViQ29yZTo6SW50UmVjdDsKLXVzaW5n
IFdlYkNvcmU6OktVUkw7Ci11c2luZyBXZWJDb3JlOjpOYW1lZE5vZGVNYXA7Ci11c2luZyBXZWJD
b3JlOjpOb2RlOwotdXNpbmcgV2ViQ29yZTo6Tm9kZUZpbHRlcjsKLXVzaW5nIFdlYkNvcmU6Ok5v
ZGVGaWx0ZXJDb25kaXRpb247Ci11c2luZyBXZWJDb3JlOjpOb2RlSXRlcmF0b3I7Ci11c2luZyBX
ZWJDb3JlOjpOb2RlTGlzdDsKLXVzaW5nIFdlYkNvcmU6Ok5vdGF0aW9uOwotdXNpbmcgV2ViQ29y
ZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOwotdXNpbmcgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTsK
LXVzaW5nIFdlYkNvcmU6OlJhbmdlOwotdXNpbmcgV2ViQ29yZTo6UmVuZGVySW1hZ2U7Ci11c2lu
ZyBXZWJDb3JlOjpSZW5kZXJPYmplY3Q7Ci11c2luZyBXZWJDb3JlOjpTdHJpbmc7Ci11c2luZyBX
ZWJDb3JlOjpUZXh0OwotdXNpbmcgV2ViQ29yZTo6VHJlZVdhbGtlcjsKLQotdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU6OkhUTUxOYW1lczsKLQotQGludGVyZmFjZSBET01BdHRyIChXZWJDb3JlSW50
ZXJuYWwpCi0rIChET01BdHRyICopX2F0dHJXaXRoOihBdHRyICopaW1wbDsKLS0gKEF0dHIgKilf
YXR0cjsKLUBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudFR5cGUgKFdlYkNvcmVJbnRlcm5h
bCkKLS0gKERvY3VtZW50VHlwZSAqKV9kb2N1bWVudFR5cGU7Ci1AZW5kCi0KLUBpbnRlcmZhY2Ug
RE9NSW1wbGVtZW50YXRpb24gKFdlYkNvcmVJbnRlcm5hbCkKLSsgKERPTUltcGxlbWVudGF0aW9u
ICopX0RPTUltcGxlbWVudGF0aW9uV2l0aDooRE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKWltcGw7
Ci0tIChET01JbXBsZW1lbnRhdGlvbkZyb250ICopX0RPTUltcGxlbWVudGF0aW9uOwotQGVuZAot
Ci1jbGFzcyBPYmpDRXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgT2JqQ0V2ZW50TGlzdGVuZXIgKmZpbmQoaWQgPERPTUV2ZW50TGlzdGVu
ZXI+KTsKLSAgICBzdGF0aWMgT2JqQ0V2ZW50TGlzdGVuZXIgKmNyZWF0ZShpZCA8RE9NRXZlbnRM
aXN0ZW5lcj4pOwotCi1wcml2YXRlOgotICAgIE9iakNFdmVudExpc3RlbmVyKGlkIDxET01FdmVu
dExpc3RlbmVyPik7Ci0gICAgdmlydHVhbCB+T2JqQ0V2ZW50TGlzdGVuZXIoKTsKLQotICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVFdmVudChFdmVudCAqLCBib29sIGlzV2luZG93RXZlbnQpOwotCi0g
ICAgaWQgPERPTUV2ZW50TGlzdGVuZXI+IG1fbGlzdGVuZXI7Ci19OwotCi10eXBlZGVmIEhhc2hN
YXA8aWQsIE9iakNFdmVudExpc3RlbmVyKj4gTGlzdGVuZXJNYXA7Ci10eXBlZGVmIEhhc2hNYXA8
QXRvbWljU3RyaW5nSW1wbCosIENsYXNzPiBPYmpDQ2xhc3NNYXA7Ci0KLXN0YXRpYyBPYmpDQ2xh
c3NNYXAqIGVsZW1lbnRDbGFzc01hcDsKLXN0YXRpYyBMaXN0ZW5lck1hcCogbGlzdGVuZXJNYXA7
Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01PYmplY3QKLQot
QGltcGxlbWVudGF0aW9uIERPTU9iamVjdAotCi0vLyBQcmV2ZW50IGNyZWF0aW9uIG9mIERPTSBv
YmplY3RzIGJ5IGNsaWVudHMgd2hvIGp1c3QgIltbeHh4IGFsbG9jXSBpbml0XSIuCi0tIChpZClp
bml0Ci17Ci0gICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TR2VuZXJpY0V4Y2VwdGlvbiBmb3JtYXQ6
QCIrWyVAIGluaXRdOiBzaG91bGQgbmV2ZXIgYmUgdXNlZCIsIE5TU3RyaW5nRnJvbUNsYXNzKFtz
ZWxmIGNsYXNzXSldOwotICAgIFtzZWxmIHJlbGVhc2VdOwotICAgIHJldHVybiBuaWw7Ci19Ci0K
LS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgcmVtb3Zl
RE9NV3JhcHBlcihfaW50ZXJuYWwpOwotICAgIH0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0K
LS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIHJlbW92
ZURPTVdyYXBwZXIoX2ludGVybmFsKTsKLSAgICB9Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0K
LQotLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCi17Ci0gICAgcmV0dXJuIFtzZWxm
IHJldGFpbl07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTU9iamVjdCAoV2ViQ29y
ZUludGVybmFsKQotCi0tIChpZClfaW5pdAotewotICAgIHJldHVybiBbc3VwZXIgX2luaXRdOwot
fQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01O
b2RlCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlCi0KLS0gKHZvaWQpZGVhbGxvYwotewotICAg
IGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpLT5k
ZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxp
emUKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5vZGUgKj4oX2lu
dGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQotLSAo
TlNTdHJpbmcgKilkZXNjcmlwdGlvbgotewotICAgIGlmICghX2ludGVybmFsKSB7Ci0gICAgICAg
IHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQDogbnVsbD4iLAotICAgICAg
ICAgICAgW1tzZWxmIGNsYXNzXSBkZXNjcmlwdGlvbl0sIHNlbGZdOwotICAgIH0KLSAgICBOU1N0
cmluZyAqdmFsdWUgPSBbc2VsZiBub2RlVmFsdWVdOwotICAgIGlmICh2YWx1ZSkgewotICAgICAg
ICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUAgWyVAXTogJXAgJyVAJz4i
LAotICAgICAgICAgICAgW1tzZWxmIGNsYXNzXSBkZXNjcmlwdGlvbl0sIFtzZWxmIG5vZGVOYW1l
XSwgX2ludGVybmFsLCB2YWx1ZV07Ci0gICAgfQotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIjwlQCBbJUBdOiAlcD4iLAotICAgICAgICBbW3NlbGYgY2xhc3NdIGRlc2Ny
aXB0aW9uXSwgW3NlbGYgbm9kZU5hbWVdLCBfaW50ZXJuYWxdOwotfQotCi0tIChOU1N0cmluZyAq
KW5vZGVOYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bm9kZU5hbWUoKTsKLX0KLQot
LSAoTlNTdHJpbmcgKilub2RlVmFsdWUKLXsKLSAgICAvLyBEb2N1bWVudGF0aW9uIHNheXMgd2Ug
Y2FuIHJhaXNlIGEgRE9NU1RSSU5HX1NJWkVfRVJSLgotICAgIC8vIEhvd2V2ZXIsIHRoZSBsb3dl
ciBsYXllciBkb2VzIG5vdCByZXBvcnQgdGhhdCBlcnJvciB1cCB0byB1cy4KLSAgICByZXR1cm4g
W3NlbGYgX25vZGVdLT5ub2RlVmFsdWUoKTsKLX0KLQotLSAodm9pZClzZXROb2RlVmFsdWU6KE5T
U3RyaW5nICopc3RyaW5nCi17Ci0gICAgQVNTRVJUKHN0cmluZyk7Ci0gICAgCi0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX25vZGVdLT5zZXROb2RlVmFsdWUoc3RyaW5nLCBl
Yyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodW5zaWduZWQgc2hvcnQpbm9k
ZVR5cGUKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2RlVHlwZSgpOwotfQotCi0tIChE
T01Ob2RlICopcGFyZW50Tm9kZQotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX25vZGVdLT5wYXJlbnROb2RlKCldOwotfQotCi0tIChET01Ob2RlTGlzdCAqKWNoaWxkTm9k
ZXMKLXsKLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX25vZGVd
LT5jaGlsZE5vZGVzKCkuZ2V0KCldOwotfQorI2ltcG9ydCAiVGV4dC5oIgorI2ltcG9ydCA8d3Rm
L0Fzc2VydGlvbnMuaD4KIAotLSAoRE9NTm9kZSAqKWZpcnN0Q2hpbGQKLXsKLSAgICByZXR1cm4g
W0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9ub2RlXS0+Zmlyc3RDaGlsZCgpXTsKLX0KLQotLSAo
RE9NTm9kZSAqKWxhc3RDaGlsZAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX25vZGVdLT5sYXN0Q2hpbGQoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilwcmV2aW91c1NpYmxp
bmcKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9ub2RlXS0+cHJldmlv
dXNTaWJsaW5nKCldOwotfQotCi0tIChET01Ob2RlICopbmV4dFNpYmxpbmcKLXsKLSAgICByZXR1
cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9ub2RlXS0+bmV4dFNpYmxpbmcoKV07Ci19Ci0K
LS0gKERPTU5hbWVkTm9kZU1hcCAqKWF0dHJpYnV0ZXMKLXsKLSAgICAvLyBET00gbGV2ZWwgMiBj
b3JlIHNwZWNpZmljYXRpb24gc2F5czogCi0gICAgLy8gQSBOYW1lZE5vZGVNYXAgY29udGFpbmlu
ZyB0aGUgYXR0cmlidXRlcyBvZiB0aGlzIG5vZGUgKGlmIGl0IGlzIGFuIEVsZW1lbnQpIG9yIG51
bGwgb3RoZXJ3aXNlLgotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKERPTURvY3VtZW50ICopb3du
ZXJEb2N1bWVudAotewotICAgIHJldHVybiBbRE9NRG9jdW1lbnQgX2RvY3VtZW50V2l0aDpbc2Vs
ZiBfbm9kZV0tPmRvY3VtZW50KCldOwotfQotCi0tIChET01Ob2RlICopaW5zZXJ0QmVmb3JlOihE
T01Ob2RlICopbmV3Q2hpbGQgOihET01Ob2RlICopcmVmQ2hpbGQKLXsKLSAgICBBU1NFUlQobmV3
Q2hpbGQpOwotICAgIEFTU0VSVChyZWZDaGlsZCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBpZiAoW3NlbGYgX25vZGVdLT5pbnNlcnRCZWZvcmUoW25ld0NoaWxkIF9ub2RlXSwg
W3JlZkNoaWxkIF9ub2RlXSwgZWMpKQotICAgICAgICByZXR1cm4gbmV3Q2hpbGQ7Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChET01Ob2RlICopcmVw
bGFjZUNoaWxkOihET01Ob2RlICopbmV3Q2hpbGQgOihET01Ob2RlICopb2xkQ2hpbGQKLXsKLSAg
ICBBU1NFUlQobmV3Q2hpbGQpOwotICAgIEFTU0VSVChvbGRDaGlsZCk7Ci0KLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBpZiAoW3NlbGYgX25vZGVdLT5yZXBsYWNlQ2hpbGQoW25ld0No
aWxkIF9ub2RlXSwgW29sZENoaWxkIF9ub2RlXSwgZWMpKQotICAgICAgICByZXR1cm4gb2xkQ2hp
bGQ7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChE
T01Ob2RlICopcmVtb3ZlQ2hpbGQ6KERPTU5vZGUgKilvbGRDaGlsZAotewotICAgIEFTU0VSVChv
bGRDaGlsZCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpZiAoW3NlbGYgX25v
ZGVdLT5yZW1vdmVDaGlsZChbb2xkQ2hpbGQgX25vZGVdLCBlYykpCi0gICAgICAgIHJldHVybiBv
bGRDaGlsZDsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBuaWw7Ci19CitA
aW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQKIAotLSAoRE9NTm9kZSAqKWFwcGVuZENoaWxkOihE
T01Ob2RlICopbmV3Q2hpbGQKKy0gKERPTU5vZGUgKilhZG9wdE5vZGU6KERPTU5vZGUgKilzb3Vy
Y2UKIHsKLSAgICBBU1NFUlQobmV3Q2hpbGQpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgaWYgKFtzZWxmIF9ub2RlXS0+YXBwZW5kQ2hpbGQoW25ld0NoaWxkIF9ub2RlXSwgZWMp
KQotICAgICAgICByZXR1cm4gbmV3Q2hpbGQ7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9k
b2N1bWVudF0tPmFkb3B0Tm9kZShbc291cmNlIF9ub2RlXSwgZWMpLmdldCgpXTsKICAgICByYWlz
ZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKEJPT0wpaGFzQ2hpbGRO
b2RlcwotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmhhc0NoaWxkTm9kZXMoKTsKLX0KLQot
LSAoRE9NTm9kZSAqKWNsb25lTm9kZTooQk9PTClkZWVwCi17Ci0gICAgcmV0dXJuIFtET01Ob2Rl
IF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPmNsb25lTm9kZShkZWVwKS5nZXQoKV07Ci19Ci0KLS0g
KHZvaWQpbm9ybWFsaXplCi17Ci0gICAgW3NlbGYgX25vZGVdLT5ub3JtYWxpemUoKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi0tIChCT09MKWlzU3VwcG9ydGVkOihOU1N0cmluZyAqKWZlYXR1
cmUgOihOU1N0cmluZyAqKXZlcnNpb24KKy0gKERPTURvY3VtZW50VHlwZSAqKWRvY3R5cGUKIHsK
LSAgICBBU1NFUlQoZmVhdHVyZSk7Ci0gICAgQVNTRVJUKHZlcnNpb24pOwotCi0gICAgcmV0dXJu
IFtzZWxmIF9ub2RlXS0+aXNTdXBwb3J0ZWQoZmVhdHVyZSwgdmVyc2lvbik7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PERPTURvY3VtZW50VHlwZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYg
X2RvY3VtZW50XS0+ZG9jdHlwZSgpXSk7CiB9CiAKLS0gKE5TU3RyaW5nICopbmFtZXNwYWNlVVJJ
CistIChET01JbXBsZW1lbnRhdGlvbiAqKWltcGxlbWVudGF0aW9uCiB7Ci0gICAgcmV0dXJuIFtz
ZWxmIF9ub2RlXS0+bmFtZXNwYWNlVVJJKCk7CisgICAgcmV0dXJuIFtET01JbXBsZW1lbnRhdGlv
biBfRE9NSW1wbGVtZW50YXRpb25XaXRoOmltcGxlbWVudGF0aW9uRnJvbnQoW3NlbGYgX2RvY3Vt
ZW50XSldOwogfQogCi0tIChOU1N0cmluZyAqKXByZWZpeAorLSAoRE9NRWxlbWVudCAqKWRvY3Vt
ZW50RWxlbWVudAogewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPnByZWZpeCgpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBf
ZG9jdW1lbnRdLT5kb2N1bWVudEVsZW1lbnQoKV0pOwogfQogCi0tICh2b2lkKXNldFByZWZpeDoo
TlNTdHJpbmcgKilwcmVmaXgKKy0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50OihOU1N0cmlu
ZyAqKXRhZ05hbWUKIHsKLSAgICBBU1NFUlQocHJlZml4KTsKKyAgICBBU1NFUlQodGFnTmFtZSk7
CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTdHJpbmcgcHJlZml4U3RyKHByZWZp
eCk7Ci0gICAgW3NlbGYgX25vZGVdLT5zZXRQcmVmaXgocHJlZml4U3RyLmltcGwoKSwgZWMpOwor
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTUVsZW1lbnQgKnJlc3Vs
dCA9IHN0YXRpY19jYXN0PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9k
b2N1bWVudF0tPmNyZWF0ZUVsZW1lbnQodGFnTmFtZSwgZWMpLmdldCgpXSk7CiAgICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi0tIChOU1N0cmluZyAqKWxv
Y2FsTmFtZQotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmxvY2FsTmFtZSgpOwotfQotCi0t
IChCT09MKWhhc0F0dHJpYnV0ZXMKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5oYXNBdHRy
aWJ1dGVzKCk7Ci19Ci0KLS0gKEJPT0wpaXNTYW1lTm9kZTooRE9NTm9kZSAqKW90aGVyCistIChE
T01Eb2N1bWVudEZyYWdtZW50ICopY3JlYXRlRG9jdW1lbnRGcmFnbWVudAogewotICAgIHJldHVy
biBbc2VsZiBfbm9kZV0tPmlzU2FtZU5vZGUoW290aGVyIF9ub2RlXSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PERPTURvY3VtZW50RnJhZ21lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxm
IF9kb2N1bWVudF0tPmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKS5nZXQoKV0pOwogfQogCi0tIChC
T09MKWlzRXF1YWxOb2RlOihET01Ob2RlICopb3RoZXIKKy0gKERPTVRleHQgKiljcmVhdGVUZXh0
Tm9kZTooTlNTdHJpbmcgKilkYXRhCiB7Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aXNFcXVh
bE5vZGUoW290aGVyIF9ub2RlXSk7Ci19CisgICAgQVNTRVJUKGRhdGEpOwogCi0tIChCT09MKWlz
RGVmYXVsdE5hbWVzcGFjZTooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkKLXsKLSAgICByZXR1cm4g
W3NlbGYgX25vZGVdLT5pc0RlZmF1bHROYW1lc3BhY2UobmFtZXNwYWNlVVJJKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RE9NVGV4dCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3Vt
ZW50XS0+Y3JlYXRlVGV4dE5vZGUoZGF0YSkuZ2V0KCldKTsKIH0KIAotLSAoTlNTdHJpbmcgKils
b29rdXBQcmVmaXg6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJCistIChET01Db21tZW50ICopY3Jl
YXRlQ29tbWVudDooTlNTdHJpbmcgKilkYXRhCiB7Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+
bG9va3VwUHJlZml4KG5hbWVzcGFjZVVSSSk7Ci19CisgICAgQVNTRVJUKGRhdGEpOwogCi0tIChO
U1N0cmluZyAqKWxvb2t1cE5hbWVzcGFjZVVSSTooTlNTdHJpbmcgKilwcmVmaXgKLXsKLSAgICBy
ZXR1cm4gW3NlbGYgX25vZGVdLT5sb29rdXBOYW1lc3BhY2VVUkkocHJlZml4KTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RE9NQ29tbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2Rv
Y3VtZW50XS0+Y3JlYXRlQ29tbWVudChkYXRhKS5nZXQoKV0pOwogfQogCi0tIChOU1N0cmluZyAq
KXRleHRDb250ZW50CistIChET01DREFUQVNlY3Rpb24gKiljcmVhdGVDREFUQVNlY3Rpb246KE5T
U3RyaW5nICopZGF0YQogewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPnRleHRDb250ZW50KCk7
Ci19CisgICAgQVNTRVJUKGRhdGEpOwogCi0tICh2b2lkKXNldFRleHRDb250ZW50OihOU1N0cmlu
ZyAqKXRleHQKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfbm9kZV0t
PnNldFRleHRDb250ZW50KHRleHQsIGVjKTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVj
ID0gMDsKKyAgICBET01DREFUQVNlY3Rpb24gKnJlc3VsdCA9IHN0YXRpY19jYXN0PERPTUNEQVRB
U2VjdGlvbiAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlQ0RB
VEFTZWN0aW9uKGRhdGEsIGVjKS5nZXQoKV0pOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotLSAoTlNSZWN0KWJvdW5kaW5nQm94Ci17Ci0gICAgV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9ub2RlXS0+cmVuZGVyZXIoKTsK
LSAgICBpZiAocmVuZGVyZXIpCi0gICAgICAgIHJldHVybiByZW5kZXJlci0+YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QoKTsKLSAgICByZXR1cm4gTlNaZXJvUmVjdDsKLX0KLQotLSAoTlNBcnJheSAq
KWxpbmVCb3hSZWN0cwotewotICAgIFdlYkNvcmU6OlJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBb
c2VsZiBfbm9kZV0tPnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyKSB7Ci0gICAgICAgIE5T
TXV0YWJsZUFycmF5ICpyZXN1bHRzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07Ci0g
ICAgICAgIERlcHJlY2F0ZWRWYWx1ZUxpc3Q8SW50UmVjdD4gcmVjdHMgPSByZW5kZXJlci0+bGlu
ZUJveFJlY3RzKCk7Ci0gICAgICAgIGlmICghcmVjdHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICBmb3IgKERlcHJlY2F0ZWRWYWx1ZUxpc3Q8SW50UmVjdD46OkNvbnN0SXRlcmF0b3IgaXQgPSBy
ZWN0cy5iZWdpbigpOyBpdCAhPSByZWN0cy5lbmQoKTsgKytpdCkKLSAgICAgICAgICAgICAgICBb
cmVzdWx0cyBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDoqaXRdXTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gW3Jlc3VsdHMgYXV0b3JlbGVhc2VdOwotICAgIH0KLSAgICByZXR1
cm4gbmlsOwotfQotCi1AZW5kCi0KLXN0YXRpYyB2b2lkIGFkZEVsZW1lbnRDbGFzcyhjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWcsIENsYXNzIG9iakNDbGFzcykKLXsKLSAgICBlbGVtZW50Q2xhc3NN
YXAtPnNldCh0YWcubG9jYWxOYW1lKCkuaW1wbCgpLCBvYmpDQ2xhc3MpOwotfQotCi1zdGF0aWMg
dm9pZCBjcmVhdGVIVE1MRWxlbWVudENsYXNzTWFwKCkKLXsKLSAgICAvLyBDcmVhdGUgdGhlIHRh
YmxlLgotICAgIGVsZW1lbnRDbGFzc01hcCA9IG5ldyBPYmpDQ2xhc3NNYXA7Ci0gICAgCi0gICAg
Ly8gUG9wdWxhdGUgaXQgd2l0aCBIVE1MIGVsZW1lbnQgY2xhc3Nlcy4KLSAgICBhZGRFbGVtZW50
Q2xhc3MoYVRhZywgW0RPTUhUTUxBbmNob3JFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVu
dENsYXNzKGFwcGxldFRhZywgW0RPTUhUTUxBcHBsZXRFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRk
RWxlbWVudENsYXNzKGFyZWFUYWcsIFtET01IVE1MQXJlYUVsZW1lbnQgY2xhc3NdKTsKLSAgICBh
ZGRFbGVtZW50Q2xhc3MoYmFzZVRhZywgW0RPTUhUTUxCYXNlRWxlbWVudCBjbGFzc10pOwotICAg
IGFkZEVsZW1lbnRDbGFzcyhiYXNlZm9udFRhZywgW0RPTUhUTUxCYXNlRm9udEVsZW1lbnQgY2xh
c3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoYm9keVRhZywgW0RPTUhUTUxCb2R5RWxlbWVudCBj
bGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhiclRhZywgW0RPTUhUTUxCUkVsZW1lbnQgY2xh
c3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoYnV0dG9uVGFnLCBbRE9NSFRNTEJ1dHRvbkVsZW1l
bnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoY2FudmFzVGFnLCBbRE9NSFRNTEltYWdl
RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhjYXB0aW9uVGFnLCBbRE9NSFRN
TFRhYmxlQ2FwdGlvbkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoY29sVGFn
LCBbRE9NSFRNTFRhYmxlQ29sRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhj
b2xncm91cFRhZywgW0RPTUhUTUxUYWJsZUNvbEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVt
ZW50Q2xhc3MoZGlyVGFnLCBbRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQgY2xhc3NdKTsKLSAgICBh
ZGRFbGVtZW50Q2xhc3MoZGl2VGFnLCBbRE9NSFRNTERpdkVsZW1lbnQgY2xhc3NdKTsKLSAgICBh
ZGRFbGVtZW50Q2xhc3MoZGxUYWcsIFtET01IVE1MRExpc3RFbGVtZW50IGNsYXNzXSk7Ci0gICAg
YWRkRWxlbWVudENsYXNzKGZpZWxkc2V0VGFnLCBbRE9NSFRNTEZpZWxkU2V0RWxlbWVudCBjbGFz
c10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhmb250VGFnLCBbRE9NSFRNTEZvbnRFbGVtZW50IGNs
YXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGZvcm1UYWcsIFtET01IVE1MRm9ybUVsZW1lbnQg
Y2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoZnJhbWVUYWcsIFtET01IVE1MRnJhbWVFbGVt
ZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGZyYW1lc2V0VGFnLCBbRE9NSFRNTEZy
YW1lU2V0RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoMVRhZywgW0RPTUhU
TUxIZWFkaW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoMlRhZywgW0RP
TUhUTUxIZWFkaW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoM1RhZywg
W0RPTUhUTUxIZWFkaW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoNFRh
ZywgW0RPTUhUTUxIZWFkaW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyho
NVRhZywgW0RPTUhUTUxIZWFkaW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFz
cyhoNlRhZywgW0RPTUhUTUxIZWFkaW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyhoZWFkVGFnLCBbRE9NSFRNTEhlYWRFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVu
dENsYXNzKGhyVGFnLCBbRE9NSFRNTEhSRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyhodG1sVGFnLCBbRE9NSFRNTEh0bWxFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVu
dENsYXNzKGlmcmFtZVRhZywgW0RPTUhUTUxJRnJhbWVFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRk
RWxlbWVudENsYXNzKGltZ1RhZywgW0RPTUhUTUxJbWFnZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBh
ZGRFbGVtZW50Q2xhc3MoaW5wdXRUYWcsIFtET01IVE1MSW5wdXRFbGVtZW50IGNsYXNzXSk7Ci0g
ICAgYWRkRWxlbWVudENsYXNzKGlzaW5kZXhUYWcsIFtET01IVE1MSXNJbmRleEVsZW1lbnQgY2xh
c3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MobGFiZWxUYWcsIFtET01IVE1MTGFiZWxFbGVtZW50
IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGxlZ2VuZFRhZywgW0RPTUhUTUxMZWdlbmRF
bGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGxpVGFnLCBbRE9NSFRNTExJRWxl
bWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhsaW5rVGFnLCBbRE9NSFRNTExpbmtF
bGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGxpc3RpbmdUYWcsIFtET01IVE1M
UHJlRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhtYXBUYWcsIFtET01IVE1M
TWFwRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhtZW51VGFnLCBbRE9NSFRN
TE1lbnVFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKG1ldGFUYWcsIFtET01I
VE1MTWV0YUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mob2JqZWN0VGFnLCBb
RE9NSFRNTE9iamVjdEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mob2xUYWcs
IFtET01IVE1MT0xpc3RFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKG9wdGdy
b3VwVGFnLCBbRE9NSFRNTE9wdEdyb3VwRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyhvcHRpb25UYWcsIFtET01IVE1MT3B0aW9uRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVs
ZW1lbnRDbGFzcyhwVGFnLCBbRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQgY2xhc3NdKTsKLSAgICBh
ZGRFbGVtZW50Q2xhc3MocGFyYW1UYWcsIFtET01IVE1MUGFyYW1FbGVtZW50IGNsYXNzXSk7Ci0g
ICAgYWRkRWxlbWVudENsYXNzKHByZVRhZywgW0RPTUhUTUxQcmVFbGVtZW50IGNsYXNzXSk7Ci0g
ICAgYWRkRWxlbWVudENsYXNzKHFUYWcsIFtET01IVE1MUXVvdGVFbGVtZW50IGNsYXNzXSk7Ci0g
ICAgYWRkRWxlbWVudENsYXNzKHNjcmlwdFRhZywgW0RPTUhUTUxTY3JpcHRFbGVtZW50IGNsYXNz
XSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHNlbGVjdFRhZywgW0RPTUhUTUxTZWxlY3RFbGVtZW50
IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHN0eWxlVGFnLCBbRE9NSFRNTFN0eWxlRWxl
bWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh0YWJsZVRhZywgW0RPTUhUTUxUYWJs
ZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModGJvZHlUYWcsIFtET01IVE1M
VGFibGVTZWN0aW9uRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh0ZFRhZywg
W0RPTUhUTUxUYWJsZUNlbGxFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHRl
eHRhcmVhVGFnLCBbRE9NSFRNTFRleHRBcmVhRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1l
bnRDbGFzcyh0Zm9vdFRhZywgW0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50IGNsYXNzXSk7Ci0g
ICAgYWRkRWxlbWVudENsYXNzKHRoZWFkVGFnLCBbRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQg
Y2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModGl0bGVUYWcsIFtET01IVE1MVGl0bGVFbGVt
ZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHRyVGFnLCBbRE9NSFRNTFRhYmxlUm93
RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh1bFRhZywgW0RPTUhUTUxVTGlz
dEVsZW1lbnQgY2xhc3NdKTsKLQotICAgIC8vIEZJWE1FOiBSZWZsZWN0IG1hcnF1ZWUgb25jZSB0
aGUgQVBJIGhhcyBiZWVuIGRldGVybWluZWQuCi19Ci0KLXN0YXRpYyBDbGFzcyBlbGVtZW50Q2xh
c3MoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQotewotICAgIGlmICghZWxlbWVudENsYXNz
TWFwKQotICAgICAgICBjcmVhdGVIVE1MRWxlbWVudENsYXNzTWFwKCk7Ci0gICAgQ2xhc3Mgb2Jq
Y0NsYXNzID0gZWxlbWVudENsYXNzTWFwLT5nZXQodGFnTmFtZS5pbXBsKCkpOwotICAgIGlmICgh
b2JqY0NsYXNzKQotICAgICAgICBvYmpjQ2xhc3MgPSBbRE9NSFRNTEVsZW1lbnQgY2xhc3NdOwot
ICAgIHJldHVybiBvYmpjQ2xhc3M7Ci19Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChXZWJD
b3JlSW50ZXJuYWwpCi0KLS0gKGlkKV9pbml0V2l0aE5vZGU6KE5vZGUgKilpbXBsCi17Ci0gICAg
QVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01f
Y2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBh
ZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01O
b2RlICopX25vZGVXaXRoOihOb2RlICopaW1wbAotewotICAgIGlmICghaW1wbCkKLSAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0
YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQotICAg
ICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICAK
LSAgICBDbGFzcyB3cmFwcGVyQ2xhc3MgPSBuaWw7Ci0gICAgc3dpdGNoIChpbXBsLT5ub2RlVHlw
ZSgpKSB7Ci0gICAgICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOgotICAgICAgICAgICAgaWYg
KGltcGwtPmlzSFRNTEVsZW1lbnQoKSkKLSAgICAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBl
bGVtZW50Q2xhc3Moc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihpbXBsKS0+bG9jYWxOYW1lKCkp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01F
bGVtZW50IGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkFU
VFJJQlVURV9OT0RFOgotICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTUF0dHIgY2xhc3Nd
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOgotICAg
ICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTVRleHQgY2xhc3NdOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOgotICAgICAgICAgICAg
d3JhcHBlckNsYXNzID0gW0RPTUNEQVRBU2VjdGlvbiBjbGFzc107Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6Ci0gICAgICAgICAg
ICB3cmFwcGVyQ2xhc3MgPSBbRE9NRW50aXR5UmVmZXJlbmNlIGNsYXNzXTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgotICAgICAgICAgICAgd3Jh
cHBlckNsYXNzID0gW0RPTUVudGl0eSBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6Ci0gICAgICAgICAgICB3
cmFwcGVyQ2xhc3MgPSBbRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uIGNsYXNzXTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKLSAgICAgICAgICAg
IHdyYXBwZXJDbGFzcyA9IFtET01Db21tZW50IGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6Ci0gICAgICAgICAgICBpZiAoc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihpbXBsKS0+aXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAg
ICB3cmFwcGVyQ2xhc3MgPSBbRE9NSFRNTERvY3VtZW50IGNsYXNzXTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NRG9jdW1lbnQgY2xhc3NdOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RF
OgotICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTURvY3VtZW50VHlwZSBjbGFzc107Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9O
T0RFOgotICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTURvY3VtZW50RnJhZ21lbnQgY2xh
c3NdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9E
RToKLSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01Ob3RhdGlvbiBjbGFzc107Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BBQ0VfTk9ERToK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBDcmVhdGUgYW4gWFBhdGggb2JqZWN0aXZlIEMgd3JhcHBl
cgotICAgICAgICAgICAgLy8gU2VlIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODc1NQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0gICAgcmV0
dXJuIFtbW3dyYXBwZXJDbGFzcyBhbGxvY10gX2luaXRXaXRoTm9kZTppbXBsXSBhdXRvcmVsZWFz
ZV07Ci19Ci0KLS0gKE5vZGUgKilfbm9kZQotewotICAgIHJldHVybiBET01fY2FzdDxOb2RlICo+
KF9pbnRlcm5hbCk7Ci19Ci0KLS0gKGNvbnN0IEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKilf
ZXhlY3V0aW9uQ29udGV4dAotewotICAgIGlmIChOb2RlICpuID0gW3NlbGYgX25vZGVdKQotICAg
ICAgICBpZiAoRnJhbWVNYWMgKmYgPSBNYWMobi0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpCi0gICAg
ICAgICAgICByZXR1cm4gZi0+ZXhlY3V0aW9uQ29udGV4dEZvckRPTSgpOwotCi0gICAgcmV0dXJu
IDA7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGUgKFdlYlByaXZhdGUpCi0K
LS0gKEJPT0wpaXNDb250ZW50RWRpdGFibGUKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5p
c0NvbnRlbnRFZGl0YWJsZSgpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2Rl
IChET01FdmVudFRhcmdldCkKLQotLSAodm9pZClhZGRFdmVudExpc3RlbmVyOihOU1N0cmluZyAq
KXR5cGUgOihpZCA8RE9NRXZlbnRMaXN0ZW5lcj4pbGlzdGVuZXIgOihCT09MKXVzZUNhcHR1cmUK
LXsKLSAgICBpZiAoIVtzZWxmIF9ub2RlXS0+aXNFdmVudFRhcmdldE5vZGUoKSkKLSAgICAgICAg
cmFpc2VET01FeGNlcHRpb24oRE9NX05PVF9TVVBQT1JURURfRVJSKTsKLSAgICAKLSAgICBFdmVu
dExpc3RlbmVyICp3cmFwcGVyID0gT2JqQ0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7
Ci0gICAgRXZlbnRUYXJnZXROb2RlQ2FzdChbc2VsZiBfbm9kZV0pLT5hZGRFdmVudExpc3RlbmVy
KHR5cGUsIHdyYXBwZXIsIHVzZUNhcHR1cmUpOwotICAgIHdyYXBwZXItPmRlcmVmKCk7Ci19Ci0K
LS0gKHZvaWQpcmVtb3ZlRXZlbnRMaXN0ZW5lcjooTlNTdHJpbmcgKil0eXBlIDooaWQgPERPTUV2
ZW50TGlzdGVuZXI+KWxpc3RlbmVyIDooQk9PTCl1c2VDYXB0dXJlCi17Ci0gICAgaWYgKCFbc2Vs
ZiBfbm9kZV0tPmlzRXZlbnRUYXJnZXROb2RlKCkpCi0gICAgICAgIHJhaXNlRE9NRXhjZXB0aW9u
KERPTV9OT1RfU1VQUE9SVEVEX0VSUik7Ci0KLSAgICBpZiAoRXZlbnRMaXN0ZW5lciAqd3JhcHBl
ciA9IE9iakNFdmVudExpc3RlbmVyOjpmaW5kKGxpc3RlbmVyKSkKLSAgICAgICAgRXZlbnRUYXJn
ZXROb2RlQ2FzdChbc2VsZiBfbm9kZV0pLT5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIHdyYXBw
ZXIsIHVzZUNhcHR1cmUpOwotfQotCi0tIChCT09MKWRpc3BhdGNoRXZlbnQ6KERPTUV2ZW50ICop
ZXZlbnQKKy0gKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKWNyZWF0ZVByb2Nlc3NpbmdJbnN0
cnVjdGlvbjooTlNTdHJpbmcgKil0YXJnZXQgOihOU1N0cmluZyAqKWRhdGEKIHsKLSAgICBpZiAo
IVtzZWxmIF9ub2RlXS0+aXNFdmVudFRhcmdldE5vZGUoKSkKLSAgICAgICAgcmFpc2VET01FeGNl
cHRpb24oRE9NX05PVF9TVVBQT1JURURfRVJSKTsKKyAgICBBU1NFUlQodGFyZ2V0KTsKKyAgICBB
U1NFUlQoZGF0YSk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBCT09MIHJlc3Vs
dCA9IEV2ZW50VGFyZ2V0Tm9kZUNhc3QoW3NlbGYgX25vZGVdKS0+ZGlzcGF0Y2hFdmVudChbZXZl
bnQgX2V2ZW50XSwgZWMpOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RE9NUHJvY2Vz
c2luZ0luc3RydWN0aW9uICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5j
cmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24odGFyZ2V0LCBkYXRhLCBlYykuZ2V0KCldKTsKICAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUBlbmQKLQot
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTU5hbWVkTm9kZU1hcAot
Ci1AaW1wbGVtZW50YXRpb24gRE9NTmFtZWROb2RlTWFwCi0KLS0gKHZvaWQpZGVhbGxvYwotewot
ICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8TmFtZWROb2RlTWFwICo+KF9p
bnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAo
dm9pZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8
TmFtZWROb2RlTWFwICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBm
aW5hbGl6ZV07Ci19Ci0KLS0gKE5hbWVkTm9kZU1hcCAqKV9uYW1lZE5vZGVNYXAKLXsKLSAgICBy
ZXR1cm4gRE9NX2Nhc3Q8TmFtZWROb2RlTWFwICo+KF9pbnRlcm5hbCk7Ci19Ci0KLS0gKERPTU5v
ZGUgKilnZXROYW1lZEl0ZW06KE5TU3RyaW5nICopbmFtZQorLSAoRE9NQXR0ciAqKWNyZWF0ZUF0
dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lCiB7CiAgICAgQVNTRVJUKG5hbWUpOwogCi0gICAgcmV0
dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+Z2V0TmFtZWRJdGVt
KG5hbWUpLmdldCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbTooRE9NTm9kZSAq
KWFyZwotewotICAgIEFTU0VSVChhcmcpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAg
RE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBd
LT5zZXROYW1lZEl0ZW0oW2FyZyBfbm9kZV0sIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNl
T25ET01FcnJvcihleGNlcHRpb24pOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZG9jdW1l
bnRdLT5jcmVhdGVBdHRyaWJ1dGUobmFtZSwgZWMpLmdldCgpXTsKKyAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS0gKERPTU5vZGUgKilyZW1vdmVOYW1l
ZEl0ZW06KE5TU3RyaW5nICopbmFtZQorLSAoRE9NRW50aXR5UmVmZXJlbmNlICopY3JlYXRlRW50
aXR5UmVmZXJlbmNlOihOU1N0cmluZyAqKW5hbWUKIHsKICAgICBBU1NFUlQobmFtZSk7CiAKLSAg
ICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPnJlbW92ZU5hbWVkSXRlbShuYW1lLCBleGNlcHRp
b24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKKyAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBET01FbnRpdHlSZWZlcmVuY2UgKnJlc3VsdCA9
IHN0YXRpY19jYXN0PERPTUVudGl0eVJlZmVyZW5jZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX2RvY3VtZW50XS0+Y3JlYXRlRW50aXR5UmVmZXJlbmNlKG5hbWUsIGVjKS5nZXQoKV0pOwor
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotLSAoRE9N
Tm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4CistIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRz
QnlUYWdOYW1lOihOU1N0cmluZyAqKXRhZ25hbWUKIHsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25v
ZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5pdGVtKGluZGV4KS5nZXQoKV07CisgICAgQVNT
RVJUKHRhZ25hbWUpOworCisgICAgcmV0dXJuIFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOltz
ZWxmIF9kb2N1bWVudF0tPmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ25hbWUpLmdldCgpXTsKIH0K
IAotLSAodW5zaWduZWQpbGVuZ3RoCistIChET01Ob2RlICopaW1wb3J0Tm9kZTooRE9NTm9kZSAq
KWltcG9ydGVkTm9kZSA6KEJPT0wpZGVlcAogewotICAgIHJldHVybiBbc2VsZiBfbmFtZWROb2Rl
TWFwXS0+bGVuZ3RoKCk7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
RE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmlt
cG9ydE5vZGUoW2ltcG9ydGVkTm9kZSBfbm9kZV0sIGRlZXAsIGVjKS5nZXQoKV07CisgICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi0tIChET01Ob2RlICop
Z2V0TmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2Nh
bE5hbWUKKy0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50TlM6KE5TU3RyaW5nICopbmFtZXNw
YWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lCiB7Ci0gICAgaWYgKCFuYW1lc3BhY2VV
UkkgfHwgIWxvY2FsTmFtZSkgewotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KKyAgICBBU1NF
UlQobmFtZXNwYWNlVVJJKTsKKyAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7CiAKLSAgICByZXR1
cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5nZXROYW1lZEl0ZW1O
UyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkuZ2V0KCldOworICAgIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpb
c2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWRO
YW1lLCBlYykuZ2V0KCldOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PERPTUVsZW1lbnQgKj4ocmVzdWx0KTsKIH0KIAotLSAoRE9NTm9kZSAqKXNldE5h
bWVkSXRlbU5TOihET01Ob2RlICopYXJnCistIChET01BdHRyICopY3JlYXRlQXR0cmlidXRlTlM6
KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lCiB7Ci0g
ICAgQVNTRVJUKGFyZyk7CisgICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7CisgICAgQVNTRVJUKHF1
YWxpZmllZE5hbWUpOwogCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NTm9kZSAqcmVz
dWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5zZXROYW1lZEl0
ZW1OUyhbYXJnIF9ub2RlXSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGV4Y2VwdGlvbik7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9N
QXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0
ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgZWMpLmdldCgpXTsKKyAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS0gKERPTU5v
ZGUgKilyZW1vdmVOYW1lZEl0ZW1OUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmlu
ZyAqKWxvY2FsTmFtZQorLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZU5TOihO
U1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCiB7CiAgICAgQVNT
RVJUKG5hbWVzcGFjZVVSSSk7CiAgICAgQVNTRVJUKGxvY2FsTmFtZSk7CiAKLSAgICBpbnQgZXhj
ZXB0aW9uID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX25hbWVkTm9kZU1hcF0tPnJlbW92ZU5hbWVkSXRlbU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxO
YW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsK
LSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBbRE9NTm9kZUxpc3QgX25vZGVMaXN0V2l0
aDpbc2VsZiBfZG9jdW1lbnRdLT5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKG5hbWVzcGFjZVVSSSwg
bG9jYWxOYW1lKS5nZXQoKV07CiB9CiAKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTU5hbWVk
Tm9kZU1hcCAoV2ViQ29yZUludGVybmFsKQotCi0tIChpZClfaW5pdFdpdGhOYW1lZE5vZGVNYXA6
KE5hbWVkTm9kZU1hcCAqKWltcGwKKy0gKERPTUVsZW1lbnQgKilnZXRFbGVtZW50QnlJZDooTlNT
dHJpbmcgKillbGVtZW50SWQKIHsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2lu
aXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwp
OwotICAgIGltcGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAg
cmV0dXJuIHNlbGY7Ci19CisgICAgQVNTRVJUKGVsZW1lbnRJZCk7CiAKLSsgKERPTU5hbWVkTm9k
ZU1hcCAqKV9uYW1lZE5vZGVNYXBXaXRoOihOYW1lZE5vZGVNYXAgKilpbXBsCi17Ci0gICAgaWYg
KCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNl
OwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2Fj
aGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0
b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhOYW1l
ZE5vZGVNYXA6aW1wbF0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01F
bGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5nZXRFbGVtZW50
QnlJZChlbGVtZW50SWQpXSk7CiB9CiAKIEBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS8vIERPTU5vZGVMaXN0Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlTGlz
dAotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERP
TV9jYXN0PE5vZGVMaXN0ICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBl
ciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwp
IHsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZUxpc3QgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAg
ICB9Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQotLSAoTm9kZUxpc3QgKilfbm9kZUxpc3QK
LXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8Tm9kZUxpc3QgKj4oX2ludGVybmFsKTsKLX0KLQotLSAo
RE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4Ci17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9u
b2RlV2l0aDpbc2VsZiBfbm9kZUxpc3RdLT5pdGVtKGluZGV4KV07Ci19Ci0KLS0gKHVuc2lnbmVk
KWxlbmd0aAotewotICAgIHJldHVybiBbc2VsZiBfbm9kZUxpc3RdLT5sZW5ndGgoKTsKLX0KLQot
QGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NTm9kZUxpc3QgKFdlYkNvcmVJbnRlcm5hbCkKLQot
LSAoaWQpX2luaXRXaXRoTm9kZUxpc3Q6KE5vZGVMaXN0ICopaW1wbAotewotICAgIEFTU0VSVChp
bXBsKTsKLQotICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9N
T2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9NV3Jh
cHBlcihzZWxmLCBpbXBsKTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotKyAoRE9NTm9kZUxpc3Qg
Kilfbm9kZUxpc3RXaXRoOihOb2RlTGlzdCAqKWltcGwKLXsKLSAgICBpZiAoIWltcGwpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAgY2FjaGVk
SW5zdGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0YW5jZSkK
LSAgICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0g
ICAgCi0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aE5vZGVMaXN0OmltcGxdIGF1
dG9yZWxlYXNlXTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotLy8gRE9NSW1wbGVtZW50YXRpb24KLQotQGltcGxlbWVudGF0aW9uIERPTUltcGxlbWVu
dGF0aW9uCi0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAg
IERPTV9jYXN0PERPTUltcGxlbWVudGF0aW9uRnJvbnQgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsK
LSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAo
X2ludGVybmFsKQotICAgICAgICBET01fY2FzdDxET01JbXBsZW1lbnRhdGlvbkZyb250ICo+KF9p
bnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQotLSAoQk9PTClo
YXNGZWF0dXJlOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0cmluZyAqKXZlcnNpb24KLXsKLSAg
ICBBU1NFUlQoZmVhdHVyZSk7Ci0gICAgQVNTRVJUKHZlcnNpb24pOwotCi0gICAgcmV0dXJuIFtz
ZWxmIF9ET01JbXBsZW1lbnRhdGlvbl0tPmhhc0ZlYXR1cmUoZmVhdHVyZSwgdmVyc2lvbik7Ci19
Ci0KLS0gKERPTURvY3VtZW50VHlwZSAqKWNyZWF0ZURvY3VtZW50VHlwZTooTlNTdHJpbmcgKilx
dWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKilwdWJsaWNJZCA6KE5TU3RyaW5nICopc3lzdGVtSWQK
LXsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7Ci0gICAgQVNTRVJUKHB1YmxpY0lkKTsKLSAg
ICBBU1NFUlQoc3lzdGVtSWQpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVm
UHRyPERvY3VtZW50VHlwZT4gaW1wbCA9IFtzZWxmIF9ET01JbXBsZW1lbnRhdGlvbl0tPmNyZWF0
ZURvY3VtZW50VHlwZShxdWFsaWZpZWROYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQsIGVjKTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVu
dFR5cGUgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGwuZ2V0KCldKTsKLX0KLQotLSAoRE9NRG9j
dW1lbnQgKiljcmVhdGVEb2N1bWVudDooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmlu
ZyAqKXF1YWxpZmllZE5hbWUgOihET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlCi17Ci0gICAgQVNT
RVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotCi0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPERvY3VtZW50PiBpbXBsID0gW3NlbGYgX0RP
TUltcGxlbWVudGF0aW9uXS0+Y3JlYXRlRG9jdW1lbnQobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWRO
YW1lLCBbZG9jdHlwZSBfZG9jdW1lbnRUeXBlXSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURvY3VtZW50ICo+KFtET01Ob2RlIF9ub2Rl
V2l0aDppbXBsLmdldCgpXSk7Ci19Ci0KLS0gKERPTUhUTUxEb2N1bWVudCAqKWNyZWF0ZUhUTUxE
b2N1bWVudDooTlNTdHJpbmcgKil0aXRsZQotewotICAgIFJlZlB0cjxIVE1MRG9jdW1lbnQ+IGlt
cGwgPSBbc2VsZiBfRE9NSW1wbGVtZW50YXRpb25dLT5jcmVhdGVIVE1MRG9jdW1lbnQodGl0bGUp
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01IVE1MRG9jdW1lbnQgKj4oW0RPTU5vZGUgX25v
ZGVXaXRoOmltcGwuZ2V0KCldKTsKLX0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUltcGxl
bWVudGF0aW9uIChET01JbXBsZW1lbnRhdGlvbkNTUykKLQotLSAoRE9NQ1NTU3R5bGVTaGVldCAq
KWNyZWF0ZUNTU1N0eWxlU2hlZXQ6KE5TU3RyaW5nICopdGl0bGUgOihOU1N0cmluZyAqKW1lZGlh
Ci17Ci0gICAgQVNTRVJUKHRpdGxlKTsKLSAgICBBU1NFUlQobWVkaWEpOwotCi0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NQ1NTU3R5bGVTaGVldCAqcmVzdWx0ID0gW0RPTUNTU1N0
eWxlU2hlZXQgX0NTU1N0eWxlU2hlZXRXaXRoOltzZWxmIF9ET01JbXBsZW1lbnRhdGlvbl0tPmNy
ZWF0ZUNTU1N0eWxlU2hlZXQodGl0bGUsIG1lZGlhLCBlYykuZ2V0KCldOwotICAgIHJhaXNlT25E
T01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotQGVuZAotIAotQGltcGxlbWVu
dGF0aW9uIERPTUltcGxlbWVudGF0aW9uIChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKGlkKV9pbml0
V2l0aERPTUltcGxlbWVudGF0aW9uOihET01JbXBsZW1lbnRhdGlvbkZyb250ICopaW1wbAotewot
ICAgIEFTU0VSVChpbXBsKTsKLQotICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2ludGVybmFsID0g
RE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0g
ICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotKyAo
RE9NSW1wbGVtZW50YXRpb24gKilfRE9NSW1wbGVtZW50YXRpb25XaXRoOihET01JbXBsZW1lbnRh
dGlvbkZyb250ICopaW1wbAotewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERP
TVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQotICAgICAgICByZXR1cm4g
W1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICByZXR1cm4g
W1tbc2VsZiBhbGxvY10gX2luaXRXaXRoRE9NSW1wbGVtZW50YXRpb246aW1wbF0gYXV0b3JlbGVh
c2VdOwotfQotCi0tIChET01JbXBsZW1lbnRhdGlvbkZyb250ICopX0RPTUltcGxlbWVudGF0aW9u
Ci17Ci0gICAgcmV0dXJuIERPTV9jYXN0PERPTUltcGxlbWVudGF0aW9uRnJvbnQgKj4oX2ludGVy
bmFsKTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ly8gRE9NRG9jdW1lbnRGcmFnbWVudAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnRGcmFn
bWVudAotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudEZyYWdtZW50IChXZWJD
b3JlSW50ZXJuYWwpCi0KLSsgKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVu
dFdpdGg6KERvY3VtZW50RnJhZ21lbnQgKilpbXBsCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PERPTURvY3VtZW50RnJhZ21lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTsKLX0KLQot
LSAoRG9jdW1lbnRGcmFnbWVudCAqKV9mcmFnbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxEb2N1bWVudEZyYWdtZW50ICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0K
LUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTURvY3Vt
ZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudAotCi0tIChET01Ob2RlICopYWRvcHRO
b2RlOihET01Ob2RlICopc291cmNlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
RE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmFk
b3B0Tm9kZShbc291cmNlIF9ub2RlXSwgZWMpLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3Io
ZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTURvY3VtZW50VHlwZSAqKWRvY3R5
cGUKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnRUeXBlICo+KFtET01Ob2Rl
IF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5kb2N0eXBlKCldKTsKLX0KLQotLSAoRE9NSW1w
bGVtZW50YXRpb24gKilpbXBsZW1lbnRhdGlvbgotewotICAgIHJldHVybiBbRE9NSW1wbGVtZW50
YXRpb24gX0RPTUltcGxlbWVudGF0aW9uV2l0aDppbXBsZW1lbnRhdGlvbkZyb250KFtzZWxmIF9k
b2N1bWVudF0pXTsKLX0KLQotLSAoRE9NRWxlbWVudCAqKWRvY3VtZW50RWxlbWVudAotewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2Vs
ZiBfZG9jdW1lbnRdLT5kb2N1bWVudEVsZW1lbnQoKV0pOwotfQotCi0tIChET01FbGVtZW50ICop
Y3JlYXRlRWxlbWVudDooTlNTdHJpbmcgKil0YWdOYW1lCi17Ci0gICAgQVNTRVJUKHRhZ05hbWUp
OwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NRWxlbWVudCAqcmVzdWx0ID0g
c3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3Vt
ZW50XS0+Y3JlYXRlRWxlbWVudCh0YWdOYW1lLCBlYykuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTURvY3VtZW50RnJhZ21l
bnQgKiljcmVhdGVEb2N1bWVudEZyYWdtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERP
TURvY3VtZW50RnJhZ21lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0t
PmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKS5nZXQoKV0pOwotfQotCi0tIChET01UZXh0ICopY3Jl
YXRlVGV4dE5vZGU6KE5TU3RyaW5nICopZGF0YQotewotICAgIEFTU0VSVChkYXRhKTsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RE9NVGV4dCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2Rv
Y3VtZW50XS0+Y3JlYXRlVGV4dE5vZGUoZGF0YSkuZ2V0KCldKTsKLX0KLQotLSAoRE9NQ29tbWVu
dCAqKWNyZWF0ZUNvbW1lbnQ6KE5TU3RyaW5nICopZGF0YQotewotICAgIEFTU0VSVChkYXRhKTsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NQ29tbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6
W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlQ29tbWVudChkYXRhKS5nZXQoKV0pOwotfQotCi0tIChE
T01DREFUQVNlY3Rpb24gKiljcmVhdGVDREFUQVNlY3Rpb246KE5TU3RyaW5nICopZGF0YQotewot
ICAgIEFTU0VSVChkYXRhKTsKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01DREFUQVNl
Y3Rpb24gKnJlc3VsdCA9IHN0YXRpY19jYXN0PERPTUNEQVRBU2VjdGlvbiAqPihbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlQ0RBVEFTZWN0aW9uKGRhdGEsIGV4Y2Vw
dGlvbikuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0tIChET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKiljcmVhdGVQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb246KE5TU3RyaW5nICopdGFyZ2V0IDooTlNTdHJpbmcgKilkYXRhCi17
Ci0gICAgQVNTRVJUKHRhcmdldCk7Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIGludCBleGNlcHRp
b24gPSAwOwotICAgIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqcmVzdWx0ID0gc3RhdGljX2Nh
c3Q8RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBf
ZG9jdW1lbnRdLT5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24odGFyZ2V0LCBkYXRhLCBleGNl
cHRpb24pLmdldCgpXSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NQXR0ciAqKWNyZWF0ZUF0dHJpYnV0ZTooTlNTdHJpbmcg
KiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotICAgIGludCBleGNlcHRpb24gPSAwOwotICAg
IERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5j
cmVhdGVBdHRyaWJ1dGUobmFtZSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVy
cm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRW50aXR5UmVm
ZXJlbmNlICopY3JlYXRlRW50aXR5UmVmZXJlbmNlOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBB
U1NFUlQobmFtZSk7Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NRW50aXR5UmVmZXJl
bmNlICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxET01FbnRpdHlSZWZlcmVuY2UgKj4oW0RPTU5vZGUg
X25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUVudGl0eVJlZmVyZW5jZShuYW1lLCBl
eGNlcHRpb24pLmdldCgpXSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFt
ZTooTlNTdHJpbmcgKil0YWduYW1lCi17Ci0gICAgQVNTRVJUKHRhZ25hbWUpOwotICAgIHJldHVy
biBbRE9NTm9kZUxpc3QgX25vZGVMaXN0V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5nZXRFbGVtZW50
c0J5VGFnTmFtZSh0YWduYW1lKS5nZXQoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilpbXBvcnROb2Rl
OihET01Ob2RlICopaW1wb3J0ZWROb2RlIDooQk9PTClkZWVwCi17Ci0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxm
IF9kb2N1bWVudF0tPmltcG9ydE5vZGUoW2ltcG9ydGVkTm9kZSBfbm9kZV0sIGRlZXAsIGVjKS5n
ZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci0tIChET01FbGVtZW50ICopY3JlYXRlRWxlbWVudE5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVS
SSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkp
OwotICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1l
bnRdLT5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCBlYykuZ2V0
KCldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERP
TUVsZW1lbnQgKj4ocmVzdWx0KTsKLX0KLQotLSAoRE9NQXR0ciAqKWNyZWF0ZUF0dHJpYnV0ZU5T
OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZQotewot
ICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsKLQot
ICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9h
dHRyV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkks
IHF1YWxpZmllZE5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihl
eGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGVMaXN0ICopZ2V0
RWxlbWVudHNCeVRhZ05hbWVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAq
KWxvY2FsTmFtZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2Nh
bE5hbWUpOwotCi0gICAgcmV0dXJuIFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOltzZWxmIF9k
b2N1bWVudF0tPmdldEVsZW1lbnRzQnlUYWdOYW1lTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUp
LmdldCgpXTsKLX0KLQotLSAoRE9NRWxlbWVudCAqKWdldEVsZW1lbnRCeUlkOihOU1N0cmluZyAq
KWVsZW1lbnRJZAotewotICAgIEFTU0VSVChlbGVtZW50SWQpOwotCi0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0t
PmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCldKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRp
b24gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50UmFuZ2UpCi0KLS0gKERPTVJhbmdlICopY3JlYXRl
UmFuZ2UKLXsKLSAgICByZXR1cm4gW0RPTVJhbmdlIF9yYW5nZVdpdGg6W3NlbGYgX2RvY3VtZW50
XS0+Y3JlYXRlUmFuZ2UoKS5nZXQoKV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERP
TURvY3VtZW50IChET01Eb2N1bWVudENTUykKLQotLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAq
KWdldE92ZXJyaWRlU3R5bGU6KERPTUVsZW1lbnQgKillbHQgOihOU1N0cmluZyAqKXBzZXVkb0Vs
dAotewotICAgIEVsZW1lbnQgKmVsZW1lbnQgPSBbZWx0IF9lbGVtZW50XTsKLSAgICBTdHJpbmcg
cHNldWRvRWx0U3RyaW5nKHBzZXVkb0VsdCk7Ci0gICAgcmV0dXJuIFtET01DU1NTdHlsZURlY2xh
cmF0aW9uIF9zdHlsZURlY2xhcmF0aW9uV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5nZXRPdmVycmlk
ZVN0eWxlKGVsZW1lbnQsIHBzZXVkb0VsdFN0cmluZy5pbXBsKCkpXTsKLX0KLQotQGVuZAotCi1A
aW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50U3R5bGUpCi0KLS0gKERPTVN0
eWxlU2hlZXRMaXN0ICopc3R5bGVTaGVldHMKLXsKLSAgICByZXR1cm4gW0RPTVN0eWxlU2hlZXRM
aXN0IF9zdHlsZVNoZWV0TGlzdFdpdGg6W3NlbGYgX2RvY3VtZW50XS0+c3R5bGVTaGVldHMoKV07
Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChET01Eb2N1bWVudEV4
dGVuc2lvbnMpCi0KLS0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKiljcmVhdGVDU1NTdHlsZURl
Y2xhcmF0aW9uCi17Ci0gICAgcmV0dXJuIFtET01DU1NTdHlsZURlY2xhcmF0aW9uIF9zdHlsZURl
Y2xhcmF0aW9uV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDU1NTdHlsZURlY2xhcmF0aW9u
KCkuZ2V0KCldOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoV2Vi
Q29yZUludGVybmFsKQotCi0rIChET01Eb2N1bWVudCAqKV9kb2N1bWVudFdpdGg6KERvY3VtZW50
ICopaW1wbAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudCAqPihbRE9NTm9k
ZSBfbm9kZVdpdGg6aW1wbF0pOwotfQotCi0tIChEb2N1bWVudCAqKV9kb2N1bWVudAotewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudCAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5h
bCkpOwotfQotCi0tIChET01FbGVtZW50ICopX293bmVyRWxlbWVudAotewotICAgIHJldHVybiBb
RE9NRWxlbWVudCBfZWxlbWVudFdpdGg6W3NlbGYgX2RvY3VtZW50XS0+b3duZXJFbGVtZW50KCld
OwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBE
T01DaGFyYWN0ZXJEYXRhCi0KLUBpbXBsZW1lbnRhdGlvbiBET01DaGFyYWN0ZXJEYXRhCi0KLS0g
KENoYXJhY3RlckRhdGEgKilfY2hhcmFjdGVyRGF0YQotewotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxDaGFyYWN0ZXJEYXRhICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0g
KE5TU3RyaW5nICopZGF0YQotewotICAgIC8vIERvY3VtZW50YXRpb24gc2F5cyB3ZSBjYW4gcmFp
c2UgYSBET01TVFJJTkdfU0laRV9FUlIuCi0gICAgLy8gSG93ZXZlciwgdGhlIGxvd2VyIGxheWVy
IGRvZXMgbm90IHJlcG9ydCB0aGF0IGVycm9yIHVwIHRvIHVzLgotICAgIHJldHVybiBbc2VsZiBf
Y2hhcmFjdGVyRGF0YV0tPmRhdGEoKTsKLX0KLQotLSAodm9pZClzZXREYXRhOihOU1N0cmluZyAq
KWRhdGEKLXsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5zZXREYXRhKGRhdGEsIGVjKTsKLSAgICBy
YWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh1bnNpZ25lZClsZW5ndGgKLXsKLSAgICByZXR1
cm4gW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5sZW5ndGgoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilz
dWJzdHJpbmdEYXRhOih1bnNpZ25lZClvZmZzZXQgOih1bnNpZ25lZCljb3VudAotewotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIE5TU3RyaW5nICpyZXN1bHQgPSBbc2VsZiBfY2hhcmFj
dGVyRGF0YV0tPnN1YnN0cmluZ0RhdGEob2Zmc2V0LCBjb3VudCwgZWMpOwotICAgIHJhaXNlT25E
T01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAodm9pZClhcHBlbmREYXRh
OihOU1N0cmluZyAqKWFyZwotewotICAgIEFTU0VSVChhcmcpOwotICAgIAotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+YXBwZW5kRGF0YShhcmcs
IGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKWluc2VydERhdGE6
KHVuc2lnbmVkKW9mZnNldCA6KE5TU3RyaW5nICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7Ci0g
ICAgCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFd
LT5pbnNlcnREYXRhKG9mZnNldCwgYXJnLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsK
LX0KLQotLSAodm9pZClkZWxldGVEYXRhOih1bnNpZ25lZClvZmZzZXQgOih1bnNpZ25lZCkgY291
bnQKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0
YV0tPmRlbGV0ZURhdGEob2Zmc2V0LCBjb3VudCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7Ci19Ci0KLS0gKHZvaWQpcmVwbGFjZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVk
KWNvdW50IDooTlNTdHJpbmcgKilhcmcKLXsKLSAgICBBU1NFUlQoYXJnKTsKLQotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+cmVwbGFjZURhdGEo
b2Zmc2V0LCBjb3VudCwgYXJnLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQot
QGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NQXR0cgot
Ci1AaW1wbGVtZW50YXRpb24gRE9NQXR0cgotCi0tIChOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBy
ZXR1cm4gW3NlbGYgX2F0dHJdLT5ub2RlTmFtZSgpOwotfQotCi0tIChCT09MKXNwZWNpZmllZAot
ewotICAgIHJldHVybiBbc2VsZiBfYXR0cl0tPnNwZWNpZmllZCgpOwotfQotCi0tIChOU1N0cmlu
ZyAqKXZhbHVlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9hdHRyXS0+bm9kZVZhbHVlKCk7Ci19Ci0K
LS0gKHZvaWQpc2V0VmFsdWU6KE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICBBU1NFUlQodmFsdWUp
OwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2F0dHJdLT5zZXRWYWx1
ZSh2YWx1ZSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKERPTUVsZW1l
bnQgKilvd25lckVsZW1lbnQKLXsKLSAgICByZXR1cm4gW0RPTUVsZW1lbnQgX2VsZW1lbnRXaXRo
OltzZWxmIF9hdHRyXS0+b3duZXJFbGVtZW50KCldOwotfQotCi0tIChET01DU1NTdHlsZURlY2xh
cmF0aW9uICopc3R5bGUKLXsKLSAgICByZXR1cm4gW0RPTUNTU1N0eWxlRGVjbGFyYXRpb24gX3N0
eWxlRGVjbGFyYXRpb25XaXRoOiBbc2VsZiBfYXR0cl0tPnN0eWxlKCldOwotfQotCi1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBET01BdHRyIChXZWJDb3JlSW50ZXJuYWwpCi0KLSsgKERPTUF0dHIg
KilfYXR0cldpdGg6KEF0dHIgKilpbXBsCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUF0
dHIgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTsKLX0KLQotLSAoQXR0ciAqKV9hdHRyCi17
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEF0dHIgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJu
YWwpKTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ly8gRE9NRWxlbWVudAotCi1AaW1wbGVtZW50YXRpb24gRE9NRWxlbWVudAotCi0tIChOU1N0cmlu
ZyAqKXRhZ05hbWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5ub2RlTmFtZSgpOwot
fQotCi0tIChET01OYW1lZE5vZGVNYXAgKilhdHRyaWJ1dGVzCi17Ci0gICAgcmV0dXJuIFtET01O
YW1lZE5vZGVNYXAgX25hbWVkTm9kZU1hcFdpdGg6W3NlbGYgX2VsZW1lbnRdLT5hdHRyaWJ1dGVz
KCldOwotfQotCi0tIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lCi17
Ci0gICAgQVNTRVJUKG5hbWUpOwotICAgIHJldHVybiBbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJp
YnV0ZShuYW1lKTsKLX0KLQotLSAodm9pZClzZXRBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZSA6
KE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0gICAgQVNTRVJUKHZhbHVl
KTsKLQotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIFtzZWxmIF9lbGVtZW50XS0+c2V0QXR0
cmlidXRlKG5hbWUsIHZhbHVlLCBleGNlcHRpb24pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNl
cHRpb24pOwotfQotCi0tICh2b2lkKXJlbW92ZUF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lCi17
Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYg
X2VsZW1lbnRdLT5yZW1vdmVBdHRyaWJ1dGUobmFtZSwgZXhjZXB0aW9uKTsKLSAgICByYWlzZU9u
RE9NRXJyb3IoZXhjZXB0aW9uKTsKLX0KLQotLSAoRE9NQXR0ciAqKWdldEF0dHJpYnV0ZU5vZGU6
KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLQotICAgIHJldHVybiBbRE9N
QXR0ciBfYXR0cldpdGg6W3NlbGYgX2VsZW1lbnRdLT5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpLmdl
dCgpXTsKLX0KLQotLSAoRE9NQXR0ciAqKXNldEF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKiluZXdB
dHRyCi17Ci0gICAgQVNTRVJUKG5ld0F0dHIpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0g
ICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+
c2V0QXR0cmlidXRlTm9kZShbbmV3QXR0ciBfYXR0cl0sIGV4Y2VwdGlvbikuZ2V0KCldOwotICAg
IHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0g
KERPTUF0dHIgKilyZW1vdmVBdHRyaWJ1dGVOb2RlOihET01BdHRyICopb2xkQXR0cgotewotICAg
IEFTU0VSVChvbGRBdHRyKTsKLQotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTUF0dHIg
KnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPnJlbW92ZUF0dHJp
YnV0ZU5vZGUoW29sZEF0dHIgX2F0dHJdLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9u
RE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2Rl
TGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NF
UlQobmFtZSk7Ci0KLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYg
X2VsZW1lbnRdLT5nZXRFbGVtZW50c0J5VGFnTmFtZShuYW1lKS5nZXQoKV07Ci19Ci0KLS0gKE5T
U3RyaW5nICopZ2V0QXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJp
bmcgKilsb2NhbE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQo
bG9jYWxOYW1lKTsKLQotICAgIHJldHVybiBbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0ZU5T
KG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKLX0KLQotLSAodm9pZClzZXRBdHRyaWJ1dGVOUzoo
TlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0
cmluZyAqKXZhbHVlCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1
YWxpZmllZE5hbWUpOwotICAgIEFTU0VSVCh2YWx1ZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0g
MDsKLSAgICBbc2VsZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgcXVh
bGlmaWVkTmFtZSwgdmFsdWUsIGV4Y2VwdGlvbik7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2Vw
dGlvbik7Ci19Ci0KLS0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNw
YWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJ
KTsKLSAgICBBU1NFUlQobG9jYWxOYW1lKTsKLQotICAgIGludCBleGNlcHRpb24gPSAwOwotICAg
IFtzZWxmIF9lbGVtZW50XS0+cmVtb3ZlQXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5h
bWUsIGV4Y2VwdGlvbik7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci19Ci0KLS0g
KERPTUF0dHIgKilnZXRBdHRyaWJ1dGVOb2RlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDoo
TlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBB
U1NFUlQobG9jYWxOYW1lKTsKLQotICAgIHJldHVybiBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYg
X2VsZW1lbnRdLT5nZXRBdHRyaWJ1dGVOb2RlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpLmdl
dCgpXTsKLX0KLQotLSAoRE9NQXR0ciAqKXNldEF0dHJpYnV0ZU5vZGVOUzooRE9NQXR0ciAqKW5l
d0F0dHIKLXsKLSAgICBBU1NFUlQobmV3QXR0cik7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsK
LSAgICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2VsZW1lbnRd
LT5zZXRBdHRyaWJ1dGVOb2RlTlMoW25ld0F0dHIgX2F0dHJdLCBleGNlcHRpb24pLmdldCgpXTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFt
ZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNl
VVJJKTsKLSAgICBBU1NFUlQobG9jYWxOYW1lKTsKLQotICAgIHJldHVybiBbRE9NTm9kZUxpc3Qg
X25vZGVMaXN0V2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEVsZW1lbnRzQnlUYWdOYW1lTlMobmFt
ZXNwYWNlVVJJLCBsb2NhbE5hbWUpLmdldCgpXTsKLX0KLQotLSAoQk9PTCloYXNBdHRyaWJ1dGU6
KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLQotICAgIHJldHVybiBbc2Vs
ZiBfZWxlbWVudF0tPmhhc0F0dHJpYnV0ZShuYW1lKTsKLX0KLQotLSAoQk9PTCloYXNBdHRyaWJ1
dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewot
ICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAg
cmV0dXJuIFtzZWxmIF9lbGVtZW50XS0+aGFzQXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2Nh
bE5hbWUpOwotfQotCi0tICh2b2lkKWZvY3VzCi17Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5mb2N1
cygpOwotfQotCi0tICh2b2lkKWJsdXIKLXsKLSAgICBbc2VsZiBfZWxlbWVudF0tPmJsdXIoKTsK
LX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRWxlbWVudCAoRE9NRWxlbWVudENTU0lu
bGluZVN0eWxlKQotCi0tIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGUKLXsKLSAgICBy
ZXR1cm4gW0RPTUNTU1N0eWxlRGVjbGFyYXRpb24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOltzZWxm
IF9lbGVtZW50XS0+c3R5bGUoKV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUVs
ZW1lbnQgKERPTUVsZW1lbnRFeHRlbnNpb25zKQotCi0tIChOU0ltYWdlKilpbWFnZQotewotICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBbc2VsZiBfZWxlbWVudF0tPnJlbmRlcmVyKCk7Ci0g
ICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0ltYWdlKCkpIHsKLSAgICAgICAgUmVuZGVy
SW1hZ2UqIGltZyA9IHN0YXRpY19jYXN0PFJlbmRlckltYWdlKj4ocmVuZGVyZXIpOwotICAgICAg
ICBpZiAoaW1nLT5jYWNoZWRJbWFnZSgpICYmICFpbWctPmNhY2hlZEltYWdlKCktPmlzRXJyb3JJ
bWFnZSgpKQotICAgICAgICAgICAgcmV0dXJuIGltZy0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKS0+
Z2V0TlNJbWFnZSgpOwotICAgIH0KLSAgICByZXR1cm4gbmlsOwotfQotCi0tICh2b2lkKXNjcm9s
bEludG9WaWV3OihCT09MKWFsaWduVG9wCi17Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5zY3JvbGxJ
bnRvVmlldyhhbGlnblRvcCk7Ci19Ci0KLS0gKHZvaWQpc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZDoo
Qk9PTCljZW50ZXJJZk5lZWRlZAotewotICAgIFtzZWxmIF9lbGVtZW50XS0+c2Nyb2xsSW50b1Zp
ZXdJZk5lZWRlZChjZW50ZXJJZk5lZWRlZCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9u
IERPTUVsZW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NRWxlbWVudCAqKV9lbGVtZW50
V2l0aDooRWxlbWVudCAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRWxlbWVu
dCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwotfQotCi0tIChFbGVtZW50ICopX2VsZW1l
bnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudCAqPihET01fY2FzdDxOb2RlICo+
KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01FbGVtZW50IChX
ZWJQcml2YXRlKQotCi0tIChOU0ZvbnQgKilfZm9udAotewotICAgIFJlbmRlck9iamVjdCAqcmVu
ZGVyZXIgPSBbc2VsZiBfZWxlbWVudF0tPnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyKSB7
Ci0gICAgICAgIHJldHVybiByZW5kZXJlci0+c3R5bGUoKS0+Zm9udCgpLmdldE5TRm9udCgpOwot
ICAgIH0KLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChOU0RhdGEqKV9pbWFnZVRJRkZSZXByZXNl
bnRhdGlvbgotewotICAgIFJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBbc2VsZiBfZWxlbWVudF0t
PnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0ltYWdlKCkpIHsK
LSAgICAgICAgUmVuZGVySW1hZ2UqIGltZyA9IHN0YXRpY19jYXN0PFJlbmRlckltYWdlKj4ocmVu
ZGVyZXIpOwotICAgICAgICBpZiAoaW1nLT5jYWNoZWRJbWFnZSgpICYmICFpbWctPmNhY2hlZElt
YWdlKCktPmlzRXJyb3JJbWFnZSgpKQotICAgICAgICAgICAgcmV0dXJuIChOU0RhdGEqKShpbWct
PmNhY2hlZEltYWdlKCktPmltYWdlKCktPmdldFRJRkZSZXByZXNlbnRhdGlvbigpKTsKLSAgICB9
Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoTlNVUkwgKilfZ2V0VVJMQXR0cmlidXRlOihOU1N0
cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0gICAgRWxlbWVudCAqZSA9IFtzZWxm
IF9lbGVtZW50XTsKLSAgICBBU1NFUlQoZSk7Ci0gICAgcmV0dXJuIEtVUkwoZS0+ZG9jdW1lbnQo
KS0+Y29tcGxldGVVUkwocGFyc2VVUkwoZS0+Z2V0QXR0cmlidXRlKG5hbWUpKS5kZXByZWNhdGVk
U3RyaW5nKCkpKS5nZXROU1VSTCgpOwotfQotCi0tICh2b2lkICopX05QT2JqZWN0Ci17Ci0gICAg
RWxlbWVudCogZWxlbWVudCA9IFtzZWxmIF9lbGVtZW50XTsKLSAgICBpZiAoZWxlbWVudC0+aGFz
VGFnTmFtZShhcHBsZXRUYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoZW1iZWRUYWcpIHx8IGVs
ZW1lbnQtPmhhc1RhZ05hbWUob2JqZWN0VGFnKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Kj4oZWxlbWVudCktPmdldE5QT2JqZWN0KCk7Ci0g
ICAgZWxzZQotICAgICAgICByZXR1cm4gMDsKLX0KLQotLSAoQk9PTClpc0ZvY3VzZWQKLXsKLSAg
ICBFbGVtZW50KiBpbXBsID0gW3NlbGYgX2VsZW1lbnRdOwotICAgIGlmIChpbXBsLT5kb2N1bWVu
dCgpLT5mb2N1c05vZGUoKSA9PSBpbXBsKQotICAgICAgICByZXR1cm4gWUVTOwotICAgIHJldHVy
biBOTzsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ly8gRE9NVGV4dAotCi1AaW1wbGVtZW50YXRpb24gRE9NVGV4dAotCi0tIChUZXh0ICopX3RleHQK
LXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dCAqPihET01fY2FzdDxOb2RlICo+KF9pbnRl
cm5hbCkpOwotfQotCi0tIChET01UZXh0ICopc3BsaXRUZXh0Oih1bnNpZ25lZClvZmZzZXQKLXsK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9k
ZSBfbm9kZVdpdGg6W3NlbGYgX3RleHRdLT5zcGxpdFRleHQob2Zmc2V0LCBlYyldOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTVRleHQgKj4ocmVz
dWx0KTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ly8gRE9NQ29tbWVudAotCi1AaW1wbGVtZW50YXRpb24gRE9NQ29tbWVudAotCi1AZW5kCi0KLS8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01DREFUQVNlY3Rpb24KLQot
QGltcGxlbWVudGF0aW9uIERPTUNEQVRBU2VjdGlvbgotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Eb2N1bWVudFR5cGUKLQotQGltcGxlbWVudGF0
aW9uIERPTURvY3VtZW50VHlwZQotCi0tIChOU1N0cmluZyAqKW5hbWUKLXsKLSAgICByZXR1cm4g
W3NlbGYgX2RvY3VtZW50VHlwZV0tPnB1YmxpY0lkKCk7Ci19Ci0KLS0gKERPTU5hbWVkTm9kZU1h
cCAqKWVudGl0aWVzCi17Ci0gICAgcmV0dXJuIFtET01OYW1lZE5vZGVNYXAgX25hbWVkTm9kZU1h
cFdpdGg6W3NlbGYgX2RvY3VtZW50VHlwZV0tPmVudGl0aWVzKCldOwotfQotCi0tIChET01OYW1l
ZE5vZGVNYXAgKilub3RhdGlvbnMKLXsKLSAgICByZXR1cm4gW0RPTU5hbWVkTm9kZU1hcCBfbmFt
ZWROb2RlTWFwV2l0aDpbc2VsZiBfZG9jdW1lbnRUeXBlXS0+bm90YXRpb25zKCldOwotfQotCi0t
IChOU1N0cmluZyAqKXB1YmxpY0lkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9kb2N1bWVudFR5cGVd
LT5wdWJsaWNJZCgpOwotfQotCi0tIChOU1N0cmluZyAqKXN5c3RlbUlkCi17Ci0gICAgcmV0dXJu
IFtzZWxmIF9kb2N1bWVudFR5cGVdLT5zeXN0ZW1JZCgpOwotfQotCi0tIChOU1N0cmluZyAqKWlu
dGVybmFsU3Vic2V0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9kb2N1bWVudFR5cGVdLT5pbnRlcm5h
bFN1YnNldCgpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudFR5cGUg
KFdlYkNvcmVJbnRlcm5hbCkKLQotLSAoRG9jdW1lbnRUeXBlICopX2RvY3VtZW50VHlwZQotewot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudFR5cGUgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihf
aW50ZXJuYWwpKTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotLy8gRE9NTm90YXRpb24KLQotQGltcGxlbWVudGF0aW9uIERPTU5vdGF0aW9uCi0KLS0g
KE5vdGF0aW9uICopX25vdGF0aW9uCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PE5vdGF0aW9u
ICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopcHVi
bGljSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vdGF0aW9uXS0+cHVibGljSWQoKTsKLX0KLQot
LSAoTlNTdHJpbmcgKilzeXN0ZW1JZAotewotICAgIHJldHVybiBbc2VsZiBfbm90YXRpb25dLT5z
eXN0ZW1JZCgpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0vLyBET01FbnRpdHkKLQotQGltcGxlbWVudGF0aW9uIERPTUVudGl0eQotCi0tIChFbnRp
dHkgKilfZW50aXR5Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVudGl0eSAqPihET01fY2Fz
dDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChOU1N0cmluZyAqKXB1YmxpY0lkCi17Ci0g
ICAgcmV0dXJuIFtzZWxmIF9lbnRpdHldLT5wdWJsaWNJZCgpOwotfQotCi0tIChOU1N0cmluZyAq
KXN5c3RlbUlkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9lbnRpdHldLT5zeXN0ZW1JZCgpOwotfQot
Ci0tIChOU1N0cmluZyAqKW5vdGF0aW9uTmFtZQotewotICAgIHJldHVybiBbc2VsZiBfZW50aXR5
XS0+bm90YXRpb25OYW1lKCk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS8vIERPTUVudGl0eVJlZmVyZW5jZQotCi1AaW1wbGVtZW50YXRpb24gRE9N
RW50aXR5UmVmZXJlbmNlCi0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLS8vIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbgotCi1AaW1wbGVtZW50YXRpb24gRE9N
UHJvY2Vzc2luZ0luc3RydWN0aW9uCi0KLS0gKFByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKV9wcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24KLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJvY2Vzc2luZ0lu
c3RydWN0aW9uICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3Ry
aW5nICopdGFyZ2V0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9wcm9jZXNzaW5nSW5zdHJ1Y3Rpb25d
LT50YXJnZXQoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgcmV0dXJuIFtzZWxm
IF9wcm9jZXNzaW5nSW5zdHJ1Y3Rpb25dLT5kYXRhKCk7Ci19Ci0KLS0gKHZvaWQpc2V0RGF0YToo
TlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwotCi0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbl0tPnNldERhdGEoZGF0
YSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTVJhbmdlCi0KLUBpbXBsZW1lbnRhdGlv
biBET01SYW5nZQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0g
ICAgICAgIERPTV9jYXN0PFJhbmdlICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAg
IFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50
ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8UmFuZ2UgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsK
LSAgICB9Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQotLSAoTlNTdHJpbmcgKilkZXNjcmlw
dGlvbgotewotICAgIGlmICghX2ludGVybmFsKQotICAgICAgICByZXR1cm4gQCI8RE9NUmFuZ2U6
IG51bGw+IjsKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8RE9NUmFu
Z2U6ICVAICVkICVAICVkPiIsCi0gICAgICAgIFtzZWxmIHN0YXJ0Q29udGFpbmVyXSwgW3NlbGYg
c3RhcnRPZmZzZXRdLAotICAgICAgICBbc2VsZiBlbmRDb250YWluZXJdLCBbc2VsZiBlbmRPZmZz
ZXRdXTsKLX0KLQotLSAoRE9NTm9kZSAqKXN0YXJ0Q29udGFpbmVyCi17Ci0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltz
ZWxmIF9yYW5nZV0tPnN0YXJ0Q29udGFpbmVyKGVjKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVj
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChpbnQpc3RhcnRPZmZzZXQKLXsKLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbnQgcmVzdWx0ID0gW3NlbGYgX3JhbmdlXS0+c3Rh
cnRPZmZzZXQoZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotLSAoRE9NTm9kZSAqKWVuZENvbnRhaW5lcgotewotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBf
cmFuZ2VdLT5lbmRDb250YWluZXIoZWMpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKGludCllbmRPZmZzZXQKLXsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBpbnQgcmVzdWx0ID0gW3NlbGYgX3JhbmdlXS0+ZW5kT2Zmc2V0KGVj
KTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0g
KEJPT0wpY29sbGFwc2VkCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgQk9PTCBy
ZXN1bHQgPSBbc2VsZiBfcmFuZ2VdLT5jb2xsYXBzZWQoZWMpOwotICAgIHJhaXNlT25ET01FcnJv
cihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZSAqKWNvbW1vbkFuY2Vz
dG9yQ29udGFpbmVyCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAq
cmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9yYW5nZV0tPmNvbW1vbkFuY2VzdG9y
Q29udGFpbmVyKGVjKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi0tICh2b2lkKXNldFN0YXJ0OihET01Ob2RlICopcmVmTm9kZSA6KGludClvZmZz
ZXQKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5zZXRT
dGFydChbcmVmTm9kZSBfbm9kZV0sIG9mZnNldCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7Ci19Ci0KLS0gKHZvaWQpc2V0RW5kOihET01Ob2RlICopcmVmTm9kZSA6KGludClvZmZzZXQK
LXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5zZXRFbmQo
W3JlZk5vZGUgX25vZGVdLCBvZmZzZXQsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwot
fQotCi0tICh2b2lkKXNldFN0YXJ0QmVmb3JlOihET01Ob2RlICopcmVmTm9kZQotewotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9yYW5nZV0tPnNldFN0YXJ0QmVmb3JlKFty
ZWZOb2RlIF9ub2RlXSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZv
aWQpc2V0U3RhcnRBZnRlcjooRE9NTm9kZSAqKXJlZk5vZGUKLXsKLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5zZXRTdGFydEFmdGVyKFtyZWZOb2RlIF9ub2Rl
XSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc2V0RW5kQmVm
b3JlOihET01Ob2RlICopcmVmTm9kZQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IFtzZWxmIF9yYW5nZV0tPnNldEVuZEJlZm9yZShbcmVmTm9kZSBfbm9kZV0sIGVjKTsKLSAgICBy
YWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKXNldEVuZEFmdGVyOihET01Ob2RlICop
cmVmTm9kZQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9yYW5nZV0t
PnNldEVuZEFmdGVyKFtyZWZOb2RlIF9ub2RlXSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7Ci19Ci0KLS0gKHZvaWQpY29sbGFwc2U6KEJPT0wpdG9TdGFydAotewotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9yYW5nZV0tPmNvbGxhcHNlKHRvU3RhcnQsIGVjKTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKXNlbGVjdE5vZGU6KERPTU5v
ZGUgKilyZWZOb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3Jh
bmdlXS0+c2VsZWN0Tm9kZShbcmVmTm9kZSBfbm9kZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwotfQotCi0tICh2b2lkKXNlbGVjdE5vZGVDb250ZW50czooRE9NTm9kZSAqKXJlZk5v
ZGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5zZWxl
Y3ROb2RlQ29udGVudHMoW3JlZk5vZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLX0KLQotLSAoc2hvcnQpY29tcGFyZUJvdW5kYXJ5UG9pbnRzOih1bnNpZ25lZCBzaG9y
dClob3cgOihET01SYW5nZSAqKXNvdXJjZVJhbmdlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgc2hvcnQgcmVzdWx0ID0gW3NlbGYgX3JhbmdlXS0+Y29tcGFyZUJvdW5kYXJ5UG9p
bnRzKHN0YXRpY19jYXN0PFJhbmdlOjpDb21wYXJlSG93Pihob3cpLCBbc291cmNlUmFuZ2UgX3Jh
bmdlXSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotLSAodm9pZClkZWxldGVDb250ZW50cwotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIFtzZWxmIF9yYW5nZV0tPmRlbGV0ZUNvbnRlbnRzKGVjKTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOwotfQotCi0tIChET01Eb2N1bWVudEZyYWdtZW50ICopZXh0cmFjdENvbnRlbnRz
Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NRG9jdW1lbnRGcmFnbWVudCAq
cmVzdWx0ID0gW0RPTURvY3VtZW50RnJhZ21lbnQgX2RvY3VtZW50RnJhZ21lbnRXaXRoOltzZWxm
IF9yYW5nZV0tPmV4dHJhY3RDb250ZW50cyhlYykuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJv
cihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAq
KWNsb25lQ29udGVudHMKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Eb2N1
bWVudEZyYWdtZW50ICpyZXN1bHQgPSBbRE9NRG9jdW1lbnRGcmFnbWVudCBfZG9jdW1lbnRGcmFn
bWVudFdpdGg6W3NlbGYgX3JhbmdlXS0+Y2xvbmVDb250ZW50cyhlYykuZ2V0KCldOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAodm9pZClpbnNl
cnROb2RlOihET01Ob2RlICopbmV3Tm9kZQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIFtzZWxmIF9yYW5nZV0tPmluc2VydE5vZGUoW25ld05vZGUgX25vZGVdLCBlYyk7Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClzdXJyb3VuZENvbnRlbnRzOihET01O
b2RlICopbmV3UGFyZW50Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYg
X3JhbmdlXS0+c3Vycm91bmRDb250ZW50cyhbbmV3UGFyZW50IF9ub2RlXSwgZWMpOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKERPTVJhbmdlICopY2xvbmVSYW5nZQotewotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTVJhbmdlICpyZXN1bHQgPSBbRE9NUmFuZ2Ug
X3JhbmdlV2l0aDpbc2VsZiBfcmFuZ2VdLT5jbG9uZVJhbmdlKGVjKS5nZXQoKV07Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChOU1N0cmluZyAq
KXRvU3RyaW5nCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgTlNTdHJpbmcgKnJl
c3VsdCA9IFtzZWxmIF9yYW5nZV0tPnRvU3RyaW5nKGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3Io
ZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKE5TU3RyaW5nICopdGV4dAotewotICAg
IHJldHVybiBbc2VsZiBfcmFuZ2VdLT50ZXh0KCk7Ci19Ci0KLS0gKHZvaWQpZGV0YWNoCi17Ci0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+ZGV0YWNoKGVjKTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBE
T01SYW5nZSAoV2ViQ29yZUludGVybmFsKQotCi0tIChpZClfaW5pdFdpdGhSYW5nZTooUmFuZ2Ug
KilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBf
aW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBs
LT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxm
OwotfQotCi0rIChET01SYW5nZSAqKV9yYW5nZVdpdGg6KFJhbmdlICopaW1wbAotewotICAgIGlm
ICghaW1wbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5j
ZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNh
Y2hlZEluc3RhbmNlKQotICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1
dG9yZWxlYXNlXTsKLSAgICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoUmFu
Z2U6aW1wbF0gYXV0b3JlbGVhc2VdOwotfQotCi0tIChSYW5nZSAqKV9yYW5nZQotewotICAgIHJl
dHVybiBET01fY2FzdDxSYW5nZSAqPihfaW50ZXJuYWwpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1l
bnRhdGlvbiBET01SYW5nZSAoV2ViUHJpdmF0ZSkKLQotLSAoTlNTdHJpbmcgKilfdGV4dAotewot
ICAgIHJldHVybiBbc2VsZiB0ZXh0XTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci1AaW1wbGVtZW50YXRpb24gRE9NTm9kZUZpbHRlcgotCi0tIChpZClfaW5pdFdpdGhOb2RlRmls
dGVyOihOb2RlRmlsdGVyICopaW1wbAotewotICAgIEFTU0VSVChpbXBsKTsKLQotICAgIFtzdXBl
ciBfaW5pdF07Ci0gICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4o
aW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsK
LSAgICByZXR1cm4gc2VsZjsKLX0KLQotKyAoRE9NTm9kZUZpbHRlciAqKV9ub2RlRmlsdGVyV2l0
aDooTm9kZUZpbHRlciAqKWltcGwKLXsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAgY2FjaGVkSW5zdGFuY2UgPSBn
ZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKLSAgICAgICAgcmV0
dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgCi0gICAgcmV0
dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aE5vZGVGaWx0ZXI6aW1wbF0gYXV0b3JlbGVhc2Vd
OwotfQotCi0tIChOb2RlRmlsdGVyICopX25vZGVGaWx0ZXIKLXsKLSAgICByZXR1cm4gRE9NX2Nh
c3Q8Tm9kZUZpbHRlciAqPihfaW50ZXJuYWwpOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAg
ICBpZiAoX2ludGVybmFsKQotICAgICAgICBET01fY2FzdDxOb2RlRmlsdGVyICo+KF9pbnRlcm5h
bCktPmRlcmVmKCk7Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXpl
Ci17Ci0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZUZpbHRlciAqPihf
aW50ZXJuYWwpLT5kZXJlZigpOwotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19Ci0KLS0gKHNob3J0
KWFjY2VwdE5vZGU6KERPTU5vZGUgKilub2RlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlRmls
dGVyXS0+YWNjZXB0Tm9kZShbbm9kZSBfbm9kZV0pOwotfQotCi1AZW5kCi0KLQotQGltcGxlbWVu
dGF0aW9uIERPTU5vZGVJdGVyYXRvcgotCi0tIChpZClfaW5pdFdpdGhOb2RlSXRlcmF0b3I6KE5v
ZGVJdGVyYXRvciAqKWltcGwgZmlsdGVyOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0g
ICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBE
T01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAg
ICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIG1fZmlsdGVyID0gW2ZpbHRlciByZXRh
aW5dOwotICAgIHJldHVybiBzZWxmOwotfQotCi0tIChOb2RlSXRlcmF0b3IgKilfbm9kZUl0ZXJh
dG9yCi17Ci0gICAgcmV0dXJuIERPTV9jYXN0PE5vZGVJdGVyYXRvciAqPihfaW50ZXJuYWwpOwot
fQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbbV9maWx0ZXIgcmVsZWFzZV07Ci0gICAgaWYg
KF9pbnRlcm5hbCkgewotICAgICAgICBbc2VsZiBkZXRhY2hdOwotICAgICAgICBET01fY2FzdDxO
b2RlSXRlcmF0b3IgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGRl
YWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewot
ICAgICAgICBbc2VsZiBkZXRhY2hdOwotICAgICAgICBET01fY2FzdDxOb2RlSXRlcmF0b3IgKj4o
X2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQot
LSAoRE9NTm9kZSAqKXJvb3QKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxm
IF9ub2RlSXRlcmF0b3JdLT5yb290KCldOwotfQotCi0tICh1bnNpZ25lZCl3aGF0VG9TaG93Ci17
Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlSXRlcmF0b3JdLT53aGF0VG9TaG93KCk7Ci19Ci0KLS0g
KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIKLXsKLSAgICBpZiAobV9maWx0ZXIpCi0gICAgICAg
IC8vIFRoaXMgbm9kZSBpdGVyYXRvciB3YXMgY3JlYXRlZCBmcm9tIHRoZSBvYmpjIHNpZGUKLSAg
ICAgICAgcmV0dXJuIFtbbV9maWx0ZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0KLSAgICAvLyBU
aGlzIG5vZGUgaXRlcmF0b3Igd2FzIGNyZWF0ZWQgZnJvbSB0aGUgYysrIHNpZGUKLSAgICByZXR1
cm4gW0RPTU5vZGVGaWx0ZXIgX25vZGVGaWx0ZXJXaXRoOltzZWxmIF9ub2RlSXRlcmF0b3JdLT5m
aWx0ZXIoKV07Ci19Ci0KLS0gKEJPT0wpZXhwYW5kRW50aXR5UmVmZXJlbmNlcwotewotICAgIHJl
dHVybiBbc2VsZiBfbm9kZUl0ZXJhdG9yXS0+ZXhwYW5kRW50aXR5UmVmZXJlbmNlcygpOwotfQot
Ci0tIChET01Ob2RlICopbmV4dE5vZGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVJdGVyYXRv
cl0tPm5leHROb2RlKGVjKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi0tIChET01Ob2RlICopcHJldmlvdXNOb2RlCi17Ci0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltz
ZWxmIF9ub2RlSXRlcmF0b3JdLT5wcmV2aW91c05vZGUoZWMpXTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKHZvaWQpZGV0YWNoCi17Ci0gICAg
W3NlbGYgX25vZGVJdGVyYXRvcl0tPmRldGFjaCgpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRh
dGlvbiBET01Ob2RlSXRlcmF0b3IoV2ViQ29yZUludGVybmFsKQotCi0rIChET01Ob2RlSXRlcmF0
b3IgKilfbm9kZUl0ZXJhdG9yV2l0aDooTm9kZUl0ZXJhdG9yICopaW1wbCBmaWx0ZXI6KGlkIDxE
T01Ob2RlRmlsdGVyPilmaWx0ZXIKLXsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAgY2FjaGVkSW5zdGFuY2UgPSBn
ZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKLSAgICAgICAgcmV0
dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgCi0gICAgcmV0
dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aE5vZGVJdGVyYXRvcjppbXBsIGZpbHRlcjpmaWx0
ZXJdIGF1dG9yZWxlYXNlXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NVHJlZVdh
bGtlcgotCi0tIChpZClfaW5pdFdpdGhUcmVlV2Fsa2VyOihUcmVlV2Fsa2VyICopaW1wbCBmaWx0
ZXI6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAg
ICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVy
bmFsICo+KGltcGwpOwotICAgIGltcGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwg
aW1wbCk7Ci0gICAgbV9maWx0ZXIgPSBbZmlsdGVyIHJldGFpbl07Ci0gICAgcmV0dXJuIHNlbGY7
Ci19Ci0KLS0gKFRyZWVXYWxrZXIgKilfdHJlZVdhbGtlcgotewotICAgIHJldHVybiBET01fY2Fz
dDxUcmVlV2Fsa2VyICo+KF9pbnRlcm5hbCk7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAg
IGlmIChtX2ZpbHRlcikKLSAgICAgICAgW21fZmlsdGVyIHJlbGVhc2VdOwotICAgIGlmIChfaW50
ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8VHJlZVdhbGtlciAqPihfaW50ZXJuYWwpLT5kZXJl
ZigpOwotICAgIH0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUK
LXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PFRyZWVXYWxrZXIgKj4o
X2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQot
LSAoRE9NTm9kZSAqKXJvb3QKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxm
IF90cmVlV2Fsa2VyXS0+cm9vdCgpXTsKLX0KLQotLSAodW5zaWduZWQpd2hhdFRvU2hvdwotewot
ICAgIHJldHVybiBbc2VsZiBfdHJlZVdhbGtlcl0tPndoYXRUb1Nob3coKTsKLX0KLQotLSAoaWQg
PERPTU5vZGVGaWx0ZXI+KWZpbHRlcgotewotICAgIGlmIChtX2ZpbHRlcikKLSAgICAgICAgLy8g
VGhpcyB0cmVlIHdhbGtlciB3YXMgY3JlYXRlZCBmcm9tIHRoZSBvYmpjIHNpZGUKLSAgICAgICAg
cmV0dXJuIFtbbV9maWx0ZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0KLSAgICAvLyBUaGlzIHRy
ZWUgd2Fsa2VyIHdhcyBjcmVhdGVkIGZyb20gdGhlIGMrKyBzaWRlCi0gICAgcmV0dXJuIFtET01O
b2RlRmlsdGVyIF9ub2RlRmlsdGVyV2l0aDpbc2VsZiBfdHJlZVdhbGtlcl0tPmZpbHRlcigpXTsK
LX0KLQotLSAoQk9PTClleHBhbmRFbnRpdHlSZWZlcmVuY2VzCi17Ci0gICAgcmV0dXJuIFtzZWxm
IF90cmVlV2Fsa2VyXS0+ZXhwYW5kRW50aXR5UmVmZXJlbmNlcygpOwotfQotCi0tIChET01Ob2Rl
ICopY3VycmVudE5vZGUKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90
cmVlV2Fsa2VyXS0+Y3VycmVudE5vZGUoKV07Ci19Ci0KLS0gKHZvaWQpc2V0Q3VycmVudE5vZGU6
KERPTU5vZGUgKiljdXJyZW50Tm9kZQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IFtzZWxmIF90cmVlV2Fsa2VyXS0+c2V0Q3VycmVudE5vZGUoW2N1cnJlbnROb2RlIF9ub2RlXSwg
ZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKERPTU5vZGUgKilwYXJlbnRO
b2RlCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfdHJlZVdhbGtlcl0t
PnBhcmVudE5vZGUoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilmaXJzdENoaWxkCi17Ci0gICAgcmV0
dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfdHJlZVdhbGtlcl0tPmZpcnN0Q2hpbGQoKV07
Ci19Ci0KLS0gKERPTU5vZGUgKilsYXN0Q2hpbGQKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25v
ZGVXaXRoOltzZWxmIF90cmVlV2Fsa2VyXS0+bGFzdENoaWxkKCldOwotfQotCi0tIChET01Ob2Rl
ICopcHJldmlvdXNTaWJsaW5nCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2Vs
ZiBfdHJlZVdhbGtlcl0tPnByZXZpb3VzU2libGluZygpXTsKLX0KLQotLSAoRE9NTm9kZSAqKW5l
eHRTaWJsaW5nCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfdHJlZVdh
bGtlcl0tPm5leHRTaWJsaW5nKCldOwotfQotCi0tIChET01Ob2RlICopcHJldmlvdXNOb2RlCi17
Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfdHJlZVdhbGtlcl0tPnByZXZp
b3VzTm9kZSgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKW5leHROb2RlCi17Ci0gICAgcmV0dXJuIFtE
T01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfdHJlZVdhbGtlcl0tPm5leHROb2RlKCldOwotfQotCi1A
ZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01UcmVlV2Fsa2VyIChXZWJDb3JlSW50ZXJuYWwpCi0K
LSsgKERPTVRyZWVXYWxrZXIgKilfdHJlZVdhbGtlcldpdGg6KFRyZWVXYWxrZXIgKilpbXBsIGZp
bHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgotewotICAgIGlmICghaW1wbCkKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJ
bnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQot
ICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAg
ICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoVHJlZVdhbGtlcjppbXBsIGZp
bHRlcjpmaWx0ZXJdIGF1dG9yZWxlYXNlXTsKLX0KLQotQGVuZAotCi1jbGFzcyBPYmpDTm9kZUZp
bHRlckNvbmRpdGlvbiA6IHB1YmxpYyBOb2RlRmlsdGVyQ29uZGl0aW9uIAotewotcHVibGljOgot
ICAgIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKGlkIDxET01Ob2RlRmlsdGVyPik7Ci0gICAgdmly
dHVhbCB+T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oKTsKLSAgICB2aXJ0dWFsIHNob3J0IGFjY2Vw
dE5vZGUoTm9kZSopIGNvbnN0OwotCi1wcml2YXRlOgotICAgIE9iakNOb2RlRmlsdGVyQ29uZGl0
aW9uKGNvbnN0IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uICYpOwotICAgIE9iakNOb2RlRmlsdGVy
Q29uZGl0aW9uICZvcGVyYXRvcj0oY29uc3QgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24gJik7Ci0K
LSAgICBpZCA8RE9NTm9kZUZpbHRlcj4gbV9maWx0ZXI7Ci19OwotCi1PYmpDTm9kZUZpbHRlckNv
bmRpdGlvbjo6T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oaWQgPERPTU5vZGVGaWx0ZXI+IGZpbHRl
cikKLSAgICA6IG1fZmlsdGVyKGZpbHRlcikKLXsKLSAgICBBU1NFUlQobV9maWx0ZXIpOwotICAg
IENGUmV0YWluKG1fZmlsdGVyKTsKLX0KLQotT2JqQ05vZGVGaWx0ZXJDb25kaXRpb246On5PYmpD
Tm9kZUZpbHRlckNvbmRpdGlvbigpCi17Ci0gICAgQ0ZSZWxlYXNlKG1fZmlsdGVyKTsKLX0KLQot
c2hvcnQgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb246OmFjY2VwdE5vZGUoTm9kZSogbm9kZSkgY29u
c3QKLXsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiBOb2RlRmlsdGVyOjpGSUxURVJf
UkVKRUNUOwotICAgIHJldHVybiBbbV9maWx0ZXIgYWNjZXB0Tm9kZTpbRE9NTm9kZSBfbm9kZVdp
dGg6bm9kZV1dOwotfQotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50
VHJhdmVyc2FsKQotCi0tIChET01Ob2RlSXRlcmF0b3IgKiljcmVhdGVOb2RlSXRlcmF0b3I6KERP
TU5vZGUgKilyb290IDoodW5zaWduZWQpd2hhdFRvU2hvdyA6KGlkIDxET01Ob2RlRmlsdGVyPilm
aWx0ZXIgOihCT09MKWV4cGFuZEVudGl0eVJlZmVyZW5jZXMKLXsKLSAgICBSZWZQdHI8Tm9kZUZp
bHRlcj4gY3BwRmlsdGVyOwotICAgIGlmIChmaWx0ZXIpCi0gICAgICAgIGNwcEZpbHRlciA9IG5l
dyBOb2RlRmlsdGVyKG5ldyBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihmaWx0ZXIpKTsKLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8Tm9kZUl0ZXJhdG9yPiBpbXBsID0gW3Nl
bGYgX2RvY3VtZW50XS0+Y3JlYXRlTm9kZUl0ZXJhdG9yKFtyb290IF9ub2RlXSwgd2hhdFRvU2hv
dywgY3BwRmlsdGVyLCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzLCBlYyk7Ci0gICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKLSAgICByZXR1cm4gW0RPTU5vZGVJdGVyYXRvciBfbm9kZUl0ZXJhdG9yV2l0
aDppbXBsLmdldCgpIGZpbHRlcjpmaWx0ZXJdOwotfQotCi0tIChET01UcmVlV2Fsa2VyICopY3Jl
YXRlVHJlZVdhbGtlcjooRE9NTm9kZSAqKXJvb3QgOih1bnNpZ25lZCl3aGF0VG9TaG93IDooaWQg
PERPTU5vZGVGaWx0ZXI+KWZpbHRlciA6KEJPT0wpZXhwYW5kRW50aXR5UmVmZXJlbmNlcwotewot
ICAgIFJlZlB0cjxOb2RlRmlsdGVyPiBjcHBGaWx0ZXI7Ci0gICAgaWYgKGZpbHRlcikKLSAgICAg
ICAgY3BwRmlsdGVyID0gbmV3IE5vZGVGaWx0ZXIobmV3IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9u
KGZpbHRlcikpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxUcmVlV2Fs
a2VyPiBpbXBsID0gW3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlVHJlZVdhbGtlcihbcm9vdCBfbm9k
ZV0sIHdoYXRUb1Nob3csIGNwcEZpbHRlciwgZXhwYW5kRW50aXR5UmVmZXJlbmNlcywgZWMpOwot
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIFtET01UcmVlV2Fsa2VyIF90cmVl
V2Fsa2VyV2l0aDppbXBsLmdldCgpIGZpbHRlcjpmaWx0ZXJdOwotfQotCi1AZW5kCi0KLU9iakNF
dmVudExpc3RlbmVyKiBPYmpDRXZlbnRMaXN0ZW5lcjo6ZmluZChpZCA8RE9NRXZlbnRMaXN0ZW5l
cj4gbGlzdGVuZXIpCi17Ci0gICAgaWYgKExpc3RlbmVyTWFwKiBtYXAgPSBsaXN0ZW5lck1hcCkK
LSAgICAgICAgcmV0dXJuIG1hcC0+Z2V0KGxpc3RlbmVyKTsKLSAgICByZXR1cm4gTlVMTDsKLX0K
LQotT2JqQ0V2ZW50TGlzdGVuZXIgKk9iakNFdmVudExpc3RlbmVyOjpjcmVhdGUoaWQgPERPTUV2
ZW50TGlzdGVuZXI+IGxpc3RlbmVyKQotewotICAgIE9iakNFdmVudExpc3RlbmVyICp3cmFwcGVy
ID0gZmluZChsaXN0ZW5lcik7Ci0gICAgaWYgKCF3cmFwcGVyKQotICAgICAgICB3cmFwcGVyID0g
bmV3IE9iakNFdmVudExpc3RlbmVyKGxpc3RlbmVyKTsKLSAgICB3cmFwcGVyLT5yZWYoKTsKLSAg
ICByZXR1cm4gd3JhcHBlcjsKLX0KLQotT2JqQ0V2ZW50TGlzdGVuZXI6Ok9iakNFdmVudExpc3Rl
bmVyKGlkIDxET01FdmVudExpc3RlbmVyPiBsaXN0ZW5lcikKLSAgICA6IG1fbGlzdGVuZXIoW2xp
c3RlbmVyIHJldGFpbl0pCi17Ci0gICAgTGlzdGVuZXJNYXAqIG1hcCA9IGxpc3RlbmVyTWFwOwot
ICAgIGlmICghbWFwKSB7Ci0gICAgICAgIG1hcCA9IG5ldyBMaXN0ZW5lck1hcDsKLSAgICAgICAg
bGlzdGVuZXJNYXAgPSBtYXA7Ci0gICAgfQotICAgIG1hcC0+c2V0KGxpc3RlbmVyLCB0aGlzKTsK
LX0KLQotT2JqQ0V2ZW50TGlzdGVuZXI6On5PYmpDRXZlbnRMaXN0ZW5lcigpCi17Ci0gICAgbGlz
dGVuZXJNYXAtPnJlbW92ZShtX2xpc3RlbmVyKTsKLSAgICBbbV9saXN0ZW5lciByZWxlYXNlXTsK
LX0KLQotdm9pZCBPYmpDRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoRXZlbnQgKmV2ZW50LCBi
b29sKQotewotICAgIFttX2xpc3RlbmVyIGhhbmRsZUV2ZW50OltET01FdmVudCBfZXZlbnRXaXRo
OmV2ZW50XV07Ci19CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FbGVtZW50LmgJKHJldmlzaW9u
IDE1OTU5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEzOCArMjQsMTEgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAog
ICovCiAKLSNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL0RPTU5vZGUuaD4KIAotQGNsYXNzIERPTURvY3VtZW50OyAKLUBjbGFzcyBET01Eb2N1bWVu
dFR5cGU7Ci1AY2xhc3MgRE9NRWxlbWVudDsKLUBjbGFzcyBET01OYW1lZE5vZGVNYXA7CitAY2xh
c3MgRE9NQXR0cjsKIEBjbGFzcyBET01Ob2RlTGlzdDsKIAotdHlwZWRlZiBzdHJ1Y3QgRE9NT2Jq
ZWN0SW50ZXJuYWwgRE9NT2JqZWN0SW50ZXJuYWw7Ci0KLUBpbnRlcmZhY2UgRE9NT2JqZWN0IDog
V2ViU2NyaXB0T2JqZWN0IDxOU0NvcHlpbmc+Ci17Ci0gICAgRE9NT2JqZWN0SW50ZXJuYWwgKl9p
bnRlcm5hbDsKLX0KLUBlbmQKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgRE9NVGltZVN0
YW1wOwotCi1leHRlcm4gTlNTdHJpbmcgKiBjb25zdCBET01FeGNlcHRpb247Ci0KLWVudW0gewot
ICAgIC8vCi0gICAgLy8gRE9NIGV4Y2VwdGlvbiBjb2RlcwotICAgIC8vCi0gICAgRE9NX0lOREVY
X1NJWkVfRVJSICAgICAgICAgICAgICAgID0gMSwKLSAgICBET01fRE9NU1RSSU5HX1NJWkVfRVJS
ICAgICAgICAgICAgPSAyLAotICAgIERPTV9ISUVSQVJDSFlfUkVRVUVTVF9FUlIgICAgICAgICA9
IDMsCi0gICAgRE9NX1dST05HX0RPQ1VNRU5UX0VSUiAgICAgICAgICAgID0gNCwKLSAgICBET01f
SU5WQUxJRF9DSEFSQUNURVJfRVJSICAgICAgICAgPSA1LAotICAgIERPTV9OT19EQVRBX0FMTE9X
RURfRVJSICAgICAgICAgICA9IDYsCi0gICAgRE9NX05PX01PRElGSUNBVElPTl9BTExPV0VEX0VS
UiAgID0gNywKLSAgICBET01fTk9UX0ZPVU5EX0VSUiAgICAgICAgICAgICAgICAgPSA4LAotICAg
IERPTV9OT1RfU1VQUE9SVEVEX0VSUiAgICAgICAgICAgICA9IDksCi0gICAgRE9NX0lOVVNFX0FU
VFJJQlVURV9FUlIgICAgICAgICAgID0gMTAsCi0gICAgRE9NX0lOVkFMSURfU1RBVEVfRVJSICAg
ICAgICAgICAgID0gMTEsCi0gICAgRE9NX1NZTlRBWF9FUlIgICAgICAgICAgICAgICAgICAgID0g
MTIsCi0gICAgRE9NX0lOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiAgICAgID0gMTMsCi0gICAgRE9N
X05BTUVTUEFDRV9FUlIgICAgICAgICAgICAgICAgID0gMTQsCi0gICAgRE9NX0lOVkFMSURfQUND
RVNTX0VSUiAgICAgICAgICAgID0gMTUKLX07Ci0KLUBpbnRlcmZhY2UgRE9NSW1wbGVtZW50YXRp
b24gOiBET01PYmplY3QKLS0gKEJPT0wpaGFzRmVhdHVyZTooTlNTdHJpbmcgKilmZWF0dXJlIDoo
TlNTdHJpbmcgKil2ZXJzaW9uOwotLSAoRE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRU
eXBlOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXB1YmxpY0lkIDooTlNT
dHJpbmcgKilzeXN0ZW1JZDsKLS0gKERPTURvY3VtZW50ICopY3JlYXRlRG9jdW1lbnQ6KE5TU3Ry
aW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooRE9NRG9jdW1l
bnRUeXBlICopZG9jdHlwZTsKLUBlbmQKLQotZW51bSB7Ci0gICAgLy8KLSAgICAvLyBET00gbm9k
ZSB0eXBlcwotICAgIC8vCi0gICAgRE9NX0VMRU1FTlRfTk9ERSAgICAgICAgICAgICAgICAgID0g
MSwKLSAgICBET01fQVRUUklCVVRFX05PREUgICAgICAgICAgICAgICAgPSAyLAotICAgIERPTV9U
RVhUX05PREUgICAgICAgICAgICAgICAgICAgICA9IDMsCi0gICAgRE9NX0NEQVRBX1NFQ1RJT05f
Tk9ERSAgICAgICAgICAgID0gNCwKLSAgICBET01fRU5USVRZX1JFRkVSRU5DRV9OT0RFICAgICAg
ICAgPSA1LAotICAgIERPTV9FTlRJVFlfTk9ERSAgICAgICAgICAgICAgICAgICA9IDYsCi0gICAg
RE9NX1BST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSAgID0gNywKLSAgICBET01fQ09NTUVOVF9O
T0RFICAgICAgICAgICAgICAgICAgPSA4LAotICAgIERPTV9ET0NVTUVOVF9OT0RFICAgICAgICAg
ICAgICAgICA9IDksCi0gICAgRE9NX0RPQ1VNRU5UX1RZUEVfTk9ERSAgICAgICAgICAgID0gMTAs
Ci0gICAgRE9NX0RPQ1VNRU5UX0ZSQUdNRU5UX05PREUgICAgICAgID0gMTEsCi0gICAgRE9NX05P
VEFUSU9OX05PREUgICAgICAgICAgICAgICAgID0gMTIKLX07Ci0KLUBpbnRlcmZhY2UgRE9NTm9k
ZSA6IERPTU9iamVjdAotLSAoTlNTdHJpbmcgKilub2RlTmFtZTsKLS0gKE5TU3RyaW5nICopbm9k
ZVZhbHVlOwotLSAodm9pZClzZXROb2RlVmFsdWU6KE5TU3RyaW5nICopc3RyaW5nOwotLSAodW5z
aWduZWQgc2hvcnQpbm9kZVR5cGU7Ci0tIChET01Ob2RlICopcGFyZW50Tm9kZTsKLS0gKERPTU5v
ZGVMaXN0ICopY2hpbGROb2RlczsKLS0gKERPTU5vZGUgKilmaXJzdENoaWxkOwotLSAoRE9NTm9k
ZSAqKWxhc3RDaGlsZDsKLS0gKERPTU5vZGUgKilwcmV2aW91c1NpYmxpbmc7Ci0tIChET01Ob2Rl
ICopbmV4dFNpYmxpbmc7Ci0tIChET01OYW1lZE5vZGVNYXAgKilhdHRyaWJ1dGVzOwotLSAoRE9N
RG9jdW1lbnQgKilvd25lckRvY3VtZW50OwotLSAoRE9NTm9kZSAqKWluc2VydEJlZm9yZTooRE9N
Tm9kZSAqKW5ld0NoaWxkIDooRE9NTm9kZSAqKXJlZkNoaWxkOwotLSAoRE9NTm9kZSAqKXJlcGxh
Y2VDaGlsZDooRE9NTm9kZSAqKW5ld0NoaWxkIDooRE9NTm9kZSAqKW9sZENoaWxkOwotLSAoRE9N
Tm9kZSAqKXJlbW92ZUNoaWxkOihET01Ob2RlICopb2xkQ2hpbGQ7Ci0tIChET01Ob2RlICopYXBw
ZW5kQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGlsZDsKLS0gKEJPT0wpaGFzQ2hpbGROb2RlczsKLS0g
KERPTU5vZGUgKiljbG9uZU5vZGU6KEJPT0wpZGVlcDsKLS0gKHZvaWQpbm9ybWFsaXplOwotLSAo
Qk9PTClpc1N1cHBvcnRlZDooTlNTdHJpbmcgKilmZWF0dXJlIDooTlNTdHJpbmcgKil2ZXJzaW9u
OwotLSAoTlNTdHJpbmcgKiluYW1lc3BhY2VVUkk7Ci0tIChOU1N0cmluZyAqKXByZWZpeDsKLS0g
KHZvaWQpc2V0UHJlZml4OihOU1N0cmluZyAqKXByZWZpeDsKLS0gKE5TU3RyaW5nICopbG9jYWxO
YW1lOwotLSAoQk9PTCloYXNBdHRyaWJ1dGVzOwotLSAoQk9PTClpc1NhbWVOb2RlOihET01Ob2Rl
ICopb3RoZXI7Ci0tIChCT09MKWlzRXF1YWxOb2RlOihET01Ob2RlICopb3RoZXI7Ci0tIChOU1N0
cmluZyAqKXRleHRDb250ZW50OwotLSAodm9pZClzZXRUZXh0Q29udGVudDooTlNTdHJpbmcgKil0
ZXh0OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTU5vZGVMaXN0IDogRE9NT2JqZWN0Ci0tIChET01O
b2RlICopaXRlbToodW5zaWduZWQpaW5kZXg7Ci0tICh1bnNpZ25lZClsZW5ndGg7Ci1AZW5kCi0K
LUBpbnRlcmZhY2UgRE9NTmFtZWROb2RlTWFwIDogRE9NT2JqZWN0Ci0tIChET01Ob2RlICopZ2V0
TmFtZWRJdGVtOihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01Ob2RlICopc2V0TmFtZWRJdGVtOihE
T01Ob2RlICopYXJnOwotLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbTooTlNTdHJpbmcgKilu
YW1lOwotLSAoRE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4OwotLSAodW5zaWduZWQpbGVu
Z3RoOwotLSAoRE9NTm9kZSAqKWdldE5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVS
SSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbU5TOihE
T01Ob2RlICopYXJnOwotLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbU5TOihOU1N0cmluZyAq
KW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotQGVuZAotCi1AaW50ZXJmYWNl
IERPTUNoYXJhY3RlckRhdGEgOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKWRhdGE7Ci0tICh2b2lk
KXNldERhdGE6KE5TU3RyaW5nICopZGF0YTsKLS0gKHVuc2lnbmVkKWxlbmd0aDsKLS0gKE5TU3Ry
aW5nICopc3Vic3RyaW5nRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpY291bnQ7Ci0t
ICh2b2lkKWFwcGVuZERhdGE6KE5TU3RyaW5nICopYXJnOwotLSAodm9pZClpbnNlcnREYXRhOih1
bnNpZ25lZClvZmZzZXQgOihOU1N0cmluZyAqKWFyZzsKLS0gKHZvaWQpZGVsZXRlRGF0YToodW5z
aWduZWQpb2Zmc2V0IDoodW5zaWduZWQpIGNvdW50OwotLSAodm9pZClyZXBsYWNlRGF0YToodW5z
aWduZWQpb2Zmc2V0IDoodW5zaWduZWQpY291bnQgOihOU1N0cmluZyAqKWFyZzsKLUBlbmQKLQot
QGludGVyZmFjZSBET01BdHRyIDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKiluYW1lOwotLSAoQk9P
TClzcGVjaWZpZWQ7Ci0tIChOU1N0cmluZyAqKXZhbHVlOwotLSAodm9pZClzZXRWYWx1ZTooTlNT
dHJpbmcgKil2YWx1ZTsKLS0gKERPTUVsZW1lbnQgKilvd25lckVsZW1lbnQ7Ci1AZW5kCi0KIEBp
bnRlcmZhY2UgRE9NRWxlbWVudCA6IERPTU5vZGUKIC0gKE5TU3RyaW5nICopdGFnTmFtZTsKIC0g
KE5TU3RyaW5nICopZ2V0QXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWU7CkBAIC0xNzUsNjYgKzQ5
LDMgQEAgZW51bSB7CiAtICh2b2lkKWZvY3VzOwogLSAodm9pZClibHVyOwogQGVuZAotCi1AaW50
ZXJmYWNlIERPTVRleHQgOiBET01DaGFyYWN0ZXJEYXRhCi0tIChET01UZXh0ICopc3BsaXRUZXh0
Oih1bnNpZ25lZClvZmZzZXQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NQ29tbWVudCA6IERPTUNo
YXJhY3RlckRhdGEKLUBlbmQKLQotQGludGVyZmFjZSBET01DREFUQVNlY3Rpb24gOiBET01UZXh0
Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRG9jdW1lbnRUeXBlIDogRE9NTm9kZQotLSAoTlNTdHJp
bmcgKiluYW1lOwotLSAoRE9NTmFtZWROb2RlTWFwICopZW50aXRpZXM7Ci0tIChET01OYW1lZE5v
ZGVNYXAgKilub3RhdGlvbnM7Ci0tIChOU1N0cmluZyAqKXB1YmxpY0lkOwotLSAoTlNTdHJpbmcg
KilzeXN0ZW1JZDsKLS0gKE5TU3RyaW5nICopaW50ZXJuYWxTdWJzZXQ7Ci1AZW5kCi0KLUBpbnRl
cmZhY2UgRE9NTm90YXRpb24gOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKXB1YmxpY0lkOwotLSAo
TlNTdHJpbmcgKilzeXN0ZW1JZDsKLUBlbmQKLQotQGludGVyZmFjZSBET01FbnRpdHkgOiBET01O
b2RlCi0tIChOU1N0cmluZyAqKXB1YmxpY0lkOwotLSAoTlNTdHJpbmcgKilzeXN0ZW1JZDsKLS0g
KE5TU3RyaW5nICopbm90YXRpb25OYW1lOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUVudGl0eVJl
ZmVyZW5jZSA6IERPTU5vZGUKLUBlbmQKLQotQGludGVyZmFjZSBET01Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24gOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKXRhcmdldDsKLS0gKE5TU3RyaW5nICopZGF0
YTsKLS0gKHZvaWQpc2V0RGF0YTooTlNTdHJpbmcgKilkYXRhOwotQGVuZAotCi1AaW50ZXJmYWNl
IERPTURvY3VtZW50RnJhZ21lbnQgOiBET01Ob2RlCi1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRG9j
dW1lbnQgOiBET01Ob2RlCi0tIChET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlOwotLSAoRE9NSW1w
bGVtZW50YXRpb24gKilpbXBsZW1lbnRhdGlvbjsKLS0gKERPTUVsZW1lbnQgKilkb2N1bWVudEVs
ZW1lbnQ7Ci0tIChET01FbGVtZW50ICopY3JlYXRlRWxlbWVudDooTlNTdHJpbmcgKil0YWdOYW1l
OwotLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWNyZWF0ZURvY3VtZW50RnJhZ21lbnQ7Ci0tIChE
T01UZXh0ICopY3JlYXRlVGV4dE5vZGU6KE5TU3RyaW5nICopZGF0YTsKLS0gKERPTUNvbW1lbnQg
KiljcmVhdGVDb21tZW50OihOU1N0cmluZyAqKWRhdGE7Ci0tIChET01DREFUQVNlY3Rpb24gKilj
cmVhdGVDREFUQVNlY3Rpb246KE5TU3RyaW5nICopZGF0YTsKLS0gKERPTVByb2Nlc3NpbmdJbnN0
cnVjdGlvbiAqKWNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbjooTlNTdHJpbmcgKil0YXJnZXQg
OihOU1N0cmluZyAqKWRhdGE7Ci0tIChET01BdHRyICopY3JlYXRlQXR0cmlidXRlOihOU1N0cmlu
ZyAqKW5hbWU7Ci0tIChET01FbnRpdHlSZWZlcmVuY2UgKiljcmVhdGVFbnRpdHlSZWZlcmVuY2U6
KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWU6
KE5TU3RyaW5nICopdGFnbmFtZTsKLS0gKERPTU5vZGUgKilpbXBvcnROb2RlOihET01Ob2RlICop
aW1wb3J0ZWROb2RlIDooQk9PTClkZWVwOwotLSAoRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnRO
UzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWU7Ci0t
IChET01BdHRyICopY3JlYXRlQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDoo
TlNTdHJpbmcgKilxdWFsaWZpZWROYW1lOwotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5
VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1l
OwotLSAoRE9NRWxlbWVudCAqKWdldEVsZW1lbnRCeUlkOihOU1N0cmluZyAqKWVsZW1lbnRJZDsK
LS0gKERPTU5vZGUgKilhZG9wdE5vZGU6KERPTU5vZGUgKilzb3VyY2U7Ci1AZW5kCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRWxlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NRWxlbWVudC5tbQkocmV2aXNpb24gMTU5NTkpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NRWxlbWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBKYW1lcyBHLiBTcGV0
aCAoc3BldGhAZW5kLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNiBKYW1lcyBHLiBTcGV0aCA8
c3BldGhAZW5kLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0u
d2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUs
MjM0OCArMjYsMTY4IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJET00u
aCIKKyNpbXBvcnQgIkRPTUVsZW1lbnQuaCIKIAotI2ltcG9ydCAiQ0RBVEFTZWN0aW9uLmgiCi0j
aW1wb3J0ICJjc3NoZWxwZXIuaCIKLSNpbXBvcnQgIkNTU1N0eWxlU2hlZXQuaCIKLSNpbXBvcnQg
IkNvbW1lbnQuaCIKLSNpbXBvcnQgIkRPTUV2ZW50c0ludGVybmFsLmgiCi0jaW1wb3J0ICJET01J
bXBsZW1lbnRhdGlvbkZyb250LmgiCisjaW1wb3J0ICJET01BdHRyLmgiCiAjaW1wb3J0ICJET01J
bnRlcm5hbC5oIgotI2ltcG9ydCAiRE9NUHJpdmF0ZS5oIgotI2ltcG9ydCAiRG9jdW1lbnQuaCIK
LSNpbXBvcnQgIkRvY3VtZW50RnJhZ21lbnQuaCIKLSNpbXBvcnQgIkRvY3VtZW50VHlwZS5oIgot
I2ltcG9ydCAiRW50aXR5LmgiCi0jaW1wb3J0ICJFbnRpdHlSZWZlcmVuY2UuaCIKLSNpbXBvcnQg
IkV2ZW50LmgiCi0jaW1wb3J0ICJFdmVudExpc3RlbmVyLmgiCi0jaW1wb3J0ICJGb3VuZGF0aW9u
RXh0cmFzLmgiCi0jaW1wb3J0ICJGcmFtZU1hYy5oIgotI2ltcG9ydCAiSFRNTERvY3VtZW50Lmgi
Ci0jaW1wb3J0ICJIVE1MTmFtZXMuaCIKLSNpbXBvcnQgIkhUTUxQbHVnSW5FbGVtZW50LmgiCi0j
aW1wb3J0ICJOb2RlRmlsdGVyLmgiCi0jaW1wb3J0ICJOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCi0j
aW1wb3J0ICJOb2RlSXRlcmF0b3IuaCIKLSNpbXBvcnQgIk5vZGVMaXN0LmgiCi0jaW1wb3J0ICJO
b3RhdGlvbi5oIgotI2ltcG9ydCAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCi0jaW1wb3J0ICJR
dWFsaWZpZWROYW1lLmgiCi0jaW1wb3J0ICJSYW5nZS5oIgotI2ltcG9ydCAiUmVuZGVySW1hZ2Uu
aCIKLSNpbXBvcnQgIlRyZWVXYWxrZXIuaCIKLSNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZh
dGUuaCIKLSNpbXBvcnQgPG9iamMvb2JqYy1jbGFzcy5oPgotCi11c2luZyBXZWJDb3JlOjpBdG9t
aWNTdHJpbmc7Ci11c2luZyBXZWJDb3JlOjpBdG9taWNTdHJpbmdJbXBsOwotdXNpbmcgV2ViQ29y
ZTo6QXR0cjsKLXVzaW5nIFdlYkNvcmU6OkNoYXJhY3RlckRhdGE7Ci11c2luZyBXZWJDb3JlOjpE
ZXByZWNhdGVkVmFsdWVMaXN0OwotdXNpbmcgV2ViQ29yZTo6RG9jdW1lbnQ7Ci11c2luZyBXZWJD
b3JlOjpEb2N1bWVudEZyYWdtZW50OwotdXNpbmcgV2ViQ29yZTo6RG9jdW1lbnRUeXBlOwotdXNp
bmcgV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb25Gcm9udDsKLXVzaW5nIFdlYkNvcmU6OkVsZW1l
bnQ7Ci11c2luZyBXZWJDb3JlOjpFbnRpdHk7Ci11c2luZyBXZWJDb3JlOjpFdmVudDsKLXVzaW5n
IFdlYkNvcmU6OkV2ZW50TGlzdGVuZXI7Ci11c2luZyBXZWJDb3JlOjpFeGNlcHRpb25Db2RlOwot
dXNpbmcgV2ViQ29yZTo6SFRNTERvY3VtZW50OwotdXNpbmcgV2ViQ29yZTo6SFRNTEVsZW1lbnQ7
Ci11c2luZyBXZWJDb3JlOjpGcmFtZU1hYzsKLXVzaW5nIFdlYkNvcmU6OkludFJlY3Q7Ci11c2lu
ZyBXZWJDb3JlOjpLVVJMOwotdXNpbmcgV2ViQ29yZTo6TmFtZWROb2RlTWFwOwotdXNpbmcgV2Vi
Q29yZTo6Tm9kZTsKLXVzaW5nIFdlYkNvcmU6Ok5vZGVGaWx0ZXI7Ci11c2luZyBXZWJDb3JlOjpO
b2RlRmlsdGVyQ29uZGl0aW9uOwotdXNpbmcgV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yOwotdXNpbmcg
V2ViQ29yZTo6Tm9kZUxpc3Q7Ci11c2luZyBXZWJDb3JlOjpOb3RhdGlvbjsKLXVzaW5nIFdlYkNv
cmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjsKLXVzaW5nIFdlYkNvcmU6OlF1YWxpZmllZE5hbWU7
Ci11c2luZyBXZWJDb3JlOjpSYW5nZTsKLXVzaW5nIFdlYkNvcmU6OlJlbmRlckltYWdlOwotdXNp
bmcgV2ViQ29yZTo6UmVuZGVyT2JqZWN0OwotdXNpbmcgV2ViQ29yZTo6U3RyaW5nOwotdXNpbmcg
V2ViQ29yZTo6VGV4dDsKLXVzaW5nIFdlYkNvcmU6OlRyZWVXYWxrZXI7Ci0KLXVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOjpIVE1MTmFtZXM7Ci0KLUBpbnRlcmZhY2UgRE9NQXR0ciAoV2ViQ29yZUlu
dGVybmFsKQotKyAoRE9NQXR0ciAqKV9hdHRyV2l0aDooQXR0ciAqKWltcGw7Ci0tIChBdHRyICop
X2F0dHI7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRG9jdW1lbnRUeXBlIChXZWJDb3JlSW50ZXJu
YWwpCi0tIChEb2N1bWVudFR5cGUgKilfZG9jdW1lbnRUeXBlOwotQGVuZAotCi1AaW50ZXJmYWNl
IERPTUltcGxlbWVudGF0aW9uIChXZWJDb3JlSW50ZXJuYWwpCi0rIChET01JbXBsZW1lbnRhdGlv
biAqKV9ET01JbXBsZW1lbnRhdGlvbldpdGg6KERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilpbXBs
OwotLSAoRE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKV9ET01JbXBsZW1lbnRhdGlvbjsKLUBlbmQK
LQotY2xhc3MgT2JqQ0V2ZW50TGlzdGVuZXIgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIE9iakNFdmVudExpc3RlbmVyICpmaW5kKGlkIDxET01FdmVudExpc3Rl
bmVyPik7Ci0gICAgc3RhdGljIE9iakNFdmVudExpc3RlbmVyICpjcmVhdGUoaWQgPERPTUV2ZW50
TGlzdGVuZXI+KTsKLQotcHJpdmF0ZToKLSAgICBPYmpDRXZlbnRMaXN0ZW5lcihpZCA8RE9NRXZl
bnRMaXN0ZW5lcj4pOwotICAgIHZpcnR1YWwgfk9iakNFdmVudExpc3RlbmVyKCk7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoRXZlbnQgKiwgYm9vbCBpc1dpbmRvd0V2ZW50KTsKLQot
ICAgIGlkIDxET01FdmVudExpc3RlbmVyPiBtX2xpc3RlbmVyOwotfTsKLQotdHlwZWRlZiBIYXNo
TWFwPGlkLCBPYmpDRXZlbnRMaXN0ZW5lcio+IExpc3RlbmVyTWFwOwotdHlwZWRlZiBIYXNoTWFw
PEF0b21pY1N0cmluZ0ltcGwqLCBDbGFzcz4gT2JqQ0NsYXNzTWFwOwotCi1zdGF0aWMgT2JqQ0Ns
YXNzTWFwKiBlbGVtZW50Q2xhc3NNYXA7Ci1zdGF0aWMgTGlzdGVuZXJNYXAqIGxpc3RlbmVyTWFw
OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NT2JqZWN0Ci0K
LUBpbXBsZW1lbnRhdGlvbiBET01PYmplY3QKLQotLy8gUHJldmVudCBjcmVhdGlvbiBvZiBET00g
b2JqZWN0cyBieSBjbGllbnRzIHdobyBqdXN0ICJbW3h4eCBhbGxvY10gaW5pdF0iLgotLSAoaWQp
aW5pdAotewotICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0dlbmVyaWNFeGNlcHRpb24gZm9ybWF0
OkAiK1slQCBpbml0XTogc2hvdWxkIG5ldmVyIGJlIHVzZWQiLCBOU1N0cmluZ0Zyb21DbGFzcyhb
c2VsZiBjbGFzc10pXTsKLSAgICBbc2VsZiByZWxlYXNlXTsKLSAgICByZXR1cm4gbmlsOwotfQot
Ci0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIHJlbW92
ZURPTVdyYXBwZXIoX2ludGVybmFsKTsKLSAgICB9Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQot
Ci0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICByZW1v
dmVET01XcmFwcGVyKF9pbnRlcm5hbCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19
Ci0KLS0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQotewotICAgIHJldHVybiBbc2Vs
ZiByZXRhaW5dOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01PYmplY3QgKFdlYkNv
cmVJbnRlcm5hbCkKLQotLSAoaWQpX2luaXQKLXsKLSAgICByZXR1cm4gW3N1cGVyIF9pbml0XTsK
LX0KIAotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9N
Tm9kZQorI2ltcG9ydCAiRE9NTmFtZWROb2RlTWFwLmgiCisjaW1wb3J0ICJET01Ob2RlTGlzdC5o
IgorI2ltcG9ydCAiRWxlbWVudC5oIgorI2ltcG9ydCAiTmFtZWRBdHRyTWFwLmgiCisjaW1wb3J0
ICJOb2RlTGlzdC5oIgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIAotQGltcGxlbWVudGF0
aW9uIERPTU5vZGUKK0BpbXBsZW1lbnRhdGlvbiBET01FbGVtZW50CiAKLS0gKHZvaWQpZGVhbGxv
YworLSAoTlNTdHJpbmcgKil0YWdOYW1lCiB7Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAg
ICBET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBl
ciBkZWFsbG9jXTsKKyAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5ub2RlTmFtZSgpOwogfQog
Ci0tICh2b2lkKWZpbmFsaXplCistIChET01OYW1lZE5vZGVNYXAgKilhdHRyaWJ1dGVzCiB7Ci0g
ICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkt
PmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6ZV07CisgICAgcmV0dXJuIFtET01O
YW1lZE5vZGVNYXAgX25hbWVkTm9kZU1hcFdpdGg6W3NlbGYgX2VsZW1lbnRdLT5hdHRyaWJ1dGVz
KCldOwogfQogCi0tIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCistIChOU1N0cmluZyAqKWdldEF0
dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lCiB7Ci0gICAgaWYgKCFfaW50ZXJuYWwpIHsKLSAgICAg
ICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiBudWxsPiIsCi0gICAg
ICAgICAgICBbW3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9uXSwgc2VsZl07Ci0gICAgfQotICAgIE5T
U3RyaW5nICp2YWx1ZSA9IFtzZWxmIG5vZGVWYWx1ZV07Ci0gICAgaWYgKHZhbHVlKSB7Ci0gICAg
ICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQCBbJUBdOiAlcCAnJUAn
PiIsCi0gICAgICAgICAgICBbW3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9uXSwgW3NlbGYgbm9kZU5h
bWVdLCBfaW50ZXJuYWwsIHZhbHVlXTsKLSAgICB9Ci0gICAgcmV0dXJuIFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiPCVAIFslQF06ICVwPiIsCi0gICAgICAgIFtbc2VsZiBjbGFzc10gZGVz
Y3JpcHRpb25dLCBbc2VsZiBub2RlTmFtZV0sIF9pbnRlcm5hbF07Ci19CisgICAgQVNTRVJUKG5h
bWUpOwogCi0tIChOU1N0cmluZyAqKW5vZGVOYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2Rl
XS0+bm9kZU5hbWUoKTsKKyAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5nZXRBdHRyaWJ1dGUo
bmFtZSk7CiB9CiAKLS0gKE5TU3RyaW5nICopbm9kZVZhbHVlCistICh2b2lkKXNldEF0dHJpYnV0
ZTooTlNTdHJpbmcgKiluYW1lIDooTlNTdHJpbmcgKil2YWx1ZQogewotICAgIC8vIERvY3VtZW50
YXRpb24gc2F5cyB3ZSBjYW4gcmFpc2UgYSBET01TVFJJTkdfU0laRV9FUlIuCi0gICAgLy8gSG93
ZXZlciwgdGhlIGxvd2VyIGxheWVyIGRvZXMgbm90IHJlcG9ydCB0aGF0IGVycm9yIHVwIHRvIHVz
LgotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPm5vZGVWYWx1ZSgpOwotfQorICAgIEFTU0VSVChu
YW1lKTsKKyAgICBBU1NFUlQodmFsdWUpOwogCi0tICh2b2lkKXNldE5vZGVWYWx1ZTooTlNTdHJp
bmcgKilzdHJpbmcKLXsKLSAgICBBU1NFUlQoc3RyaW5nKTsKLSAgICAKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBbc2VsZiBfbm9kZV0tPnNldE5vZGVWYWx1ZShzdHJpbmcsIGVjKTsK
KyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBbc2VsZiBfZWxlbWVudF0t
PnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgZWMpOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7
CiB9CiAKLS0gKHVuc2lnbmVkIHNob3J0KW5vZGVUeXBlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9u
b2RlXS0+bm9kZVR5cGUoKTsKLX0KLQotLSAoRE9NTm9kZSAqKXBhcmVudE5vZGUKLXsKLSAgICBy
ZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9ub2RlXS0+cGFyZW50Tm9kZSgpXTsKLX0K
LQotLSAoRE9NTm9kZUxpc3QgKiljaGlsZE5vZGVzCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlTGlz
dCBfbm9kZUxpc3RXaXRoOltzZWxmIF9ub2RlXS0+Y2hpbGROb2RlcygpLmdldCgpXTsKLX0KLQot
LSAoRE9NTm9kZSAqKWZpcnN0Q2hpbGQKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRo
OltzZWxmIF9ub2RlXS0+Zmlyc3RDaGlsZCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKWxhc3RDaGls
ZAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5sYXN0Q2hp
bGQoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilwcmV2aW91c1NpYmxpbmcKLXsKLSAgICByZXR1cm4g
W0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9ub2RlXS0+cHJldmlvdXNTaWJsaW5nKCldOwotfQot
Ci0tIChET01Ob2RlICopbmV4dFNpYmxpbmcKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVX
aXRoOltzZWxmIF9ub2RlXS0+bmV4dFNpYmxpbmcoKV07Ci19Ci0KLS0gKERPTU5hbWVkTm9kZU1h
cCAqKWF0dHJpYnV0ZXMKLXsKLSAgICAvLyBET00gbGV2ZWwgMiBjb3JlIHNwZWNpZmljYXRpb24g
c2F5czogCi0gICAgLy8gQSBOYW1lZE5vZGVNYXAgY29udGFpbmluZyB0aGUgYXR0cmlidXRlcyBv
ZiB0aGlzIG5vZGUgKGlmIGl0IGlzIGFuIEVsZW1lbnQpIG9yIG51bGwgb3RoZXJ3aXNlLgotICAg
IHJldHVybiBuaWw7Ci19Ci0KLS0gKERPTURvY3VtZW50ICopb3duZXJEb2N1bWVudAotewotICAg
IHJldHVybiBbRE9NRG9jdW1lbnQgX2RvY3VtZW50V2l0aDpbc2VsZiBfbm9kZV0tPmRvY3VtZW50
KCldOwotfQotCi0tIChET01Ob2RlICopaW5zZXJ0QmVmb3JlOihET01Ob2RlICopbmV3Q2hpbGQg
OihET01Ob2RlICopcmVmQ2hpbGQKKy0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlOihOU1N0cmluZyAq
KW5hbWUKIHsKLSAgICBBU1NFUlQobmV3Q2hpbGQpOwotICAgIEFTU0VSVChyZWZDaGlsZCk7Cisg
ICAgQVNTRVJUKG5hbWUpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKFtz
ZWxmIF9ub2RlXS0+aW5zZXJ0QmVmb3JlKFtuZXdDaGlsZCBfbm9kZV0sIFtyZWZDaGlsZCBfbm9k
ZV0sIGVjKSkKLSAgICAgICAgcmV0dXJuIG5ld0NoaWxkOworICAgIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIFtzZWxmIF9lbGVtZW50XS0+cmVtb3ZlQXR0cmlidXRlKG5hbWUs
IGVjKTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBuaWw7CiB9CiAKLS0g
KERPTU5vZGUgKilyZXBsYWNlQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilv
bGRDaGlsZAorLSAoRE9NQXR0ciAqKWdldEF0dHJpYnV0ZU5vZGU6KE5TU3RyaW5nICopbmFtZQog
ewotICAgIEFTU0VSVChuZXdDaGlsZCk7Ci0gICAgQVNTRVJUKG9sZENoaWxkKTsKKyAgICBBU1NF
UlQobmFtZSk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpZiAoW3NlbGYgX25v
ZGVdLT5yZXBsYWNlQ2hpbGQoW25ld0NoaWxkIF9ub2RlXSwgW29sZENoaWxkIF9ub2RlXSwgZWMp
KQotICAgICAgICByZXR1cm4gb2xkQ2hpbGQ7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAg
ICByZXR1cm4gbmlsOworICAgIHJldHVybiBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2VsZW1l
bnRdLT5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpLmdldCgpXTsKIH0KIAotLSAoRE9NTm9kZSAqKXJl
bW92ZUNoaWxkOihET01Ob2RlICopb2xkQ2hpbGQKKy0gKERPTUF0dHIgKilzZXRBdHRyaWJ1dGVO
b2RlOihET01BdHRyICopbmV3QXR0cgogewotICAgIEFTU0VSVChvbGRDaGlsZCk7CisgICAgQVNT
RVJUKG5ld0F0dHIpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKFtzZWxm
IF9ub2RlXS0+cmVtb3ZlQ2hpbGQoW29sZENoaWxkIF9ub2RlXSwgZWMpKQotICAgICAgICByZXR1
cm4gb2xkQ2hpbGQ7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9N
QXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+c2V0QXR0
cmlidXRlTm9kZShbbmV3QXR0ciBfYXR0cl0sIGVjKS5nZXQoKV07CiAgICAgcmFpc2VPbkRPTUVy
cm9yKGVjKTsKLSAgICByZXR1cm4gbmlsOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS0gKERP
TU5vZGUgKilhcHBlbmRDaGlsZDooRE9NTm9kZSAqKW5ld0NoaWxkCistIChET01BdHRyICopcmVt
b3ZlQXR0cmlidXRlTm9kZTooRE9NQXR0ciAqKW9sZEF0dHIKIHsKLSAgICBBU1NFUlQobmV3Q2hp
bGQpOworICAgIEFTU0VSVChvbGRBdHRyKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIGlmIChbc2VsZiBfbm9kZV0tPmFwcGVuZENoaWxkKFtuZXdDaGlsZCBfbm9kZV0sIGVjKSkK
LSAgICAgICAgcmV0dXJuIG5ld0NoaWxkOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxl
bWVudF0tPnJlbW92ZUF0dHJpYnV0ZU5vZGUoW29sZEF0dHIgX2F0dHJdLCBlYykuZ2V0KCldOwog
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoQk9PTClo
YXNDaGlsZE5vZGVzCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aGFzQ2hpbGROb2Rlcygp
OwotfQotCi0tIChET01Ob2RlICopY2xvbmVOb2RlOihCT09MKWRlZXAKLXsKLSAgICByZXR1cm4g
W0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9ub2RlXS0+Y2xvbmVOb2RlKGRlZXApLmdldCgpXTsK
LX0KLQotLSAodm9pZClub3JtYWxpemUKLXsKLSAgICBbc2VsZiBfbm9kZV0tPm5vcm1hbGl6ZSgp
OworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS0gKEJPT0wpaXNTdXBwb3J0ZWQ6KE5TU3RyaW5n
ICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbgorLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVt
ZW50c0J5VGFnTmFtZTooTlNTdHJpbmcgKiluYW1lCiB7Ci0gICAgQVNTRVJUKGZlYXR1cmUpOwot
ICAgIEFTU0VSVCh2ZXJzaW9uKTsKKyAgICBBU1NFUlQobmFtZSk7CiAKLSAgICByZXR1cm4gW3Nl
bGYgX25vZGVdLT5pc1N1cHBvcnRlZChmZWF0dXJlLCB2ZXJzaW9uKTsKKyAgICByZXR1cm4gW0RP
TU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX2VsZW1lbnRdLT5nZXRFbGVtZW50c0J5VGFn
TmFtZShuYW1lKS5nZXQoKV07CiB9CiAKLS0gKE5TU3RyaW5nICopbmFtZXNwYWNlVVJJCistIChO
U1N0cmluZyAqKWdldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3Ry
aW5nICopbG9jYWxOYW1lCiB7Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bmFtZXNwYWNlVVJJ
KCk7Ci19CisgICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7CisgICAgQVNTRVJUKGxvY2FsTmFtZSk7
CiAKLS0gKE5TU3RyaW5nICopcHJlZml4Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+cHJl
Zml4KCk7CisgICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50XS0+Z2V0QXR0cmlidXRlTlMobmFtZXNw
YWNlVVJJLCBsb2NhbE5hbWUpOwogfQogCi0tICh2b2lkKXNldFByZWZpeDooTlNTdHJpbmcgKilw
cmVmaXgKKy0gKHZvaWQpc2V0QXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDoo
TlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKil2YWx1ZQogewotICAgIEFTU0VS
VChwcmVmaXgpOworICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOworICAgIEFTU0VSVChxdWFsaWZp
ZWROYW1lKTsKKyAgICBBU1NFUlQodmFsdWUpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgU3RyaW5nIHByZWZpeFN0cihwcmVmaXgpOwotICAgIFtzZWxmIF9ub2RlXS0+c2V0UHJl
Zml4KHByZWZpeFN0ci5pbXBsKCksIGVjKTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVj
ID0gMDsKKyAgICBbc2VsZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwg
cXVhbGlmaWVkTmFtZSwgdmFsdWUsIGVjKTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogfQog
Ci0tIChOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmxv
Y2FsTmFtZSgpOwotfQotCi0tIChCT09MKWhhc0F0dHJpYnV0ZXMKLXsKLSAgICByZXR1cm4gW3Nl
bGYgX25vZGVdLT5oYXNBdHRyaWJ1dGVzKCk7Ci19Ci0KLS0gKEJPT0wpaXNTYW1lTm9kZTooRE9N
Tm9kZSAqKW90aGVyCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aXNTYW1lTm9kZShbb3Ro
ZXIgX25vZGVdKTsKLX0KLQotLSAoQk9PTClpc0VxdWFsTm9kZTooRE9NTm9kZSAqKW90aGVyCi17
Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aXNFcXVhbE5vZGUoW290aGVyIF9ub2RlXSk7Ci19
Ci0KLS0gKEJPT0wpaXNEZWZhdWx0TmFtZXNwYWNlOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSQot
ewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmlzRGVmYXVsdE5hbWVzcGFjZShuYW1lc3BhY2VV
UkkpOwotfQotCi0tIChOU1N0cmluZyAqKWxvb2t1cFByZWZpeDooTlNTdHJpbmcgKiluYW1lc3Bh
Y2VVUkkKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5sb29rdXBQcmVmaXgobmFtZXNwYWNl
VVJJKTsKLX0KLQotLSAoTlNTdHJpbmcgKilsb29rdXBOYW1lc3BhY2VVUkk6KE5TU3RyaW5nICop
cHJlZml4Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bG9va3VwTmFtZXNwYWNlVVJJKHBy
ZWZpeCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopdGV4dENvbnRlbnQKKy0gKHZvaWQpcmVtb3ZlQXR0
cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUK
IHsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT50ZXh0Q29udGVudCgpOwotfQorICAgIEFTU0VS
VChuYW1lc3BhY2VVUkkpOworICAgIEFTU0VSVChsb2NhbE5hbWUpOwogCi0tICh2b2lkKXNldFRl
eHRDb250ZW50OihOU1N0cmluZyAqKXRleHQKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBbc2VsZiBfbm9kZV0tPnNldFRleHRDb250ZW50KHRleHQsIGVjKTsKKyAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBbc2VsZiBfZWxlbWVudF0tPnJlbW92ZUF0dHJp
YnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCBlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKIH0KIAotLSAoTlNSZWN0KWJvdW5kaW5nQm94Ci17Ci0gICAgV2ViQ29yZTo6UmVuZGVy
T2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9ub2RlXS0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVu
ZGVyZXIpCi0gICAgICAgIHJldHVybiByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3Qo
KTsKLSAgICByZXR1cm4gTlNaZXJvUmVjdDsKLX0KLQotLSAoTlNBcnJheSAqKWxpbmVCb3hSZWN0
cwotewotICAgIFdlYkNvcmU6OlJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBbc2VsZiBfbm9kZV0t
PnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyKSB7Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5
ICpyZXN1bHRzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07Ci0gICAgICAgIERlcHJl
Y2F0ZWRWYWx1ZUxpc3Q8SW50UmVjdD4gcmVjdHMgPSByZW5kZXJlci0+bGluZUJveFJlY3RzKCk7
Ci0gICAgICAgIGlmICghcmVjdHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBmb3IgKERlcHJl
Y2F0ZWRWYWx1ZUxpc3Q8SW50UmVjdD46OkNvbnN0SXRlcmF0b3IgaXQgPSByZWN0cy5iZWdpbigp
OyBpdCAhPSByZWN0cy5lbmQoKTsgKytpdCkKLSAgICAgICAgICAgICAgICBbcmVzdWx0cyBhZGRP
YmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDoqaXRdXTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gW3Jlc3VsdHMgYXV0b3JlbGVhc2VdOwotICAgIH0KLSAgICByZXR1cm4gbmlsOwotfQot
Ci1AZW5kCi0KLXN0YXRpYyB2b2lkIGFkZEVsZW1lbnRDbGFzcyhjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWcsIENsYXNzIG9iakNDbGFzcykKLXsKLSAgICBlbGVtZW50Q2xhc3NNYXAtPnNldCh0YWcu
bG9jYWxOYW1lKCkuaW1wbCgpLCBvYmpDQ2xhc3MpOwotfQotCi1zdGF0aWMgdm9pZCBjcmVhdGVI
VE1MRWxlbWVudENsYXNzTWFwKCkKLXsKLSAgICAvLyBDcmVhdGUgdGhlIHRhYmxlLgotICAgIGVs
ZW1lbnRDbGFzc01hcCA9IG5ldyBPYmpDQ2xhc3NNYXA7Ci0gICAgCi0gICAgLy8gUG9wdWxhdGUg
aXQgd2l0aCBIVE1MIGVsZW1lbnQgY2xhc3Nlcy4KLSAgICBhZGRFbGVtZW50Q2xhc3MoYVRhZywg
W0RPTUhUTUxBbmNob3JFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGFwcGxl
dFRhZywgW0RPTUhUTUxBcHBsZXRFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KGFyZWFUYWcsIFtET01IVE1MQXJlYUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xh
c3MoYmFzZVRhZywgW0RPTUhUTUxCYXNlRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyhiYXNlZm9udFRhZywgW0RPTUhUTUxCYXNlRm9udEVsZW1lbnQgY2xhc3NdKTsKLSAgICBh
ZGRFbGVtZW50Q2xhc3MoYm9keVRhZywgW0RPTUhUTUxCb2R5RWxlbWVudCBjbGFzc10pOwotICAg
IGFkZEVsZW1lbnRDbGFzcyhiclRhZywgW0RPTUhUTUxCUkVsZW1lbnQgY2xhc3NdKTsKLSAgICBh
ZGRFbGVtZW50Q2xhc3MoYnV0dG9uVGFnLCBbRE9NSFRNTEJ1dHRvbkVsZW1lbnQgY2xhc3NdKTsK
LSAgICBhZGRFbGVtZW50Q2xhc3MoY2FudmFzVGFnLCBbRE9NSFRNTEltYWdlRWxlbWVudCBjbGFz
c10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhjYXB0aW9uVGFnLCBbRE9NSFRNTFRhYmxlQ2FwdGlv
bkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoY29sVGFnLCBbRE9NSFRNTFRh
YmxlQ29sRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhjb2xncm91cFRhZywg
W0RPTUhUTUxUYWJsZUNvbEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoZGly
VGFnLCBbRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xh
c3MoZGl2VGFnLCBbRE9NSFRNTERpdkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xh
c3MoZGxUYWcsIFtET01IVE1MRExpc3RFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENs
YXNzKGZpZWxkc2V0VGFnLCBbRE9NSFRNTEZpZWxkU2V0RWxlbWVudCBjbGFzc10pOwotICAgIGFk
ZEVsZW1lbnRDbGFzcyhmb250VGFnLCBbRE9NSFRNTEZvbnRFbGVtZW50IGNsYXNzXSk7Ci0gICAg
YWRkRWxlbWVudENsYXNzKGZvcm1UYWcsIFtET01IVE1MRm9ybUVsZW1lbnQgY2xhc3NdKTsKLSAg
ICBhZGRFbGVtZW50Q2xhc3MoZnJhbWVUYWcsIFtET01IVE1MRnJhbWVFbGVtZW50IGNsYXNzXSk7
Ci0gICAgYWRkRWxlbWVudENsYXNzKGZyYW1lc2V0VGFnLCBbRE9NSFRNTEZyYW1lU2V0RWxlbWVu
dCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoMVRhZywgW0RPTUhUTUxIZWFkaW5nRWxl
bWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoMlRhZywgW0RPTUhUTUxIZWFkaW5n
RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoM1RhZywgW0RPTUhUTUxIZWFk
aW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoNFRhZywgW0RPTUhUTUxI
ZWFkaW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoNVRhZywgW0RPTUhU
TUxIZWFkaW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoNlRhZywgW0RP
TUhUTUxIZWFkaW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoZWFkVGFn
LCBbRE9NSFRNTEhlYWRFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGhyVGFn
LCBbRE9NSFRNTEhSRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhodG1sVGFn
LCBbRE9NSFRNTEh0bWxFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGlmcmFt
ZVRhZywgW0RPTUhUTUxJRnJhbWVFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KGltZ1RhZywgW0RPTUhUTUxJbWFnZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xh
c3MoaW5wdXRUYWcsIFtET01IVE1MSW5wdXRFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVu
dENsYXNzKGlzaW5kZXhUYWcsIFtET01IVE1MSXNJbmRleEVsZW1lbnQgY2xhc3NdKTsKLSAgICBh
ZGRFbGVtZW50Q2xhc3MobGFiZWxUYWcsIFtET01IVE1MTGFiZWxFbGVtZW50IGNsYXNzXSk7Ci0g
ICAgYWRkRWxlbWVudENsYXNzKGxlZ2VuZFRhZywgW0RPTUhUTUxMZWdlbmRFbGVtZW50IGNsYXNz
XSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGxpVGFnLCBbRE9NSFRNTExJRWxlbWVudCBjbGFzc10p
OwotICAgIGFkZEVsZW1lbnRDbGFzcyhsaW5rVGFnLCBbRE9NSFRNTExpbmtFbGVtZW50IGNsYXNz
XSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGxpc3RpbmdUYWcsIFtET01IVE1MUHJlRWxlbWVudCBj
bGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhtYXBUYWcsIFtET01IVE1MTWFwRWxlbWVudCBj
bGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhtZW51VGFnLCBbRE9NSFRNTE1lbnVFbGVtZW50
IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKG1ldGFUYWcsIFtET01IVE1MTWV0YUVsZW1l
bnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mob2JqZWN0VGFnLCBbRE9NSFRNTE9iamVj
dEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mob2xUYWcsIFtET01IVE1MT0xp
c3RFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKG9wdGdyb3VwVGFnLCBbRE9N
SFRNTE9wdEdyb3VwRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhvcHRpb25U
YWcsIFtET01IVE1MT3B0aW9uRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhw
VGFnLCBbRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xh
c3MocGFyYW1UYWcsIFtET01IVE1MUGFyYW1FbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVu
dENsYXNzKHByZVRhZywgW0RPTUhUTUxQcmVFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVu
dENsYXNzKHFUYWcsIFtET01IVE1MUXVvdGVFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVu
dENsYXNzKHNjcmlwdFRhZywgW0RPTUhUTUxTY3JpcHRFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRk
RWxlbWVudENsYXNzKHNlbGVjdFRhZywgW0RPTUhUTUxTZWxlY3RFbGVtZW50IGNsYXNzXSk7Ci0g
ICAgYWRkRWxlbWVudENsYXNzKHN0eWxlVGFnLCBbRE9NSFRNTFN0eWxlRWxlbWVudCBjbGFzc10p
OwotICAgIGFkZEVsZW1lbnRDbGFzcyh0YWJsZVRhZywgW0RPTUhUTUxUYWJsZUVsZW1lbnQgY2xh
c3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModGJvZHlUYWcsIFtET01IVE1MVGFibGVTZWN0aW9u
RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh0ZFRhZywgW0RPTUhUTUxUYWJs
ZUNlbGxFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHRleHRhcmVhVGFnLCBb
RE9NSFRNTFRleHRBcmVhRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh0Zm9v
dFRhZywgW0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVu
dENsYXNzKHRoZWFkVGFnLCBbRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgY2xhc3NdKTsKLSAg
ICBhZGRFbGVtZW50Q2xhc3ModGl0bGVUYWcsIFtET01IVE1MVGl0bGVFbGVtZW50IGNsYXNzXSk7
Ci0gICAgYWRkRWxlbWVudENsYXNzKHRyVGFnLCBbRE9NSFRNTFRhYmxlUm93RWxlbWVudCBjbGFz
c10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh1bFRhZywgW0RPTUhUTUxVTGlzdEVsZW1lbnQgY2xh
c3NdKTsKLQotICAgIC8vIEZJWE1FOiBSZWZsZWN0IG1hcnF1ZWUgb25jZSB0aGUgQVBJIGhhcyBi
ZWVuIGRldGVybWluZWQuCi19Ci0KLXN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRv
bWljU3RyaW5nJiB0YWdOYW1lKQotewotICAgIGlmICghZWxlbWVudENsYXNzTWFwKQotICAgICAg
ICBjcmVhdGVIVE1MRWxlbWVudENsYXNzTWFwKCk7Ci0gICAgQ2xhc3Mgb2JqY0NsYXNzID0gZWxl
bWVudENsYXNzTWFwLT5nZXQodGFnTmFtZS5pbXBsKCkpOwotICAgIGlmICghb2JqY0NsYXNzKQot
ICAgICAgICBvYmpjQ2xhc3MgPSBbRE9NSFRNTEVsZW1lbnQgY2xhc3NdOwotICAgIHJldHVybiBv
YmpjQ2xhc3M7Ci19Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChXZWJDb3JlSW50ZXJuYWwp
Ci0KLS0gKGlkKV9pbml0V2l0aE5vZGU6KE5vZGUgKilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwp
OwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmpl
Y3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVy
KHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01Ob2RlICopX25vZGVX
aXRoOihOb2RlICopaW1wbAotewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERP
TVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQotICAgICAgICByZXR1cm4g
W1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICBDbGFzcyB3
cmFwcGVyQ2xhc3MgPSBuaWw7Ci0gICAgc3dpdGNoIChpbXBsLT5ub2RlVHlwZSgpKSB7Ci0gICAg
ICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOgotICAgICAgICAgICAgaWYgKGltcGwtPmlzSFRN
TEVsZW1lbnQoKSkKLSAgICAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBlbGVtZW50Q2xhc3Mo
c3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihpbXBsKS0+bG9jYWxOYW1lKCkpOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01FbGVtZW50IGNsYXNz
XTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9OT0RF
OgotICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTUF0dHIgY2xhc3NdOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOgotICAgICAgICAgICAgd3Jh
cHBlckNsYXNzID0gW0RPTVRleHQgY2xhc3NdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOgotICAgICAgICAgICAgd3JhcHBlckNsYXNz
ID0gW0RPTUNEQVRBU2VjdGlvbiBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6Ci0gICAgICAgICAgICB3cmFwcGVyQ2xh
c3MgPSBbRE9NRW50aXR5UmVmZXJlbmNlIGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgotICAgICAgICAgICAgd3JhcHBlckNsYXNzID0g
W0RPTUVudGl0eSBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2Rl
OjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6Ci0gICAgICAgICAgICB3cmFwcGVyQ2xhc3Mg
PSBbRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uIGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKLSAgICAgICAgICAgIHdyYXBwZXJDbGFz
cyA9IFtET01Db21tZW50IGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IE5vZGU6OkRPQ1VNRU5UX05PREU6Ci0gICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihpbXBsKS0+aXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICB3cmFwcGVyQ2xh
c3MgPSBbRE9NSFRNTERvY3VtZW50IGNsYXNzXTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NRG9jdW1lbnQgY2xhc3NdOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgotICAgICAgICAg
ICAgd3JhcHBlckNsYXNzID0gW0RPTURvY3VtZW50VHlwZSBjbGFzc107Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgotICAgICAg
ICAgICAgd3JhcHBlckNsYXNzID0gW0RPTURvY3VtZW50RnJhZ21lbnQgY2xhc3NdOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKLSAgICAgICAg
ICAgIHdyYXBwZXJDbGFzcyA9IFtET01Ob3RhdGlvbiBjbGFzc107Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICAgICAgICAg
IC8vIEZJWE1FOiBDcmVhdGUgYW4gWFBhdGggb2JqZWN0aXZlIEMgd3JhcHBlcgotICAgICAgICAg
ICAgLy8gU2VlIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODc1NQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0gICAgcmV0dXJuIFtbW3dyYXBw
ZXJDbGFzcyBhbGxvY10gX2luaXRXaXRoTm9kZTppbXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0g
KE5vZGUgKilfbm9kZQotewotICAgIHJldHVybiBET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCk7
Ci19Ci0KLS0gKGNvbnN0IEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKilfZXhlY3V0aW9uQ29u
dGV4dAotewotICAgIGlmIChOb2RlICpuID0gW3NlbGYgX25vZGVdKQotICAgICAgICBpZiAoRnJh
bWVNYWMgKmYgPSBNYWMobi0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpCi0gICAgICAgICAgICByZXR1
cm4gZi0+ZXhlY3V0aW9uQ29udGV4dEZvckRPTSgpOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLUBl
bmQKLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGUgKFdlYlByaXZhdGUpCi0KLS0gKEJPT0wpaXND
b250ZW50RWRpdGFibGUKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc0NvbnRlbnRFZGl0
YWJsZSgpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChET01FdmVudFRh
cmdldCkKLQotLSAodm9pZClhZGRFdmVudExpc3RlbmVyOihOU1N0cmluZyAqKXR5cGUgOihpZCA8
RE9NRXZlbnRMaXN0ZW5lcj4pbGlzdGVuZXIgOihCT09MKXVzZUNhcHR1cmUKLXsKLSAgICBpZiAo
IVtzZWxmIF9ub2RlXS0+aXNFdmVudFRhcmdldE5vZGUoKSkKLSAgICAgICAgcmFpc2VET01FeGNl
cHRpb24oRE9NX05PVF9TVVBQT1JURURfRVJSKTsKLSAgICAKLSAgICBFdmVudExpc3RlbmVyICp3
cmFwcGVyID0gT2JqQ0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7Ci0gICAgRXZlbnRU
YXJnZXROb2RlQ2FzdChbc2VsZiBfbm9kZV0pLT5hZGRFdmVudExpc3RlbmVyKHR5cGUsIHdyYXBw
ZXIsIHVzZUNhcHR1cmUpOwotICAgIHdyYXBwZXItPmRlcmVmKCk7Ci19Ci0KLS0gKHZvaWQpcmVt
b3ZlRXZlbnRMaXN0ZW5lcjooTlNTdHJpbmcgKil0eXBlIDooaWQgPERPTUV2ZW50TGlzdGVuZXI+
KWxpc3RlbmVyIDooQk9PTCl1c2VDYXB0dXJlCistIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9k
ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCiB7Ci0g
ICAgaWYgKCFbc2VsZiBfbm9kZV0tPmlzRXZlbnRUYXJnZXROb2RlKCkpCi0gICAgICAgIHJhaXNl
RE9NRXhjZXB0aW9uKERPTV9OT1RfU1VQUE9SVEVEX0VSUik7CisgICAgQVNTRVJUKG5hbWVzcGFj
ZVVSSSk7CisgICAgQVNTRVJUKGxvY2FsTmFtZSk7CiAKLSAgICBpZiAoRXZlbnRMaXN0ZW5lciAq
d3JhcHBlciA9IE9iakNFdmVudExpc3RlbmVyOjpmaW5kKGxpc3RlbmVyKSkKLSAgICAgICAgRXZl
bnRUYXJnZXROb2RlQ2FzdChbc2VsZiBfbm9kZV0pLT5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUs
IHdyYXBwZXIsIHVzZUNhcHR1cmUpOworICAgIHJldHVybiBbRE9NQXR0ciBfYXR0cldpdGg6W3Nl
bGYgX2VsZW1lbnRdLT5nZXRBdHRyaWJ1dGVOb2RlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUp
LmdldCgpXTsKIH0KIAotLSAoQk9PTClkaXNwYXRjaEV2ZW50OihET01FdmVudCAqKWV2ZW50Cist
IChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZU5TOihET01BdHRyICopbmV3QXR0cgogewotICAg
IGlmICghW3NlbGYgX25vZGVdLT5pc0V2ZW50VGFyZ2V0Tm9kZSgpKQotICAgICAgICByYWlzZURP
TUV4Y2VwdGlvbihET01fTk9UX1NVUFBPUlRFRF9FUlIpOworICAgIEFTU0VSVChuZXdBdHRyKTsK
IAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIEJPT0wgcmVzdWx0ID0gRXZlbnRUYXJn
ZXROb2RlQ2FzdChbc2VsZiBfbm9kZV0pLT5kaXNwYXRjaEV2ZW50KFtldmVudCBfZXZlbnRdLCBl
Yyk7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9NQXR0ciAqcmVz
dWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+c2V0QXR0cmlidXRlTm9k
ZU5TKFtuZXdBdHRyIF9hdHRyXSwgZWMpLmdldCgpXTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS8vIERPTU5hbWVkTm9kZU1hcAotCi1AaW1wbGVtZW50YXRpb24gRE9N
TmFtZWROb2RlTWFwCi0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpIHsK
LSAgICAgICAgRE9NX2Nhc3Q8TmFtZWROb2RlTWFwICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0g
ICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6ZQotewotICAg
IGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8TmFtZWROb2RlTWFwICo+KF9pbnRl
cm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19Ci0KLS0gKE5h
bWVkTm9kZU1hcCAqKV9uYW1lZE5vZGVNYXAKLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8TmFtZWRO
b2RlTWFwICo+KF9pbnRlcm5hbCk7Ci19Ci0KLS0gKERPTU5vZGUgKilnZXROYW1lZEl0ZW06KE5T
U3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLQotICAgIHJldHVybiBbRE9NTm9k
ZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPmdldE5hbWVkSXRlbShuYW1lKS5nZXQo
KV07Ci19Ci0KLS0gKERPTU5vZGUgKilzZXROYW1lZEl0ZW06KERPTU5vZGUgKilhcmcKKy0gKERP
TU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VV
UkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQogewotICAgIEFTU0VSVChhcmcpOworICAgIEFTU0VS
VChuYW1lc3BhY2VVUkkpOworICAgIEFTU0VSVChsb2NhbE5hbWUpOwogCi0gICAgaW50IGV4Y2Vw
dGlvbiA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxm
IF9uYW1lZE5vZGVNYXBdLT5zZXROYW1lZEl0ZW0oW2FyZyBfbm9kZV0sIGV4Y2VwdGlvbikuZ2V0
KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7
CisgICAgcmV0dXJuIFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOltzZWxmIF9lbGVtZW50XS0+
Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkuZ2V0KCldOwog
fQogCi0tIChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVtOihOU1N0cmluZyAqKW5hbWUKKy0gKEJP
T0wpaGFzQXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUKIHsKICAgICBBU1NFUlQobmFtZSk7CiAK
LSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPnJlbW92ZU5hbWVkSXRlbShuYW1lLCBleGNl
cHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlICopaXRlbToodW5zaWduZWQpaW5kZXgKLXsKLSAg
ICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5pdGVtKGlu
ZGV4KS5nZXQoKV07Ci19Ci0KLS0gKHVuc2lnbmVkKWxlbmd0aAotewotICAgIHJldHVybiBbc2Vs
ZiBfbmFtZWROb2RlTWFwXS0+bGVuZ3RoKCk7Ci19Ci0KLS0gKERPTU5vZGUgKilnZXROYW1lZEl0
ZW1OUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewot
ICAgIGlmICghbmFtZXNwYWNlVVJJIHx8ICFsb2NhbE5hbWUpIHsKLSAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICB9Ci0KLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5v
ZGVNYXBdLT5nZXROYW1lZEl0ZW1OUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkuZ2V0KCldOwot
fQotCi0tIChET01Ob2RlICopc2V0TmFtZWRJdGVtTlM6KERPTU5vZGUgKilhcmcKLXsKLSAgICBB
U1NFUlQoYXJnKTsKLQotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTU5vZGUgKnJlc3Vs
dCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+c2V0TmFtZWRJdGVt
TlMoW2FyZyBfbm9kZV0sIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihl
eGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50
XS0+aGFzQXR0cmlidXRlKG5hbWUpOwogfQogCi0tIChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVt
TlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKKy0gKEJP
T0wpaGFzQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKils
b2NhbE5hbWUKIHsKICAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKICAgICBBU1NFUlQobG9jYWxO
YW1lKTsKIAotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtE
T01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+cmVtb3ZlTmFtZWRJdGVtTlMo
bmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25E
T01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFtzZWxm
IF9lbGVtZW50XS0+aGFzQXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwogfQog
Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01OYW1lZE5vZGVNYXAgKFdlYkNvcmVJbnRlcm5h
bCkKLQotLSAoaWQpX2luaXRXaXRoTmFtZWROb2RlTWFwOihOYW1lZE5vZGVNYXAgKilpbXBsCist
ICh2b2lkKWZvY3VzCiB7Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsK
LSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAg
ICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVy
biBzZWxmOworICAgIFtzZWxmIF9lbGVtZW50XS0+Zm9jdXMoKTsKIH0KIAotKyAoRE9NTmFtZWRO
b2RlTWFwICopX25hbWVkTm9kZU1hcFdpdGg6KE5hbWVkTm9kZU1hcCAqKWltcGwKKy0gKHZvaWQp
Ymx1cgogewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBp
ZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1w
bCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQotICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0
YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxv
Y10gX2luaXRXaXRoTmFtZWROb2RlTWFwOmltcGxdIGF1dG9yZWxlYXNlXTsKKyAgICBbc2VsZiBf
ZWxlbWVudF0tPmJsdXIoKTsKIH0KIAogQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotLy8gRE9NTm9kZUxpc3QKLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGVMaXN0
Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9N
X2Nhc3Q8Tm9kZUxpc3QgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVy
IGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkg
ewotICAgICAgICBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAg
IH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChOb2RlTGlzdCAqKV9ub2RlTGlzdAot
ewotICAgIHJldHVybiBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50ZXJuYWwpOwotfQotCi0tIChE
T01Ob2RlICopaXRlbToodW5zaWduZWQpaW5kZXgKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25v
ZGVXaXRoOltzZWxmIF9ub2RlTGlzdF0tPml0ZW0oaW5kZXgpXTsKLX0KLQotLSAodW5zaWduZWQp
bGVuZ3RoCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlTGlzdF0tPmxlbmd0aCgpOwotfQotCi1A
ZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlTGlzdCAoV2ViQ29yZUludGVybmFsKQotCi0t
IChpZClfaW5pdFdpdGhOb2RlTGlzdDooTm9kZUxpc3QgKilpbXBsCi17Ci0gICAgQVNTRVJUKGlt
cGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01P
YmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFw
cGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01Ob2RlTGlzdCAq
KV9ub2RlTGlzdFdpdGg6KE5vZGVMaXN0ICopaW1wbAotewotICAgIGlmICghaW1wbCkKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJ
bnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQot
ICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAg
ICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTm9kZUxpc3Q6aW1wbF0gYXV0
b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0vLyBET01JbXBsZW1lbnRhdGlvbgotCi1AaW1wbGVtZW50YXRpb24gRE9NSW1wbGVtZW50
YXRpb24KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAgICAg
RE9NX2Nhc3Q8RE9NSW1wbGVtZW50YXRpb25Gcm9udCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwot
ICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6ZQotewotICAgIGlmIChf
aW50ZXJuYWwpCi0gICAgICAgIERPTV9jYXN0PERPTUltcGxlbWVudGF0aW9uRnJvbnQgKj4oX2lu
dGVybmFsKS0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChCT09MKWhh
c0ZlYXR1cmU6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbgotewotICAg
IEFTU0VSVChmZWF0dXJlKTsKLSAgICBBU1NFUlQodmVyc2lvbik7Ci0KLSAgICByZXR1cm4gW3Nl
bGYgX0RPTUltcGxlbWVudGF0aW9uXS0+aGFzRmVhdHVyZShmZWF0dXJlLCB2ZXJzaW9uKTsKLX0K
LQotLSAoRE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBlOihOU1N0cmluZyAqKXF1
YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXB1YmxpY0lkIDooTlNTdHJpbmcgKilzeXN0ZW1JZAot
ewotICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsKLSAgICBBU1NFUlQocHVibGljSWQpOwotICAg
IEFTU0VSVChzeXN0ZW1JZCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQ
dHI8RG9jdW1lbnRUeXBlPiBpbXBsID0gW3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+Y3JlYXRl
RG9jdW1lbnRUeXBlKHF1YWxpZmllZE5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCwgZWMpOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURvY3VtZW50
VHlwZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQoKV0pOwotfQotCi0tIChET01Eb2N1
bWVudCAqKWNyZWF0ZURvY3VtZW50OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5n
ICopcXVhbGlmaWVkTmFtZSA6KERPTURvY3VtZW50VHlwZSAqKWRvY3R5cGUKLXsKLSAgICBBU1NF
UlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7Ci0KLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8RG9jdW1lbnQ+IGltcGwgPSBbc2VsZiBfRE9N
SW1wbGVtZW50YXRpb25dLT5jcmVhdGVEb2N1bWVudChuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5h
bWUsIFtkb2N0eXBlIF9kb2N1bWVudFR5cGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVj
KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnQgKj4oW0RPTU5vZGUgX25vZGVX
aXRoOmltcGwuZ2V0KCldKTsKLX0KLQotLSAoRE9NSFRNTERvY3VtZW50ICopY3JlYXRlSFRNTERv
Y3VtZW50OihOU1N0cmluZyAqKXRpdGxlCi17Ci0gICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gaW1w
bCA9IFtzZWxmIF9ET01JbXBsZW1lbnRhdGlvbl0tPmNyZWF0ZUhUTUxEb2N1bWVudCh0aXRsZSk7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUhUTUxEb2N1bWVudCAqPihbRE9NTm9kZSBfbm9k
ZVdpdGg6aW1wbC5nZXQoKV0pOwotfQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NSW1wbGVt
ZW50YXRpb24gKERPTUltcGxlbWVudGF0aW9uQ1NTKQotCi0tIChET01DU1NTdHlsZVNoZWV0ICop
Y3JlYXRlQ1NTU3R5bGVTaGVldDooTlNTdHJpbmcgKil0aXRsZSA6KE5TU3RyaW5nICopbWVkaWEK
LXsKLSAgICBBU1NFUlQodGl0bGUpOwotICAgIEFTU0VSVChtZWRpYSk7Ci0KLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBET01DU1NTdHlsZVNoZWV0ICpyZXN1bHQgPSBbRE9NQ1NTU3R5
bGVTaGVldCBfQ1NTU3R5bGVTaGVldFdpdGg6W3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+Y3Jl
YXRlQ1NTU3R5bGVTaGVldCh0aXRsZSwgbWVkaWEsIGVjKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1AZW5kCi0gCi1AaW1wbGVtZW50
YXRpb24gRE9NSW1wbGVtZW50YXRpb24gKFdlYkNvcmVJbnRlcm5hbCkKLQotLSAoaWQpX2luaXRX
aXRoRE9NSW1wbGVtZW50YXRpb246KERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilpbXBsCi17Ci0g
ICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBE
T01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAg
ICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChE
T01JbXBsZW1lbnRhdGlvbiAqKV9ET01JbXBsZW1lbnRhdGlvbldpdGg6KERPTUltcGxlbWVudGF0
aW9uRnJvbnQgKilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwot
ICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9N
V3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBb
W2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBb
W1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhET01JbXBsZW1lbnRhdGlvbjppbXBsXSBhdXRvcmVsZWFz
ZV07Ci19Ci0KLS0gKERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilfRE9NSW1wbGVtZW50YXRpb24K
LXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8RE9NSW1wbGVtZW50YXRpb25Gcm9udCAqPihfaW50ZXJu
YWwpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0v
LyBET01Eb2N1bWVudEZyYWdtZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudEZyYWdt
ZW50Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50RnJhZ21lbnQgKFdlYkNv
cmVJbnRlcm5hbCkKLQotKyAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50
V2l0aDooRG9jdW1lbnRGcmFnbWVudCAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RE9NRG9jdW1lbnRGcmFnbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwotfQotCi0t
IChEb2N1bWVudEZyYWdtZW50ICopX2ZyYWdtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PERvY3VtZW50RnJhZ21lbnQgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQot
QGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NRG9jdW1l
bnQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50Ci0KLS0gKERPTU5vZGUgKilhZG9wdE5v
ZGU6KERPTU5vZGUgKilzb3VyY2UKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBE
T01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+YWRv
cHROb2RlKFtzb3VyY2UgX25vZGVdLCBlYykuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRG9jdW1lbnRUeXBlICopZG9jdHlw
ZQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudFR5cGUgKj4oW0RPTU5vZGUg
X25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmRvY3R5cGUoKV0pOwotfQotCi0tIChET01JbXBs
ZW1lbnRhdGlvbiAqKWltcGxlbWVudGF0aW9uCi17Ci0gICAgcmV0dXJuIFtET01JbXBsZW1lbnRh
dGlvbiBfRE9NSW1wbGVtZW50YXRpb25XaXRoOmltcGxlbWVudGF0aW9uRnJvbnQoW3NlbGYgX2Rv
Y3VtZW50XSldOwotfQotCi0tIChET01FbGVtZW50ICopZG9jdW1lbnRFbGVtZW50Ci17Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxm
IF9kb2N1bWVudF0tPmRvY3VtZW50RWxlbWVudCgpXSk7Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilj
cmVhdGVFbGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWUKLXsKLSAgICBBU1NFUlQodGFnTmFtZSk7
Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01FbGVtZW50ICpyZXN1bHQgPSBz
dGF0aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1l
bnRdLT5jcmVhdGVFbGVtZW50KHRhZ05hbWUsIGVjKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01F
cnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRG9jdW1lbnRGcmFnbWVu
dCAqKWNyZWF0ZURvY3VtZW50RnJhZ21lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9N
RG9jdW1lbnRGcmFnbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLmdldCgpXSk7Ci19Ci0KLS0gKERPTVRleHQgKiljcmVh
dGVUZXh0Tm9kZTooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxET01UZXh0ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9j
dW1lbnRdLT5jcmVhdGVUZXh0Tm9kZShkYXRhKS5nZXQoKV0pOwotfQotCi0tIChET01Db21tZW50
ICopY3JlYXRlQ29tbWVudDooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Db21tZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpb
c2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDb21tZW50KGRhdGEpLmdldCgpXSk7Ci19Ci0KLS0gKERP
TUNEQVRBU2VjdGlvbiAqKWNyZWF0ZUNEQVRBU2VjdGlvbjooTlNTdHJpbmcgKilkYXRhCi17Ci0g
ICAgQVNTRVJUKGRhdGEpOwotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTUNEQVRBU2Vj
dGlvbiAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RE9NQ0RBVEFTZWN0aW9uICo+KFtET01Ob2RlIF9u
b2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDREFUQVNlY3Rpb24oZGF0YSwgZXhjZXB0
aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLS0gKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKWNyZWF0ZVByb2Nl
c3NpbmdJbnN0cnVjdGlvbjooTlNTdHJpbmcgKil0YXJnZXQgOihOU1N0cmluZyAqKWRhdGEKLXsK
LSAgICBBU1NFUlQodGFyZ2V0KTsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgaW50IGV4Y2VwdGlv
biA9IDA7Ci0gICAgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICpyZXN1bHQgPSBzdGF0aWNfY2Fz
dDxET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9k
b2N1bWVudF0tPmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbih0YXJnZXQsIGRhdGEsIGV4Y2Vw
dGlvbikuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi0tIChET01BdHRyICopY3JlYXRlQXR0cmlidXRlOihOU1N0cmluZyAq
KW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAg
RE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNy
ZWF0ZUF0dHJpYnV0ZShuYW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01FbnRpdHlSZWZl
cmVuY2UgKiljcmVhdGVFbnRpdHlSZWZlcmVuY2U6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFT
U0VSVChuYW1lKTsKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01FbnRpdHlSZWZlcmVu
Y2UgKnJlc3VsdCA9IHN0YXRpY19jYXN0PERPTUVudGl0eVJlZmVyZW5jZSAqPihbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRW50aXR5UmVmZXJlbmNlKG5hbWUsIGV4
Y2VwdGlvbikuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1l
OihOU1N0cmluZyAqKXRhZ25hbWUKLXsKLSAgICBBU1NFUlQodGFnbmFtZSk7Ci0gICAgcmV0dXJu
IFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOltzZWxmIF9kb2N1bWVudF0tPmdldEVsZW1lbnRz
QnlUYWdOYW1lKHRhZ25hbWUpLmdldCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKWltcG9ydE5vZGU6
KERPTU5vZGUgKilpbXBvcnRlZE5vZGUgOihCT09MKWRlZXAKLXsKLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYg
X2RvY3VtZW50XS0+aW1wb3J0Tm9kZShbaW1wb3J0ZWROb2RlIF9ub2RlXSwgZGVlcCwgZWMpLmdl
dCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LS0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50TlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJ
IDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7
Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVu
dF0tPmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGVjKS5nZXQo
KV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9N
RWxlbWVudCAqPihyZXN1bHQpOwotfQotCi0tIChET01BdHRyICopY3JlYXRlQXR0cmlidXRlTlM6
KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lCi17Ci0g
ICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotCi0g
ICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0
dHJXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwg
cXVhbGlmaWVkTmFtZSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4
Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZUxpc3QgKilnZXRF
bGVtZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICop
bG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2Fs
TmFtZSk7Ci0KLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX2Rv
Y3VtZW50XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSku
Z2V0KCldOwotfQotCi0tIChET01FbGVtZW50ICopZ2V0RWxlbWVudEJ5SWQ6KE5TU3RyaW5nICop
ZWxlbWVudElkCi17Ci0gICAgQVNTRVJUKGVsZW1lbnRJZCk7Ci0KLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RE9NRWxlbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+
Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKV0pOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlv
biBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRSYW5nZSkKLQotLSAoRE9NUmFuZ2UgKiljcmVhdGVS
YW5nZQotewotICAgIHJldHVybiBbRE9NUmFuZ2UgX3JhbmdlV2l0aDpbc2VsZiBfZG9jdW1lbnRd
LT5jcmVhdGVSYW5nZSgpLmdldCgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9N
RG9jdW1lbnQgKERPTURvY3VtZW50Q1NTKQotCi0tIChET01DU1NTdHlsZURlY2xhcmF0aW9uICop
Z2V0T3ZlcnJpZGVTdHlsZTooRE9NRWxlbWVudCAqKWVsdCA6KE5TU3RyaW5nICopcHNldWRvRWx0
Ci17Ci0gICAgRWxlbWVudCAqZWxlbWVudCA9IFtlbHQgX2VsZW1lbnRdOwotICAgIFN0cmluZyBw
c2V1ZG9FbHRTdHJpbmcocHNldWRvRWx0KTsKLSAgICByZXR1cm4gW0RPTUNTU1N0eWxlRGVjbGFy
YXRpb24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOltzZWxmIF9kb2N1bWVudF0tPmdldE92ZXJyaWRl
U3R5bGUoZWxlbWVudCwgcHNldWRvRWx0U3RyaW5nLmltcGwoKSldOwotfQotCi1AZW5kCi0KLUBp
bXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRTdHlsZSkKLQotLSAoRE9NU3R5
bGVTaGVldExpc3QgKilzdHlsZVNoZWV0cwotewotICAgIHJldHVybiBbRE9NU3R5bGVTaGVldExp
c3QgX3N0eWxlU2hlZXRMaXN0V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5zdHlsZVNoZWV0cygpXTsK
LX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50RXh0
ZW5zaW9ucykKLQotLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKWNyZWF0ZUNTU1N0eWxlRGVj
bGFyYXRpb24KLXsKLSAgICByZXR1cm4gW0RPTUNTU1N0eWxlRGVjbGFyYXRpb24gX3N0eWxlRGVj
bGFyYXRpb25XaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24o
KS5nZXQoKV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChXZWJD
b3JlSW50ZXJuYWwpCi0KLSsgKERPTURvY3VtZW50ICopX2RvY3VtZW50V2l0aDooRG9jdW1lbnQg
KilpbXBsCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURvY3VtZW50ICo+KFtET01Ob2Rl
IF9ub2RlV2l0aDppbXBsXSk7Ci19Ci0KLS0gKERvY3VtZW50ICopX2RvY3VtZW50Ci17Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50ICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFs
KSk7Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilfb3duZXJFbGVtZW50Ci17Ci0gICAgcmV0dXJuIFtE
T01FbGVtZW50IF9lbGVtZW50V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5vd25lckVsZW1lbnQoKV07
Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERP
TUNoYXJhY3RlckRhdGEKLQotQGltcGxlbWVudGF0aW9uIERPTUNoYXJhY3RlckRhdGEKLQotLSAo
Q2hhcmFjdGVyRGF0YSAqKV9jaGFyYWN0ZXJEYXRhCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PENoYXJhY3RlckRhdGEgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAo
TlNTdHJpbmcgKilkYXRhCi17Ci0gICAgLy8gRG9jdW1lbnRhdGlvbiBzYXlzIHdlIGNhbiByYWlz
ZSBhIERPTVNUUklOR19TSVpFX0VSUi4KLSAgICAvLyBIb3dldmVyLCB0aGUgbG93ZXIgbGF5ZXIg
ZG9lcyBub3QgcmVwb3J0IHRoYXQgZXJyb3IgdXAgdG8gdXMuCi0gICAgcmV0dXJuIFtzZWxmIF9j
aGFyYWN0ZXJEYXRhXS0+ZGF0YSgpOwotfQotCi0tICh2b2lkKXNldERhdGE6KE5TU3RyaW5nICop
ZGF0YQotewotICAgIEFTU0VSVChkYXRhKTsKLSAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPnNldERhdGEoZGF0YSwgZWMpOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHVuc2lnbmVkKWxlbmd0aAotewotICAgIHJldHVy
biBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPmxlbmd0aCgpOwotfQotCi0tIChOU1N0cmluZyAqKXN1
YnN0cmluZ0RhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKWNvdW50Ci17Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgTlNTdHJpbmcgKnJlc3VsdCA9IFtzZWxmIF9jaGFyYWN0
ZXJEYXRhXS0+c3Vic3RyaW5nRGF0YShvZmZzZXQsIGNvdW50LCBlYyk7Ci0gICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKWFwcGVuZERhdGE6
KE5TU3RyaW5nICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7Ci0gICAgCi0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5hcHBlbmREYXRhKGFyZywg
ZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpaW5zZXJ0RGF0YToo
dW5zaWduZWQpb2Zmc2V0IDooTlNTdHJpbmcgKilhcmcKLXsKLSAgICBBU1NFUlQoYXJnKTsKLSAg
ICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0t
Pmluc2VydERhdGEob2Zmc2V0LCBhcmcsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwot
fQotCi0tICh2b2lkKWRlbGV0ZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKSBjb3Vu
dAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9jaGFyYWN0ZXJEYXRh
XS0+ZGVsZXRlRGF0YShvZmZzZXQsIGNvdW50LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVj
KTsKLX0KLQotLSAodm9pZClyZXBsYWNlRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQp
Y291bnQgOihOU1N0cmluZyAqKWFyZwotewotICAgIEFTU0VSVChhcmcpOwotCi0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5yZXBsYWNlRGF0YShv
ZmZzZXQsIGNvdW50LCBhcmcsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi1A
ZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01BdHRyCi0K
LUBpbXBsZW1lbnRhdGlvbiBET01BdHRyCi0KLS0gKE5TU3RyaW5nICopbmFtZQotewotICAgIHJl
dHVybiBbc2VsZiBfYXR0cl0tPm5vZGVOYW1lKCk7Ci19Ci0KLS0gKEJPT0wpc3BlY2lmaWVkCi17
Ci0gICAgcmV0dXJuIFtzZWxmIF9hdHRyXS0+c3BlY2lmaWVkKCk7Ci19Ci0KLS0gKE5TU3RyaW5n
ICopdmFsdWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2F0dHJdLT5ub2RlVmFsdWUoKTsKLX0KLQot
LSAodm9pZClzZXRWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZQotewotICAgIEFTU0VSVCh2YWx1ZSk7
Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfYXR0cl0tPnNldFZhbHVl
KHZhbHVlLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoRE9NRWxlbWVu
dCAqKW93bmVyRWxlbWVudAotewotICAgIHJldHVybiBbRE9NRWxlbWVudCBfZWxlbWVudFdpdGg6
W3NlbGYgX2F0dHJdLT5vd25lckVsZW1lbnQoKV07Ci19Ci0KLS0gKERPTUNTU1N0eWxlRGVjbGFy
YXRpb24gKilzdHlsZQotewotICAgIHJldHVybiBbRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBfc3R5
bGVEZWNsYXJhdGlvbldpdGg6IFtzZWxmIF9hdHRyXS0+c3R5bGUoKV07Ci19Ci0KLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIERPTUF0dHIgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NQXR0ciAq
KV9hdHRyV2l0aDooQXR0ciAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NQXR0
ciAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwotfQotCi0tIChBdHRyICopX2F0dHIKLXsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXR0ciAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5h
bCkpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0v
LyBET01FbGVtZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01FbGVtZW50Ci0KLS0gKE5TU3RyaW5n
ICopdGFnTmFtZQotewotICAgIHJldHVybiBbc2VsZiBfZWxlbWVudF0tPm5vZGVOYW1lKCk7Ci19
Ci0KLS0gKERPTU5hbWVkTm9kZU1hcCAqKWF0dHJpYnV0ZXMKLXsKLSAgICByZXR1cm4gW0RPTU5h
bWVkTm9kZU1hcCBfbmFtZWROb2RlTWFwV2l0aDpbc2VsZiBfZWxlbWVudF0tPmF0dHJpYnV0ZXMo
KV07Ci19Ci0KLS0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUKLXsK
LSAgICBBU1NFUlQobmFtZSk7Ci0gICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50XS0+Z2V0QXR0cmli
dXRlKG5hbWUpOwotfQotCi0tICh2b2lkKXNldEF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lIDoo
TlNTdHJpbmcgKil2YWx1ZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBBU1NFUlQodmFsdWUp
OwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5zZXRBdHRy
aWJ1dGUobmFtZSwgdmFsdWUsIGV4Y2VwdGlvbik7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2Vw
dGlvbik7Ci19Ci0KLS0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUKLXsK
LSAgICBBU1NFUlQobmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBbc2VsZiBf
ZWxlbWVudF0tPnJlbW92ZUF0dHJpYnV0ZShuYW1lLCBleGNlcHRpb24pOwotICAgIHJhaXNlT25E
T01FcnJvcihleGNlcHRpb24pOwotfQotCi0tIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9kZToo
TlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0gICAgcmV0dXJuIFtET01B
dHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0ZU5vZGUobmFtZSkuZ2V0
KCldOwotfQotCi0tIChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZTooRE9NQXR0ciAqKW5ld0F0
dHIKLXsKLSAgICBBU1NFUlQobmV3QXR0cik7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAg
ICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2VsZW1lbnRdLT5z
ZXRBdHRyaWJ1dGVOb2RlKFtuZXdBdHRyIF9hdHRyXSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAo
RE9NQXR0ciAqKXJlbW92ZUF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKilvbGRBdHRyCi17Ci0gICAg
QVNTRVJUKG9sZEF0dHIpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAq
cmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+cmVtb3ZlQXR0cmli
dXRlTm9kZShbb2xkQXR0ciBfYXR0cl0sIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25E
T01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGVM
aXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWU6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VS
VChuYW1lKTsKLQotICAgIHJldHVybiBbRE9NTm9kZUxpc3QgX25vZGVMaXN0V2l0aDpbc2VsZiBf
ZWxlbWVudF0tPmdldEVsZW1lbnRzQnlUYWdOYW1lKG5hbWUpLmdldCgpXTsKLX0KLQotLSAoTlNT
dHJpbmcgKilnZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmlu
ZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChs
b2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50XS0+Z2V0QXR0cmlidXRlTlMo
bmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwotfQotCi0tICh2b2lkKXNldEF0dHJpYnV0ZU5TOihO
U1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3Ry
aW5nICopdmFsdWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQocXVh
bGlmaWVkTmFtZSk7Ci0gICAgQVNTRVJUKHZhbHVlKTsKLQotICAgIGludCBleGNlcHRpb24gPSAw
OwotICAgIFtzZWxmIF9lbGVtZW50XS0+c2V0QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBxdWFs
aWZpZWROYW1lLCB2YWx1ZSwgZXhjZXB0aW9uKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0
aW9uKTsKLX0KLQotLSAodm9pZClyZW1vdmVBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3Bh
Y2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkp
OwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAg
W3NlbGYgX2VsZW1lbnRdLT5yZW1vdmVBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFt
ZSwgZXhjZXB0aW9uKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLX0KLQotLSAo
RE9NQXR0ciAqKWdldEF0dHJpYnV0ZU5vZGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihO
U1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFT
U0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBf
ZWxlbWVudF0tPmdldEF0dHJpYnV0ZU5vZGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkuZ2V0
KCldOwotfQotCi0tIChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZU5TOihET01BdHRyICopbmV3
QXR0cgotewotICAgIEFTU0VSVChuZXdBdHRyKTsKLQotICAgIGludCBleGNlcHRpb24gPSAwOwot
ICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0t
PnNldEF0dHJpYnV0ZU5vZGVOUyhbbmV3QXR0ciBfYXR0cl0sIGV4Y2VwdGlvbikuZ2V0KCldOwot
ICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWVOUzooTlNTdHJpbmcgKiluYW1l
c3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VV
UkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtET01Ob2RlTGlzdCBf
bm9kZUxpc3RXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhuYW1l
c3BhY2VVUkksIGxvY2FsTmFtZSkuZ2V0KCldOwotfQotCi0tIChCT09MKWhhc0F0dHJpYnV0ZToo
TlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0gICAgcmV0dXJuIFtzZWxm
IF9lbGVtZW50XS0+aGFzQXR0cmlidXRlKG5hbWUpOwotfQotCi0tIChCT09MKWhhc0F0dHJpYnV0
ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0g
ICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICBy
ZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5oYXNBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2Fs
TmFtZSk7Ci19Ci0KLS0gKHZvaWQpZm9jdXMKLXsKLSAgICBbc2VsZiBfZWxlbWVudF0tPmZvY3Vz
KCk7Ci19Ci0KLS0gKHZvaWQpYmx1cgotewotICAgIFtzZWxmIF9lbGVtZW50XS0+Ymx1cigpOwot
fQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01FbGVtZW50IChET01FbGVtZW50Q1NTSW5s
aW5lU3R5bGUpCi0KLS0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZQotewotICAgIHJl
dHVybiBbRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6W3NlbGYg
X2VsZW1lbnRdLT5zdHlsZSgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRWxl
bWVudCAoRE9NRWxlbWVudEV4dGVuc2lvbnMpCi0KLS0gKE5TSW1hZ2UqKWltYWdlCi17Ci0gICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IFtzZWxmIF9lbGVtZW50XS0+cmVuZGVyZXIoKTsKLSAg
ICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzSW1hZ2UoKSkgewotICAgICAgICBSZW5kZXJJ
bWFnZSogaW1nID0gc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UqPihyZW5kZXJlcik7Ci0gICAgICAg
IGlmIChpbWctPmNhY2hlZEltYWdlKCkgJiYgIWltZy0+Y2FjaGVkSW1hZ2UoKS0+aXNFcnJvcklt
YWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gaW1nLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpLT5n
ZXROU0ltYWdlKCk7Ci0gICAgfQotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKHZvaWQpc2Nyb2xs
SW50b1ZpZXc6KEJPT0wpYWxpZ25Ub3AKLXsKLSAgICBbc2VsZiBfZWxlbWVudF0tPnNjcm9sbElu
dG9WaWV3KGFsaWduVG9wKTsKLX0KLQotLSAodm9pZClzY3JvbGxJbnRvVmlld0lmTmVlZGVkOihC
T09MKWNlbnRlcklmTmVlZGVkCi17Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5zY3JvbGxJbnRvVmll
d0lmTmVlZGVkKGNlbnRlcklmTmVlZGVkKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24g
RE9NRWxlbWVudCAoV2ViQ29yZUludGVybmFsKQotCi0rIChET01FbGVtZW50ICopX2VsZW1lbnRX
aXRoOihFbGVtZW50ICopaW1wbAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01FbGVtZW50
ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19Ci0KLS0gKEVsZW1lbnQgKilfZWxlbWVu
dAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50ICo+KERPTV9jYXN0PE5vZGUgKj4o
X2ludGVybmFsKSk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUVsZW1lbnQgKFdl
YlByaXZhdGUpCi0KLS0gKE5TRm9udCAqKV9mb250Ci17Ci0gICAgUmVuZGVyT2JqZWN0ICpyZW5k
ZXJlciA9IFtzZWxmIF9lbGVtZW50XS0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIpIHsK
LSAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5zdHlsZSgpLT5mb250KCkuZ2V0TlNGb250KCk7Ci0g
ICAgfQotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKE5TRGF0YSopX2ltYWdlVElGRlJlcHJlc2Vu
dGF0aW9uCi17Ci0gICAgUmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9lbGVtZW50XS0+
cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzSW1hZ2UoKSkgewot
ICAgICAgICBSZW5kZXJJbWFnZSogaW1nID0gc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UqPihyZW5k
ZXJlcik7Ci0gICAgICAgIGlmIChpbWctPmNhY2hlZEltYWdlKCkgJiYgIWltZy0+Y2FjaGVkSW1h
Z2UoKS0+aXNFcnJvckltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gKE5TRGF0YSopKGltZy0+
Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKS0+Z2V0VElGRlJlcHJlc2VudGF0aW9uKCkpOwotICAgIH0K
LSAgICByZXR1cm4gbmlsOwotfQotCi0tIChOU1VSTCAqKV9nZXRVUkxBdHRyaWJ1dGU6KE5TU3Ry
aW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBFbGVtZW50ICplID0gW3NlbGYg
X2VsZW1lbnRdOwotICAgIEFTU0VSVChlKTsKLSAgICByZXR1cm4gS1VSTChlLT5kb2N1bWVudCgp
LT5jb21wbGV0ZVVSTChwYXJzZVVSTChlLT5nZXRBdHRyaWJ1dGUobmFtZSkpLmRlcHJlY2F0ZWRT
dHJpbmcoKSkpLmdldE5TVVJMKCk7Ci19Ci0KLS0gKHZvaWQgKilfTlBPYmplY3QKLXsKLSAgICBF
bGVtZW50KiBlbGVtZW50ID0gW3NlbGYgX2VsZW1lbnRdOwotICAgIGlmIChlbGVtZW50LT5oYXNU
YWdOYW1lKGFwcGxldFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShlbWJlZFRhZykgfHwgZWxl
bWVudC0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqPihlbGVtZW50KS0+Z2V0TlBPYmplY3QoKTsKLSAg
ICBlbHNlCi0gICAgICAgIHJldHVybiAwOwotfQotCi0tIChCT09MKWlzRm9jdXNlZAotewotICAg
IEVsZW1lbnQqIGltcGwgPSBbc2VsZiBfZWxlbWVudF07Ci0gICAgaWYgKGltcGwtPmRvY3VtZW50
KCktPmZvY3VzTm9kZSgpID09IGltcGwpCi0gICAgICAgIHJldHVybiBZRVM7Ci0gICAgcmV0dXJu
IE5POwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0v
LyBET01UZXh0Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01UZXh0Ci0KLS0gKFRleHQgKilfdGV4dAot
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0ICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVy
bmFsKSk7Ci19Ci0KLS0gKERPTVRleHQgKilzcGxpdFRleHQ6KHVuc2lnbmVkKW9mZnNldAotewot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2Rl
IF9ub2RlV2l0aDpbc2VsZiBfdGV4dF0tPnNwbGl0VGV4dChvZmZzZXQsIGVjKV07Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NVGV4dCAqPihyZXN1
bHQpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0v
LyBET01Db21tZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Db21tZW50Ci0KLUBlbmQKLQotLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUNEQVRBU2VjdGlvbgotCi1A
aW1wbGVtZW50YXRpb24gRE9NQ0RBVEFTZWN0aW9uCi0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTURvY3VtZW50VHlwZQotCi1AaW1wbGVtZW50YXRp
b24gRE9NRG9jdW1lbnRUeXBlCi0KLS0gKE5TU3RyaW5nICopbmFtZQotewotICAgIHJldHVybiBb
c2VsZiBfZG9jdW1lbnRUeXBlXS0+cHVibGljSWQoKTsKLX0KLQotLSAoRE9NTmFtZWROb2RlTWFw
ICopZW50aXRpZXMKLXsKLSAgICByZXR1cm4gW0RPTU5hbWVkTm9kZU1hcCBfbmFtZWROb2RlTWFw
V2l0aDpbc2VsZiBfZG9jdW1lbnRUeXBlXS0+ZW50aXRpZXMoKV07Ci19Ci0KLS0gKERPTU5hbWVk
Tm9kZU1hcCAqKW5vdGF0aW9ucwotewotICAgIHJldHVybiBbRE9NTmFtZWROb2RlTWFwIF9uYW1l
ZE5vZGVNYXBXaXRoOltzZWxmIF9kb2N1bWVudFR5cGVdLT5ub3RhdGlvbnMoKV07Ci19Ci0KLS0g
KE5TU3RyaW5nICopcHVibGljSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2RvY3VtZW50VHlwZV0t
PnB1YmxpY0lkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopc3lzdGVtSWQKLXsKLSAgICByZXR1cm4g
W3NlbGYgX2RvY3VtZW50VHlwZV0tPnN5c3RlbUlkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopaW50
ZXJuYWxTdWJzZXQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2RvY3VtZW50VHlwZV0tPmludGVybmFs
U3Vic2V0KCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50VHlwZSAo
V2ViQ29yZUludGVybmFsKQotCi0tIChEb2N1bWVudFR5cGUgKilfZG9jdW1lbnRUeXBlCi17Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50VHlwZSAqPihET01fY2FzdDxOb2RlICo+KF9p
bnRlcm5hbCkpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0vLyBET01Ob3RhdGlvbgotCi1AaW1wbGVtZW50YXRpb24gRE9NTm90YXRpb24KLQotLSAo
Tm90YXRpb24gKilfbm90YXRpb24KLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Tm90YXRpb24g
Kj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKilwdWJs
aWNJZAotewotICAgIHJldHVybiBbc2VsZiBfbm90YXRpb25dLT5wdWJsaWNJZCgpOwotfQotCi0t
IChOU1N0cmluZyAqKXN5c3RlbUlkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub3RhdGlvbl0tPnN5
c3RlbUlkKCk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS8vIERPTUVudGl0eQotCi1AaW1wbGVtZW50YXRpb24gRE9NRW50aXR5Ci0KLS0gKEVudGl0
eSAqKV9lbnRpdHkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RW50aXR5ICo+KERPTV9jYXN0
PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopcHVibGljSWQKLXsKLSAg
ICByZXR1cm4gW3NlbGYgX2VudGl0eV0tPnB1YmxpY0lkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICop
c3lzdGVtSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2VudGl0eV0tPnN5c3RlbUlkKCk7Ci19Ci0K
LS0gKE5TU3RyaW5nICopbm90YXRpb25OYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9lbnRpdHld
LT5ub3RhdGlvbk5hbWUoKTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotLy8gRE9NRW50aXR5UmVmZXJlbmNlCi0KLUBpbXBsZW1lbnRhdGlvbiBET01F
bnRpdHlSZWZlcmVuY2UKLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotLy8gRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24KLQotLSAoUHJvY2Vzc2luZ0luc3RydWN0aW9uICopX3Byb2Nl
c3NpbmdJbnN0cnVjdGlvbgotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24gKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJp
bmcgKil0YXJnZXQKLXsKLSAgICByZXR1cm4gW3NlbGYgX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbl0t
PnRhcmdldCgpOwotfQotCi0tIChOU1N0cmluZyAqKWRhdGEKLXsKLSAgICByZXR1cm4gW3NlbGYg
X3Byb2Nlc3NpbmdJbnN0cnVjdGlvbl0tPmRhdGEoKTsKLX0KLQotLSAodm9pZClzZXREYXRhOihO
U1N0cmluZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQoZGF0YSk7Ci0KLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBbc2VsZiBfcHJvY2Vzc2luZ0luc3RydWN0aW9uXS0+c2V0RGF0YShkYXRh
LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NUmFuZ2UKLQotQGltcGxlbWVudGF0aW9u
IERPTVJhbmdlCi0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAg
ICAgICAgRE9NX2Nhc3Q8UmFuZ2UgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAg
W3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgaWYgKF9pbnRl
cm5hbCkgewotICAgICAgICBET01fY2FzdDxSYW5nZSAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwot
ICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChOU1N0cmluZyAqKWRlc2NyaXB0
aW9uCi17Ci0gICAgaWYgKCFfaW50ZXJuYWwpCi0gICAgICAgIHJldHVybiBAIjxET01SYW5nZTog
bnVsbD4iOwotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxET01SYW5n
ZTogJUAgJWQgJUAgJWQ+IiwKLSAgICAgICAgW3NlbGYgc3RhcnRDb250YWluZXJdLCBbc2VsZiBz
dGFydE9mZnNldF0sCi0gICAgICAgIFtzZWxmIGVuZENvbnRhaW5lcl0sIFtzZWxmIGVuZE9mZnNl
dF1dOwotfQotCi0tIChET01Ob2RlICopc3RhcnRDb250YWluZXIKLXsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX3JhbmdlXS0+c3RhcnRDb250YWluZXIoZWMpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKGludClzdGFydE9mZnNldAotewotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGludCByZXN1bHQgPSBbc2VsZiBfcmFuZ2VdLT5zdGFy
dE9mZnNldChlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi0tIChET01Ob2RlICopZW5kQ29udGFpbmVyCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9y
YW5nZV0tPmVuZENvbnRhaW5lcihlYyldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoaW50KWVuZE9mZnNldAotewotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIGludCByZXN1bHQgPSBbc2VsZiBfcmFuZ2VdLT5lbmRPZmZzZXQoZWMp
OwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAo
Qk9PTCljb2xsYXBzZWQKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBCT09MIHJl
c3VsdCA9IFtzZWxmIF9yYW5nZV0tPmNvbGxhcHNlZChlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlICopY29tbW9uQW5jZXN0
b3JDb250YWluZXIKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpy
ZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3JhbmdlXS0+Y29tbW9uQW5jZXN0b3JD
b250YWluZXIoZWMpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLS0gKHZvaWQpc2V0U3RhcnQ6KERPTU5vZGUgKilyZWZOb2RlIDooaW50KW9mZnNl
dAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9yYW5nZV0tPnNldFN0
YXJ0KFtyZWZOb2RlIF9ub2RlXSwgb2Zmc2V0LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVj
KTsKLX0KLQotLSAodm9pZClzZXRFbmQ6KERPTU5vZGUgKilyZWZOb2RlIDooaW50KW9mZnNldAot
ewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9yYW5nZV0tPnNldEVuZChb
cmVmTm9kZSBfbm9kZV0sIG9mZnNldCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19
Ci0KLS0gKHZvaWQpc2V0U3RhcnRCZWZvcmU6KERPTU5vZGUgKilyZWZOb2RlCi17Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+c2V0U3RhcnRCZWZvcmUoW3Jl
Zk5vZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9p
ZClzZXRTdGFydEFmdGVyOihET01Ob2RlICopcmVmTm9kZQotewotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIFtzZWxmIF9yYW5nZV0tPnNldFN0YXJ0QWZ0ZXIoW3JlZk5vZGUgX25vZGVd
LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClzZXRFbmRCZWZv
cmU6KERPTU5vZGUgKilyZWZOb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
W3NlbGYgX3JhbmdlXS0+c2V0RW5kQmVmb3JlKFtyZWZOb2RlIF9ub2RlXSwgZWMpOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc2V0RW5kQWZ0ZXI6KERPTU5vZGUgKily
ZWZOb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+
c2V0RW5kQWZ0ZXIoW3JlZk5vZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVj
KTsKLX0KLQotLSAodm9pZCljb2xsYXBzZTooQk9PTCl0b1N0YXJ0Ci17Ci0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+Y29sbGFwc2UodG9TdGFydCwgZWMpOwot
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc2VsZWN0Tm9kZTooRE9NTm9k
ZSAqKXJlZk5vZGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFu
Z2VdLT5zZWxlY3ROb2RlKFtyZWZOb2RlIF9ub2RlXSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJv
cihlYyk7Ci19Ci0KLS0gKHZvaWQpc2VsZWN0Tm9kZUNvbnRlbnRzOihET01Ob2RlICopcmVmTm9k
ZQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9yYW5nZV0tPnNlbGVj
dE5vZGVDb250ZW50cyhbcmVmTm9kZSBfbm9kZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3Io
ZWMpOwotfQotCi0tIChzaG9ydCljb21wYXJlQm91bmRhcnlQb2ludHM6KHVuc2lnbmVkIHNob3J0
KWhvdyA6KERPTVJhbmdlICopc291cmNlUmFuZ2UKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBzaG9ydCByZXN1bHQgPSBbc2VsZiBfcmFuZ2VdLT5jb21wYXJlQm91bmRhcnlQb2lu
dHMoc3RhdGljX2Nhc3Q8UmFuZ2U6OkNvbXBhcmVIb3c+KGhvdyksIFtzb3VyY2VSYW5nZSBfcmFu
Z2VdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi0tICh2b2lkKWRlbGV0ZUNvbnRlbnRzCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgW3NlbGYgX3JhbmdlXS0+ZGVsZXRlQ29udGVudHMoZWMpOwotICAgIHJhaXNlT25ET01F
cnJvcihlYyk7Ci19Ci0KLS0gKERPTURvY3VtZW50RnJhZ21lbnQgKilleHRyYWN0Q29udGVudHMK
LXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Eb2N1bWVudEZyYWdtZW50ICpy
ZXN1bHQgPSBbRE9NRG9jdW1lbnRGcmFnbWVudCBfZG9jdW1lbnRGcmFnbWVudFdpdGg6W3NlbGYg
X3JhbmdlXS0+ZXh0cmFjdENvbnRlbnRzKGVjKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Eb2N1bWVudEZyYWdtZW50ICop
Y2xvbmVDb250ZW50cwotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTURvY3Vt
ZW50RnJhZ21lbnQgKnJlc3VsdCA9IFtET01Eb2N1bWVudEZyYWdtZW50IF9kb2N1bWVudEZyYWdt
ZW50V2l0aDpbc2VsZiBfcmFuZ2VdLT5jbG9uZUNvbnRlbnRzKGVjKS5nZXQoKV07Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKWluc2Vy
dE5vZGU6KERPTU5vZGUgKiluZXdOb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgW3NlbGYgX3JhbmdlXS0+aW5zZXJ0Tm9kZShbbmV3Tm9kZSBfbm9kZV0sIGVjKTsKLSAgICBy
YWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKXN1cnJvdW5kQ29udGVudHM6KERPTU5v
ZGUgKiluZXdQYXJlbnQKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBf
cmFuZ2VdLT5zdXJyb3VuZENvbnRlbnRzKFtuZXdQYXJlbnQgX25vZGVdLCBlYyk7Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoRE9NUmFuZ2UgKiljbG9uZVJhbmdlCi17Ci0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NUmFuZ2UgKnJlc3VsdCA9IFtET01SYW5nZSBf
cmFuZ2VXaXRoOltzZWxmIF9yYW5nZV0tPmNsb25lUmFuZ2UoZWMpLmdldCgpXTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKE5TU3RyaW5nICop
dG9TdHJpbmcKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBOU1N0cmluZyAqcmVz
dWx0ID0gW3NlbGYgX3JhbmdlXS0+dG9TdHJpbmcoZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoTlNTdHJpbmcgKil0ZXh0Ci17Ci0gICAg
cmV0dXJuIFtzZWxmIF9yYW5nZV0tPnRleHQoKTsKLX0KLQotLSAodm9pZClkZXRhY2gKLXsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5kZXRhY2goZWMpOwot
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERP
TVJhbmdlIChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKGlkKV9pbml0V2l0aFJhbmdlOihSYW5nZSAq
KWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9p
bnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGltcGwt
PnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7
Ci19Ci0KLSsgKERPTVJhbmdlICopX3JhbmdlV2l0aDooUmFuZ2UgKilpbXBsCi17Ci0gICAgaWYg
KCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNl
OwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2Fj
aGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0
b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhSYW5n
ZTppbXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKFJhbmdlICopX3JhbmdlCi17Ci0gICAgcmV0
dXJuIERPTV9jYXN0PFJhbmdlICo+KF9pbnRlcm5hbCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVu
dGF0aW9uIERPTVJhbmdlIChXZWJQcml2YXRlKQotCi0tIChOU1N0cmluZyAqKV90ZXh0Ci17Ci0g
ICAgcmV0dXJuIFtzZWxmIHRleHRdOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0K
LUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlRmlsdGVyCi0KLS0gKGlkKV9pbml0V2l0aE5vZGVGaWx0
ZXI6KE5vZGVGaWx0ZXIgKilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVy
IF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihp
bXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwot
ICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01Ob2RlRmlsdGVyICopX25vZGVGaWx0ZXJXaXRo
OihOb2RlRmlsdGVyICopaW1wbAotewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9IGdl
dERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQotICAgICAgICByZXR1
cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICByZXR1
cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTm9kZUZpbHRlcjppbXBsXSBhdXRvcmVsZWFzZV07
Ci19Ci0KLS0gKE5vZGVGaWx0ZXIgKilfbm9kZUZpbHRlcgotewotICAgIHJldHVybiBET01fY2Fz
dDxOb2RlRmlsdGVyICo+KF9pbnRlcm5hbCk7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAg
IGlmIChfaW50ZXJuYWwpCi0gICAgICAgIERPTV9jYXN0PE5vZGVGaWx0ZXIgKj4oX2ludGVybmFs
KS0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUK
LXsKLSAgICBpZiAoX2ludGVybmFsKQotICAgICAgICBET01fY2FzdDxOb2RlRmlsdGVyICo+KF9p
bnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQotLSAoc2hvcnQp
YWNjZXB0Tm9kZTooRE9NTm9kZSAqKW5vZGUKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVGaWx0
ZXJdLT5hY2NlcHROb2RlKFtub2RlIF9ub2RlXSk7Ci19Ci0KLUBlbmQKLQotCi1AaW1wbGVtZW50
YXRpb24gRE9NTm9kZUl0ZXJhdG9yCi0KLS0gKGlkKV9pbml0V2l0aE5vZGVJdGVyYXRvcjooTm9k
ZUl0ZXJhdG9yICopaW1wbCBmaWx0ZXI6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIKLXsKLSAg
ICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERP
TV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGltcGwtPnJlZigpOwotICAg
IGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgbV9maWx0ZXIgPSBbZmlsdGVyIHJldGFp
bl07Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKE5vZGVJdGVyYXRvciAqKV9ub2RlSXRlcmF0
b3IKLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8Tm9kZUl0ZXJhdG9yICo+KF9pbnRlcm5hbCk7Ci19
Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFttX2ZpbHRlciByZWxlYXNlXTsKLSAgICBpZiAo
X2ludGVybmFsKSB7Ci0gICAgICAgIFtzZWxmIGRldGFjaF07Ci0gICAgICAgIERPTV9jYXN0PE5v
ZGVJdGVyYXRvciAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZGVh
bGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0g
ICAgICAgIFtzZWxmIGRldGFjaF07Ci0gICAgICAgIERPTV9jYXN0PE5vZGVJdGVyYXRvciAqPihf
aW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0t
IChET01Ob2RlICopcm9vdAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYg
X25vZGVJdGVyYXRvcl0tPnJvb3QoKV07Ci19Ci0KLS0gKHVuc2lnbmVkKXdoYXRUb1Nob3cKLXsK
LSAgICByZXR1cm4gW3NlbGYgX25vZGVJdGVyYXRvcl0tPndoYXRUb1Nob3coKTsKLX0KLQotLSAo
aWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgotewotICAgIGlmIChtX2ZpbHRlcikKLSAgICAgICAg
Ly8gVGhpcyBub2RlIGl0ZXJhdG9yIHdhcyBjcmVhdGVkIGZyb20gdGhlIG9iamMgc2lkZQotICAg
ICAgICByZXR1cm4gW1ttX2ZpbHRlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLQotICAgIC8vIFRo
aXMgbm9kZSBpdGVyYXRvciB3YXMgY3JlYXRlZCBmcm9tIHRoZSBjKysgc2lkZQotICAgIHJldHVy
biBbRE9NTm9kZUZpbHRlciBfbm9kZUZpbHRlcldpdGg6W3NlbGYgX25vZGVJdGVyYXRvcl0tPmZp
bHRlcigpXTsKLX0KLQotLSAoQk9PTClleHBhbmRFbnRpdHlSZWZlcmVuY2VzCi17Ci0gICAgcmV0
dXJuIFtzZWxmIF9ub2RlSXRlcmF0b3JdLT5leHBhbmRFbnRpdHlSZWZlcmVuY2VzKCk7Ci19Ci0K
LS0gKERPTU5vZGUgKiluZXh0Tm9kZQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZUl0ZXJhdG9y
XS0+bmV4dE5vZGUoZWMpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUgKilwcmV2aW91c05vZGUKLXsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX25vZGVJdGVyYXRvcl0tPnByZXZpb3VzTm9kZShlYyldOwotICAgIHJhaXNlT25ET01FcnJv
cihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAodm9pZClkZXRhY2gKLXsKLSAgICBb
c2VsZiBfbm9kZUl0ZXJhdG9yXS0+ZGV0YWNoKCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0
aW9uIERPTU5vZGVJdGVyYXRvcihXZWJDb3JlSW50ZXJuYWwpCi0KLSsgKERPTU5vZGVJdGVyYXRv
ciAqKV9ub2RlSXRlcmF0b3JXaXRoOihOb2RlSXRlcmF0b3IgKilpbXBsIGZpbHRlcjooaWQgPERP
TU5vZGVGaWx0ZXI+KWZpbHRlcgotewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9IGdl
dERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQotICAgICAgICByZXR1
cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICByZXR1
cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTm9kZUl0ZXJhdG9yOmltcGwgZmlsdGVyOmZpbHRl
cl0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01UcmVlV2Fs
a2VyCi0KLS0gKGlkKV9pbml0V2l0aFRyZWVXYWxrZXI6KFRyZWVXYWxrZXIgKilpbXBsIGZpbHRl
cjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgotewotICAgIEFTU0VSVChpbXBsKTsKLQotICAg
IFtzdXBlciBfaW5pdF07Ci0gICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJu
YWwgKj4oaW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcihzZWxmLCBp
bXBsKTsKLSAgICBtX2ZpbHRlciA9IFtmaWx0ZXIgcmV0YWluXTsKLSAgICByZXR1cm4gc2VsZjsK
LX0KLQotLSAoVHJlZVdhbGtlciAqKV90cmVlV2Fsa2VyCi17Ci0gICAgcmV0dXJuIERPTV9jYXN0
PFRyZWVXYWxrZXIgKj4oX2ludGVybmFsKTsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAg
aWYgKG1fZmlsdGVyKQotICAgICAgICBbbV9maWx0ZXIgcmVsZWFzZV07Ci0gICAgaWYgKF9pbnRl
cm5hbCkgewotICAgICAgICBET01fY2FzdDxUcmVlV2Fsa2VyICo+KF9pbnRlcm5hbCktPmRlcmVm
KCk7Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6ZQot
ewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8VHJlZVdhbGtlciAqPihf
aW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0t
IChET01Ob2RlICopcm9vdAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYg
X3RyZWVXYWxrZXJdLT5yb290KCldOwotfQotCi0tICh1bnNpZ25lZCl3aGF0VG9TaG93Ci17Ci0g
ICAgcmV0dXJuIFtzZWxmIF90cmVlV2Fsa2VyXS0+d2hhdFRvU2hvdygpOwotfQotCi0tIChpZCA8
RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgaWYgKG1fZmlsdGVyKQotICAgICAgICAvLyBU
aGlzIHRyZWUgd2Fsa2VyIHdhcyBjcmVhdGVkIGZyb20gdGhlIG9iamMgc2lkZQotICAgICAgICBy
ZXR1cm4gW1ttX2ZpbHRlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLQotICAgIC8vIFRoaXMgdHJl
ZSB3YWxrZXIgd2FzIGNyZWF0ZWQgZnJvbSB0aGUgYysrIHNpZGUKLSAgICByZXR1cm4gW0RPTU5v
ZGVGaWx0ZXIgX25vZGVGaWx0ZXJXaXRoOltzZWxmIF90cmVlV2Fsa2VyXS0+ZmlsdGVyKCldOwot
fQotCi0tIChCT09MKWV4cGFuZEVudGl0eVJlZmVyZW5jZXMKLXsKLSAgICByZXR1cm4gW3NlbGYg
X3RyZWVXYWxrZXJdLT5leHBhbmRFbnRpdHlSZWZlcmVuY2VzKCk7Ci19Ci0KLS0gKERPTU5vZGUg
KiljdXJyZW50Tm9kZQotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3Ry
ZWVXYWxrZXJdLT5jdXJyZW50Tm9kZSgpXTsKLX0KLQotLSAodm9pZClzZXRDdXJyZW50Tm9kZToo
RE9NTm9kZSAqKWN1cnJlbnROb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
W3NlbGYgX3RyZWVXYWxrZXJdLT5zZXRDdXJyZW50Tm9kZShbY3VycmVudE5vZGUgX25vZGVdLCBl
Yyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoRE9NTm9kZSAqKXBhcmVudE5v
ZGUKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90cmVlV2Fsa2VyXS0+
cGFyZW50Tm9kZSgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKWZpcnN0Q2hpbGQKLXsKLSAgICByZXR1
cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90cmVlV2Fsa2VyXS0+Zmlyc3RDaGlsZCgpXTsK
LX0KLQotLSAoRE9NTm9kZSAqKWxhc3RDaGlsZAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5sYXN0Q2hpbGQoKV07Ci19Ci0KLS0gKERPTU5vZGUg
KilwcmV2aW91c1NpYmxpbmcKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxm
IF90cmVlV2Fsa2VyXS0+cHJldmlvdXNTaWJsaW5nKCldOwotfQotCi0tIChET01Ob2RlICopbmV4
dFNpYmxpbmcKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90cmVlV2Fs
a2VyXS0+bmV4dFNpYmxpbmcoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilwcmV2aW91c05vZGUKLXsK
LSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90cmVlV2Fsa2VyXS0+cHJldmlv
dXNOb2RlKCldOwotfQotCi0tIChET01Ob2RlICopbmV4dE5vZGUKLXsKLSAgICByZXR1cm4gW0RP
TU5vZGUgX25vZGVXaXRoOltzZWxmIF90cmVlV2Fsa2VyXS0+bmV4dE5vZGUoKV07Ci19Ci0KLUBl
bmQKLQotQGltcGxlbWVudGF0aW9uIERPTVRyZWVXYWxrZXIgKFdlYkNvcmVJbnRlcm5hbCkKLQot
KyAoRE9NVHJlZVdhbGtlciAqKV90cmVlV2Fsa2VyV2l0aDooVHJlZVdhbGtlciAqKWltcGwgZmls
dGVyOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAg
ICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZElu
c3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0g
ICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAg
IAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhUcmVlV2Fsa2VyOmltcGwgZmls
dGVyOmZpbHRlcl0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLWNsYXNzIE9iakNOb2RlRmls
dGVyQ29uZGl0aW9uIDogcHVibGljIE5vZGVGaWx0ZXJDb25kaXRpb24gCi17Ci1wdWJsaWM6Ci0g
ICAgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oaWQgPERPTU5vZGVGaWx0ZXI+KTsKLSAgICB2aXJ0
dWFsIH5PYmpDTm9kZUZpbHRlckNvbmRpdGlvbigpOwotICAgIHZpcnR1YWwgc2hvcnQgYWNjZXB0
Tm9kZShOb2RlKikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgT2JqQ05vZGVGaWx0ZXJDb25kaXRp
b24oY29uc3QgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24gJik7Ci0gICAgT2JqQ05vZGVGaWx0ZXJD
b25kaXRpb24gJm9wZXJhdG9yPShjb25zdCBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbiAmKTsKLQot
ICAgIGlkIDxET01Ob2RlRmlsdGVyPiBtX2ZpbHRlcjsKLX07Ci0KLU9iakNOb2RlRmlsdGVyQ29u
ZGl0aW9uOjpPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihpZCA8RE9NTm9kZUZpbHRlcj4gZmlsdGVy
KQotICAgIDogbV9maWx0ZXIoZmlsdGVyKQotewotICAgIEFTU0VSVChtX2ZpbHRlcik7Ci0gICAg
Q0ZSZXRhaW4obV9maWx0ZXIpOwotfQotCi1PYmpDTm9kZUZpbHRlckNvbmRpdGlvbjo6fk9iakNO
b2RlRmlsdGVyQ29uZGl0aW9uKCkKLXsKLSAgICBDRlJlbGVhc2UobV9maWx0ZXIpOwotfQotCi1z
aG9ydCBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0Tm9kZShOb2RlKiBub2RlKSBjb25z
dAotewotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXI6OkZJTFRFUl9S
RUpFQ1Q7Ci0gICAgcmV0dXJuIFttX2ZpbHRlciBhY2NlcHROb2RlOltET01Ob2RlIF9ub2RlV2l0
aDpub2RlXV07Ci19Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRU
cmF2ZXJzYWwpCi0KLS0gKERPTU5vZGVJdGVyYXRvciAqKWNyZWF0ZU5vZGVJdGVyYXRvcjooRE9N
Tm9kZSAqKXJvb3QgOih1bnNpZ25lZCl3aGF0VG9TaG93IDooaWQgPERPTU5vZGVGaWx0ZXI+KWZp
bHRlciA6KEJPT0wpZXhwYW5kRW50aXR5UmVmZXJlbmNlcwotewotICAgIFJlZlB0cjxOb2RlRmls
dGVyPiBjcHBGaWx0ZXI7Ci0gICAgaWYgKGZpbHRlcikKLSAgICAgICAgY3BwRmlsdGVyID0gbmV3
IE5vZGVGaWx0ZXIobmV3IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKGZpbHRlcikpOwotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxOb2RlSXRlcmF0b3I+IGltcGwgPSBbc2Vs
ZiBfZG9jdW1lbnRdLT5jcmVhdGVOb2RlSXRlcmF0b3IoW3Jvb3QgX25vZGVdLCB3aGF0VG9TaG93
LCBjcHBGaWx0ZXIsIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMsIGVjKTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOwotICAgIHJldHVybiBbRE9NTm9kZUl0ZXJhdG9yIF9ub2RlSXRlcmF0b3JXaXRo
OmltcGwuZ2V0KCkgZmlsdGVyOmZpbHRlcl07Ci19Ci0KLS0gKERPTVRyZWVXYWxrZXIgKiljcmVh
dGVUcmVlV2Fsa2VyOihET01Ob2RlICopcm9vdCA6KHVuc2lnbmVkKXdoYXRUb1Nob3cgOihpZCA8
RE9NTm9kZUZpbHRlcj4pZmlsdGVyIDooQk9PTClleHBhbmRFbnRpdHlSZWZlcmVuY2VzCi17Ci0g
ICAgUmVmUHRyPE5vZGVGaWx0ZXI+IGNwcEZpbHRlcjsKLSAgICBpZiAoZmlsdGVyKQotICAgICAg
ICBjcHBGaWx0ZXIgPSBuZXcgTm9kZUZpbHRlcihuZXcgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24o
ZmlsdGVyKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFRyZWVXYWxr
ZXI+IGltcGwgPSBbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVUcmVlV2Fsa2VyKFtyb290IF9ub2Rl
XSwgd2hhdFRvU2hvdywgY3BwRmlsdGVyLCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzLCBlYyk7Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gW0RPTVRyZWVXYWxrZXIgX3RyZWVX
YWxrZXJXaXRoOmltcGwuZ2V0KCkgZmlsdGVyOmZpbHRlcl07Ci19Ci0KLUBlbmQKLQotT2JqQ0V2
ZW50TGlzdGVuZXIqIE9iakNFdmVudExpc3RlbmVyOjpmaW5kKGlkIDxET01FdmVudExpc3RlbmVy
PiBsaXN0ZW5lcikKLXsKLSAgICBpZiAoTGlzdGVuZXJNYXAqIG1hcCA9IGxpc3RlbmVyTWFwKQot
ICAgICAgICByZXR1cm4gbWFwLT5nZXQobGlzdGVuZXIpOwotICAgIHJldHVybiBOVUxMOwotfQot
Ci1PYmpDRXZlbnRMaXN0ZW5lciAqT2JqQ0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShpZCA8RE9NRXZl
bnRMaXN0ZW5lcj4gbGlzdGVuZXIpCi17Ci0gICAgT2JqQ0V2ZW50TGlzdGVuZXIgKndyYXBwZXIg
PSBmaW5kKGxpc3RlbmVyKTsKLSAgICBpZiAoIXdyYXBwZXIpCi0gICAgICAgIHdyYXBwZXIgPSBu
ZXcgT2JqQ0V2ZW50TGlzdGVuZXIobGlzdGVuZXIpOwotICAgIHdyYXBwZXItPnJlZigpOwotICAg
IHJldHVybiB3cmFwcGVyOwotfQotCi1PYmpDRXZlbnRMaXN0ZW5lcjo6T2JqQ0V2ZW50TGlzdGVu
ZXIoaWQgPERPTUV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKQotICAgIDogbV9saXN0ZW5lcihbbGlz
dGVuZXIgcmV0YWluXSkKLXsKLSAgICBMaXN0ZW5lck1hcCogbWFwID0gbGlzdGVuZXJNYXA7Ci0g
ICAgaWYgKCFtYXApIHsKLSAgICAgICAgbWFwID0gbmV3IExpc3RlbmVyTWFwOwotICAgICAgICBs
aXN0ZW5lck1hcCA9IG1hcDsKLSAgICB9Ci0gICAgbWFwLT5zZXQobGlzdGVuZXIsIHRoaXMpOwot
fQotCi1PYmpDRXZlbnRMaXN0ZW5lcjo6fk9iakNFdmVudExpc3RlbmVyKCkKLXsKLSAgICBsaXN0
ZW5lck1hcC0+cmVtb3ZlKG1fbGlzdGVuZXIpOwotICAgIFttX2xpc3RlbmVyIHJlbGVhc2VdOwot
fQotCi12b2lkIE9iakNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChFdmVudCAqZXZlbnQsIGJv
b2wpCi17Ci0gICAgW21fbGlzdGVuZXIgaGFuZGxlRXZlbnQ6W0RPTUV2ZW50IF9ldmVudFdpdGg6
ZXZlbnRdXTsKLX0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FdmVudHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZlbnRzLmgJKHJldmlzaW9uIDE1
OTU5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsNiArMjQsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAor
I2ltcG9ydCA8V2ViQ29yZS9ET01Ob2RlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9ET01WaWV3cy5oPgogCiBAY2xhc3MgRE9NRXZlbnQ7CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXh0ZW5zaW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FeHRlbnNpb25zLmgJKHJldmlzaW9uIDE1OTU5KQorKysg
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV4dGVuc2lvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2Ft
dWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIzLDEyICsyNCwxOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2lt
cG9ydCA8V2ViQ29yZS9ET01BdHRyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUNTUy5oPgorI2lt
cG9ydCA8V2ViQ29yZS9ET01ET01JbXBsZW1lbnRhdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9E
T01Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01FbGVtZW50Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0RPTUhUTUwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NTm9kZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9ET01SYW5nZS5oPgogCiBAY2xhc3MgTlNDb2xvcjsKIEBjbGFzcyBOU0ltYWdlOwor
QGNsYXNzIERPTUhUTUxDb2xsZWN0aW9uOwogCiBAaW50ZXJmYWNlIERPTUltcGxlbWVudGF0aW9u
IChET01JbXBsZW1lbnRhdGlvbkV4dGVuc2lvbnMpCiAtIChET01IVE1MRG9jdW1lbnQgKiljcmVh
dGVIVE1MRG9jdW1lbnQ6KE5TU3RyaW5nICopdGl0bGU7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NSW1wbGVtZW50YXRpb25Gcm9udC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01JbXBsZW1lbnRhdGlvbkZyb250LmgJKHJldmlzaW9uIDE1OTU5KQorKysg
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUltcGxlbWVudGF0aW9uRnJvbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29t
cHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2Vp
bmlnQGdtYWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNTMsNiArNTQsNiBAQCBwdWJs
aWM6CiAKIERPTUltcGxlbWVudGF0aW9uRnJvbnQqIGltcGxlbWVudGF0aW9uRnJvbnQoRG9jdW1l
bnQqKTsKIAotfSAvL25hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYK
KyNlbmRpZiAvLyBET01JbXBsZW1lbnRhdGlvbkZyb250X2gKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01JbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01JbnRlcm5hbC5oCShyZXZpc2lvbiAxNTk1OSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01JbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEphbWVzIEcuIFNwZXRoIChzcGV0aEBlbmQu
Y29tKQorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbS53ZWluaWdAZ21h
aWwuY29tKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwyNSArMjcsNDIg
QEAKIAogI2ltcG9ydCAiRE9NLmgiCiAKKyNpbXBvcnQgIkRPTUF0dHIuaCIKKyNpbXBvcnQgIkRP
TURPTUltcGxlbWVudGF0aW9uLmgiCisjaW1wb3J0ICJET01Eb2N1bWVudC5oIgorI2ltcG9ydCAi
RE9NRG9jdW1lbnRGcmFnbWVudC5oIgorI2ltcG9ydCAiRE9NRG9jdW1lbnRUeXBlLmgiCisjaW1w
b3J0ICJET01FbGVtZW50LmgiCisjaW1wb3J0ICJET01OYW1lZE5vZGVNYXAuaCIKKyNpbXBvcnQg
IkRPTU5vZGUuaCIKKyNpbXBvcnQgIkRPTU5vZGVMaXN0LmgiCisjaW1wb3J0ICJET01PYmplY3Qu
aCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIEF0dHI7CiAgICAgY2xhc3MgQ1NT
U3R5bGVEZWNsYXJhdGlvbjsKICAgICBjbGFzcyBDU1NTdHlsZVNoZWV0OwotICAgIGNsYXNzIERv
Y3VtZW50RnJhZ21lbnQ7CisgICAgY2xhc3MgRE9NSW1wbGVtZW50YXRpb25Gcm9udDsKICAgICBj
bGFzcyBEb2N1bWVudDsKKyAgICBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogICAgIGNsYXNzIERv
Y3VtZW50VHlwZTsKICAgICBjbGFzcyBFbGVtZW50OwotICAgIGNsYXNzIE5vZGVGaWx0ZXI7Cisg
ICAgY2xhc3MgTmFtZWROb2RlTWFwOwogICAgIGNsYXNzIE5vZGU7CisgICAgY2xhc3MgTm9kZUZp
bHRlcjsKICAgICBjbGFzcyBOb2RlSXRlcmF0b3I7Ci0gICAgY2xhc3MgTmFtZWROb2RlTWFwOwog
ICAgIGNsYXNzIE5vZGVMaXN0OwogICAgIGNsYXNzIFJhbmdlOwogICAgIGNsYXNzIFN0eWxlU2hl
ZXRMaXN0OwogICAgIGNsYXNzIFRyZWVXYWxrZXI7Ci0KKyAgICAKICAgICB0eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOwogfQogCitAaW50ZXJmYWNlIERPTU9iamVjdCAoV2ViQ29yZUludGVybmFs
KQorLSAoaWQpX2luaXQ7CitAZW5kCisKIEBpbnRlcmZhY2UgRE9NTm9kZSAoV2ViQ29yZUludGVy
bmFsKQogKyAoRE9NTm9kZSAqKV9ub2RlV2l0aDooV2ViQ29yZTo6Tm9kZSAqKWltcGw7CiAtIChX
ZWJDb3JlOjpOb2RlICopX25vZGU7CkBAIC02Myw2ICs4MSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAtIChXZWJDb3JlOjpFbGVtZW50ICopX2VsZW1lbnQ7CiBAZW5kCiAKK0BpbnRlcmZhY2Ug
RE9NQXR0ciAoV2ViQ29yZUludGVybmFsKQorKyAoRE9NQXR0ciAqKV9hdHRyV2l0aDooV2ViQ29y
ZTo6QXR0ciAqKWltcGw7CistIChXZWJDb3JlOjpBdHRyICopX2F0dHI7CitAZW5kCisKK0BpbnRl
cmZhY2UgRE9NRG9jdW1lbnRUeXBlIChXZWJDb3JlSW50ZXJuYWwpCistIChXZWJDb3JlOjpEb2N1
bWVudFR5cGUgKilfRG9jdW1lbnRUeXBlOworQGVuZAorCitAaW50ZXJmYWNlIERPTUltcGxlbWVu
dGF0aW9uIChXZWJDb3JlSW50ZXJuYWwpCisrIChET01JbXBsZW1lbnRhdGlvbiAqKV9ET01JbXBs
ZW1lbnRhdGlvbldpdGg6KFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uRnJvbnQgKilpbXBsOwor
LSAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKV9ET01JbXBsZW1lbnRhdGlvbjsK
K0BlbmQKKwogQGludGVyZmFjZSBET01Eb2N1bWVudCAoV2ViQ29yZUludGVybmFsKQogKyAoRE9N
RG9jdW1lbnQgKilfZG9jdW1lbnRXaXRoOihXZWJDb3JlOjpEb2N1bWVudCAqKWltcGw7CiAtIChX
ZWJDb3JlOjpEb2N1bWVudCAqKV9kb2N1bWVudDsKQEAgLTg3LDEwICsxMTksNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiArIChET01UcmVlV2Fsa2VyICopX3RyZWVXYWxrZXJXaXRoOihXZWJDb3Jl
OjpUcmVlV2Fsa2VyICopaW1wbCBmaWx0ZXI6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXI7CiBA
ZW5kCiAKLUBpbnRlcmZhY2UgRE9NT2JqZWN0IChXZWJDb3JlSW50ZXJuYWwpCi0tIChpZClfaW5p
dDsKLUBlbmQKLQogQGludGVyZmFjZSBET01DU1NTdHlsZURlY2xhcmF0aW9uIChXZWJDb3JlSW50
ZXJuYWwpCiArIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopX3N0eWxlRGVjbGFyYXRpb25XaXRo
OihXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uICopaW1wbDsKIC0gKFdlYkNvcmU6OkNTU1N0
eWxlRGVjbGFyYXRpb24gKilfc3R5bGVEZWNsYXJhdGlvbjsKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01OYW1lZE5vZGVNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NTmFtZWROb2RlTWFwLmgJKHJldmlzaW9uIDE1OTU5KQorKysgV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTU5hbWVkTm9kZU1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vpbmln
IDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjMsMTA3ICsyNCw5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW1wb3J0IDxXZWJD
b3JlL1dlYlNjcmlwdE9iamVjdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KIAot
QGNsYXNzIERPTURvY3VtZW50OyAKLUBjbGFzcyBET01Eb2N1bWVudFR5cGU7Ci1AY2xhc3MgRE9N
RWxlbWVudDsKLUBjbGFzcyBET01OYW1lZE5vZGVNYXA7Ci1AY2xhc3MgRE9NTm9kZUxpc3Q7Ci0K
LXR5cGVkZWYgc3RydWN0IERPTU9iamVjdEludGVybmFsIERPTU9iamVjdEludGVybmFsOwotCi1A
aW50ZXJmYWNlIERPTU9iamVjdCA6IFdlYlNjcmlwdE9iamVjdCA8TlNDb3B5aW5nPgotewotICAg
IERPTU9iamVjdEludGVybmFsICpfaW50ZXJuYWw7Ci19Ci1AZW5kCi0KLXR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBsb25nIERPTVRpbWVTdGFtcDsKLQotZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgRE9N
RXhjZXB0aW9uOwotCi1lbnVtIHsKLSAgICAvLwotICAgIC8vIERPTSBleGNlcHRpb24gY29kZXMK
LSAgICAvLwotICAgIERPTV9JTkRFWF9TSVpFX0VSUiAgICAgICAgICAgICAgICA9IDEsCi0gICAg
RE9NX0RPTVNUUklOR19TSVpFX0VSUiAgICAgICAgICAgID0gMiwKLSAgICBET01fSElFUkFSQ0hZ
X1JFUVVFU1RfRVJSICAgICAgICAgPSAzLAotICAgIERPTV9XUk9OR19ET0NVTUVOVF9FUlIgICAg
ICAgICAgICA9IDQsCi0gICAgRE9NX0lOVkFMSURfQ0hBUkFDVEVSX0VSUiAgICAgICAgID0gNSwK
LSAgICBET01fTk9fREFUQV9BTExPV0VEX0VSUiAgICAgICAgICAgPSA2LAotICAgIERPTV9OT19N
T0RJRklDQVRJT05fQUxMT1dFRF9FUlIgICA9IDcsCi0gICAgRE9NX05PVF9GT1VORF9FUlIgICAg
ICAgICAgICAgICAgID0gOCwKLSAgICBET01fTk9UX1NVUFBPUlRFRF9FUlIgICAgICAgICAgICAg
PSA5LAotICAgIERPTV9JTlVTRV9BVFRSSUJVVEVfRVJSICAgICAgICAgICA9IDEwLAotICAgIERP
TV9JTlZBTElEX1NUQVRFX0VSUiAgICAgICAgICAgICA9IDExLAotICAgIERPTV9TWU5UQVhfRVJS
ICAgICAgICAgICAgICAgICAgICA9IDEyLAotICAgIERPTV9JTlZBTElEX01PRElGSUNBVElPTl9F
UlIgICAgICA9IDEzLAotICAgIERPTV9OQU1FU1BBQ0VfRVJSICAgICAgICAgICAgICAgICA9IDE0
LAotICAgIERPTV9JTlZBTElEX0FDQ0VTU19FUlIgICAgICAgICAgICA9IDE1Ci19OwotCi1AaW50
ZXJmYWNlIERPTUltcGxlbWVudGF0aW9uIDogRE9NT2JqZWN0Ci0tIChCT09MKWhhc0ZlYXR1cmU6
KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbjsKLS0gKERPTURvY3VtZW50
VHlwZSAqKWNyZWF0ZURvY3VtZW50VHlwZTooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNT
dHJpbmcgKilwdWJsaWNJZCA6KE5TU3RyaW5nICopc3lzdGVtSWQ7Ci0tIChET01Eb2N1bWVudCAq
KWNyZWF0ZURvY3VtZW50OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVh
bGlmaWVkTmFtZSA6KERPTURvY3VtZW50VHlwZSAqKWRvY3R5cGU7Ci1AZW5kCi0KLWVudW0gewot
ICAgIC8vCi0gICAgLy8gRE9NIG5vZGUgdHlwZXMKLSAgICAvLwotICAgIERPTV9FTEVNRU5UX05P
REUgICAgICAgICAgICAgICAgICA9IDEsCi0gICAgRE9NX0FUVFJJQlVURV9OT0RFICAgICAgICAg
ICAgICAgID0gMiwKLSAgICBET01fVEVYVF9OT0RFICAgICAgICAgICAgICAgICAgICAgPSAzLAot
ICAgIERPTV9DREFUQV9TRUNUSU9OX05PREUgICAgICAgICAgICA9IDQsCi0gICAgRE9NX0VOVElU
WV9SRUZFUkVOQ0VfTk9ERSAgICAgICAgID0gNSwKLSAgICBET01fRU5USVRZX05PREUgICAgICAg
ICAgICAgICAgICAgPSA2LAotICAgIERPTV9QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUgICA9
IDcsCi0gICAgRE9NX0NPTU1FTlRfTk9ERSAgICAgICAgICAgICAgICAgID0gOCwKLSAgICBET01f
RE9DVU1FTlRfTk9ERSAgICAgICAgICAgICAgICAgPSA5LAotICAgIERPTV9ET0NVTUVOVF9UWVBF
X05PREUgICAgICAgICAgICA9IDEwLAotICAgIERPTV9ET0NVTUVOVF9GUkFHTUVOVF9OT0RFICAg
ICAgICA9IDExLAotICAgIERPTV9OT1RBVElPTl9OT0RFICAgICAgICAgICAgICAgICA9IDEyCi19
OwotCi1AaW50ZXJmYWNlIERPTU5vZGUgOiBET01PYmplY3QKLS0gKE5TU3RyaW5nICopbm9kZU5h
bWU7Ci0tIChOU1N0cmluZyAqKW5vZGVWYWx1ZTsKLS0gKHZvaWQpc2V0Tm9kZVZhbHVlOihOU1N0
cmluZyAqKXN0cmluZzsKLS0gKHVuc2lnbmVkIHNob3J0KW5vZGVUeXBlOwotLSAoRE9NTm9kZSAq
KXBhcmVudE5vZGU7Ci0tIChET01Ob2RlTGlzdCAqKWNoaWxkTm9kZXM7Ci0tIChET01Ob2RlICop
Zmlyc3RDaGlsZDsKLS0gKERPTU5vZGUgKilsYXN0Q2hpbGQ7Ci0tIChET01Ob2RlICopcHJldmlv
dXNTaWJsaW5nOwotLSAoRE9NTm9kZSAqKW5leHRTaWJsaW5nOwotLSAoRE9NTmFtZWROb2RlTWFw
ICopYXR0cmlidXRlczsKLS0gKERPTURvY3VtZW50ICopb3duZXJEb2N1bWVudDsKLS0gKERPTU5v
ZGUgKilpbnNlcnRCZWZvcmU6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilyZWZDaGls
ZDsKLS0gKERPTU5vZGUgKilyZXBsYWNlQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5v
ZGUgKilvbGRDaGlsZDsKLS0gKERPTU5vZGUgKilyZW1vdmVDaGlsZDooRE9NTm9kZSAqKW9sZENo
aWxkOwotLSAoRE9NTm9kZSAqKWFwcGVuZENoaWxkOihET01Ob2RlICopbmV3Q2hpbGQ7Ci0tIChC
T09MKWhhc0NoaWxkTm9kZXM7Ci0tIChET01Ob2RlICopY2xvbmVOb2RlOihCT09MKWRlZXA7Ci0t
ICh2b2lkKW5vcm1hbGl6ZTsKLS0gKEJPT0wpaXNTdXBwb3J0ZWQ6KE5TU3RyaW5nICopZmVhdHVy
ZSA6KE5TU3RyaW5nICopdmVyc2lvbjsKLS0gKE5TU3RyaW5nICopbmFtZXNwYWNlVVJJOwotLSAo
TlNTdHJpbmcgKilwcmVmaXg7Ci0tICh2b2lkKXNldFByZWZpeDooTlNTdHJpbmcgKilwcmVmaXg7
Ci0tIChOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKEJPT0wpaGFzQXR0cmlidXRlczsKLS0gKEJP
T0wpaXNTYW1lTm9kZTooRE9NTm9kZSAqKW90aGVyOwotLSAoQk9PTClpc0VxdWFsTm9kZTooRE9N
Tm9kZSAqKW90aGVyOwotLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudDsKLS0gKHZvaWQpc2V0VGV4
dENvbnRlbnQ6KE5TU3RyaW5nICopdGV4dDsKLUBlbmQKLQotQGludGVyZmFjZSBET01Ob2RlTGlz
dCA6IERPTU9iamVjdAotLSAoRE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4OwotLSAodW5z
aWduZWQpbGVuZ3RoOwotQGVuZAorQGNsYXNzIERPTU5vZGU7CiAKIEBpbnRlcmZhY2UgRE9NTmFt
ZWROb2RlTWFwIDogRE9NT2JqZWN0CiAtIChET01Ob2RlICopZ2V0TmFtZWRJdGVtOihOU1N0cmlu
ZyAqKW5hbWU7CkBAIC0xMzUsMTA2ICszOCwzIEBAIGVudW0gewogLSAoRE9NTm9kZSAqKXNldE5h
bWVkSXRlbU5TOihET01Ob2RlICopYXJnOwogLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbU5T
OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwogQGVuZAot
Ci1AaW50ZXJmYWNlIERPTUNoYXJhY3RlckRhdGEgOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKWRh
dGE7Ci0tICh2b2lkKXNldERhdGE6KE5TU3RyaW5nICopZGF0YTsKLS0gKHVuc2lnbmVkKWxlbmd0
aDsKLS0gKE5TU3RyaW5nICopc3Vic3RyaW5nRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWdu
ZWQpY291bnQ7Ci0tICh2b2lkKWFwcGVuZERhdGE6KE5TU3RyaW5nICopYXJnOwotLSAodm9pZClp
bnNlcnREYXRhOih1bnNpZ25lZClvZmZzZXQgOihOU1N0cmluZyAqKWFyZzsKLS0gKHZvaWQpZGVs
ZXRlRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpIGNvdW50OwotLSAodm9pZClyZXBs
YWNlRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpY291bnQgOihOU1N0cmluZyAqKWFy
ZzsKLUBlbmQKLQotQGludGVyZmFjZSBET01BdHRyIDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKilu
YW1lOwotLSAoQk9PTClzcGVjaWZpZWQ7Ci0tIChOU1N0cmluZyAqKXZhbHVlOwotLSAodm9pZClz
ZXRWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZTsKLS0gKERPTUVsZW1lbnQgKilvd25lckVsZW1lbnQ7
Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRWxlbWVudCA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICop
dGFnTmFtZTsKLS0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWU7Ci0t
ICh2b2lkKXNldEF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lIDooTlNTdHJpbmcgKil2YWx1ZTsK
LS0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01BdHRyICop
Z2V0QXR0cmlidXRlTm9kZTooTlNTdHJpbmcgKiluYW1lOwotLSAoRE9NQXR0ciAqKXNldEF0dHJp
YnV0ZU5vZGU6KERPTUF0dHIgKiluZXdBdHRyOwotLSAoRE9NQXR0ciAqKXJlbW92ZUF0dHJpYnV0
ZU5vZGU6KERPTUF0dHIgKilvbGRBdHRyOwotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5
VGFnTmFtZTooTlNTdHJpbmcgKiluYW1lOwotLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1dGVOUzoo
TlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKHZvaWQp
c2V0QXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFs
aWZpZWROYW1lIDooTlNTdHJpbmcgKil2YWx1ZTsKLS0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlTlM6
KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tIChET01B
dHRyICopZ2V0QXR0cmlidXRlTm9kZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3Ry
aW5nICopbG9jYWxOYW1lOwotLSAoRE9NQXR0ciAqKXNldEF0dHJpYnV0ZU5vZGVOUzooRE9NQXR0
ciAqKW5ld0F0dHI7Ci0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5T
U3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tIChCT09MKWhh
c0F0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lOwotLSAoQk9PTCloYXNBdHRyaWJ1dGVOUzooTlNT
dHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKHZvaWQpZm9j
dXM7Ci0tICh2b2lkKWJsdXI7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NVGV4dCA6IERPTUNoYXJh
Y3RlckRhdGEKLS0gKERPTVRleHQgKilzcGxpdFRleHQ6KHVuc2lnbmVkKW9mZnNldDsKLUBlbmQK
LQotQGludGVyZmFjZSBET01Db21tZW50IDogRE9NQ2hhcmFjdGVyRGF0YQotQGVuZAotCi1AaW50
ZXJmYWNlIERPTUNEQVRBU2VjdGlvbiA6IERPTVRleHQKLUBlbmQKLQotQGludGVyZmFjZSBET01E
b2N1bWVudFR5cGUgOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKW5hbWU7Ci0tIChET01OYW1lZE5v
ZGVNYXAgKillbnRpdGllczsKLS0gKERPTU5hbWVkTm9kZU1hcCAqKW5vdGF0aW9uczsKLS0gKE5T
U3RyaW5nICopcHVibGljSWQ7Ci0tIChOU1N0cmluZyAqKXN5c3RlbUlkOwotLSAoTlNTdHJpbmcg
KilpbnRlcm5hbFN1YnNldDsKLUBlbmQKLQotQGludGVyZmFjZSBET01Ob3RhdGlvbiA6IERPTU5v
ZGUKLS0gKE5TU3RyaW5nICopcHVibGljSWQ7Ci0tIChOU1N0cmluZyAqKXN5c3RlbUlkOwotQGVu
ZAotCi1AaW50ZXJmYWNlIERPTUVudGl0eSA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopcHVibGlj
SWQ7Ci0tIChOU1N0cmluZyAqKXN5c3RlbUlkOwotLSAoTlNTdHJpbmcgKilub3RhdGlvbk5hbWU7
Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRW50aXR5UmVmZXJlbmNlIDogRE9NTm9kZQotQGVuZAot
Ci1AaW50ZXJmYWNlIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiA6IERPTU5vZGUKLS0gKE5TU3Ry
aW5nICopdGFyZ2V0OwotLSAoTlNTdHJpbmcgKilkYXRhOwotLSAodm9pZClzZXREYXRhOihOU1N0
cmluZyAqKWRhdGE7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRG9jdW1lbnRGcmFnbWVudCA6IERP
TU5vZGUKLUBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudCA6IERPTU5vZGUKLS0gKERPTURv
Y3VtZW50VHlwZSAqKWRvY3R5cGU7Ci0tIChET01JbXBsZW1lbnRhdGlvbiAqKWltcGxlbWVudGF0
aW9uOwotLSAoRE9NRWxlbWVudCAqKWRvY3VtZW50RWxlbWVudDsKLS0gKERPTUVsZW1lbnQgKilj
cmVhdGVFbGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWU7Ci0tIChET01Eb2N1bWVudEZyYWdtZW50
ICopY3JlYXRlRG9jdW1lbnRGcmFnbWVudDsKLS0gKERPTVRleHQgKiljcmVhdGVUZXh0Tm9kZToo
TlNTdHJpbmcgKilkYXRhOwotLSAoRE9NQ29tbWVudCAqKWNyZWF0ZUNvbW1lbnQ6KE5TU3RyaW5n
ICopZGF0YTsKLS0gKERPTUNEQVRBU2VjdGlvbiAqKWNyZWF0ZUNEQVRBU2VjdGlvbjooTlNTdHJp
bmcgKilkYXRhOwotLSAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICopY3JlYXRlUHJvY2Vzc2lu
Z0luc3RydWN0aW9uOihOU1N0cmluZyAqKXRhcmdldCA6KE5TU3RyaW5nICopZGF0YTsKLS0gKERP
TUF0dHIgKiljcmVhdGVBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTUVudGl0eVJl
ZmVyZW5jZSAqKWNyZWF0ZUVudGl0eVJlZmVyZW5jZTooTlNTdHJpbmcgKiluYW1lOwotLSAoRE9N
Tm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZTooTlNTdHJpbmcgKil0YWduYW1lOwotLSAo
RE9NTm9kZSAqKWltcG9ydE5vZGU6KERPTU5vZGUgKilpbXBvcnRlZE5vZGUgOihCT09MKWRlZXA7
Ci0tIChET01FbGVtZW50ICopY3JlYXRlRWxlbWVudE5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVS
SSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZTsKLS0gKERPTUF0dHIgKiljcmVhdGVBdHRyaWJ1
dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWU7
Ci0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFt
ZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tIChET01FbGVtZW50ICopZ2V0RWxl
bWVudEJ5SWQ6KE5TU3RyaW5nICopZWxlbWVudElkOwotLSAoRE9NTm9kZSAqKWFkb3B0Tm9kZToo
RE9NTm9kZSAqKXNvdXJjZTsKLUBlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01O
YW1lZE5vZGVNYXAubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5h
bWVkTm9kZU1hcC5tbQkocmV2aXNpb24gMTU5NTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NTmFtZWROb2RlTWFwLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2IEphbWVzIEcuIFNwZXRoIChzcGV0aEBl
bmQuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA2IEphbWVzIEcuIFNwZXRoIDxzcGV0aEBlbmQu
Y29tPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21h
aWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw2NjYgKzI2LDM0
IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJET00uaCIKKyNpbXBvcnQg
IkRPTU5hbWVkTm9kZU1hcC5oIgogCi0jaW1wb3J0ICJDREFUQVNlY3Rpb24uaCIKLSNpbXBvcnQg
ImNzc2hlbHBlci5oIgotI2ltcG9ydCAiQ1NTU3R5bGVTaGVldC5oIgotI2ltcG9ydCAiQ29tbWVu
dC5oIgotI2ltcG9ydCAiRE9NRXZlbnRzSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTUltcGxlbWVu
dGF0aW9uRnJvbnQuaCIKICNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0jaW1wb3J0ICJET01Qcml2
YXRlLmgiCi0jaW1wb3J0ICJEb2N1bWVudC5oIgotI2ltcG9ydCAiRG9jdW1lbnRGcmFnbWVudC5o
IgotI2ltcG9ydCAiRG9jdW1lbnRUeXBlLmgiCi0jaW1wb3J0ICJFbnRpdHkuaCIKLSNpbXBvcnQg
IkVudGl0eVJlZmVyZW5jZS5oIgotI2ltcG9ydCAiRXZlbnQuaCIKLSNpbXBvcnQgIkV2ZW50TGlz
dGVuZXIuaCIKLSNpbXBvcnQgIkZvdW5kYXRpb25FeHRyYXMuaCIKLSNpbXBvcnQgIkZyYW1lTWFj
LmgiCi0jaW1wb3J0ICJIVE1MRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxOYW1lcy5oIgotI2lt
cG9ydCAiSFRNTFBsdWdJbkVsZW1lbnQuaCIKLSNpbXBvcnQgIk5vZGVGaWx0ZXIuaCIKLSNpbXBv
cnQgIk5vZGVGaWx0ZXJDb25kaXRpb24uaCIKLSNpbXBvcnQgIk5vZGVJdGVyYXRvci5oIgotI2lt
cG9ydCAiTm9kZUxpc3QuaCIKLSNpbXBvcnQgIk5vdGF0aW9uLmgiCi0jaW1wb3J0ICJQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uaCIKLSNpbXBvcnQgIlF1YWxpZmllZE5hbWUuaCIKLSNpbXBvcnQgIlJh
bmdlLmgiCi0jaW1wb3J0ICJSZW5kZXJJbWFnZS5oIgotI2ltcG9ydCAiVHJlZVdhbGtlci5oIgot
I2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgotI2ltcG9ydCA8b2JqYy9vYmpjLWNs
YXNzLmg+Ci0KLXVzaW5nIFdlYkNvcmU6OkF0b21pY1N0cmluZzsKLXVzaW5nIFdlYkNvcmU6OkF0
b21pY1N0cmluZ0ltcGw7Ci11c2luZyBXZWJDb3JlOjpBdHRyOwotdXNpbmcgV2ViQ29yZTo6Q2hh
cmFjdGVyRGF0YTsKLXVzaW5nIFdlYkNvcmU6OkRlcHJlY2F0ZWRWYWx1ZUxpc3Q7Ci11c2luZyBX
ZWJDb3JlOjpEb2N1bWVudDsKLXVzaW5nIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ7Ci11c2lu
ZyBXZWJDb3JlOjpEb2N1bWVudFR5cGU7Ci11c2luZyBXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlv
bkZyb250OwotdXNpbmcgV2ViQ29yZTo6RWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6OkVudGl0eTsK
LXVzaW5nIFdlYkNvcmU6OkV2ZW50OwotdXNpbmcgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcjsKLXVz
aW5nIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGU7Ci11c2luZyBXZWJDb3JlOjpIVE1MRG9jdW1lbnQ7
Ci11c2luZyBXZWJDb3JlOjpIVE1MRWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6OkZyYW1lTWFjOwot
dXNpbmcgV2ViQ29yZTo6SW50UmVjdDsKLXVzaW5nIFdlYkNvcmU6OktVUkw7Ci11c2luZyBXZWJD
b3JlOjpOYW1lZE5vZGVNYXA7Ci11c2luZyBXZWJDb3JlOjpOb2RlOwotdXNpbmcgV2ViQ29yZTo6
Tm9kZUZpbHRlcjsKLXVzaW5nIFdlYkNvcmU6Ok5vZGVGaWx0ZXJDb25kaXRpb247Ci11c2luZyBX
ZWJDb3JlOjpOb2RlSXRlcmF0b3I7Ci11c2luZyBXZWJDb3JlOjpOb2RlTGlzdDsKLXVzaW5nIFdl
YkNvcmU6Ok5vdGF0aW9uOwotdXNpbmcgV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOwot
dXNpbmcgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTsKLXVzaW5nIFdlYkNvcmU6OlJhbmdlOwotdXNp
bmcgV2ViQ29yZTo6UmVuZGVySW1hZ2U7Ci11c2luZyBXZWJDb3JlOjpSZW5kZXJPYmplY3Q7Ci11
c2luZyBXZWJDb3JlOjpTdHJpbmc7Ci11c2luZyBXZWJDb3JlOjpUZXh0OwotdXNpbmcgV2ViQ29y
ZTo6VHJlZVdhbGtlcjsKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkhUTUxOYW1lczsKLQot
QGludGVyZmFjZSBET01BdHRyIChXZWJDb3JlSW50ZXJuYWwpCi0rIChET01BdHRyICopX2F0dHJX
aXRoOihBdHRyICopaW1wbDsKLS0gKEF0dHIgKilfYXR0cjsKLUBlbmQKLQotQGludGVyZmFjZSBE
T01Eb2N1bWVudFR5cGUgKFdlYkNvcmVJbnRlcm5hbCkKLS0gKERvY3VtZW50VHlwZSAqKV9kb2N1
bWVudFR5cGU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSW1wbGVtZW50YXRpb24gKFdlYkNvcmVJ
bnRlcm5hbCkKLSsgKERPTUltcGxlbWVudGF0aW9uICopX0RPTUltcGxlbWVudGF0aW9uV2l0aDoo
RE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKWltcGw7Ci0tIChET01JbXBsZW1lbnRhdGlvbkZyb250
ICopX0RPTUltcGxlbWVudGF0aW9uOwotQGVuZAotCi1jbGFzcyBPYmpDRXZlbnRMaXN0ZW5lciA6
IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgT2JqQ0V2ZW50TGlz
dGVuZXIgKmZpbmQoaWQgPERPTUV2ZW50TGlzdGVuZXI+KTsKLSAgICBzdGF0aWMgT2JqQ0V2ZW50
TGlzdGVuZXIgKmNyZWF0ZShpZCA8RE9NRXZlbnRMaXN0ZW5lcj4pOwotCi1wcml2YXRlOgotICAg
IE9iakNFdmVudExpc3RlbmVyKGlkIDxET01FdmVudExpc3RlbmVyPik7Ci0gICAgdmlydHVhbCB+
T2JqQ0V2ZW50TGlzdGVuZXIoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChFdmVu
dCAqLCBib29sIGlzV2luZG93RXZlbnQpOwotCi0gICAgaWQgPERPTUV2ZW50TGlzdGVuZXI+IG1f
bGlzdGVuZXI7Ci19OwotCi10eXBlZGVmIEhhc2hNYXA8aWQsIE9iakNFdmVudExpc3RlbmVyKj4g
TGlzdGVuZXJNYXA7Ci10eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENsYXNzPiBP
YmpDQ2xhc3NNYXA7Ci0KLXN0YXRpYyBPYmpDQ2xhc3NNYXAqIGVsZW1lbnRDbGFzc01hcDsKLXN0
YXRpYyBMaXN0ZW5lck1hcCogbGlzdGVuZXJNYXA7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0vLyBET01PYmplY3QKLQotQGltcGxlbWVudGF0aW9uIERPTU9iamVjdAot
Ci0vLyBQcmV2ZW50IGNyZWF0aW9uIG9mIERPTSBvYmplY3RzIGJ5IGNsaWVudHMgd2hvIGp1c3Qg
IltbeHh4IGFsbG9jXSBpbml0XSIuCi0tIChpZClpbml0Ci17Ci0gICAgW05TRXhjZXB0aW9uIHJh
aXNlOk5TR2VuZXJpY0V4Y2VwdGlvbiBmb3JtYXQ6QCIrWyVAIGluaXRdOiBzaG91bGQgbmV2ZXIg
YmUgdXNlZCIsIE5TU3RyaW5nRnJvbUNsYXNzKFtzZWxmIGNsYXNzXSldOwotICAgIFtzZWxmIHJl
bGVhc2VdOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlm
IChfaW50ZXJuYWwpIHsKLSAgICAgICAgcmVtb3ZlRE9NV3JhcHBlcihfaW50ZXJuYWwpOwotICAg
IH0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBp
ZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIHJlbW92ZURPTVdyYXBwZXIoX2ludGVybmFsKTsKLSAg
ICB9Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQotLSAoaWQpY29weVdpdGhab25lOihOU1pv
bmUgKil6b25lCi17Ci0gICAgcmV0dXJuIFtzZWxmIHJldGFpbl07Ci19Ci0KLUBlbmQKLQotQGlt
cGxlbWVudGF0aW9uIERPTU9iamVjdCAoV2ViQ29yZUludGVybmFsKQotCi0tIChpZClfaW5pdAot
ewotICAgIHJldHVybiBbc3VwZXIgX2luaXRdOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Ob2RlCi0KLUBpbXBsZW1lbnRhdGlvbiBET01O
b2RlCi0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAg
RE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIg
ZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7
Ci0gICAgICAgIERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0g
ICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQotLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgotewot
ICAgIGlmICghX2ludGVybmFsKSB7Ci0gICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIjwlQDogbnVsbD4iLAotICAgICAgICAgICAgW1tzZWxmIGNsYXNzXSBkZXNjcmlw
dGlvbl0sIHNlbGZdOwotICAgIH0KLSAgICBOU1N0cmluZyAqdmFsdWUgPSBbc2VsZiBub2RlVmFs
dWVdOwotICAgIGlmICh2YWx1ZSkgewotICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCI8JUAgWyVAXTogJXAgJyVAJz4iLAotICAgICAgICAgICAgW1tzZWxmIGNsYXNz
XSBkZXNjcmlwdGlvbl0sIFtzZWxmIG5vZGVOYW1lXSwgX2ludGVybmFsLCB2YWx1ZV07Ci0gICAg
fQotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQCBbJUBdOiAlcD4i
LAotICAgICAgICBbW3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9uXSwgW3NlbGYgbm9kZU5hbWVdLCBf
aW50ZXJuYWxdOwotfQotCi0tIChOU1N0cmluZyAqKW5vZGVOYW1lCi17Ci0gICAgcmV0dXJuIFtz
ZWxmIF9ub2RlXS0+bm9kZU5hbWUoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilub2RlVmFsdWUKLXsK
LSAgICAvLyBEb2N1bWVudGF0aW9uIHNheXMgd2UgY2FuIHJhaXNlIGEgRE9NU1RSSU5HX1NJWkVf
RVJSLgotICAgIC8vIEhvd2V2ZXIsIHRoZSBsb3dlciBsYXllciBkb2VzIG5vdCByZXBvcnQgdGhh
dCBlcnJvciB1cCB0byB1cy4KLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2RlVmFsdWUoKTsK
LX0KLQotLSAodm9pZClzZXROb2RlVmFsdWU6KE5TU3RyaW5nICopc3RyaW5nCi17Ci0gICAgQVNT
RVJUKHN0cmluZyk7Ci0gICAgCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYg
X25vZGVdLT5zZXROb2RlVmFsdWUoc3RyaW5nLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVj
KTsKLX0KLQotLSAodW5zaWduZWQgc2hvcnQpbm9kZVR5cGUKLXsKLSAgICByZXR1cm4gW3NlbGYg
X25vZGVdLT5ub2RlVHlwZSgpOwotfQotCi0tIChET01Ob2RlICopcGFyZW50Tm9kZQotewotICAg
IHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5wYXJlbnROb2RlKCldOwot
fQotCi0tIChET01Ob2RlTGlzdCAqKWNoaWxkTm9kZXMKLXsKLSAgICByZXR1cm4gW0RPTU5vZGVM
aXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX25vZGVdLT5jaGlsZE5vZGVzKCkuZ2V0KCldOwotfQot
Ci0tIChET01Ob2RlICopZmlyc3RDaGlsZAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdp
dGg6W3NlbGYgX25vZGVdLT5maXJzdENoaWxkKCldOwotfQotCi0tIChET01Ob2RlICopbGFzdENo
aWxkCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPmxhc3RD
aGlsZCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKXByZXZpb3VzU2libGluZwotewotICAgIHJldHVy
biBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5wcmV2aW91c1NpYmxpbmcoKV07Ci19
Ci0KLS0gKERPTU5vZGUgKiluZXh0U2libGluZwotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX25vZGVdLT5uZXh0U2libGluZygpXTsKLX0KLQotLSAoRE9NTmFtZWROb2Rl
TWFwICopYXR0cmlidXRlcwotewotICAgIC8vIERPTSBsZXZlbCAyIGNvcmUgc3BlY2lmaWNhdGlv
biBzYXlzOiAKLSAgICAvLyBBIE5hbWVkTm9kZU1hcCBjb250YWluaW5nIHRoZSBhdHRyaWJ1dGVz
IG9mIHRoaXMgbm9kZSAoaWYgaXQgaXMgYW4gRWxlbWVudCkgb3IgbnVsbCBvdGhlcndpc2UuCi0g
ICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoRE9NRG9jdW1lbnQgKilvd25lckRvY3VtZW50Ci17Ci0g
ICAgcmV0dXJuIFtET01Eb2N1bWVudCBfZG9jdW1lbnRXaXRoOltzZWxmIF9ub2RlXS0+ZG9jdW1l
bnQoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilpbnNlcnRCZWZvcmU6KERPTU5vZGUgKiluZXdDaGls
ZCA6KERPTU5vZGUgKilyZWZDaGlsZAotewotICAgIEFTU0VSVChuZXdDaGlsZCk7Ci0gICAgQVNT
RVJUKHJlZkNoaWxkKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChbc2Vs
ZiBfbm9kZV0tPmluc2VydEJlZm9yZShbbmV3Q2hpbGQgX25vZGVdLCBbcmVmQ2hpbGQgX25vZGVd
LCBlYykpCi0gICAgICAgIHJldHVybiBuZXdDaGlsZDsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKERPTU5vZGUgKilyZXBsYWNlQ2hpbGQ6KERPTU5v
ZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilvbGRDaGlsZAotewotICAgIEFTU0VSVChuZXdDaGls
ZCk7Ci0gICAgQVNTRVJUKG9sZENoaWxkKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIGlmIChbc2VsZiBfbm9kZV0tPnJlcGxhY2VDaGlsZChbbmV3Q2hpbGQgX25vZGVdLCBbb2xk
Q2hpbGQgX25vZGVdLCBlYykpCi0gICAgICAgIHJldHVybiBvbGRDaGlsZDsKLSAgICByYWlzZU9u
RE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKERPTU5vZGUgKilyZW1vdmVD
aGlsZDooRE9NTm9kZSAqKW9sZENoaWxkCi17Ci0gICAgQVNTRVJUKG9sZENoaWxkKTsKLQotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChbc2VsZiBfbm9kZV0tPnJlbW92ZUNoaWxk
KFtvbGRDaGlsZCBfbm9kZV0sIGVjKSkKLSAgICAgICAgcmV0dXJuIG9sZENoaWxkOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoRE9NTm9kZSAqKWFw
cGVuZENoaWxkOihET01Ob2RlICopbmV3Q2hpbGQKLXsKLSAgICBBU1NFUlQobmV3Q2hpbGQpOwot
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKFtzZWxmIF9ub2RlXS0+YXBwZW5k
Q2hpbGQoW25ld0NoaWxkIF9ub2RlXSwgZWMpKQotICAgICAgICByZXR1cm4gbmV3Q2hpbGQ7Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChCT09MKWhh
c0NoaWxkTm9kZXMKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5oYXNDaGlsZE5vZGVzKCk7
Ci19Ci0KLS0gKERPTU5vZGUgKiljbG9uZU5vZGU6KEJPT0wpZGVlcAotewotICAgIHJldHVybiBb
RE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5jbG9uZU5vZGUoZGVlcCkuZ2V0KCldOwot
fQotCi0tICh2b2lkKW5vcm1hbGl6ZQotewotICAgIFtzZWxmIF9ub2RlXS0+bm9ybWFsaXplKCk7
Ci19Ci0KLS0gKEJPT0wpaXNTdXBwb3J0ZWQ6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5n
ICopdmVyc2lvbgotewotICAgIEFTU0VSVChmZWF0dXJlKTsKLSAgICBBU1NFUlQodmVyc2lvbik7
Ci0KLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc1N1cHBvcnRlZChmZWF0dXJlLCB2ZXJzaW9u
KTsKLX0KLQotLSAoTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkKLXsKLSAgICByZXR1cm4gW3NlbGYg
X25vZGVdLT5uYW1lc3BhY2VVUkkoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilwcmVmaXgKLXsKLSAg
ICByZXR1cm4gW3NlbGYgX25vZGVdLT5wcmVmaXgoKTsKLX0KKyNpbXBvcnQgIk5hbWVkTm9kZU1h
cC5oIgogCi0tICh2b2lkKXNldFByZWZpeDooTlNTdHJpbmcgKilwcmVmaXgKLXsKLSAgICBBU1NF
UlQocHJlZml4KTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFN0cmluZyBwcmVm
aXhTdHIocHJlZml4KTsKLSAgICBbc2VsZiBfbm9kZV0tPnNldFByZWZpeChwcmVmaXhTdHIuaW1w
bCgpLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoTlNTdHJpbmcgKils
b2NhbE5hbWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5sb2NhbE5hbWUoKTsKLX0KLQot
LSAoQk9PTCloYXNBdHRyaWJ1dGVzCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aGFzQXR0
cmlidXRlcygpOwotfQotCi0tIChCT09MKWlzU2FtZU5vZGU6KERPTU5vZGUgKilvdGhlcgotewot
ICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmlzU2FtZU5vZGUoW290aGVyIF9ub2RlXSk7Ci19Ci0K
LS0gKEJPT0wpaXNFcXVhbE5vZGU6KERPTU5vZGUgKilvdGhlcgotewotICAgIHJldHVybiBbc2Vs
ZiBfbm9kZV0tPmlzRXF1YWxOb2RlKFtvdGhlciBfbm9kZV0pOwotfQotCi0tIChCT09MKWlzRGVm
YXVsdE5hbWVzcGFjZTooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkKLXsKLSAgICByZXR1cm4gW3Nl
bGYgX25vZGVdLT5pc0RlZmF1bHROYW1lc3BhY2UobmFtZXNwYWNlVVJJKTsKLX0KLQotLSAoTlNT
dHJpbmcgKilsb29rdXBQcmVmaXg6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJCi17Ci0gICAgcmV0
dXJuIFtzZWxmIF9ub2RlXS0+bG9va3VwUHJlZml4KG5hbWVzcGFjZVVSSSk7Ci19Ci0KLS0gKE5T
U3RyaW5nICopbG9va3VwTmFtZXNwYWNlVVJJOihOU1N0cmluZyAqKXByZWZpeAotewotICAgIHJl
dHVybiBbc2VsZiBfbm9kZV0tPmxvb2t1cE5hbWVzcGFjZVVSSShwcmVmaXgpOwotfQotCi0tIChO
U1N0cmluZyAqKXRleHRDb250ZW50Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+dGV4dENv
bnRlbnQoKTsKLX0KLQotLSAodm9pZClzZXRUZXh0Q29udGVudDooTlNTdHJpbmcgKil0ZXh0Ci17
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX25vZGVdLT5zZXRUZXh0Q29u
dGVudCh0ZXh0LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoTlNSZWN0
KWJvdW5kaW5nQm94Ci17Ci0gICAgV2ViQ29yZTo6UmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtz
ZWxmIF9ub2RlXS0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIpCi0gICAgICAgIHJldHVy
biByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKLSAgICByZXR1cm4gTlNaZXJv
UmVjdDsKLX0KLQotLSAoTlNBcnJheSAqKWxpbmVCb3hSZWN0cwotewotICAgIFdlYkNvcmU6OlJl
bmRlck9iamVjdCAqcmVuZGVyZXIgPSBbc2VsZiBfbm9kZV0tPnJlbmRlcmVyKCk7Ci0gICAgaWYg
KHJlbmRlcmVyKSB7Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5ICpyZXN1bHRzID0gW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdF07Ci0gICAgICAgIERlcHJlY2F0ZWRWYWx1ZUxpc3Q8SW50UmVj
dD4gcmVjdHMgPSByZW5kZXJlci0+bGluZUJveFJlY3RzKCk7Ci0gICAgICAgIGlmICghcmVjdHMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBmb3IgKERlcHJlY2F0ZWRWYWx1ZUxpc3Q8SW50UmVj
dD46OkNvbnN0SXRlcmF0b3IgaXQgPSByZWN0cy5iZWdpbigpOyBpdCAhPSByZWN0cy5lbmQoKTsg
KytpdCkKLSAgICAgICAgICAgICAgICBbcmVzdWx0cyBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVX
aXRoUmVjdDoqaXRdXTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gW3Jlc3VsdHMgYXV0b3Jl
bGVhc2VdOwotICAgIH0KLSAgICByZXR1cm4gbmlsOwotfQotCi1AZW5kCi0KLXN0YXRpYyB2b2lk
IGFkZEVsZW1lbnRDbGFzcyhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWcsIENsYXNzIG9iakNDbGFz
cykKLXsKLSAgICBlbGVtZW50Q2xhc3NNYXAtPnNldCh0YWcubG9jYWxOYW1lKCkuaW1wbCgpLCBv
YmpDQ2xhc3MpOwotfQotCi1zdGF0aWMgdm9pZCBjcmVhdGVIVE1MRWxlbWVudENsYXNzTWFwKCkK
LXsKLSAgICAvLyBDcmVhdGUgdGhlIHRhYmxlLgotICAgIGVsZW1lbnRDbGFzc01hcCA9IG5ldyBP
YmpDQ2xhc3NNYXA7Ci0gICAgCi0gICAgLy8gUG9wdWxhdGUgaXQgd2l0aCBIVE1MIGVsZW1lbnQg
Y2xhc3Nlcy4KLSAgICBhZGRFbGVtZW50Q2xhc3MoYVRhZywgW0RPTUhUTUxBbmNob3JFbGVtZW50
IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGFwcGxldFRhZywgW0RPTUhUTUxBcHBsZXRF
bGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGFyZWFUYWcsIFtET01IVE1MQXJl
YUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoYmFzZVRhZywgW0RPTUhUTUxC
YXNlRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhiYXNlZm9udFRhZywgW0RP
TUhUTUxCYXNlRm9udEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoYm9keVRh
ZywgW0RPTUhUTUxCb2R5RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhiclRh
ZywgW0RPTUhUTUxCUkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoYnV0dG9u
VGFnLCBbRE9NSFRNTEJ1dHRvbkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mo
Y2FudmFzVGFnLCBbRE9NSFRNTEltYWdlRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyhjYXB0aW9uVGFnLCBbRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQgY2xhc3NdKTsKLSAg
ICBhZGRFbGVtZW50Q2xhc3MoY29sVGFnLCBbRE9NSFRNTFRhYmxlQ29sRWxlbWVudCBjbGFzc10p
OwotICAgIGFkZEVsZW1lbnRDbGFzcyhjb2xncm91cFRhZywgW0RPTUhUTUxUYWJsZUNvbEVsZW1l
bnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoZGlyVGFnLCBbRE9NSFRNTERpcmVjdG9y
eUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoZGl2VGFnLCBbRE9NSFRNTERp
dkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoZGxUYWcsIFtET01IVE1MRExp
c3RFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGZpZWxkc2V0VGFnLCBbRE9N
SFRNTEZpZWxkU2V0RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhmb250VGFn
LCBbRE9NSFRNTEZvbnRFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGZvcm1U
YWcsIFtET01IVE1MRm9ybUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoZnJh
bWVUYWcsIFtET01IVE1MRnJhbWVFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KGZyYW1lc2V0VGFnLCBbRE9NSFRNTEZyYW1lU2V0RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVs
ZW1lbnRDbGFzcyhoMVRhZywgW0RPTUhUTUxIZWFkaW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFk
ZEVsZW1lbnRDbGFzcyhoMlRhZywgW0RPTUhUTUxIZWFkaW5nRWxlbWVudCBjbGFzc10pOwotICAg
IGFkZEVsZW1lbnRDbGFzcyhoM1RhZywgW0RPTUhUTUxIZWFkaW5nRWxlbWVudCBjbGFzc10pOwot
ICAgIGFkZEVsZW1lbnRDbGFzcyhoNFRhZywgW0RPTUhUTUxIZWFkaW5nRWxlbWVudCBjbGFzc10p
OwotICAgIGFkZEVsZW1lbnRDbGFzcyhoNVRhZywgW0RPTUhUTUxIZWFkaW5nRWxlbWVudCBjbGFz
c10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoNlRhZywgW0RPTUhUTUxIZWFkaW5nRWxlbWVudCBj
bGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoZWFkVGFnLCBbRE9NSFRNTEhlYWRFbGVtZW50
IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGhyVGFnLCBbRE9NSFRNTEhSRWxlbWVudCBj
bGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhodG1sVGFnLCBbRE9NSFRNTEh0bWxFbGVtZW50
IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGlmcmFtZVRhZywgW0RPTUhUTUxJRnJhbWVF
bGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGltZ1RhZywgW0RPTUhUTUxJbWFn
ZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaW5wdXRUYWcsIFtET01IVE1M
SW5wdXRFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGlzaW5kZXhUYWcsIFtE
T01IVE1MSXNJbmRleEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MobGFiZWxU
YWcsIFtET01IVE1MTGFiZWxFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGxl
Z2VuZFRhZywgW0RPTUhUTUxMZWdlbmRFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENs
YXNzKGxpVGFnLCBbRE9NSFRNTExJRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFz
cyhsaW5rVGFnLCBbRE9NSFRNTExpbmtFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENs
YXNzKGxpc3RpbmdUYWcsIFtET01IVE1MUHJlRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1l
bnRDbGFzcyhtYXBUYWcsIFtET01IVE1MTWFwRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1l
bnRDbGFzcyhtZW51VGFnLCBbRE9NSFRNTE1lbnVFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxl
bWVudENsYXNzKG1ldGFUYWcsIFtET01IVE1MTWV0YUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRF
bGVtZW50Q2xhc3Mob2JqZWN0VGFnLCBbRE9NSFRNTE9iamVjdEVsZW1lbnQgY2xhc3NdKTsKLSAg
ICBhZGRFbGVtZW50Q2xhc3Mob2xUYWcsIFtET01IVE1MT0xpc3RFbGVtZW50IGNsYXNzXSk7Ci0g
ICAgYWRkRWxlbWVudENsYXNzKG9wdGdyb3VwVGFnLCBbRE9NSFRNTE9wdEdyb3VwRWxlbWVudCBj
bGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhvcHRpb25UYWcsIFtET01IVE1MT3B0aW9uRWxl
bWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhwVGFnLCBbRE9NSFRNTFBhcmFncmFw
aEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MocGFyYW1UYWcsIFtET01IVE1M
UGFyYW1FbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHByZVRhZywgW0RPTUhU
TUxQcmVFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHFUYWcsIFtET01IVE1M
UXVvdGVFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHNjcmlwdFRhZywgW0RP
TUhUTUxTY3JpcHRFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHNlbGVjdFRh
ZywgW0RPTUhUTUxTZWxlY3RFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHN0
eWxlVGFnLCBbRE9NSFRNTFN0eWxlRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFz
cyh0YWJsZVRhZywgW0RPTUhUTUxUYWJsZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50
Q2xhc3ModGJvZHlUYWcsIFtET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCBjbGFzc10pOwotICAg
IGFkZEVsZW1lbnRDbGFzcyh0ZFRhZywgW0RPTUhUTUxUYWJsZUNlbGxFbGVtZW50IGNsYXNzXSk7
Ci0gICAgYWRkRWxlbWVudENsYXNzKHRleHRhcmVhVGFnLCBbRE9NSFRNTFRleHRBcmVhRWxlbWVu
dCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh0Zm9vdFRhZywgW0RPTUhUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHRoZWFkVGFnLCBbRE9N
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModGl0
bGVUYWcsIFtET01IVE1MVGl0bGVFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KHRyVGFnLCBbRE9NSFRNTFRhYmxlUm93RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyh1bFRhZywgW0RPTUhUTUxVTGlzdEVsZW1lbnQgY2xhc3NdKTsKLQotICAgIC8vIEZJWE1F
OiBSZWZsZWN0IG1hcnF1ZWUgb25jZSB0aGUgQVBJIGhhcyBiZWVuIGRldGVybWluZWQuCi19Ci0K
LXN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQot
ewotICAgIGlmICghZWxlbWVudENsYXNzTWFwKQotICAgICAgICBjcmVhdGVIVE1MRWxlbWVudENs
YXNzTWFwKCk7Ci0gICAgQ2xhc3Mgb2JqY0NsYXNzID0gZWxlbWVudENsYXNzTWFwLT5nZXQodGFn
TmFtZS5pbXBsKCkpOwotICAgIGlmICghb2JqY0NsYXNzKQotICAgICAgICBvYmpjQ2xhc3MgPSBb
RE9NSFRNTEVsZW1lbnQgY2xhc3NdOwotICAgIHJldHVybiBvYmpjQ2xhc3M7Ci19Ci0KLUBpbXBs
ZW1lbnRhdGlvbiBET01Ob2RlIChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKGlkKV9pbml0V2l0aE5v
ZGU6KE5vZGUgKilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0
XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsK
LSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJl
dHVybiBzZWxmOwotfQotCi0rIChET01Ob2RlICopX25vZGVXaXRoOihOb2RlICopaW1wbAotewot
ICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJ
bnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAg
aWYgKGNhY2hlZEluc3RhbmNlKQotICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRh
aW5dIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICBDbGFzcyB3cmFwcGVyQ2xhc3MgPSBuaWw7Ci0g
ICAgc3dpdGNoIChpbXBsLT5ub2RlVHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgTm9kZTo6RUxFTUVO
VF9OT0RFOgotICAgICAgICAgICAgaWYgKGltcGwtPmlzSFRNTEVsZW1lbnQoKSkKLSAgICAgICAg
ICAgICAgICB3cmFwcGVyQ2xhc3MgPSBlbGVtZW50Q2xhc3Moc3RhdGljX2Nhc3Q8SFRNTEVsZW1l
bnQqPihpbXBsKS0+bG9jYWxOYW1lKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHdyYXBwZXJDbGFzcyA9IFtET01FbGVtZW50IGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9OT0RFOgotICAgICAgICAgICAgd3JhcHBl
ckNsYXNzID0gW0RPTUF0dHIgY2xhc3NdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgTm9kZTo6VEVYVF9OT0RFOgotICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTVRleHQg
Y2xhc3NdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6Q0RBVEFfU0VD
VElPTl9OT0RFOgotICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTUNEQVRBU2VjdGlvbiBj
bGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVG
RVJFTkNFX05PREU6Ci0gICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NRW50aXR5UmVmZXJl
bmNlIGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkVOVElU
WV9OT0RFOgotICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTUVudGl0eSBjbGFzc107Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNU
SU9OX05PREU6Ci0gICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uIGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkNP
TU1FTlRfTk9ERToKLSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01Db21tZW50IGNsYXNz
XTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6
Ci0gICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihpbXBsKS0+aXNIVE1MRG9j
dW1lbnQoKSkKLSAgICAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NSFRNTERvY3VtZW50
IGNsYXNzXTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB3cmFwcGVyQ2xhc3Mg
PSBbRE9NRG9jdW1lbnQgY2xhc3NdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Tm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgotICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RP
TURvY3VtZW50VHlwZSBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBO
b2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgotICAgICAgICAgICAgd3JhcHBlckNsYXNzID0g
W0RPTURvY3VtZW50RnJhZ21lbnQgY2xhc3NdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKLSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtE
T01Ob3RhdGlvbiBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2Rl
OjpYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICAgICAgICAgIC8vIEZJWE1FOiBDcmVhdGUgYW4g
WFBhdGggb2JqZWN0aXZlIEMgd3JhcHBlcgotICAgICAgICAgICAgLy8gU2VlIGh0dHA6Ly9idWd6
aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc1NQotICAgICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICB9Ci0gICAgcmV0dXJuIFtbW3dyYXBwZXJDbGFzcyBhbGxvY10gX2luaXRX
aXRoTm9kZTppbXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKE5vZGUgKilfbm9kZQotewotICAg
IHJldHVybiBET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCk7Ci19Ci0KLS0gKGNvbnN0IEtKUzo6
QmluZGluZ3M6OlJvb3RPYmplY3QgKilfZXhlY3V0aW9uQ29udGV4dAotewotICAgIGlmIChOb2Rl
ICpuID0gW3NlbGYgX25vZGVdKQotICAgICAgICBpZiAoRnJhbWVNYWMgKmYgPSBNYWMobi0+ZG9j
dW1lbnQoKS0+ZnJhbWUoKSkpCi0gICAgICAgICAgICByZXR1cm4gZi0+ZXhlY3V0aW9uQ29udGV4
dEZvckRPTSgpOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9u
IERPTU5vZGUgKFdlYlByaXZhdGUpCi0KLS0gKEJPT0wpaXNDb250ZW50RWRpdGFibGUKLXsKLSAg
ICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc0NvbnRlbnRFZGl0YWJsZSgpOwotfQotCi1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChET01FdmVudFRhcmdldCkKLQotLSAodm9pZClhZGRF
dmVudExpc3RlbmVyOihOU1N0cmluZyAqKXR5cGUgOihpZCA8RE9NRXZlbnRMaXN0ZW5lcj4pbGlz
dGVuZXIgOihCT09MKXVzZUNhcHR1cmUKLXsKLSAgICBpZiAoIVtzZWxmIF9ub2RlXS0+aXNFdmVu
dFRhcmdldE5vZGUoKSkKLSAgICAgICAgcmFpc2VET01FeGNlcHRpb24oRE9NX05PVF9TVVBQT1JU
RURfRVJSKTsKLSAgICAKLSAgICBFdmVudExpc3RlbmVyICp3cmFwcGVyID0gT2JqQ0V2ZW50TGlz
dGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7Ci0gICAgRXZlbnRUYXJnZXROb2RlQ2FzdChbc2VsZiBf
bm9kZV0pLT5hZGRFdmVudExpc3RlbmVyKHR5cGUsIHdyYXBwZXIsIHVzZUNhcHR1cmUpOwotICAg
IHdyYXBwZXItPmRlcmVmKCk7Ci19Ci0KLS0gKHZvaWQpcmVtb3ZlRXZlbnRMaXN0ZW5lcjooTlNT
dHJpbmcgKil0eXBlIDooaWQgPERPTUV2ZW50TGlzdGVuZXI+KWxpc3RlbmVyIDooQk9PTCl1c2VD
YXB0dXJlCi17Ci0gICAgaWYgKCFbc2VsZiBfbm9kZV0tPmlzRXZlbnRUYXJnZXROb2RlKCkpCi0g
ICAgICAgIHJhaXNlRE9NRXhjZXB0aW9uKERPTV9OT1RfU1VQUE9SVEVEX0VSUik7Ci0KLSAgICBp
ZiAoRXZlbnRMaXN0ZW5lciAqd3JhcHBlciA9IE9iakNFdmVudExpc3RlbmVyOjpmaW5kKGxpc3Rl
bmVyKSkKLSAgICAgICAgRXZlbnRUYXJnZXROb2RlQ2FzdChbc2VsZiBfbm9kZV0pLT5yZW1vdmVF
dmVudExpc3RlbmVyKHR5cGUsIHdyYXBwZXIsIHVzZUNhcHR1cmUpOwotfQotCi0tIChCT09MKWRp
c3BhdGNoRXZlbnQ6KERPTUV2ZW50ICopZXZlbnQKLXsKLSAgICBpZiAoIVtzZWxmIF9ub2RlXS0+
aXNFdmVudFRhcmdldE5vZGUoKSkKLSAgICAgICAgcmFpc2VET01FeGNlcHRpb24oRE9NX05PVF9T
VVBQT1JURURfRVJSKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIEJPT0wgcmVz
dWx0ID0gRXZlbnRUYXJnZXROb2RlQ2FzdChbc2VsZiBfbm9kZV0pLT5kaXNwYXRjaEV2ZW50KFtl
dmVudCBfZXZlbnRdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyBET01OYW1lZE5vZGVNYXAKKyNpbXBvcnQgIkRPTU5vZGUuaCIKKyNpbXBvcnQgIk5vZGUu
aCIKKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBET01OYW1l
ZE5vZGVNYXAKIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAg
ICAgICBET01fY2FzdDxOYW1lZE5vZGVNYXAgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9
CisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAgRE9NX2Nhc3Q8V2ViQ29yZTo6TmFtZWROb2Rl
TWFwICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAt
ICh2b2lkKWZpbmFsaXplCiB7Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2Fz
dDxOYW1lZE5vZGVNYXAgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9CisgICAgaWYgKF9p
bnRlcm5hbCkKKyAgICAgICAgRE9NX2Nhc3Q8V2ViQ29yZTo6TmFtZWROb2RlTWFwICo+KF9pbnRl
cm5hbCktPmRlcmVmKCk7CiAgICAgW3N1cGVyIGZpbmFsaXplXTsKIH0KIAotLSAoTmFtZWROb2Rl
TWFwICopX25hbWVkTm9kZU1hcAorLSAoV2ViQ29yZTo6TmFtZWROb2RlTWFwICopX25hbWVkTm9k
ZU1hcAogewotICAgIHJldHVybiBET01fY2FzdDxOYW1lZE5vZGVNYXAgKj4oX2ludGVybmFsKTsK
KyAgICByZXR1cm4gRE9NX2Nhc3Q8V2ViQ29yZTo6TmFtZWROb2RlTWFwICo+KF9pbnRlcm5hbCk7
CiB9CiAKIC0gKERPTU5vZGUgKilnZXROYW1lZEl0ZW06KE5TU3RyaW5nICopbmFtZQpAQCAtNjk4
LDkgKzY3LDkgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogewog
ICAgIEFTU0VSVChhcmcpOwogCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NTm9kZSAq
cmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5zZXROYW1l
ZEl0ZW0oW2FyZyBfbm9kZV0sIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJv
cihleGNlcHRpb24pOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERP
TU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+
c2V0TmFtZWRJdGVtKFthcmcgX25vZGVdLCBlYykuZ2V0KCldOworICAgIHJhaXNlT25ET01FcnJv
cihlYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNzA4LDkgKzc3LDkgQEAgc3RhdGlj
IENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogewogICAgIEFTU0VSVChuYW1lKTsK
IAotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2Rl
IF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+cmVtb3ZlTmFtZWRJdGVtKG5hbWUsIGV4
Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOworICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01O
b2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+cmVtb3ZlTmFtZWRJdGVtKG5hbWUs
IGVjKS5nZXQoKV07CisgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCkBAIC03MjYsOSArOTUsOCBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0
IEF0b21pY1N0CiAKIC0gKERPTU5vZGUgKilnZXROYW1lZEl0ZW1OUzooTlNTdHJpbmcgKiluYW1l
c3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQogewotICAgIGlmICghbmFtZXNwYWNlVVJJ
IHx8ICFsb2NhbE5hbWUpIHsKKyAgICBpZiAoIW5hbWVzcGFjZVVSSSB8fCAhbG9jYWxOYW1lKQog
ICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KIAogICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdp
dGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPmdldE5hbWVkSXRlbU5TKG5hbWVzcGFjZVVSSSwgbG9j
YWxOYW1lKS5nZXQoKV07CiB9CkBAIC03MzcsOSArMTA1LDkgQEAgc3RhdGljIENsYXNzIGVsZW1l
bnRDbGFzcyhjb25zdCBBdG9taWNTdAogewogICAgIEFTU0VSVChhcmcpOwogCi0gICAgaW50IGV4
Y2VwdGlvbiA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltz
ZWxmIF9uYW1lZE5vZGVNYXBdLT5zZXROYW1lZEl0ZW1OUyhbYXJnIF9ub2RlXSwgZXhjZXB0aW9u
KS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7CisgICAgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25v
ZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5zZXROYW1lZEl0ZW1OUyhbYXJnIF9ub2RlXSwg
ZWMpLmdldCgpXTsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKQEAgLTc0OCwxNjI1ICsxMTYsMTAgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhj
b25zdCBBdG9taWNTdAogICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwogICAgIEFTU0VSVChsb2Nh
bE5hbWUpOwogCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0g
W0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5yZW1vdmVOYW1lZEl0ZW1O
UyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGV4Y2VwdGlvbik7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5v
ZGVNYXBdLT5yZW1vdmVOYW1lZEl0ZW1OUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgZWMpLmdl
dCgpXTsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
IEBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTU5hbWVkTm9kZU1hcCAoV2ViQ29yZUludGVybmFs
KQotCi0tIChpZClfaW5pdFdpdGhOYW1lZE5vZGVNYXA6KE5hbWVkTm9kZU1hcCAqKWltcGwKLXsK
LSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9
IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGltcGwtPnJlZigpOwot
ICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLSsg
KERPTU5hbWVkTm9kZU1hcCAqKV9uYW1lZE5vZGVNYXBXaXRoOihOYW1lZE5vZGVNYXAgKilpbXBs
Ci17Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNh
Y2hlZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsK
LSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNl
IHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBf
aW5pdFdpdGhOYW1lZE5vZGVNYXA6aW1wbF0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLS8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Ob2RlTGlzdAotCi1AaW1w
bGVtZW50YXRpb24gRE9NTm9kZUxpc3QKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9p
bnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50ZXJuYWwpLT5kZXJl
ZigpOwotICAgIH0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUK
LXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5vZGVMaXN0ICo+KF9p
bnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19Ci0KLS0g
KE5vZGVMaXN0ICopX25vZGVMaXN0Ci17Ci0gICAgcmV0dXJuIERPTV9jYXN0PE5vZGVMaXN0ICo+
KF9pbnRlcm5hbCk7Ci19Ci0KLS0gKERPTU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleAotewot
ICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVMaXN0XS0+aXRlbShpbmRl
eCldOwotfQotCi0tICh1bnNpZ25lZClsZW5ndGgKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVM
aXN0XS0+bGVuZ3RoKCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGVMaXN0
IChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKGlkKV9pbml0V2l0aE5vZGVMaXN0OihOb2RlTGlzdCAq
KWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9p
bnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGltcGwt
PnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7
Ci19Ci0KLSsgKERPTU5vZGVMaXN0ICopX25vZGVMaXN0V2l0aDooTm9kZUxpc3QgKilpbXBsCi17
Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hl
ZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAg
ICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJl
dGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5p
dFdpdGhOb2RlTGlzdDppbXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUltcGxlbWVudGF0aW9uCi0KLUBpbXBs
ZW1lbnRhdGlvbiBET01JbXBsZW1lbnRhdGlvbgotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBp
ZiAoX2ludGVybmFsKQotICAgICAgICBET01fY2FzdDxET01JbXBsZW1lbnRhdGlvbkZyb250ICo+
KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lk
KWZpbmFsaXplCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAgICAgRE9NX2Nhc3Q8RE9NSW1w
bGVtZW50YXRpb25Gcm9udCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIFtzdXBlciBmaW5h
bGl6ZV07Ci19Ci0KLS0gKEJPT0wpaGFzRmVhdHVyZTooTlNTdHJpbmcgKilmZWF0dXJlIDooTlNT
dHJpbmcgKil2ZXJzaW9uCi17Ci0gICAgQVNTRVJUKGZlYXR1cmUpOwotICAgIEFTU0VSVCh2ZXJz
aW9uKTsKLQotICAgIHJldHVybiBbc2VsZiBfRE9NSW1wbGVtZW50YXRpb25dLT5oYXNGZWF0dXJl
KGZlYXR1cmUsIHZlcnNpb24pOwotfQotCi0tIChET01Eb2N1bWVudFR5cGUgKiljcmVhdGVEb2N1
bWVudFR5cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICopcHVibGljSWQg
OihOU1N0cmluZyAqKXN5c3RlbUlkCi17Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotICAg
IEFTU0VSVChwdWJsaWNJZCk7Ci0gICAgQVNTRVJUKHN5c3RlbUlkKTsKLQotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxEb2N1bWVudFR5cGU+IGltcGwgPSBbc2VsZiBfRE9N
SW1wbGVtZW50YXRpb25dLT5jcmVhdGVEb2N1bWVudFR5cGUocXVhbGlmaWVkTmFtZSwgcHVibGlj
SWQsIHN5c3RlbUlkLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnRUeXBlICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsLmdl
dCgpXSk7Ci19Ci0KLS0gKERPTURvY3VtZW50ICopY3JlYXRlRG9jdW1lbnQ6KE5TU3RyaW5nICop
bmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooRE9NRG9jdW1lbnRUeXBl
ICopZG9jdHlwZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChxdWFs
aWZpZWROYW1lKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxEb2N1
bWVudD4gaW1wbCA9IFtzZWxmIF9ET01JbXBsZW1lbnRhdGlvbl0tPmNyZWF0ZURvY3VtZW50KG5h
bWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgW2RvY3R5cGUgX2RvY3VtZW50VHlwZV0sIGVjKTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1
bWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQoKV0pOwotfQotCi0tIChET01IVE1M
RG9jdW1lbnQgKiljcmVhdGVIVE1MRG9jdW1lbnQ6KE5TU3RyaW5nICopdGl0bGUKLXsKLSAgICBS
ZWZQdHI8SFRNTERvY3VtZW50PiBpbXBsID0gW3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+Y3Jl
YXRlSFRNTERvY3VtZW50KHRpdGxlKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NSFRNTERv
Y3VtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsLmdldCgpXSk7Ci19Ci1AZW5kCi0KLUBp
bXBsZW1lbnRhdGlvbiBET01JbXBsZW1lbnRhdGlvbiAoRE9NSW1wbGVtZW50YXRpb25DU1MpCi0K
LS0gKERPTUNTU1N0eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNoZWV0OihOU1N0cmluZyAqKXRp
dGxlIDooTlNTdHJpbmcgKiltZWRpYQotewotICAgIEFTU0VSVCh0aXRsZSk7Ci0gICAgQVNTRVJU
KG1lZGlhKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTUNTU1N0eWxlU2hl
ZXQgKnJlc3VsdCA9IFtET01DU1NTdHlsZVNoZWV0IF9DU1NTdHlsZVNoZWV0V2l0aDpbc2VsZiBf
RE9NSW1wbGVtZW50YXRpb25dLT5jcmVhdGVDU1NTdHlsZVNoZWV0KHRpdGxlLCBtZWRpYSwgZWMp
LmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLUBlbmQKLSAKLUBpbXBsZW1lbnRhdGlvbiBET01JbXBsZW1lbnRhdGlvbiAoV2ViQ29yZUlu
dGVybmFsKQotCi0tIChpZClfaW5pdFdpdGhET01JbXBsZW1lbnRhdGlvbjooRE9NSW1wbGVtZW50
YXRpb25Gcm9udCAqKWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2lu
aXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwp
OwotICAgIGltcGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAg
cmV0dXJuIHNlbGY7Ci19Ci0KLSsgKERPTUltcGxlbWVudGF0aW9uICopX0RPTUltcGxlbWVudGF0
aW9uV2l0aDooRE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKWltcGwKLXsKLSAgICBpZiAoIWltcGwp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAg
Y2FjaGVkSW5zdGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0
YW5jZSkKLSAgICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFz
ZV07Ci0gICAgCi0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aERPTUltcGxlbWVu
dGF0aW9uOmltcGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoRE9NSW1wbGVtZW50YXRpb25Gcm9u
dCAqKV9ET01JbXBsZW1lbnRhdGlvbgotewotICAgIHJldHVybiBET01fY2FzdDxET01JbXBsZW1l
bnRhdGlvbkZyb250ICo+KF9pbnRlcm5hbCk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTURvY3VtZW50RnJhZ21lbnQKLQotQGltcGxlbWVu
dGF0aW9uIERPTURvY3VtZW50RnJhZ21lbnQKLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9N
RG9jdW1lbnRGcmFnbWVudCAoV2ViQ29yZUludGVybmFsKQotCi0rIChET01Eb2N1bWVudEZyYWdt
ZW50ICopX2RvY3VtZW50RnJhZ21lbnRXaXRoOihEb2N1bWVudEZyYWdtZW50ICopaW1wbAotewot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudEZyYWdtZW50ICo+KFtET01Ob2RlIF9u
b2RlV2l0aDppbXBsXSk7Ci19Ci0KLS0gKERvY3VtZW50RnJhZ21lbnQgKilfZnJhZ21lbnQKLXsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnRGcmFnbWVudCAqPihET01fY2FzdDxOb2Rl
ICo+KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyBET01Eb2N1bWVudAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQK
LQotLSAoRE9NTm9kZSAqKWFkb3B0Tm9kZTooRE9NTm9kZSAqKXNvdXJjZQotewotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0
aDpbc2VsZiBfZG9jdW1lbnRdLT5hZG9wdE5vZGUoW3NvdXJjZSBfbm9kZV0sIGVjKS5nZXQoKV07
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChE
T01Eb2N1bWVudFR5cGUgKilkb2N0eXBlCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURv
Y3VtZW50VHlwZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+ZG9jdHlw
ZSgpXSk7Ci19Ci0KLS0gKERPTUltcGxlbWVudGF0aW9uICopaW1wbGVtZW50YXRpb24KLXsKLSAg
ICByZXR1cm4gW0RPTUltcGxlbWVudGF0aW9uIF9ET01JbXBsZW1lbnRhdGlvbldpdGg6aW1wbGVt
ZW50YXRpb25Gcm9udChbc2VsZiBfZG9jdW1lbnRdKV07Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilk
b2N1bWVudEVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihb
RE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+ZG9jdW1lbnRFbGVtZW50KCldKTsK
LX0KLQotLSAoRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnQ6KE5TU3RyaW5nICopdGFnTmFtZQot
ewotICAgIEFTU0VSVCh0YWdOYW1lKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IERPTUVsZW1lbnQgKnJlc3VsdCA9IHN0YXRpY19jYXN0PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUg
X25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUVsZW1lbnQodGFnTmFtZSwgZWMpLmdl
dCgpXSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci0tIChET01Eb2N1bWVudEZyYWdtZW50ICopY3JlYXRlRG9jdW1lbnRGcmFnbWVudAotewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudEZyYWdtZW50ICo+KFtET01Ob2RlIF9ub2Rl
V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuZ2V0KCldKTsK
LX0KLQotLSAoRE9NVGV4dCAqKWNyZWF0ZVRleHROb2RlOihOU1N0cmluZyAqKWRhdGEKLXsKLSAg
ICBBU1NFUlQoZGF0YSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTVRleHQgKj4oW0RPTU5v
ZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVRleHROb2RlKGRhdGEpLmdldCgp
XSk7Ci19Ci0KLS0gKERPTUNvbW1lbnQgKiljcmVhdGVDb21tZW50OihOU1N0cmluZyAqKWRhdGEK
LXsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUNvbW1lbnQg
Kj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNvbW1lbnQoZGF0
YSkuZ2V0KCldKTsKLX0KLQotLSAoRE9NQ0RBVEFTZWN0aW9uICopY3JlYXRlQ0RBVEFTZWN0aW9u
OihOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgaW50IGV4Y2VwdGlv
biA9IDA7Ci0gICAgRE9NQ0RBVEFTZWN0aW9uICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxET01DREFU
QVNlY3Rpb24gKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNE
QVRBU2VjdGlvbihkYXRhLCBleGNlcHRpb24pLmdldCgpXSk7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NUHJvY2Vzc2luZ0lu
c3RydWN0aW9uICopY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uOihOU1N0cmluZyAqKXRhcmdl
dCA6KE5TU3RyaW5nICopZGF0YQotewotICAgIEFTU0VSVCh0YXJnZXQpOwotICAgIEFTU0VSVChk
YXRhKTsKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24gKnJlc3VsdCA9IHN0YXRpY19jYXN0PERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqPihbRE9N
Tm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0
aW9uKHRhcmdldCwgZGF0YSwgZXhjZXB0aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJv
cihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTUF0dHIgKiljcmVh
dGVBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBp
bnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldp
dGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlQXR0cmlidXRlKG5hbWUsIGV4Y2VwdGlvbikuZ2V0
KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS0gKERPTUVudGl0eVJlZmVyZW5jZSAqKWNyZWF0ZUVudGl0eVJlZmVyZW5jZTooTlNT
dHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotICAgIGludCBleGNlcHRpb24gPSAw
OwotICAgIERPTUVudGl0eVJlZmVyZW5jZSAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RE9NRW50aXR5
UmVmZXJlbmNlICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVF
bnRpdHlSZWZlcmVuY2UobmFtZSwgZXhjZXB0aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01F
cnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGVMaXN0
ICopZ2V0RWxlbWVudHNCeVRhZ05hbWU6KE5TU3RyaW5nICopdGFnbmFtZQotewotICAgIEFTU0VS
VCh0YWduYW1lKTsKLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYg
X2RvY3VtZW50XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWUodGFnbmFtZSkuZ2V0KCldOwotfQotCi0t
IChET01Ob2RlICopaW1wb3J0Tm9kZTooRE9NTm9kZSAqKWltcG9ydGVkTm9kZSA6KEJPT0wpZGVl
cAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtE
T01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5pbXBvcnROb2RlKFtpbXBvcnRlZE5v
ZGUgX25vZGVdLCBkZWVwLCBlYykuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnROUzoo
TlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUKLXsKLSAg
ICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7Ci0KLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZVVSSSwg
cXVhbGlmaWVkTmFtZSwgZWMpLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KHJlc3VsdCk7Ci19Ci0KLS0gKERPTUF0
dHIgKiljcmVhdGVBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmlu
ZyAqKXF1YWxpZmllZE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NF
UlQocXVhbGlmaWVkTmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01BdHRy
ICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlQXR0
cmlidXRlTlMobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCBleGNlcHRpb24pLmdldCgpXTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFt
ZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNl
VVJJKTsKLSAgICBBU1NFUlQobG9jYWxOYW1lKTsKLQotICAgIHJldHVybiBbRE9NTm9kZUxpc3Qg
X25vZGVMaXN0V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKG5h
bWVzcGFjZVVSSSwgbG9jYWxOYW1lKS5nZXQoKV07Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilnZXRF
bGVtZW50QnlJZDooTlNTdHJpbmcgKillbGVtZW50SWQKLXsKLSAgICBBU1NFUlQoZWxlbWVudElk
KTsKLQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2Rl
V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpXSk7Ci19Ci0K
LUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChET01Eb2N1bWVudFJhbmdlKQot
Ci0tIChET01SYW5nZSAqKWNyZWF0ZVJhbmdlCi17Ci0gICAgcmV0dXJuIFtET01SYW5nZSBfcmFu
Z2VXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVJhbmdlKCkuZ2V0KCldOwotfQotCi1AZW5k
Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRDU1MpCi0KLS0gKERP
TUNTU1N0eWxlRGVjbGFyYXRpb24gKilnZXRPdmVycmlkZVN0eWxlOihET01FbGVtZW50ICopZWx0
IDooTlNTdHJpbmcgKilwc2V1ZG9FbHQKLXsKLSAgICBFbGVtZW50ICplbGVtZW50ID0gW2VsdCBf
ZWxlbWVudF07Ci0gICAgU3RyaW5nIHBzZXVkb0VsdFN0cmluZyhwc2V1ZG9FbHQpOwotICAgIHJl
dHVybiBbRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6W3NlbGYg
X2RvY3VtZW50XS0+Z2V0T3ZlcnJpZGVTdHlsZShlbGVtZW50LCBwc2V1ZG9FbHRTdHJpbmcuaW1w
bCgpKV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChET01Eb2N1
bWVudFN0eWxlKQotCi0tIChET01TdHlsZVNoZWV0TGlzdCAqKXN0eWxlU2hlZXRzCi17Ci0gICAg
cmV0dXJuIFtET01TdHlsZVNoZWV0TGlzdCBfc3R5bGVTaGVldExpc3RXaXRoOltzZWxmIF9kb2N1
bWVudF0tPnN0eWxlU2hlZXRzKCldOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01E
b2N1bWVudCAoRE9NRG9jdW1lbnRFeHRlbnNpb25zKQotCi0tIChET01DU1NTdHlsZURlY2xhcmF0
aW9uICopY3JlYXRlQ1NTU3R5bGVEZWNsYXJhdGlvbgotewotICAgIHJldHVybiBbRE9NQ1NTU3R5
bGVEZWNsYXJhdGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3Jl
YXRlQ1NTU3R5bGVEZWNsYXJhdGlvbigpLmdldCgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gRE9NRG9jdW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NRG9jdW1lbnQgKilf
ZG9jdW1lbnRXaXRoOihEb2N1bWVudCAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RE9NRG9jdW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTsKLX0KLQotLSAoRG9jdW1l
bnQgKilfZG9jdW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQgKj4oRE9N
X2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoRE9NRWxlbWVudCAqKV9vd25lckVs
ZW1lbnQKLXsKLSAgICByZXR1cm4gW0RPTUVsZW1lbnQgX2VsZW1lbnRXaXRoOltzZWxmIF9kb2N1
bWVudF0tPm93bmVyRWxlbWVudCgpXTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NQ2hhcmFjdGVyRGF0YQotCi1AaW1wbGVtZW50YXRpb24g
RE9NQ2hhcmFjdGVyRGF0YQotCi0tIChDaGFyYWN0ZXJEYXRhICopX2NoYXJhY3RlckRhdGEKLXsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyRGF0YSAqPihET01fY2FzdDxOb2RlICo+
KF9pbnRlcm5hbCkpOwotfQotCi0tIChOU1N0cmluZyAqKWRhdGEKLXsKLSAgICAvLyBEb2N1bWVu
dGF0aW9uIHNheXMgd2UgY2FuIHJhaXNlIGEgRE9NU1RSSU5HX1NJWkVfRVJSLgotICAgIC8vIEhv
d2V2ZXIsIHRoZSBsb3dlciBsYXllciBkb2VzIG5vdCByZXBvcnQgdGhhdCBlcnJvciB1cCB0byB1
cy4KLSAgICByZXR1cm4gW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5kYXRhKCk7Ci19Ci0KLS0gKHZv
aWQpc2V0RGF0YTooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIAot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+c2V0
RGF0YShkYXRhLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodW5zaWdu
ZWQpbGVuZ3RoCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+bGVuZ3RoKCk7
Ci19Ci0KLS0gKE5TU3RyaW5nICopc3Vic3RyaW5nRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5z
aWduZWQpY291bnQKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBOU1N0cmluZyAq
cmVzdWx0ID0gW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5zdWJzdHJpbmdEYXRhKG9mZnNldCwgY291
bnQsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLS0gKHZvaWQpYXBwZW5kRGF0YTooTlNTdHJpbmcgKilhcmcKLXsKLSAgICBBU1NFUlQoYXJn
KTsKLSAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVy
RGF0YV0tPmFwcGVuZERhdGEoYXJnLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0K
LQotLSAodm9pZClpbnNlcnREYXRhOih1bnNpZ25lZClvZmZzZXQgOihOU1N0cmluZyAqKWFyZwot
ewotICAgIEFTU0VSVChhcmcpOwotICAgIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+aW5zZXJ0RGF0YShvZmZzZXQsIGFyZywgZWMpOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpZGVsZXRlRGF0YToodW5zaWduZWQp
b2Zmc2V0IDoodW5zaWduZWQpIGNvdW50Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5kZWxldGVEYXRhKG9mZnNldCwgY291bnQsIGVjKTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKXJlcGxhY2VEYXRhOih1bnNp
Z25lZClvZmZzZXQgOih1bnNpZ25lZCljb3VudCA6KE5TU3RyaW5nICopYXJnCi17Ci0gICAgQVNT
RVJUKGFyZyk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFj
dGVyRGF0YV0tPnJlcGxhY2VEYXRhKG9mZnNldCwgY291bnQsIGFyZywgZWMpOwotICAgIHJhaXNl
T25ET01FcnJvcihlYyk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS8vIERPTUF0dHIKLQotQGltcGxlbWVudGF0aW9uIERPTUF0dHIKLQotLSAoTlNT
dHJpbmcgKiluYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9hdHRyXS0+bm9kZU5hbWUoKTsKLX0K
LQotLSAoQk9PTClzcGVjaWZpZWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2F0dHJdLT5zcGVjaWZp
ZWQoKTsKLX0KLQotLSAoTlNTdHJpbmcgKil2YWx1ZQotewotICAgIHJldHVybiBbc2VsZiBfYXR0
cl0tPm5vZGVWYWx1ZSgpOwotfQotCi0tICh2b2lkKXNldFZhbHVlOihOU1N0cmluZyAqKXZhbHVl
Ci17Ci0gICAgQVNTRVJUKHZhbHVlKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IFtzZWxmIF9hdHRyXS0+c2V0VmFsdWUodmFsdWUsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3Io
ZWMpOwotfQotCi0tIChET01FbGVtZW50ICopb3duZXJFbGVtZW50Ci17Ci0gICAgcmV0dXJuIFtE
T01FbGVtZW50IF9lbGVtZW50V2l0aDpbc2VsZiBfYXR0cl0tPm93bmVyRWxlbWVudCgpXTsKLX0K
LQotLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKXN0eWxlCi17Ci0gICAgcmV0dXJuIFtET01D
U1NTdHlsZURlY2xhcmF0aW9uIF9zdHlsZURlY2xhcmF0aW9uV2l0aDogW3NlbGYgX2F0dHJdLT5z
dHlsZSgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NQXR0ciAoV2ViQ29yZUlu
dGVybmFsKQotCi0rIChET01BdHRyICopX2F0dHJXaXRoOihBdHRyICopaW1wbAotewotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxET01BdHRyICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19
Ci0KLS0gKEF0dHIgKilfYXR0cgotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdHRyICo+KERP
TV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUVsZW1lbnQKLQotQGltcGxlbWVudGF0aW9uIERP
TUVsZW1lbnQKLQotLSAoTlNTdHJpbmcgKil0YWdOYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9l
bGVtZW50XS0+bm9kZU5hbWUoKTsKLX0KLQotLSAoRE9NTmFtZWROb2RlTWFwICopYXR0cmlidXRl
cwotewotICAgIHJldHVybiBbRE9NTmFtZWROb2RlTWFwIF9uYW1lZE5vZGVNYXBXaXRoOltzZWxm
IF9lbGVtZW50XS0+YXR0cmlidXRlcygpXTsKLX0KLQotLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1
dGU6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICByZXR1cm4gW3Nl
bGYgX2VsZW1lbnRdLT5nZXRBdHRyaWJ1dGUobmFtZSk7Ci19Ci0KLS0gKHZvaWQpc2V0QXR0cmli
dXRlOihOU1N0cmluZyAqKW5hbWUgOihOU1N0cmluZyAqKXZhbHVlCi17Ci0gICAgQVNTRVJUKG5h
bWUpOwotICAgIEFTU0VSVCh2YWx1ZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBb
c2VsZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgZXhjZXB0aW9uKTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLX0KLQotLSAodm9pZClyZW1vdmVBdHRyaWJ1
dGU6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLQotICAgIGludCBleGNl
cHRpb24gPSAwOwotICAgIFtzZWxmIF9lbGVtZW50XS0+cmVtb3ZlQXR0cmlidXRlKG5hbWUsIGV4
Y2VwdGlvbik7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci19Ci0KLS0gKERPTUF0
dHIgKilnZXRBdHRyaWJ1dGVOb2RlOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFt
ZSk7Ci0KLSAgICByZXR1cm4gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0
QXR0cmlidXRlTm9kZShuYW1lKS5nZXQoKV07Ci19Ci0KLS0gKERPTUF0dHIgKilzZXRBdHRyaWJ1
dGVOb2RlOihET01BdHRyICopbmV3QXR0cgotewotICAgIEFTU0VSVChuZXdBdHRyKTsKLQotICAg
IGludCBleGNlcHRpb24gPSAwOwotICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRy
V2l0aDpbc2VsZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZU5vZGUoW25ld0F0dHIgX2F0dHJdLCBl
eGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01BdHRyICopcmVtb3ZlQXR0cmlidXRlTm9kZTooRE9N
QXR0ciAqKW9sZEF0dHIKLXsKLSAgICBBU1NFUlQob2xkQXR0cik7Ci0KLSAgICBpbnQgZXhjZXB0
aW9uID0gMDsKLSAgICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYg
X2VsZW1lbnRdLT5yZW1vdmVBdHRyaWJ1dGVOb2RlKFtvbGRBdHRyIF9hdHRyXSwgZXhjZXB0aW9u
KS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZTooTlNTdHJp
bmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0gICAgcmV0dXJuIFtET01Ob2RlTGlz
dCBfbm9kZUxpc3RXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWUobmFt
ZSkuZ2V0KCldOwotfQotCi0tIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAq
KW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVz
cGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICByZXR1cm4gW3NlbGYgX2Vs
ZW1lbnRdLT5nZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7Ci19Ci0KLS0g
KHZvaWQpc2V0QXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcg
KilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKil2YWx1ZQotewotICAgIEFTU0VSVChuYW1lc3Bh
Y2VVUkkpOwotICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsKLSAgICBBU1NFUlQodmFsdWUpOwot
Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5zZXRBdHRyaWJ1
dGVOUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIHZhbHVlLCBleGNlcHRpb24pOwotICAg
IHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotfQotCi0tICh2b2lkKXJlbW92ZUF0dHJpYnV0
ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0g
ICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICBp
bnQgZXhjZXB0aW9uID0gMDsKLSAgICBbc2VsZiBfZWxlbWVudF0tPnJlbW92ZUF0dHJpYnV0ZU5T
KG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCBleGNlcHRpb24pOwotICAgIHJhaXNlT25ET01FcnJv
cihleGNlcHRpb24pOwotfQotCi0tIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9kZU5TOihOU1N0
cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJU
KG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICByZXR1cm4gW0RP
TUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0QXR0cmlidXRlTm9kZU5TKG5hbWVz
cGFjZVVSSSwgbG9jYWxOYW1lKS5nZXQoKV07Ci19Ci0KLS0gKERPTUF0dHIgKilzZXRBdHRyaWJ1
dGVOb2RlTlM6KERPTUF0dHIgKiluZXdBdHRyCi17Ci0gICAgQVNTRVJUKG5ld0F0dHIpOwotCi0g
ICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0
dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+c2V0QXR0cmlidXRlTm9kZU5TKFtuZXdBdHRyIF9hdHRy
XSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFn
TmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17
Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAg
ICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX2VsZW1lbnRdLT5nZXRF
bGVtZW50c0J5VGFnTmFtZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKS5nZXQoKV07Ci19Ci0K
LS0gKEJPT0wpaGFzQXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFt
ZSk7Ci0KLSAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5oYXNBdHRyaWJ1dGUobmFtZSk7Ci19
Ci0KLS0gKEJPT0wpaGFzQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNT
dHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NF
UlQobG9jYWxOYW1lKTsKLQotICAgIHJldHVybiBbc2VsZiBfZWxlbWVudF0tPmhhc0F0dHJpYnV0
ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKLX0KLQotLSAodm9pZClmb2N1cwotewotICAg
IFtzZWxmIF9lbGVtZW50XS0+Zm9jdXMoKTsKLX0KLQotLSAodm9pZClibHVyCi17Ci0gICAgW3Nl
bGYgX2VsZW1lbnRdLT5ibHVyKCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUVs
ZW1lbnQgKERPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZSkKLQotLSAoRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiAqKXN0eWxlCi17Ci0gICAgcmV0dXJuIFtET01DU1NTdHlsZURlY2xhcmF0aW9uIF9zdHls
ZURlY2xhcmF0aW9uV2l0aDpbc2VsZiBfZWxlbWVudF0tPnN0eWxlKCldOwotfQotCi1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBET01FbGVtZW50IChET01FbGVtZW50RXh0ZW5zaW9ucykKLQotLSAo
TlNJbWFnZSopaW1hZ2UKLXsKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gW3NlbGYgX2Vs
ZW1lbnRdLT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNJbWFn
ZSgpKSB7Ci0gICAgICAgIFJlbmRlckltYWdlKiBpbWcgPSBzdGF0aWNfY2FzdDxSZW5kZXJJbWFn
ZSo+KHJlbmRlcmVyKTsKLSAgICAgICAgaWYgKGltZy0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1nLT5j
YWNoZWRJbWFnZSgpLT5pc0Vycm9ySW1hZ2UoKSkKLSAgICAgICAgICAgIHJldHVybiBpbWctPmNh
Y2hlZEltYWdlKCktPmltYWdlKCktPmdldE5TSW1hZ2UoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG5p
bDsKLX0KLQotLSAodm9pZClzY3JvbGxJbnRvVmlldzooQk9PTClhbGlnblRvcAotewotICAgIFtz
ZWxmIF9lbGVtZW50XS0+c2Nyb2xsSW50b1ZpZXcoYWxpZ25Ub3ApOwotfQotCi0tICh2b2lkKXNj
cm9sbEludG9WaWV3SWZOZWVkZWQ6KEJPT0wpY2VudGVySWZOZWVkZWQKLXsKLSAgICBbc2VsZiBf
ZWxlbWVudF0tPnNjcm9sbEludG9WaWV3SWZOZWVkZWQoY2VudGVySWZOZWVkZWQpOwotfQotCi1A
ZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01FbGVtZW50IChXZWJDb3JlSW50ZXJuYWwpCi0KLSsg
KERPTUVsZW1lbnQgKilfZWxlbWVudFdpdGg6KEVsZW1lbnQgKilpbXBsCi17Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTsKLX0K
LQotLSAoRWxlbWVudCAqKV9lbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1l
bnQgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotQGVuZAotCi1AaW1wbGVt
ZW50YXRpb24gRE9NRWxlbWVudCAoV2ViUHJpdmF0ZSkKLQotLSAoTlNGb250ICopX2ZvbnQKLXsK
LSAgICBSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gW3NlbGYgX2VsZW1lbnRdLT5yZW5kZXJlcigp
OwotICAgIGlmIChyZW5kZXJlcikgewotICAgICAgICByZXR1cm4gcmVuZGVyZXItPnN0eWxlKCkt
PmZvbnQoKS5nZXROU0ZvbnQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoTlNE
YXRhKilfaW1hZ2VUSUZGUmVwcmVzZW50YXRpb24KLXsKLSAgICBSZW5kZXJPYmplY3QgKnJlbmRl
cmVyID0gW3NlbGYgX2VsZW1lbnRdLT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlciAmJiBy
ZW5kZXJlci0+aXNJbWFnZSgpKSB7Ci0gICAgICAgIFJlbmRlckltYWdlKiBpbWcgPSBzdGF0aWNf
Y2FzdDxSZW5kZXJJbWFnZSo+KHJlbmRlcmVyKTsKLSAgICAgICAgaWYgKGltZy0+Y2FjaGVkSW1h
Z2UoKSAmJiAhaW1nLT5jYWNoZWRJbWFnZSgpLT5pc0Vycm9ySW1hZ2UoKSkKLSAgICAgICAgICAg
IHJldHVybiAoTlNEYXRhKikoaW1nLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpLT5nZXRUSUZGUmVw
cmVzZW50YXRpb24oKSk7Ci0gICAgfQotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKE5TVVJMICop
X2dldFVSTEF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwot
ICAgIEVsZW1lbnQgKmUgPSBbc2VsZiBfZWxlbWVudF07Ci0gICAgQVNTRVJUKGUpOwotICAgIHJl
dHVybiBLVVJMKGUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHBhcnNlVVJMKGUtPmdldEF0dHJp
YnV0ZShuYW1lKSkuZGVwcmVjYXRlZFN0cmluZygpKSkuZ2V0TlNVUkwoKTsKLX0KLQotLSAodm9p
ZCAqKV9OUE9iamVjdAotewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBbc2VsZiBfZWxlbWVudF07
Ci0gICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoYXBwbGV0VGFnKSB8fCBlbGVtZW50LT5oYXNU
YWdOYW1lKGVtYmVkVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKG9iamVjdFRhZykpCi0gICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCo+KGVsZW1l
bnQpLT5nZXROUE9iamVjdCgpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIDA7Ci19Ci0KLS0g
KEJPT0wpaXNGb2N1c2VkCi17Ci0gICAgRWxlbWVudCogaW1wbCA9IFtzZWxmIF9lbGVtZW50XTsK
LSAgICBpZiAoaW1wbC0+ZG9jdW1lbnQoKS0+Zm9jdXNOb2RlKCkgPT0gaW1wbCkKLSAgICAgICAg
cmV0dXJuIFlFUzsKLSAgICByZXR1cm4gTk87Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTVRleHQKLQotQGltcGxlbWVudGF0aW9uIERPTVRl
eHQKLQotLSAoVGV4dCAqKV90ZXh0Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHQgKj4o
RE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoRE9NVGV4dCAqKXNwbGl0VGV4
dDoodW5zaWduZWQpb2Zmc2V0Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9N
Tm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90ZXh0XS0+c3BsaXRUZXh0
KG9mZnNldCwgZWMpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxET01UZXh0ICo+KHJlc3VsdCk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUNvbW1lbnQKLQotQGltcGxlbWVudGF0aW9uIERP
TUNvbW1lbnQKLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ly8gRE9NQ0RBVEFTZWN0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBET01DREFUQVNlY3Rpb24KLQot
QGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NRG9jdW1l
bnRUeXBlCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudFR5cGUKLQotLSAoTlNTdHJpbmcg
KiluYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9kb2N1bWVudFR5cGVdLT5wdWJsaWNJZCgpOwot
fQotCi0tIChET01OYW1lZE5vZGVNYXAgKillbnRpdGllcwotewotICAgIHJldHVybiBbRE9NTmFt
ZWROb2RlTWFwIF9uYW1lZE5vZGVNYXBXaXRoOltzZWxmIF9kb2N1bWVudFR5cGVdLT5lbnRpdGll
cygpXTsKLX0KLQotLSAoRE9NTmFtZWROb2RlTWFwICopbm90YXRpb25zCi17Ci0gICAgcmV0dXJu
IFtET01OYW1lZE5vZGVNYXAgX25hbWVkTm9kZU1hcFdpdGg6W3NlbGYgX2RvY3VtZW50VHlwZV0t
Pm5vdGF0aW9ucygpXTsKLX0KLQotLSAoTlNTdHJpbmcgKilwdWJsaWNJZAotewotICAgIHJldHVy
biBbc2VsZiBfZG9jdW1lbnRUeXBlXS0+cHVibGljSWQoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilz
eXN0ZW1JZAotewotICAgIHJldHVybiBbc2VsZiBfZG9jdW1lbnRUeXBlXS0+c3lzdGVtSWQoKTsK
LX0KLQotLSAoTlNTdHJpbmcgKilpbnRlcm5hbFN1YnNldAotewotICAgIHJldHVybiBbc2VsZiBf
ZG9jdW1lbnRUeXBlXS0+aW50ZXJuYWxTdWJzZXQoKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gRE9NRG9jdW1lbnRUeXBlIChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKERvY3VtZW50VHlw
ZSAqKV9kb2N1bWVudFR5cGUKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnRUeXBl
ICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTU5vdGF0aW9uCi0KLUBpbXBsZW1lbnRh
dGlvbiBET01Ob3RhdGlvbgotCi0tIChOb3RhdGlvbiAqKV9ub3RhdGlvbgotewotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxOb3RhdGlvbiAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwot
fQotCi0tIChOU1N0cmluZyAqKXB1YmxpY0lkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub3RhdGlv
bl0tPnB1YmxpY0lkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopc3lzdGVtSWQKLXsKLSAgICByZXR1
cm4gW3NlbGYgX25vdGF0aW9uXS0+c3lzdGVtSWQoKTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NRW50aXR5Ci0KLUBpbXBsZW1lbnRhdGlv
biBET01FbnRpdHkKLQotLSAoRW50aXR5ICopX2VudGl0eQotewotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxFbnRpdHkgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNT
dHJpbmcgKilwdWJsaWNJZAotewotICAgIHJldHVybiBbc2VsZiBfZW50aXR5XS0+cHVibGljSWQo
KTsKLX0KLQotLSAoTlNTdHJpbmcgKilzeXN0ZW1JZAotewotICAgIHJldHVybiBbc2VsZiBfZW50
aXR5XS0+c3lzdGVtSWQoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilub3RhdGlvbk5hbWUKLXsKLSAg
ICByZXR1cm4gW3NlbGYgX2VudGl0eV0tPm5vdGF0aW9uTmFtZSgpOwotfQotCi1AZW5kCi0KLS8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01FbnRpdHlSZWZlcmVuY2UK
LQotQGltcGxlbWVudGF0aW9uIERPTUVudGl0eVJlZmVyZW5jZQotCi1AZW5kCi0KLS8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24K
LQotQGltcGxlbWVudGF0aW9uIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbgotCi0tIChQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24gKilfcHJvY2Vzc2luZ0luc3RydWN0aW9uCi17Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PFByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqPihET01fY2FzdDxOb2RlICo+KF9pbnRl
cm5hbCkpOwotfQotCi0tIChOU1N0cmluZyAqKXRhcmdldAotewotICAgIHJldHVybiBbc2VsZiBf
cHJvY2Vzc2luZ0luc3RydWN0aW9uXS0+dGFyZ2V0KCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopZGF0
YQotewotICAgIHJldHVybiBbc2VsZiBfcHJvY2Vzc2luZ0luc3RydWN0aW9uXS0+ZGF0YSgpOwot
fQotCi0tICh2b2lkKXNldERhdGE6KE5TU3RyaW5nICopZGF0YQotewotICAgIEFTU0VSVChkYXRh
KTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9wcm9jZXNzaW5nSW5z
dHJ1Y3Rpb25dLT5zZXREYXRhKGRhdGEsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwot
fQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01S
YW5nZQotCi1AaW1wbGVtZW50YXRpb24gRE9NUmFuZ2UKLQotLSAodm9pZClkZWFsbG9jCi17Ci0g
ICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxSYW5nZSAqPihfaW50ZXJuYWwp
LT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmlu
YWxpemUKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PFJhbmdlICo+
KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19Ci0K
LS0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KLXsKLSAgICBpZiAoIV9pbnRlcm5hbCkKLSAgICAg
ICAgcmV0dXJuIEAiPERPTVJhbmdlOiBudWxsPiI7Ci0gICAgcmV0dXJuIFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiPERPTVJhbmdlOiAlQCAlZCAlQCAlZD4iLAotICAgICAgICBbc2VsZiBz
dGFydENvbnRhaW5lcl0sIFtzZWxmIHN0YXJ0T2Zmc2V0XSwKLSAgICAgICAgW3NlbGYgZW5kQ29u
dGFpbmVyXSwgW3NlbGYgZW5kT2Zmc2V0XV07Ci19Ci0KLS0gKERPTU5vZGUgKilzdGFydENvbnRh
aW5lcgotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9
IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfcmFuZ2VdLT5zdGFydENvbnRhaW5lcihlYyldOwot
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoaW50
KXN0YXJ0T2Zmc2V0Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW50IHJlc3Vs
dCA9IFtzZWxmIF9yYW5nZV0tPnN0YXJ0T2Zmc2V0KGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3Io
ZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUgKillbmRDb250YWluZXIK
LXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9N
Tm9kZSBfbm9kZVdpdGg6W3NlbGYgX3JhbmdlXS0+ZW5kQ29udGFpbmVyKGVjKV07Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChpbnQpZW5kT2Zm
c2V0Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW50IHJlc3VsdCA9IFtzZWxm
IF9yYW5nZV0tPmVuZE9mZnNldChlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0tIChCT09MKWNvbGxhcHNlZAotewotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIEJPT0wgcmVzdWx0ID0gW3NlbGYgX3JhbmdlXS0+Y29sbGFwc2VkKGVj
KTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0g
KERPTU5vZGUgKiljb21tb25BbmNlc3RvckNvbnRhaW5lcgotewotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBf
cmFuZ2VdLT5jb21tb25BbmNlc3RvckNvbnRhaW5lcihlYyldOwotICAgIHJhaXNlT25ET01FcnJv
cihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAodm9pZClzZXRTdGFydDooRE9NTm9k
ZSAqKXJlZk5vZGUgOihpbnQpb2Zmc2V0Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgW3NlbGYgX3JhbmdlXS0+c2V0U3RhcnQoW3JlZk5vZGUgX25vZGVdLCBvZmZzZXQsIGVjKTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKXNldEVuZDooRE9NTm9kZSAq
KXJlZk5vZGUgOihpbnQpb2Zmc2V0Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
W3NlbGYgX3JhbmdlXS0+c2V0RW5kKFtyZWZOb2RlIF9ub2RlXSwgb2Zmc2V0LCBlYyk7Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClzZXRTdGFydEJlZm9yZTooRE9NTm9k
ZSAqKXJlZk5vZGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFu
Z2VdLT5zZXRTdGFydEJlZm9yZShbcmVmTm9kZSBfbm9kZV0sIGVjKTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOwotfQotCi0tICh2b2lkKXNldFN0YXJ0QWZ0ZXI6KERPTU5vZGUgKilyZWZOb2Rl
Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+c2V0U3Rh
cnRBZnRlcihbcmVmTm9kZSBfbm9kZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwot
fQotCi0tICh2b2lkKXNldEVuZEJlZm9yZTooRE9NTm9kZSAqKXJlZk5vZGUKLXsKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5zZXRFbmRCZWZvcmUoW3JlZk5v
ZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClz
ZXRFbmRBZnRlcjooRE9NTm9kZSAqKXJlZk5vZGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5zZXRFbmRBZnRlcihbcmVmTm9kZSBfbm9kZV0sIGVjKTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKWNvbGxhcHNlOihCT09MKXRv
U3RhcnQKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5j
b2xsYXBzZSh0b1N0YXJ0LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAo
dm9pZClzZWxlY3ROb2RlOihET01Ob2RlICopcmVmTm9kZQotewotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIFtzZWxmIF9yYW5nZV0tPnNlbGVjdE5vZGUoW3JlZk5vZGUgX25vZGVdLCBl
Yyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClzZWxlY3ROb2RlQ29u
dGVudHM6KERPTU5vZGUgKilyZWZOb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgW3NlbGYgX3JhbmdlXS0+c2VsZWN0Tm9kZUNvbnRlbnRzKFtyZWZOb2RlIF9ub2RlXSwgZWMp
OwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHNob3J0KWNvbXBhcmVCb3VuZGFy
eVBvaW50czoodW5zaWduZWQgc2hvcnQpaG93IDooRE9NUmFuZ2UgKilzb3VyY2VSYW5nZQotewot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHNob3J0IHJlc3VsdCA9IFtzZWxmIF9yYW5n
ZV0tPmNvbXBhcmVCb3VuZGFyeVBvaW50cyhzdGF0aWNfY2FzdDxSYW5nZTo6Q29tcGFyZUhvdz4o
aG93KSwgW3NvdXJjZVJhbmdlIF9yYW5nZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKHZvaWQpZGVsZXRlQ29udGVudHMKLXsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5kZWxldGVDb250ZW50
cyhlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoRE9NRG9jdW1lbnRGcmFn
bWVudCAqKWV4dHJhY3RDb250ZW50cwotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IERPTURvY3VtZW50RnJhZ21lbnQgKnJlc3VsdCA9IFtET01Eb2N1bWVudEZyYWdtZW50IF9kb2N1
bWVudEZyYWdtZW50V2l0aDpbc2VsZiBfcmFuZ2VdLT5leHRyYWN0Q29udGVudHMoZWMpLmdldCgp
XTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0g
KERPTURvY3VtZW50RnJhZ21lbnQgKiljbG9uZUNvbnRlbnRzCi17Ci0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqcmVzdWx0ID0gW0RPTURvY3VtZW50
RnJhZ21lbnQgX2RvY3VtZW50RnJhZ21lbnRXaXRoOltzZWxmIF9yYW5nZV0tPmNsb25lQ29udGVu
dHMoZWMpLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLS0gKHZvaWQpaW5zZXJ0Tm9kZTooRE9NTm9kZSAqKW5ld05vZGUKLXsKLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5pbnNlcnROb2RlKFtuZXdO
b2RlIF9ub2RlXSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQp
c3Vycm91bmRDb250ZW50czooRE9NTm9kZSAqKW5ld1BhcmVudAotewotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIFtzZWxmIF9yYW5nZV0tPnN1cnJvdW5kQ29udGVudHMoW25ld1BhcmVu
dCBfbm9kZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tIChET01SYW5n
ZSAqKWNsb25lUmFuZ2UKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01SYW5n
ZSAqcmVzdWx0ID0gW0RPTVJhbmdlIF9yYW5nZVdpdGg6W3NlbGYgX3JhbmdlXS0+Y2xvbmVSYW5n
ZShlYykuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotLSAoTlNTdHJpbmcgKil0b1N0cmluZwotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIE5TU3RyaW5nICpyZXN1bHQgPSBbc2VsZiBfcmFuZ2VdLT50b1N0cmluZyhlYyk7
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChO
U1N0cmluZyAqKXRleHQKLXsKLSAgICByZXR1cm4gW3NlbGYgX3JhbmdlXS0+dGV4dCgpOwotfQot
Ci0tICh2b2lkKWRldGFjaAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxm
IF9yYW5nZV0tPmRldGFjaChlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotQGVu
ZAotCi1AaW1wbGVtZW50YXRpb24gRE9NUmFuZ2UgKFdlYkNvcmVJbnRlcm5hbCkKLQotLSAoaWQp
X2luaXRXaXRoUmFuZ2U6KFJhbmdlICopaW1wbAotewotICAgIEFTU0VSVChpbXBsKTsKLQotICAg
IFtzdXBlciBfaW5pdF07Ci0gICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJu
YWwgKj4oaW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcihzZWxmLCBp
bXBsKTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotKyAoRE9NUmFuZ2UgKilfcmFuZ2VXaXRoOihS
YW5nZSAqKWltcGwKLXsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAg
Ci0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAgY2FjaGVkSW5zdGFuY2UgPSBnZXRET01XcmFw
cGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIFtbY2Fj
aGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgCi0gICAgcmV0dXJuIFtbW3Nl
bGYgYWxsb2NdIF9pbml0V2l0aFJhbmdlOmltcGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoUmFu
Z2UgKilfcmFuZ2UKLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8UmFuZ2UgKj4oX2ludGVybmFsKTsK
LX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NUmFuZ2UgKFdlYlByaXZhdGUpCi0KLS0g
KE5TU3RyaW5nICopX3RleHQKLXsKLSAgICByZXR1cm4gW3NlbGYgdGV4dF07Ci19Ci0KLUBlbmQK
LQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGVGaWx0ZXIKLQot
LSAoaWQpX2luaXRXaXRoTm9kZUZpbHRlcjooTm9kZUZpbHRlciAqKWltcGwKLXsKLSAgICBBU1NF
UlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0
PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGltcGwtPnJlZigpOwotICAgIGFkZERP
TVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLSsgKERPTU5vZGVG
aWx0ZXIgKilfbm9kZUZpbHRlcldpdGg6KE5vZGVGaWx0ZXIgKilpbXBsCi17Ci0gICAgaWYgKCFp
bXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwot
ICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVk
SW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3Jl
bGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhOb2RlRmls
dGVyOmltcGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoTm9kZUZpbHRlciAqKV9ub2RlRmlsdGVy
Ci17Ci0gICAgcmV0dXJuIERPTV9jYXN0PE5vZGVGaWx0ZXIgKj4oX2ludGVybmFsKTsKLX0KLQot
LSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAgICAgRE9NX2Nhc3Q8
Tm9kZUZpbHRlciAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIFtzdXBlciBkZWFsbG9jXTsK
LX0KLQotLSAodm9pZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIERP
TV9jYXN0PE5vZGVGaWx0ZXIgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZmlu
YWxpemVdOwotfQotCi0tIChzaG9ydClhY2NlcHROb2RlOihET01Ob2RlICopbm9kZQotewotICAg
IHJldHVybiBbc2VsZiBfbm9kZUZpbHRlcl0tPmFjY2VwdE5vZGUoW25vZGUgX25vZGVdKTsKLX0K
LQotQGVuZAotCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlSXRlcmF0b3IKLQotLSAoaWQpX2lu
aXRXaXRoTm9kZUl0ZXJhdG9yOihOb2RlSXRlcmF0b3IgKilpbXBsIGZpbHRlcjooaWQgPERPTU5v
ZGVGaWx0ZXI+KWZpbHRlcgotewotICAgIEFTU0VSVChpbXBsKTsKLQotICAgIFtzdXBlciBfaW5p
dF07Ci0gICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7
Ci0gICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsKLSAgICBt
X2ZpbHRlciA9IFtmaWx0ZXIgcmV0YWluXTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAoTm9k
ZUl0ZXJhdG9yICopX25vZGVJdGVyYXRvcgotewotICAgIHJldHVybiBET01fY2FzdDxOb2RlSXRl
cmF0b3IgKj4oX2ludGVybmFsKTsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW21fZmls
dGVyIHJlbGVhc2VdOwotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgW3NlbGYgZGV0YWNo
XTsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZUl0ZXJhdG9yICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7
Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6ZQotewot
ICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgW3NlbGYgZGV0YWNoXTsKLSAgICAgICAgRE9N
X2Nhc3Q8Tm9kZUl0ZXJhdG9yICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtz
dXBlciBmaW5hbGl6ZV07Ci19Ci0KLS0gKERPTU5vZGUgKilyb290Ci17Ci0gICAgcmV0dXJuIFtE
T01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZUl0ZXJhdG9yXS0+cm9vdCgpXTsKLX0KLQotLSAo
dW5zaWduZWQpd2hhdFRvU2hvdwotewotICAgIHJldHVybiBbc2VsZiBfbm9kZUl0ZXJhdG9yXS0+
d2hhdFRvU2hvdygpOwotfQotCi0tIChpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAg
aWYgKG1fZmlsdGVyKQotICAgICAgICAvLyBUaGlzIG5vZGUgaXRlcmF0b3Igd2FzIGNyZWF0ZWQg
ZnJvbSB0aGUgb2JqYyBzaWRlCi0gICAgICAgIHJldHVybiBbW21fZmlsdGVyIHJldGFpbl0gYXV0
b3JlbGVhc2VdOwotCi0gICAgLy8gVGhpcyBub2RlIGl0ZXJhdG9yIHdhcyBjcmVhdGVkIGZyb20g
dGhlIGMrKyBzaWRlCi0gICAgcmV0dXJuIFtET01Ob2RlRmlsdGVyIF9ub2RlRmlsdGVyV2l0aDpb
c2VsZiBfbm9kZUl0ZXJhdG9yXS0+ZmlsdGVyKCldOwotfQotCi0tIChCT09MKWV4cGFuZEVudGl0
eVJlZmVyZW5jZXMKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVJdGVyYXRvcl0tPmV4cGFuZEVu
dGl0eVJlZmVyZW5jZXMoKTsKLX0KLQotLSAoRE9NTm9kZSAqKW5leHROb2RlCi17Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVX
aXRoOltzZWxmIF9ub2RlSXRlcmF0b3JdLT5uZXh0Tm9kZShlYyldOwotICAgIHJhaXNlT25ET01F
cnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZSAqKXByZXZpb3Vz
Tm9kZQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9
IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZUl0ZXJhdG9yXS0+cHJldmlvdXNOb2RlKGVj
KV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0t
ICh2b2lkKWRldGFjaAotewotICAgIFtzZWxmIF9ub2RlSXRlcmF0b3JdLT5kZXRhY2goKTsKLX0K
LQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NTm9kZUl0ZXJhdG9yKFdlYkNvcmVJbnRlcm5h
bCkKLQotKyAoRE9NTm9kZUl0ZXJhdG9yICopX25vZGVJdGVyYXRvcldpdGg6KE5vZGVJdGVyYXRv
ciAqKWltcGwgZmlsdGVyOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgaWYgKCFp
bXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwot
ICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVk
SW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3Jl
bGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhOb2RlSXRl
cmF0b3I6aW1wbCBmaWx0ZXI6ZmlsdGVyXSBhdXRvcmVsZWFzZV07Ci19Ci0KLUBlbmQKLQotQGlt
cGxlbWVudGF0aW9uIERPTVRyZWVXYWxrZXIKLQotLSAoaWQpX2luaXRXaXRoVHJlZVdhbGtlcjoo
VHJlZVdhbGtlciAqKWltcGwgZmlsdGVyOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0g
ICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBE
T01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAg
ICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIG1fZmlsdGVyID0gW2ZpbHRlciByZXRh
aW5dOwotICAgIHJldHVybiBzZWxmOwotfQotCi0tIChUcmVlV2Fsa2VyICopX3RyZWVXYWxrZXIK
LXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8VHJlZVdhbGtlciAqPihfaW50ZXJuYWwpOwotfQotCi0t
ICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAobV9maWx0ZXIpCi0gICAgICAgIFttX2ZpbHRlciBy
ZWxlYXNlXTsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PFRyZWVXYWxr
ZXIgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwot
fQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBE
T01fY2FzdDxUcmVlV2Fsa2VyICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtz
dXBlciBmaW5hbGl6ZV07Ci19Ci0KLS0gKERPTU5vZGUgKilyb290Ci17Ci0gICAgcmV0dXJuIFtE
T01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfdHJlZVdhbGtlcl0tPnJvb3QoKV07Ci19Ci0KLS0gKHVu
c2lnbmVkKXdoYXRUb1Nob3cKLXsKLSAgICByZXR1cm4gW3NlbGYgX3RyZWVXYWxrZXJdLT53aGF0
VG9TaG93KCk7Ci19Ci0KLS0gKGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIKLXsKLSAgICBpZiAo
bV9maWx0ZXIpCi0gICAgICAgIC8vIFRoaXMgdHJlZSB3YWxrZXIgd2FzIGNyZWF0ZWQgZnJvbSB0
aGUgb2JqYyBzaWRlCi0gICAgICAgIHJldHVybiBbW21fZmlsdGVyIHJldGFpbl0gYXV0b3JlbGVh
c2VdOwotCi0gICAgLy8gVGhpcyB0cmVlIHdhbGtlciB3YXMgY3JlYXRlZCBmcm9tIHRoZSBjKysg
c2lkZQotICAgIHJldHVybiBbRE9NTm9kZUZpbHRlciBfbm9kZUZpbHRlcldpdGg6W3NlbGYgX3Ry
ZWVXYWxrZXJdLT5maWx0ZXIoKV07Ci19Ci0KLS0gKEJPT0wpZXhwYW5kRW50aXR5UmVmZXJlbmNl
cwotewotICAgIHJldHVybiBbc2VsZiBfdHJlZVdhbGtlcl0tPmV4cGFuZEVudGl0eVJlZmVyZW5j
ZXMoKTsKLX0KLQotLSAoRE9NTm9kZSAqKWN1cnJlbnROb2RlCi17Ci0gICAgcmV0dXJuIFtET01O
b2RlIF9ub2RlV2l0aDpbc2VsZiBfdHJlZVdhbGtlcl0tPmN1cnJlbnROb2RlKCldOwotfQotCi0t
ICh2b2lkKXNldEN1cnJlbnROb2RlOihET01Ob2RlICopY3VycmVudE5vZGUKLXsKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfdHJlZVdhbGtlcl0tPnNldEN1cnJlbnROb2Rl
KFtjdXJyZW50Tm9kZSBfbm9kZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQot
Ci0tIChET01Ob2RlICopcGFyZW50Tm9kZQotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdp
dGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5wYXJlbnROb2RlKCldOwotfQotCi0tIChET01Ob2RlICop
Zmlyc3RDaGlsZAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVX
YWxrZXJdLT5maXJzdENoaWxkKCldOwotfQotCi0tIChET01Ob2RlICopbGFzdENoaWxkCi17Ci0g
ICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfdHJlZVdhbGtlcl0tPmxhc3RDaGls
ZCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKXByZXZpb3VzU2libGluZwotewotICAgIHJldHVybiBb
RE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5wcmV2aW91c1NpYmxpbmcoKV07
Ci19Ci0KLS0gKERPTU5vZGUgKiluZXh0U2libGluZwotewotICAgIHJldHVybiBbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5uZXh0U2libGluZygpXTsKLX0KLQotLSAoRE9N
Tm9kZSAqKXByZXZpb3VzTm9kZQotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX3RyZWVXYWxrZXJdLT5wcmV2aW91c05vZGUoKV07Ci19Ci0KLS0gKERPTU5vZGUgKiluZXh0
Tm9kZQotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJd
LT5uZXh0Tm9kZSgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NVHJlZVdhbGtl
ciAoV2ViQ29yZUludGVybmFsKQotCi0rIChET01UcmVlV2Fsa2VyICopX3RyZWVXYWxrZXJXaXRo
OihUcmVlV2Fsa2VyICopaW1wbCBmaWx0ZXI6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIKLXsK
LSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2FjaGVk
SW5zdGFuY2U7Ci0gICAgY2FjaGVkSW5zdGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwotICAg
IGlmIChjYWNoZWRJbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0
YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgCi0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0
V2l0aFRyZWVXYWxrZXI6aW1wbCBmaWx0ZXI6ZmlsdGVyXSBhdXRvcmVsZWFzZV07Ci19Ci0KLUBl
bmQKLQotY2xhc3MgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24gOiBwdWJsaWMgTm9kZUZpbHRlckNv
bmRpdGlvbiAKLXsKLXB1YmxpYzoKLSAgICBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihpZCA8RE9N
Tm9kZUZpbHRlcj4pOwotICAgIHZpcnR1YWwgfk9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKCk7Ci0g
ICAgdmlydHVhbCBzaG9ydCBhY2NlcHROb2RlKE5vZGUqKSBjb25zdDsKLQotcHJpdmF0ZToKLSAg
ICBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihjb25zdCBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbiAm
KTsKLSAgICBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbiAmb3BlcmF0b3I9KGNvbnN0IE9iakNOb2Rl
RmlsdGVyQ29uZGl0aW9uICYpOwotCi0gICAgaWQgPERPTU5vZGVGaWx0ZXI+IG1fZmlsdGVyOwot
fTsKLQotT2JqQ05vZGVGaWx0ZXJDb25kaXRpb246Ok9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKGlk
IDxET01Ob2RlRmlsdGVyPiBmaWx0ZXIpCi0gICAgOiBtX2ZpbHRlcihmaWx0ZXIpCi17Ci0gICAg
QVNTRVJUKG1fZmlsdGVyKTsKLSAgICBDRlJldGFpbihtX2ZpbHRlcik7Ci19Ci0KLU9iakNOb2Rl
RmlsdGVyQ29uZGl0aW9uOjp+T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oKQotewotICAgIENGUmVs
ZWFzZShtX2ZpbHRlcik7Ci19Ci0KLXNob3J0IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2Nl
cHROb2RlKE5vZGUqIG5vZGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1
cm4gTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVDsKLSAgICByZXR1cm4gW21fZmlsdGVyIGFjY2Vw
dE5vZGU6W0RPTU5vZGUgX25vZGVXaXRoOm5vZGVdXTsKLX0KLQotQGltcGxlbWVudGF0aW9uIERP
TURvY3VtZW50IChET01Eb2N1bWVudFRyYXZlcnNhbCkKLQotLSAoRE9NTm9kZUl0ZXJhdG9yICop
Y3JlYXRlTm9kZUl0ZXJhdG9yOihET01Ob2RlICopcm9vdCA6KHVuc2lnbmVkKXdoYXRUb1Nob3cg
OihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyIDooQk9PTClleHBhbmRFbnRpdHlSZWZlcmVuY2Vz
Ci17Ci0gICAgUmVmUHRyPE5vZGVGaWx0ZXI+IGNwcEZpbHRlcjsKLSAgICBpZiAoZmlsdGVyKQot
ICAgICAgICBjcHBGaWx0ZXIgPSBuZXcgTm9kZUZpbHRlcihuZXcgT2JqQ05vZGVGaWx0ZXJDb25k
aXRpb24oZmlsdGVyKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPE5v
ZGVJdGVyYXRvcj4gaW1wbCA9IFtzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZU5vZGVJdGVyYXRvcihb
cm9vdCBfbm9kZV0sIHdoYXRUb1Nob3csIGNwcEZpbHRlciwgZXhwYW5kRW50aXR5UmVmZXJlbmNl
cywgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIFtET01Ob2RlSXRl
cmF0b3IgX25vZGVJdGVyYXRvcldpdGg6aW1wbC5nZXQoKSBmaWx0ZXI6ZmlsdGVyXTsKLX0KLQot
LSAoRE9NVHJlZVdhbGtlciAqKWNyZWF0ZVRyZWVXYWxrZXI6KERPTU5vZGUgKilyb290IDoodW5z
aWduZWQpd2hhdFRvU2hvdyA6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIgOihCT09MKWV4cGFu
ZEVudGl0eVJlZmVyZW5jZXMKLXsKLSAgICBSZWZQdHI8Tm9kZUZpbHRlcj4gY3BwRmlsdGVyOwot
ICAgIGlmIChmaWx0ZXIpCi0gICAgICAgIGNwcEZpbHRlciA9IG5ldyBOb2RlRmlsdGVyKG5ldyBP
YmpDTm9kZUZpbHRlckNvbmRpdGlvbihmaWx0ZXIpKTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBSZWZQdHI8VHJlZVdhbGtlcj4gaW1wbCA9IFtzZWxmIF9kb2N1bWVudF0tPmNyZWF0
ZVRyZWVXYWxrZXIoW3Jvb3QgX25vZGVdLCB3aGF0VG9TaG93LCBjcHBGaWx0ZXIsIGV4cGFuZEVu
dGl0eVJlZmVyZW5jZXMsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVy
biBbRE9NVHJlZVdhbGtlciBfdHJlZVdhbGtlcldpdGg6aW1wbC5nZXQoKSBmaWx0ZXI6ZmlsdGVy
XTsKLX0KLQotQGVuZAotCi1PYmpDRXZlbnRMaXN0ZW5lciogT2JqQ0V2ZW50TGlzdGVuZXI6OmZp
bmQoaWQgPERPTUV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKQotewotICAgIGlmIChMaXN0ZW5lck1h
cCogbWFwID0gbGlzdGVuZXJNYXApCi0gICAgICAgIHJldHVybiBtYXAtPmdldChsaXN0ZW5lcik7
Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLU9iakNFdmVudExpc3RlbmVyICpPYmpDRXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKGlkIDxET01FdmVudExpc3RlbmVyPiBsaXN0ZW5lcikKLXsKLSAgICBPYmpD
RXZlbnRMaXN0ZW5lciAqd3JhcHBlciA9IGZpbmQobGlzdGVuZXIpOwotICAgIGlmICghd3JhcHBl
cikKLSAgICAgICAgd3JhcHBlciA9IG5ldyBPYmpDRXZlbnRMaXN0ZW5lcihsaXN0ZW5lcik7Ci0g
ICAgd3JhcHBlci0+cmVmKCk7Ci0gICAgcmV0dXJuIHdyYXBwZXI7Ci19Ci0KLU9iakNFdmVudExp
c3RlbmVyOjpPYmpDRXZlbnRMaXN0ZW5lcihpZCA8RE9NRXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIp
Ci0gICAgOiBtX2xpc3RlbmVyKFtsaXN0ZW5lciByZXRhaW5dKQotewotICAgIExpc3RlbmVyTWFw
KiBtYXAgPSBsaXN0ZW5lck1hcDsKLSAgICBpZiAoIW1hcCkgewotICAgICAgICBtYXAgPSBuZXcg
TGlzdGVuZXJNYXA7Ci0gICAgICAgIGxpc3RlbmVyTWFwID0gbWFwOwotICAgIH0KLSAgICBtYXAt
PnNldChsaXN0ZW5lciwgdGhpcyk7Ci19Ci0KLU9iakNFdmVudExpc3RlbmVyOjp+T2JqQ0V2ZW50
TGlzdGVuZXIoKQotewotICAgIGxpc3RlbmVyTWFwLT5yZW1vdmUobV9saXN0ZW5lcik7Ci0gICAg
W21fbGlzdGVuZXIgcmVsZWFzZV07Ci19Ci0KLXZvaWQgT2JqQ0V2ZW50TGlzdGVuZXI6OmhhbmRs
ZUV2ZW50KEV2ZW50ICpldmVudCwgYm9vbCkKLXsKLSAgICBbbV9saXN0ZW5lciBoYW5kbGVFdmVu
dDpbRE9NRXZlbnQgX2V2ZW50V2l0aDpldmVudF1dOwotfQpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTU5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
Tm9kZS5oCShyZXZpc2lvbiAxNTk1OSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw3MSArMjQsMTIgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAogICovCiAKLSNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgogCiBAY2xhc3MgRE9NRG9jdW1lbnQ7IAotQGNs
YXNzIERPTURvY3VtZW50VHlwZTsKLUBjbGFzcyBET01FbGVtZW50OwogQGNsYXNzIERPTU5hbWVk
Tm9kZU1hcDsKIEBjbGFzcyBET01Ob2RlTGlzdDsKIAotdHlwZWRlZiBzdHJ1Y3QgRE9NT2JqZWN0
SW50ZXJuYWwgRE9NT2JqZWN0SW50ZXJuYWw7Ci0KLUBpbnRlcmZhY2UgRE9NT2JqZWN0IDogV2Vi
U2NyaXB0T2JqZWN0IDxOU0NvcHlpbmc+Ci17Ci0gICAgRE9NT2JqZWN0SW50ZXJuYWwgKl9pbnRl
cm5hbDsKLX0KLUBlbmQKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgRE9NVGltZVN0YW1w
OwotCi1leHRlcm4gTlNTdHJpbmcgKiBjb25zdCBET01FeGNlcHRpb247Ci0KLWVudW0gewotICAg
IC8vCi0gICAgLy8gRE9NIGV4Y2VwdGlvbiBjb2RlcwotICAgIC8vCi0gICAgRE9NX0lOREVYX1NJ
WkVfRVJSICAgICAgICAgICAgICAgID0gMSwKLSAgICBET01fRE9NU1RSSU5HX1NJWkVfRVJSICAg
ICAgICAgICAgPSAyLAotICAgIERPTV9ISUVSQVJDSFlfUkVRVUVTVF9FUlIgICAgICAgICA9IDMs
Ci0gICAgRE9NX1dST05HX0RPQ1VNRU5UX0VSUiAgICAgICAgICAgID0gNCwKLSAgICBET01fSU5W
QUxJRF9DSEFSQUNURVJfRVJSICAgICAgICAgPSA1LAotICAgIERPTV9OT19EQVRBX0FMTE9XRURf
RVJSICAgICAgICAgICA9IDYsCi0gICAgRE9NX05PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiAg
ID0gNywKLSAgICBET01fTk9UX0ZPVU5EX0VSUiAgICAgICAgICAgICAgICAgPSA4LAotICAgIERP
TV9OT1RfU1VQUE9SVEVEX0VSUiAgICAgICAgICAgICA9IDksCi0gICAgRE9NX0lOVVNFX0FUVFJJ
QlVURV9FUlIgICAgICAgICAgID0gMTAsCi0gICAgRE9NX0lOVkFMSURfU1RBVEVfRVJSICAgICAg
ICAgICAgID0gMTEsCi0gICAgRE9NX1NZTlRBWF9FUlIgICAgICAgICAgICAgICAgICAgID0gMTIs
Ci0gICAgRE9NX0lOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiAgICAgID0gMTMsCi0gICAgRE9NX05B
TUVTUEFDRV9FUlIgICAgICAgICAgICAgICAgID0gMTQsCi0gICAgRE9NX0lOVkFMSURfQUNDRVNT
X0VSUiAgICAgICAgICAgID0gMTUKLX07Ci0KLUBpbnRlcmZhY2UgRE9NSW1wbGVtZW50YXRpb24g
OiBET01PYmplY3QKLS0gKEJPT0wpaGFzRmVhdHVyZTooTlNTdHJpbmcgKilmZWF0dXJlIDooTlNT
dHJpbmcgKil2ZXJzaW9uOwotLSAoRE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBl
OihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXB1YmxpY0lkIDooTlNTdHJp
bmcgKilzeXN0ZW1JZDsKLS0gKERPTURvY3VtZW50ICopY3JlYXRlRG9jdW1lbnQ6KE5TU3RyaW5n
ICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooRE9NRG9jdW1lbnRU
eXBlICopZG9jdHlwZTsKLUBlbmQKLQotZW51bSB7Ci0gICAgLy8KLSAgICAvLyBET00gbm9kZSB0
eXBlcwotICAgIC8vCi0gICAgRE9NX0VMRU1FTlRfTk9ERSAgICAgICAgICAgICAgICAgID0gMSwK
LSAgICBET01fQVRUUklCVVRFX05PREUgICAgICAgICAgICAgICAgPSAyLAotICAgIERPTV9URVhU
X05PREUgICAgICAgICAgICAgICAgICAgICA9IDMsCi0gICAgRE9NX0NEQVRBX1NFQ1RJT05fTk9E
RSAgICAgICAgICAgID0gNCwKLSAgICBET01fRU5USVRZX1JFRkVSRU5DRV9OT0RFICAgICAgICAg
PSA1LAotICAgIERPTV9FTlRJVFlfTk9ERSAgICAgICAgICAgICAgICAgICA9IDYsCi0gICAgRE9N
X1BST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSAgID0gNywKLSAgICBET01fQ09NTUVOVF9OT0RF
ICAgICAgICAgICAgICAgICAgPSA4LAotICAgIERPTV9ET0NVTUVOVF9OT0RFICAgICAgICAgICAg
ICAgICA9IDksCi0gICAgRE9NX0RPQ1VNRU5UX1RZUEVfTk9ERSAgICAgICAgICAgID0gMTAsCi0g
ICAgRE9NX0RPQ1VNRU5UX0ZSQUdNRU5UX05PREUgICAgICAgID0gMTEsCi0gICAgRE9NX05PVEFU
SU9OX05PREUgICAgICAgICAgICAgICAgID0gMTIKLX07Ci0KIEBpbnRlcmZhY2UgRE9NTm9kZSA6
IERPTU9iamVjdAogLSAoTlNTdHJpbmcgKilub2RlTmFtZTsKIC0gKE5TU3RyaW5nICopbm9kZVZh
bHVlOwpAQCAtMTE5LDEyMiArNjEsMyBAQCBlbnVtIHsKIC0gKE5TU3RyaW5nICopdGV4dENvbnRl
bnQ7CiAtICh2b2lkKXNldFRleHRDb250ZW50OihOU1N0cmluZyAqKXRleHQ7CiBAZW5kCi0KLUBp
bnRlcmZhY2UgRE9NTm9kZUxpc3QgOiBET01PYmplY3QKLS0gKERPTU5vZGUgKilpdGVtOih1bnNp
Z25lZClpbmRleDsKLS0gKHVuc2lnbmVkKWxlbmd0aDsKLUBlbmQKLQotQGludGVyZmFjZSBET01O
YW1lZE5vZGVNYXAgOiBET01PYmplY3QKLS0gKERPTU5vZGUgKilnZXROYW1lZEl0ZW06KE5TU3Ry
aW5nICopbmFtZTsKLS0gKERPTU5vZGUgKilzZXROYW1lZEl0ZW06KERPTU5vZGUgKilhcmc7Ci0t
IChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVtOihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01Ob2Rl
ICopaXRlbToodW5zaWduZWQpaW5kZXg7Ci0tICh1bnNpZ25lZClsZW5ndGg7Ci0tIChET01Ob2Rl
ICopZ2V0TmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKils
b2NhbE5hbWU7Ci0tIChET01Ob2RlICopc2V0TmFtZWRJdGVtTlM6KERPTU5vZGUgKilhcmc7Ci0t
IChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDoo
TlNTdHJpbmcgKilsb2NhbE5hbWU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NQ2hhcmFjdGVyRGF0
YSA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopZGF0YTsKLS0gKHZvaWQpc2V0RGF0YTooTlNTdHJp
bmcgKilkYXRhOwotLSAodW5zaWduZWQpbGVuZ3RoOwotLSAoTlNTdHJpbmcgKilzdWJzdHJpbmdE
YXRhOih1bnNpZ25lZClvZmZzZXQgOih1bnNpZ25lZCljb3VudDsKLS0gKHZvaWQpYXBwZW5kRGF0
YTooTlNTdHJpbmcgKilhcmc7Ci0tICh2b2lkKWluc2VydERhdGE6KHVuc2lnbmVkKW9mZnNldCA6
KE5TU3RyaW5nICopYXJnOwotLSAodm9pZClkZWxldGVEYXRhOih1bnNpZ25lZClvZmZzZXQgOih1
bnNpZ25lZCkgY291bnQ7Ci0tICh2b2lkKXJlcGxhY2VEYXRhOih1bnNpZ25lZClvZmZzZXQgOih1
bnNpZ25lZCljb3VudCA6KE5TU3RyaW5nICopYXJnOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUF0
dHIgOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKW5hbWU7Ci0tIChCT09MKXNwZWNpZmllZDsKLS0g
KE5TU3RyaW5nICopdmFsdWU7Ci0tICh2b2lkKXNldFZhbHVlOihOU1N0cmluZyAqKXZhbHVlOwot
LSAoRE9NRWxlbWVudCAqKW93bmVyRWxlbWVudDsKLUBlbmQKLQotQGludGVyZmFjZSBET01FbGVt
ZW50IDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKil0YWdOYW1lOwotLSAoTlNTdHJpbmcgKilnZXRB
dHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKHZvaWQpc2V0QXR0cmlidXRlOihOU1N0cmlu
ZyAqKW5hbWUgOihOU1N0cmluZyAqKXZhbHVlOwotLSAodm9pZClyZW1vdmVBdHRyaWJ1dGU6KE5T
U3RyaW5nICopbmFtZTsKLS0gKERPTUF0dHIgKilnZXRBdHRyaWJ1dGVOb2RlOihOU1N0cmluZyAq
KW5hbWU7Ci0tIChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZTooRE9NQXR0ciAqKW5ld0F0dHI7
Ci0tIChET01BdHRyICopcmVtb3ZlQXR0cmlidXRlTm9kZTooRE9NQXR0ciAqKW9sZEF0dHI7Ci0t
IChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lOihOU1N0cmluZyAqKW5hbWU7Ci0t
IChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5T
U3RyaW5nICopbG9jYWxOYW1lOwotLSAodm9pZClzZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKilu
YW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXZhbHVl
OwotLSAodm9pZClyZW1vdmVBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihO
U1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKERPTUF0dHIgKilnZXRBdHRyaWJ1dGVOb2RlTlM6KE5T
U3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tIChET01BdHRy
ICopc2V0QXR0cmlidXRlTm9kZU5TOihET01BdHRyICopbmV3QXR0cjsKLS0gKERPTU5vZGVMaXN0
ICopZ2V0RWxlbWVudHNCeVRhZ05hbWVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0
cmluZyAqKWxvY2FsTmFtZTsKLS0gKEJPT0wpaGFzQXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWU7
Ci0tIChCT09MKWhhc0F0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3Ry
aW5nICopbG9jYWxOYW1lOwotLSAodm9pZClmb2N1czsKLS0gKHZvaWQpYmx1cjsKLUBlbmQKLQot
QGludGVyZmFjZSBET01UZXh0IDogRE9NQ2hhcmFjdGVyRGF0YQotLSAoRE9NVGV4dCAqKXNwbGl0
VGV4dDoodW5zaWduZWQpb2Zmc2V0OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUNvbW1lbnQgOiBE
T01DaGFyYWN0ZXJEYXRhCi1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NQ0RBVEFTZWN0aW9uIDogRE9N
VGV4dAotQGVuZAotCi1AaW50ZXJmYWNlIERPTURvY3VtZW50VHlwZSA6IERPTU5vZGUKLS0gKE5T
U3RyaW5nICopbmFtZTsKLS0gKERPTU5hbWVkTm9kZU1hcCAqKWVudGl0aWVzOwotLSAoRE9NTmFt
ZWROb2RlTWFwICopbm90YXRpb25zOwotLSAoTlNTdHJpbmcgKilwdWJsaWNJZDsKLS0gKE5TU3Ry
aW5nICopc3lzdGVtSWQ7Ci0tIChOU1N0cmluZyAqKWludGVybmFsU3Vic2V0OwotQGVuZAotCi1A
aW50ZXJmYWNlIERPTU5vdGF0aW9uIDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKilwdWJsaWNJZDsK
LS0gKE5TU3RyaW5nICopc3lzdGVtSWQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRW50aXR5IDog
RE9NTm9kZQotLSAoTlNTdHJpbmcgKilwdWJsaWNJZDsKLS0gKE5TU3RyaW5nICopc3lzdGVtSWQ7
Ci0tIChOU1N0cmluZyAqKW5vdGF0aW9uTmFtZTsKLUBlbmQKLQotQGludGVyZmFjZSBET01FbnRp
dHlSZWZlcmVuY2UgOiBET01Ob2RlCi1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NUHJvY2Vzc2luZ0lu
c3RydWN0aW9uIDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKil0YXJnZXQ7Ci0tIChOU1N0cmluZyAq
KWRhdGE7Ci0tICh2b2lkKXNldERhdGE6KE5TU3RyaW5nICopZGF0YTsKLUBlbmQKLQotQGludGVy
ZmFjZSBET01Eb2N1bWVudEZyYWdtZW50IDogRE9NTm9kZQotQGVuZAotCi1AaW50ZXJmYWNlIERP
TURvY3VtZW50IDogRE9NTm9kZQotLSAoRE9NRG9jdW1lbnRUeXBlICopZG9jdHlwZTsKLS0gKERP
TUltcGxlbWVudGF0aW9uICopaW1wbGVtZW50YXRpb247Ci0tIChET01FbGVtZW50ICopZG9jdW1l
bnRFbGVtZW50OwotLSAoRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnQ6KE5TU3RyaW5nICopdGFn
TmFtZTsKLS0gKERPTURvY3VtZW50RnJhZ21lbnQgKiljcmVhdGVEb2N1bWVudEZyYWdtZW50Owot
LSAoRE9NVGV4dCAqKWNyZWF0ZVRleHROb2RlOihOU1N0cmluZyAqKWRhdGE7Ci0tIChET01Db21t
ZW50ICopY3JlYXRlQ29tbWVudDooTlNTdHJpbmcgKilkYXRhOwotLSAoRE9NQ0RBVEFTZWN0aW9u
ICopY3JlYXRlQ0RBVEFTZWN0aW9uOihOU1N0cmluZyAqKWRhdGE7Ci0tIChET01Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24gKiljcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246KE5TU3RyaW5nICopdGFy
Z2V0IDooTlNTdHJpbmcgKilkYXRhOwotLSAoRE9NQXR0ciAqKWNyZWF0ZUF0dHJpYnV0ZTooTlNT
dHJpbmcgKiluYW1lOwotLSAoRE9NRW50aXR5UmVmZXJlbmNlICopY3JlYXRlRW50aXR5UmVmZXJl
bmNlOihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdO
YW1lOihOU1N0cmluZyAqKXRhZ25hbWU7Ci0tIChET01Ob2RlICopaW1wb3J0Tm9kZTooRE9NTm9k
ZSAqKWltcG9ydGVkTm9kZSA6KEJPT0wpZGVlcDsKLS0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVt
ZW50TlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1l
OwotLSAoRE9NQXR0ciAqKWNyZWF0ZUF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVS
SSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZTsKLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVu
dHNCeVRhZ05hbWVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2Fs
TmFtZTsKLS0gKERPTUVsZW1lbnQgKilnZXRFbGVtZW50QnlJZDooTlNTdHJpbmcgKillbGVtZW50
SWQ7Ci0tIChET01Ob2RlICopYWRvcHROb2RlOihET01Ob2RlICopc291cmNlOwotQGVuZApJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5vZGUubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTU5vZGUubW0JKHJldmlzaW9uIDE1OTU5KQorKysgV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTU5vZGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgSmFtZXMgRy4gU3BldGggKHNw
ZXRoQGVuZC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgSmFtZXMgRy4gU3BldGggPHNwZXRo
QGVuZC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5p
Z0BnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDE3NSAr
MjYsMzQgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkRPTS5oIgorI2lt
cG9ydCAiRE9NTm9kZS5oIgogCi0jaW1wb3J0ICJDREFUQVNlY3Rpb24uaCIKLSNpbXBvcnQgImNz
c2hlbHBlci5oIgotI2ltcG9ydCAiQ1NTU3R5bGVTaGVldC5oIgotI2ltcG9ydCAiQ29tbWVudC5o
IgotI2ltcG9ydCAiRE9NRXZlbnRzSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTUltcGxlbWVudGF0
aW9uRnJvbnQuaCIKICNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0jaW1wb3J0ICJET01Qcml2YXRl
LmgiCi0jaW1wb3J0ICJEb2N1bWVudC5oIgotI2ltcG9ydCAiRG9jdW1lbnRGcmFnbWVudC5oIgot
I2ltcG9ydCAiRG9jdW1lbnRUeXBlLmgiCi0jaW1wb3J0ICJFbnRpdHkuaCIKLSNpbXBvcnQgIkVu
dGl0eVJlZmVyZW5jZS5oIgotI2ltcG9ydCAiRXZlbnQuaCIKLSNpbXBvcnQgIkV2ZW50TGlzdGVu
ZXIuaCIKLSNpbXBvcnQgIkZvdW5kYXRpb25FeHRyYXMuaCIKLSNpbXBvcnQgIkZyYW1lTWFjLmgi
Ci0jaW1wb3J0ICJIVE1MRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxOYW1lcy5oIgotI2ltcG9y
dCAiSFRNTFBsdWdJbkVsZW1lbnQuaCIKLSNpbXBvcnQgIk5vZGVGaWx0ZXIuaCIKLSNpbXBvcnQg
Ik5vZGVGaWx0ZXJDb25kaXRpb24uaCIKLSNpbXBvcnQgIk5vZGVJdGVyYXRvci5oIgotI2ltcG9y
dCAiTm9kZUxpc3QuaCIKLSNpbXBvcnQgIk5vdGF0aW9uLmgiCi0jaW1wb3J0ICJQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uaCIKLSNpbXBvcnQgIlF1YWxpZmllZE5hbWUuaCIKLSNpbXBvcnQgIlJhbmdl
LmgiCi0jaW1wb3J0ICJSZW5kZXJJbWFnZS5oIgotI2ltcG9ydCAiVHJlZVdhbGtlci5oIgotI2lt
cG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgotI2ltcG9ydCA8b2JqYy9vYmpjLWNsYXNz
Lmg+Ci0KLXVzaW5nIFdlYkNvcmU6OkF0b21pY1N0cmluZzsKLXVzaW5nIFdlYkNvcmU6OkF0b21p
Y1N0cmluZ0ltcGw7Ci11c2luZyBXZWJDb3JlOjpBdHRyOwotdXNpbmcgV2ViQ29yZTo6Q2hhcmFj
dGVyRGF0YTsKLXVzaW5nIFdlYkNvcmU6OkRlcHJlY2F0ZWRWYWx1ZUxpc3Q7Ci11c2luZyBXZWJD
b3JlOjpEb2N1bWVudDsKLXVzaW5nIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ7Ci11c2luZyBX
ZWJDb3JlOjpEb2N1bWVudFR5cGU7Ci11c2luZyBXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbkZy
b250OwotdXNpbmcgV2ViQ29yZTo6RWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6OkVudGl0eTsKLXVz
aW5nIFdlYkNvcmU6OkV2ZW50OwotdXNpbmcgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcjsKLXVzaW5n
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGU7Ci11c2luZyBXZWJDb3JlOjpIVE1MRG9jdW1lbnQ7Ci11
c2luZyBXZWJDb3JlOjpIVE1MRWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6OkZyYW1lTWFjOwotdXNp
bmcgV2ViQ29yZTo6SW50UmVjdDsKLXVzaW5nIFdlYkNvcmU6OktVUkw7Ci11c2luZyBXZWJDb3Jl
OjpOYW1lZE5vZGVNYXA7Ci11c2luZyBXZWJDb3JlOjpOb2RlOwotdXNpbmcgV2ViQ29yZTo6Tm9k
ZUZpbHRlcjsKLXVzaW5nIFdlYkNvcmU6Ok5vZGVGaWx0ZXJDb25kaXRpb247Ci11c2luZyBXZWJD
b3JlOjpOb2RlSXRlcmF0b3I7Ci11c2luZyBXZWJDb3JlOjpOb2RlTGlzdDsKLXVzaW5nIFdlYkNv
cmU6Ok5vdGF0aW9uOwotdXNpbmcgV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOwotdXNp
bmcgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTsKLXVzaW5nIFdlYkNvcmU6OlJhbmdlOwotdXNpbmcg
V2ViQ29yZTo6UmVuZGVySW1hZ2U7Ci11c2luZyBXZWJDb3JlOjpSZW5kZXJPYmplY3Q7Ci11c2lu
ZyBXZWJDb3JlOjpTdHJpbmc7Ci11c2luZyBXZWJDb3JlOjpUZXh0OwotdXNpbmcgV2ViQ29yZTo6
VHJlZVdhbGtlcjsKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkhUTUxOYW1lczsKLQotQGlu
dGVyZmFjZSBET01BdHRyIChXZWJDb3JlSW50ZXJuYWwpCi0rIChET01BdHRyICopX2F0dHJXaXRo
OihBdHRyICopaW1wbDsKLS0gKEF0dHIgKilfYXR0cjsKLUBlbmQKLQotQGludGVyZmFjZSBET01E
b2N1bWVudFR5cGUgKFdlYkNvcmVJbnRlcm5hbCkKLS0gKERvY3VtZW50VHlwZSAqKV9kb2N1bWVu
dFR5cGU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSW1wbGVtZW50YXRpb24gKFdlYkNvcmVJbnRl
cm5hbCkKLSsgKERPTUltcGxlbWVudGF0aW9uICopX0RPTUltcGxlbWVudGF0aW9uV2l0aDooRE9N
SW1wbGVtZW50YXRpb25Gcm9udCAqKWltcGw7Ci0tIChET01JbXBsZW1lbnRhdGlvbkZyb250ICop
X0RPTUltcGxlbWVudGF0aW9uOwotQGVuZAotCi1jbGFzcyBPYmpDRXZlbnRMaXN0ZW5lciA6IHB1
YmxpYyBFdmVudExpc3RlbmVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgT2JqQ0V2ZW50TGlzdGVu
ZXIgKmZpbmQoaWQgPERPTUV2ZW50TGlzdGVuZXI+KTsKLSAgICBzdGF0aWMgT2JqQ0V2ZW50TGlz
dGVuZXIgKmNyZWF0ZShpZCA8RE9NRXZlbnRMaXN0ZW5lcj4pOwotCi1wcml2YXRlOgotICAgIE9i
akNFdmVudExpc3RlbmVyKGlkIDxET01FdmVudExpc3RlbmVyPik7Ci0gICAgdmlydHVhbCB+T2Jq
Q0V2ZW50TGlzdGVuZXIoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChFdmVudCAq
LCBib29sIGlzV2luZG93RXZlbnQpOwotCi0gICAgaWQgPERPTUV2ZW50TGlzdGVuZXI+IG1fbGlz
dGVuZXI7Ci19OwotCi10eXBlZGVmIEhhc2hNYXA8aWQsIE9iakNFdmVudExpc3RlbmVyKj4gTGlz
dGVuZXJNYXA7Ci10eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENsYXNzPiBPYmpD
Q2xhc3NNYXA7Ci0KLXN0YXRpYyBPYmpDQ2xhc3NNYXAqIGVsZW1lbnRDbGFzc01hcDsKLXN0YXRp
YyBMaXN0ZW5lck1hcCogbGlzdGVuZXJNYXA7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyBET01PYmplY3QKLQotQGltcGxlbWVudGF0aW9uIERPTU9iamVjdAotCi0v
LyBQcmV2ZW50IGNyZWF0aW9uIG9mIERPTSBvYmplY3RzIGJ5IGNsaWVudHMgd2hvIGp1c3QgIltb
eHh4IGFsbG9jXSBpbml0XSIuCi0tIChpZClpbml0Ci17Ci0gICAgW05TRXhjZXB0aW9uIHJhaXNl
Ok5TR2VuZXJpY0V4Y2VwdGlvbiBmb3JtYXQ6QCIrWyVAIGluaXRdOiBzaG91bGQgbmV2ZXIgYmUg
dXNlZCIsIE5TU3RyaW5nRnJvbUNsYXNzKFtzZWxmIGNsYXNzXSldOwotICAgIFtzZWxmIHJlbGVh
c2VdOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChf
aW50ZXJuYWwpIHsKLSAgICAgICAgcmVtb3ZlRE9NV3JhcHBlcihfaW50ZXJuYWwpOwotICAgIH0K
LSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAo
X2ludGVybmFsKSB7Ci0gICAgICAgIHJlbW92ZURPTVdyYXBwZXIoX2ludGVybmFsKTsKLSAgICB9
Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQotLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUg
Kil6b25lCi17Ci0gICAgcmV0dXJuIFtzZWxmIHJldGFpbl07Ci19Ci0KLUBlbmQKLQotQGltcGxl
bWVudGF0aW9uIERPTU9iamVjdCAoV2ViQ29yZUludGVybmFsKQotCi0tIChpZClfaW5pdAotewot
ICAgIHJldHVybiBbc3VwZXIgX2luaXRdOwotfQotCi1AZW5kCisjaW1wb3J0ICJOb2RlLmgiCiAK
LS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Ob2RlCisjaW1wb3J0
ICJBdG9taWNTdHJpbmcuaCIKKyNpbXBvcnQgIkRlcHJlY2F0ZWRWYWx1ZUxpc3QuaCIKKyNpbXBv
cnQgIkRPTURvY3VtZW50LmgiCisjaW1wb3J0ICJET01Ob2RlTGlzdC5oIgorI2ltcG9ydCAiSW50
UmVjdC5oIgorI2ltcG9ydCAiTm9kZUxpc3QuaCIKKyNpbXBvcnQgIlBsYXRmb3JtU3RyaW5nLmgi
CisjaW1wb3J0ICJSZW5kZXJPYmplY3QuaCIKKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAK
IEBpbXBsZW1lbnRhdGlvbiBET01Ob2RlCiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIGlmIChf
aW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpLT5kZXJlZigp
OwotICAgIH0KKyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICBET01fY2FzdDxXZWJDb3JlOjpO
b2RlICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAt
ICh2b2lkKWZpbmFsaXplCiB7Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2Fz
dDxOb2RlICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQorICAgIGlmIChfaW50ZXJuYWwp
CisgICAgICAgIERPTV9jYXN0PFdlYkNvcmU6Ok5vZGUgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsK
ICAgICBbc3VwZXIgZmluYWxpemVdOwogfQogCkBAIC0yMjgsNyArODgsNyBAQCBzdGF0aWMgTGlz
dGVuZXJNYXAqIGxpc3RlbmVyTWFwOwogewogICAgIEFTU0VSVChzdHJpbmcpOwogICAgIAotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIFtzZWxmIF9ub2RlXS0+c2V0Tm9kZVZhbHVlKHN0cmluZywgZWMpOwogICAgIHJhaXNl
T25ET01FcnJvcihlYyk7CiB9CkBAIC0yODUsNyArMTQ1LDcgQEAgc3RhdGljIExpc3RlbmVyTWFw
KiBsaXN0ZW5lck1hcDsKICAgICBBU1NFUlQobmV3Q2hpbGQpOwogICAgIEFTU0VSVChyZWZDaGls
ZCk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBpZiAoW3NlbGYgX25vZGVdLT5pbnNlcnRCZWZvcmUoW25ld0NoaWxk
IF9ub2RlXSwgW3JlZkNoaWxkIF9ub2RlXSwgZWMpKQogICAgICAgICByZXR1cm4gbmV3Q2hpbGQ7
CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKQEAgLTI5Nyw3ICsxNTcsNyBAQCBzdGF0aWMgTGlz
dGVuZXJNYXAqIGxpc3RlbmVyTWFwOwogICAgIEFTU0VSVChuZXdDaGlsZCk7CiAgICAgQVNTRVJU
KG9sZENoaWxkKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChbc2VsZiBfbm9kZV0tPnJlcGxhY2VDaGlsZChb
bmV3Q2hpbGQgX25vZGVdLCBbb2xkQ2hpbGQgX25vZGVdLCBlYykpCiAgICAgICAgIHJldHVybiBv
bGRDaGlsZDsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwpAQCAtMzA4LDcgKzE2OCw3IEBAIHN0
YXRpYyBMaXN0ZW5lck1hcCogbGlzdGVuZXJNYXA7CiB7CiAgICAgQVNTRVJUKG9sZENoaWxkKTsK
IAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIGlmIChbc2VsZiBfbm9kZV0tPnJlbW92ZUNoaWxkKFtvbGRDaGlsZCBfbm9k
ZV0sIGVjKSkKICAgICAgICAgcmV0dXJuIG9sZENoaWxkOwogICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7CkBAIC0zMTksNyArMTc5LDcgQEAgc3RhdGljIExpc3RlbmVyTWFwKiBsaXN0ZW5lck1hcDsK
IHsKICAgICBBU1NFUlQobmV3Q2hpbGQpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaWYgKFtzZWxmIF9ub2RlXS0+
YXBwZW5kQ2hpbGQoW25ld0NoaWxkIF9ub2RlXSwgZWMpKQogICAgICAgICByZXR1cm4gbmV3Q2hp
bGQ7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKQEAgLTM2Myw4ICsyMjMsOCBAQCBzdGF0aWMg
TGlzdGVuZXJNYXAqIGxpc3RlbmVyTWFwOwogewogICAgIEFTU0VSVChwcmVmaXgpOwogCi0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgU3RyaW5nIHByZWZpeFN0cihwcmVmaXgpOworICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OlN0cmluZyBwcmVm
aXhTdHIocHJlZml4KTsKICAgICBbc2VsZiBfbm9kZV0tPnNldFByZWZpeChwcmVmaXhTdHIuaW1w
bCgpLCBlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKIH0KQEAgLTQxMSw3ICsyNzEsNyBA
QCBzdGF0aWMgTGlzdGVuZXJNYXAqIGxpc3RlbmVyTWFwOwogCiAtICh2b2lkKXNldFRleHRDb250
ZW50OihOU1N0cmluZyAqKXRleHQKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBbc2VsZiBfbm9kZV0tPnNldFRleHRD
b250ZW50KHRleHQsIGVjKTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogfQpAQCAtNDI5LDkg
KzI4OSw5IEBAIHN0YXRpYyBMaXN0ZW5lck1hcCogbGlzdGVuZXJNYXA7CiAgICAgV2ViQ29yZTo6
UmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9ub2RlXS0+cmVuZGVyZXIoKTsKICAgICBp
ZiAocmVuZGVyZXIpIHsKICAgICAgICAgTlNNdXRhYmxlQXJyYXkgKnJlc3VsdHMgPSBbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKLSAgICAgICAgRGVwcmVjYXRlZFZhbHVlTGlzdDxJbnRS
ZWN0PiByZWN0cyA9IHJlbmRlcmVyLT5saW5lQm94UmVjdHMoKTsKKyAgICAgICAgV2ViQ29yZTo6
RGVwcmVjYXRlZFZhbHVlTGlzdDxXZWJDb3JlOjpJbnRSZWN0PiByZWN0cyA9IHJlbmRlcmVyLT5s
aW5lQm94UmVjdHMoKTsKICAgICAgICAgaWYgKCFyZWN0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgIGZvciAoRGVwcmVjYXRlZFZhbHVlTGlzdDxJbnRSZWN0Pjo6Q29uc3RJdGVyYXRvciBpdCA9
IHJlY3RzLmJlZ2luKCk7IGl0ICE9IHJlY3RzLmVuZCgpOyArK2l0KQorICAgICAgICAgICAgZm9y
IChXZWJDb3JlOjpEZXByZWNhdGVkVmFsdWVMaXN0PFdlYkNvcmU6OkludFJlY3Q+OjpDb25zdEl0
ZXJhdG9yIGl0ID0gcmVjdHMuYmVnaW4oKTsgaXQgIT0gcmVjdHMuZW5kKCk7ICsraXQpCiAgICAg
ICAgICAgICAgICAgW3Jlc3VsdHMgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6Kml0
XV07CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFtyZXN1bHRzIGF1dG9yZWxlYXNlXTsKQEAg
LTQ0MCwxOTMzICszMDAsMyBAQCBzdGF0aWMgTGlzdGVuZXJNYXAqIGxpc3RlbmVyTWFwOwogfQog
CiBAZW5kCi0KLXN0YXRpYyB2b2lkIGFkZEVsZW1lbnRDbGFzcyhjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWcsIENsYXNzIG9iakNDbGFzcykKLXsKLSAgICBlbGVtZW50Q2xhc3NNYXAtPnNldCh0YWcu
bG9jYWxOYW1lKCkuaW1wbCgpLCBvYmpDQ2xhc3MpOwotfQotCi1zdGF0aWMgdm9pZCBjcmVhdGVI
VE1MRWxlbWVudENsYXNzTWFwKCkKLXsKLSAgICAvLyBDcmVhdGUgdGhlIHRhYmxlLgotICAgIGVs
ZW1lbnRDbGFzc01hcCA9IG5ldyBPYmpDQ2xhc3NNYXA7Ci0gICAgCi0gICAgLy8gUG9wdWxhdGUg
aXQgd2l0aCBIVE1MIGVsZW1lbnQgY2xhc3Nlcy4KLSAgICBhZGRFbGVtZW50Q2xhc3MoYVRhZywg
W0RPTUhUTUxBbmNob3JFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGFwcGxl
dFRhZywgW0RPTUhUTUxBcHBsZXRFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KGFyZWFUYWcsIFtET01IVE1MQXJlYUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xh
c3MoYmFzZVRhZywgW0RPTUhUTUxCYXNlRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyhiYXNlZm9udFRhZywgW0RPTUhUTUxCYXNlRm9udEVsZW1lbnQgY2xhc3NdKTsKLSAgICBh
ZGRFbGVtZW50Q2xhc3MoYm9keVRhZywgW0RPTUhUTUxCb2R5RWxlbWVudCBjbGFzc10pOwotICAg
IGFkZEVsZW1lbnRDbGFzcyhiclRhZywgW0RPTUhUTUxCUkVsZW1lbnQgY2xhc3NdKTsKLSAgICBh
ZGRFbGVtZW50Q2xhc3MoYnV0dG9uVGFnLCBbRE9NSFRNTEJ1dHRvbkVsZW1lbnQgY2xhc3NdKTsK
LSAgICBhZGRFbGVtZW50Q2xhc3MoY2FudmFzVGFnLCBbRE9NSFRNTEltYWdlRWxlbWVudCBjbGFz
c10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhjYXB0aW9uVGFnLCBbRE9NSFRNTFRhYmxlQ2FwdGlv
bkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoY29sVGFnLCBbRE9NSFRNTFRh
YmxlQ29sRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhjb2xncm91cFRhZywg
W0RPTUhUTUxUYWJsZUNvbEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoZGly
VGFnLCBbRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xh
c3MoZGl2VGFnLCBbRE9NSFRNTERpdkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xh
c3MoZGxUYWcsIFtET01IVE1MRExpc3RFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENs
YXNzKGZpZWxkc2V0VGFnLCBbRE9NSFRNTEZpZWxkU2V0RWxlbWVudCBjbGFzc10pOwotICAgIGFk
ZEVsZW1lbnRDbGFzcyhmb250VGFnLCBbRE9NSFRNTEZvbnRFbGVtZW50IGNsYXNzXSk7Ci0gICAg
YWRkRWxlbWVudENsYXNzKGZvcm1UYWcsIFtET01IVE1MRm9ybUVsZW1lbnQgY2xhc3NdKTsKLSAg
ICBhZGRFbGVtZW50Q2xhc3MoZnJhbWVUYWcsIFtET01IVE1MRnJhbWVFbGVtZW50IGNsYXNzXSk7
Ci0gICAgYWRkRWxlbWVudENsYXNzKGZyYW1lc2V0VGFnLCBbRE9NSFRNTEZyYW1lU2V0RWxlbWVu
dCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoMVRhZywgW0RPTUhUTUxIZWFkaW5nRWxl
bWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoMlRhZywgW0RPTUhUTUxIZWFkaW5n
RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoM1RhZywgW0RPTUhUTUxIZWFk
aW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoNFRhZywgW0RPTUhUTUxI
ZWFkaW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoNVRhZywgW0RPTUhU
TUxIZWFkaW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoNlRhZywgW0RP
TUhUTUxIZWFkaW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoZWFkVGFn
LCBbRE9NSFRNTEhlYWRFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGhyVGFn
LCBbRE9NSFRNTEhSRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhodG1sVGFn
LCBbRE9NSFRNTEh0bWxFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGlmcmFt
ZVRhZywgW0RPTUhUTUxJRnJhbWVFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KGltZ1RhZywgW0RPTUhUTUxJbWFnZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xh
c3MoaW5wdXRUYWcsIFtET01IVE1MSW5wdXRFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVu
dENsYXNzKGlzaW5kZXhUYWcsIFtET01IVE1MSXNJbmRleEVsZW1lbnQgY2xhc3NdKTsKLSAgICBh
ZGRFbGVtZW50Q2xhc3MobGFiZWxUYWcsIFtET01IVE1MTGFiZWxFbGVtZW50IGNsYXNzXSk7Ci0g
ICAgYWRkRWxlbWVudENsYXNzKGxlZ2VuZFRhZywgW0RPTUhUTUxMZWdlbmRFbGVtZW50IGNsYXNz
XSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGxpVGFnLCBbRE9NSFRNTExJRWxlbWVudCBjbGFzc10p
OwotICAgIGFkZEVsZW1lbnRDbGFzcyhsaW5rVGFnLCBbRE9NSFRNTExpbmtFbGVtZW50IGNsYXNz
XSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGxpc3RpbmdUYWcsIFtET01IVE1MUHJlRWxlbWVudCBj
bGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhtYXBUYWcsIFtET01IVE1MTWFwRWxlbWVudCBj
bGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhtZW51VGFnLCBbRE9NSFRNTE1lbnVFbGVtZW50
IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKG1ldGFUYWcsIFtET01IVE1MTWV0YUVsZW1l
bnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mob2JqZWN0VGFnLCBbRE9NSFRNTE9iamVj
dEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mob2xUYWcsIFtET01IVE1MT0xp
c3RFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKG9wdGdyb3VwVGFnLCBbRE9N
SFRNTE9wdEdyb3VwRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhvcHRpb25U
YWcsIFtET01IVE1MT3B0aW9uRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhw
VGFnLCBbRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xh
c3MocGFyYW1UYWcsIFtET01IVE1MUGFyYW1FbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVu
dENsYXNzKHByZVRhZywgW0RPTUhUTUxQcmVFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVu
dENsYXNzKHFUYWcsIFtET01IVE1MUXVvdGVFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVu
dENsYXNzKHNjcmlwdFRhZywgW0RPTUhUTUxTY3JpcHRFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRk
RWxlbWVudENsYXNzKHNlbGVjdFRhZywgW0RPTUhUTUxTZWxlY3RFbGVtZW50IGNsYXNzXSk7Ci0g
ICAgYWRkRWxlbWVudENsYXNzKHN0eWxlVGFnLCBbRE9NSFRNTFN0eWxlRWxlbWVudCBjbGFzc10p
OwotICAgIGFkZEVsZW1lbnRDbGFzcyh0YWJsZVRhZywgW0RPTUhUTUxUYWJsZUVsZW1lbnQgY2xh
c3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModGJvZHlUYWcsIFtET01IVE1MVGFibGVTZWN0aW9u
RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh0ZFRhZywgW0RPTUhUTUxUYWJs
ZUNlbGxFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHRleHRhcmVhVGFnLCBb
RE9NSFRNTFRleHRBcmVhRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh0Zm9v
dFRhZywgW0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVu
dENsYXNzKHRoZWFkVGFnLCBbRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgY2xhc3NdKTsKLSAg
ICBhZGRFbGVtZW50Q2xhc3ModGl0bGVUYWcsIFtET01IVE1MVGl0bGVFbGVtZW50IGNsYXNzXSk7
Ci0gICAgYWRkRWxlbWVudENsYXNzKHRyVGFnLCBbRE9NSFRNTFRhYmxlUm93RWxlbWVudCBjbGFz
c10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh1bFRhZywgW0RPTUhUTUxVTGlzdEVsZW1lbnQgY2xh
c3NdKTsKLQotICAgIC8vIEZJWE1FOiBSZWZsZWN0IG1hcnF1ZWUgb25jZSB0aGUgQVBJIGhhcyBi
ZWVuIGRldGVybWluZWQuCi19Ci0KLXN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRv
bWljU3RyaW5nJiB0YWdOYW1lKQotewotICAgIGlmICghZWxlbWVudENsYXNzTWFwKQotICAgICAg
ICBjcmVhdGVIVE1MRWxlbWVudENsYXNzTWFwKCk7Ci0gICAgQ2xhc3Mgb2JqY0NsYXNzID0gZWxl
bWVudENsYXNzTWFwLT5nZXQodGFnTmFtZS5pbXBsKCkpOwotICAgIGlmICghb2JqY0NsYXNzKQot
ICAgICAgICBvYmpjQ2xhc3MgPSBbRE9NSFRNTEVsZW1lbnQgY2xhc3NdOwotICAgIHJldHVybiBv
YmpjQ2xhc3M7Ci19Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChXZWJDb3JlSW50ZXJuYWwp
Ci0KLS0gKGlkKV9pbml0V2l0aE5vZGU6KE5vZGUgKilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwp
OwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmpl
Y3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVy
KHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01Ob2RlICopX25vZGVX
aXRoOihOb2RlICopaW1wbAotewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERP
TVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQotICAgICAgICByZXR1cm4g
W1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICBDbGFzcyB3
cmFwcGVyQ2xhc3MgPSBuaWw7Ci0gICAgc3dpdGNoIChpbXBsLT5ub2RlVHlwZSgpKSB7Ci0gICAg
ICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOgotICAgICAgICAgICAgaWYgKGltcGwtPmlzSFRN
TEVsZW1lbnQoKSkKLSAgICAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBlbGVtZW50Q2xhc3Mo
c3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihpbXBsKS0+bG9jYWxOYW1lKCkpOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01FbGVtZW50IGNsYXNz
XTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9OT0RF
OgotICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTUF0dHIgY2xhc3NdOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOgotICAgICAgICAgICAgd3Jh
cHBlckNsYXNzID0gW0RPTVRleHQgY2xhc3NdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOgotICAgICAgICAgICAgd3JhcHBlckNsYXNz
ID0gW0RPTUNEQVRBU2VjdGlvbiBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6Ci0gICAgICAgICAgICB3cmFwcGVyQ2xh
c3MgPSBbRE9NRW50aXR5UmVmZXJlbmNlIGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgotICAgICAgICAgICAgd3JhcHBlckNsYXNzID0g
W0RPTUVudGl0eSBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2Rl
OjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6Ci0gICAgICAgICAgICB3cmFwcGVyQ2xhc3Mg
PSBbRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uIGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKLSAgICAgICAgICAgIHdyYXBwZXJDbGFz
cyA9IFtET01Db21tZW50IGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IE5vZGU6OkRPQ1VNRU5UX05PREU6Ci0gICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihpbXBsKS0+aXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICB3cmFwcGVyQ2xh
c3MgPSBbRE9NSFRNTERvY3VtZW50IGNsYXNzXTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NRG9jdW1lbnQgY2xhc3NdOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgotICAgICAgICAg
ICAgd3JhcHBlckNsYXNzID0gW0RPTURvY3VtZW50VHlwZSBjbGFzc107Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgotICAgICAg
ICAgICAgd3JhcHBlckNsYXNzID0gW0RPTURvY3VtZW50RnJhZ21lbnQgY2xhc3NdOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKLSAgICAgICAg
ICAgIHdyYXBwZXJDbGFzcyA9IFtET01Ob3RhdGlvbiBjbGFzc107Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICAgICAgICAg
IC8vIEZJWE1FOiBDcmVhdGUgYW4gWFBhdGggb2JqZWN0aXZlIEMgd3JhcHBlcgotICAgICAgICAg
ICAgLy8gU2VlIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODc1NQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0gICAgcmV0dXJuIFtbW3dyYXBw
ZXJDbGFzcyBhbGxvY10gX2luaXRXaXRoTm9kZTppbXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0g
KE5vZGUgKilfbm9kZQotewotICAgIHJldHVybiBET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCk7
Ci19Ci0KLS0gKGNvbnN0IEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKilfZXhlY3V0aW9uQ29u
dGV4dAotewotICAgIGlmIChOb2RlICpuID0gW3NlbGYgX25vZGVdKQotICAgICAgICBpZiAoRnJh
bWVNYWMgKmYgPSBNYWMobi0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpCi0gICAgICAgICAgICByZXR1
cm4gZi0+ZXhlY3V0aW9uQ29udGV4dEZvckRPTSgpOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLUBl
bmQKLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGUgKFdlYlByaXZhdGUpCi0KLS0gKEJPT0wpaXND
b250ZW50RWRpdGFibGUKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc0NvbnRlbnRFZGl0
YWJsZSgpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChET01FdmVudFRh
cmdldCkKLQotLSAodm9pZClhZGRFdmVudExpc3RlbmVyOihOU1N0cmluZyAqKXR5cGUgOihpZCA8
RE9NRXZlbnRMaXN0ZW5lcj4pbGlzdGVuZXIgOihCT09MKXVzZUNhcHR1cmUKLXsKLSAgICBpZiAo
IVtzZWxmIF9ub2RlXS0+aXNFdmVudFRhcmdldE5vZGUoKSkKLSAgICAgICAgcmFpc2VET01FeGNl
cHRpb24oRE9NX05PVF9TVVBQT1JURURfRVJSKTsKLSAgICAKLSAgICBFdmVudExpc3RlbmVyICp3
cmFwcGVyID0gT2JqQ0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7Ci0gICAgRXZlbnRU
YXJnZXROb2RlQ2FzdChbc2VsZiBfbm9kZV0pLT5hZGRFdmVudExpc3RlbmVyKHR5cGUsIHdyYXBw
ZXIsIHVzZUNhcHR1cmUpOwotICAgIHdyYXBwZXItPmRlcmVmKCk7Ci19Ci0KLS0gKHZvaWQpcmVt
b3ZlRXZlbnRMaXN0ZW5lcjooTlNTdHJpbmcgKil0eXBlIDooaWQgPERPTUV2ZW50TGlzdGVuZXI+
KWxpc3RlbmVyIDooQk9PTCl1c2VDYXB0dXJlCi17Ci0gICAgaWYgKCFbc2VsZiBfbm9kZV0tPmlz
RXZlbnRUYXJnZXROb2RlKCkpCi0gICAgICAgIHJhaXNlRE9NRXhjZXB0aW9uKERPTV9OT1RfU1VQ
UE9SVEVEX0VSUik7Ci0KLSAgICBpZiAoRXZlbnRMaXN0ZW5lciAqd3JhcHBlciA9IE9iakNFdmVu
dExpc3RlbmVyOjpmaW5kKGxpc3RlbmVyKSkKLSAgICAgICAgRXZlbnRUYXJnZXROb2RlQ2FzdChb
c2VsZiBfbm9kZV0pLT5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIHdyYXBwZXIsIHVzZUNhcHR1
cmUpOwotfQotCi0tIChCT09MKWRpc3BhdGNoRXZlbnQ6KERPTUV2ZW50ICopZXZlbnQKLXsKLSAg
ICBpZiAoIVtzZWxmIF9ub2RlXS0+aXNFdmVudFRhcmdldE5vZGUoKSkKLSAgICAgICAgcmFpc2VE
T01FeGNlcHRpb24oRE9NX05PVF9TVVBQT1JURURfRVJSKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIEJPT0wgcmVzdWx0ID0gRXZlbnRUYXJnZXROb2RlQ2FzdChbc2VsZiBfbm9k
ZV0pLT5kaXNwYXRjaEV2ZW50KFtldmVudCBfZXZlbnRdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVy
cm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01OYW1lZE5vZGVNYXAKLQotQGltcGxlbWVudGF0
aW9uIERPTU5hbWVkTm9kZU1hcAotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAoX2ludGVy
bmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5hbWVkTm9kZU1hcCAqPihfaW50ZXJuYWwpLT5kZXJl
ZigpOwotICAgIH0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUK
LXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5hbWVkTm9kZU1hcCAq
PihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQot
Ci0tIChOYW1lZE5vZGVNYXAgKilfbmFtZWROb2RlTWFwCi17Ci0gICAgcmV0dXJuIERPTV9jYXN0
PE5hbWVkTm9kZU1hcCAqPihfaW50ZXJuYWwpOwotfQotCi0tIChET01Ob2RlICopZ2V0TmFtZWRJ
dGVtOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0KLSAgICByZXR1cm4g
W0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5nZXROYW1lZEl0ZW0obmFt
ZSkuZ2V0KCldOwotfQotCi0tIChET01Ob2RlICopc2V0TmFtZWRJdGVtOihET01Ob2RlICopYXJn
Ci17Ci0gICAgQVNTRVJUKGFyZyk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01O
b2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPnNl
dE5hbWVkSXRlbShbYXJnIF9ub2RlXSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRP
TUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZSAq
KXJlbW92ZU5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwot
Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUg
X25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5yZW1vdmVOYW1lZEl0ZW0obmFtZSwgZXhj
ZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4Ci17Ci0g
ICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+aXRlbShp
bmRleCkuZ2V0KCldOwotfQotCi0tICh1bnNpZ25lZClsZW5ndGgKLXsKLSAgICByZXR1cm4gW3Nl
bGYgX25hbWVkTm9kZU1hcF0tPmxlbmd0aCgpOwotfQotCi0tIChET01Ob2RlICopZ2V0TmFtZWRJ
dGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsK
LSAgICBpZiAoIW5hbWVzcGFjZVVSSSB8fCAhbG9jYWxOYW1lKSB7Ci0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgfQotCi0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWRO
b2RlTWFwXS0+Z2V0TmFtZWRJdGVtTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpLmdldCgpXTsK
LX0KLQotLSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbU5TOihET01Ob2RlICopYXJnCi17Ci0gICAg
QVNTRVJUKGFyZyk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01Ob2RlICpyZXN1
bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPnNldE5hbWVkSXRl
bU5TKFthcmcgX25vZGVdLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3Io
ZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlICopcmVtb3Zl
TmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5h
bWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQobG9jYWxOYW1lKTsK
LQotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2Rl
IF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+cmVtb3ZlTmFtZWRJdGVtTlMobmFtZXNw
YWNlVVJJLCBsb2NhbE5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJv
cihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVu
dGF0aW9uIERPTU5hbWVkTm9kZU1hcCAoV2ViQ29yZUludGVybmFsKQotCi0tIChpZClfaW5pdFdp
dGhOYW1lZE5vZGVNYXA6KE5hbWVkTm9kZU1hcCAqKWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7
Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVj
dEludGVybmFsICo+KGltcGwpOwotICAgIGltcGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIo
c2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLSsgKERPTU5hbWVkTm9kZU1hcCAq
KV9uYW1lZE5vZGVNYXBXaXRoOihOYW1lZE5vZGVNYXAgKilpbXBsCi17Ci0gICAgaWYgKCFpbXBs
KQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAg
IGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5z
dGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVh
c2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhOYW1lZE5vZGVN
YXA6aW1wbF0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0vLyBET01Ob2RlTGlzdAotCi1AaW1wbGVtZW50YXRpb24gRE9NTm9k
ZUxpc3QKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAg
ICBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBb
c3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAoX2ludGVy
bmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5vZGVMaXN0ICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7
Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19Ci0KLS0gKE5vZGVMaXN0ICopX25vZGVM
aXN0Ci17Ci0gICAgcmV0dXJuIERPTV9jYXN0PE5vZGVMaXN0ICo+KF9pbnRlcm5hbCk7Ci19Ci0K
LS0gKERPTU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleAotewotICAgIHJldHVybiBbRE9NTm9k
ZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVMaXN0XS0+aXRlbShpbmRleCldOwotfQotCi0tICh1bnNp
Z25lZClsZW5ndGgKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVMaXN0XS0+bGVuZ3RoKCk7Ci19
Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGVMaXN0IChXZWJDb3JlSW50ZXJuYWwp
Ci0KLS0gKGlkKV9pbml0V2l0aE5vZGVMaXN0OihOb2RlTGlzdCAqKWltcGwKLXsKLSAgICBBU1NF
UlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0
PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGltcGwtPnJlZigpOwotICAgIGFkZERP
TVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLSsgKERPTU5vZGVM
aXN0ICopX25vZGVMaXN0V2l0aDooTm9kZUxpc3QgKilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQot
ICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNh
Y2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFu
Y2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2Vd
OwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhOb2RlTGlzdDppbXBs
XSBhdXRvcmVsZWFzZV07Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS8vIERPTUltcGxlbWVudGF0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBET01JbXBs
ZW1lbnRhdGlvbgotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAoX2ludGVybmFsKQotICAg
ICAgICBET01fY2FzdDxET01JbXBsZW1lbnRhdGlvbkZyb250ICo+KF9pbnRlcm5hbCktPmRlcmVm
KCk7Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAg
aWYgKF9pbnRlcm5hbCkKLSAgICAgICAgRE9NX2Nhc3Q8RE9NSW1wbGVtZW50YXRpb25Gcm9udCAq
PihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19Ci0KLS0gKEJP
T0wpaGFzRmVhdHVyZTooTlNTdHJpbmcgKilmZWF0dXJlIDooTlNTdHJpbmcgKil2ZXJzaW9uCi17
Ci0gICAgQVNTRVJUKGZlYXR1cmUpOwotICAgIEFTU0VSVCh2ZXJzaW9uKTsKLQotICAgIHJldHVy
biBbc2VsZiBfRE9NSW1wbGVtZW50YXRpb25dLT5oYXNGZWF0dXJlKGZlYXR1cmUsIHZlcnNpb24p
OwotfQotCi0tIChET01Eb2N1bWVudFR5cGUgKiljcmVhdGVEb2N1bWVudFR5cGU6KE5TU3RyaW5n
ICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICopcHVibGljSWQgOihOU1N0cmluZyAqKXN5c3Rl
bUlkCi17Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotICAgIEFTU0VSVChwdWJsaWNJZCk7
Ci0gICAgQVNTRVJUKHN5c3RlbUlkKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IFJlZlB0cjxEb2N1bWVudFR5cGU+IGltcGwgPSBbc2VsZiBfRE9NSW1wbGVtZW50YXRpb25dLT5j
cmVhdGVEb2N1bWVudFR5cGUocXVhbGlmaWVkTmFtZSwgcHVibGljSWQsIHN5c3RlbUlkLCBlYyk7
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9j
dW1lbnRUeXBlICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsLmdldCgpXSk7Ci19Ci0KLS0gKERP
TURvY3VtZW50ICopY3JlYXRlRG9jdW1lbnQ6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNT
dHJpbmcgKilxdWFsaWZpZWROYW1lIDooRE9NRG9jdW1lbnRUeXBlICopZG9jdHlwZQotewotICAg
IEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsKLQotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxEb2N1bWVudD4gaW1wbCA9IFtzZWxm
IF9ET01JbXBsZW1lbnRhdGlvbl0tPmNyZWF0ZURvY3VtZW50KG5hbWVzcGFjZVVSSSwgcXVhbGlm
aWVkTmFtZSwgW2RvY3R5cGUgX2RvY3VtZW50VHlwZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudCAqPihbRE9NTm9kZSBf
bm9kZVdpdGg6aW1wbC5nZXQoKV0pOwotfQotCi0tIChET01IVE1MRG9jdW1lbnQgKiljcmVhdGVI
VE1MRG9jdW1lbnQ6KE5TU3RyaW5nICopdGl0bGUKLXsKLSAgICBSZWZQdHI8SFRNTERvY3VtZW50
PiBpbXBsID0gW3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+Y3JlYXRlSFRNTERvY3VtZW50KHRp
dGxlKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NSFRNTERvY3VtZW50ICo+KFtET01Ob2Rl
IF9ub2RlV2l0aDppbXBsLmdldCgpXSk7Ci19Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01J
bXBsZW1lbnRhdGlvbiAoRE9NSW1wbGVtZW50YXRpb25DU1MpCi0KLS0gKERPTUNTU1N0eWxlU2hl
ZXQgKiljcmVhdGVDU1NTdHlsZVNoZWV0OihOU1N0cmluZyAqKXRpdGxlIDooTlNTdHJpbmcgKilt
ZWRpYQotewotICAgIEFTU0VSVCh0aXRsZSk7Ci0gICAgQVNTRVJUKG1lZGlhKTsKLQotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTUNTU1N0eWxlU2hlZXQgKnJlc3VsdCA9IFtET01D
U1NTdHlsZVNoZWV0IF9DU1NTdHlsZVNoZWV0V2l0aDpbc2VsZiBfRE9NSW1wbGVtZW50YXRpb25d
LT5jcmVhdGVDU1NTdHlsZVNoZWV0KHRpdGxlLCBtZWRpYSwgZWMpLmdldCgpXTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUBlbmQKLSAKLUBpbXBs
ZW1lbnRhdGlvbiBET01JbXBsZW1lbnRhdGlvbiAoV2ViQ29yZUludGVybmFsKQotCi0tIChpZClf
aW5pdFdpdGhET01JbXBsZW1lbnRhdGlvbjooRE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKWltcGwK
LXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5h
bCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGltcGwtPnJlZigp
OwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0K
LSsgKERPTUltcGxlbWVudGF0aW9uICopX0RPTUltcGxlbWVudGF0aW9uV2l0aDooRE9NSW1wbGVt
ZW50YXRpb25Gcm9udCAqKWltcGwKLXsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAgY2FjaGVkSW5zdGFuY2UgPSBn
ZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKLSAgICAgICAgcmV0
dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgCi0gICAgcmV0
dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aERPTUltcGxlbWVudGF0aW9uOmltcGxdIGF1dG9y
ZWxlYXNlXTsKLX0KLQotLSAoRE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKV9ET01JbXBsZW1lbnRh
dGlvbgotewotICAgIHJldHVybiBET01fY2FzdDxET01JbXBsZW1lbnRhdGlvbkZyb250ICo+KF9p
bnRlcm5hbCk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS8vIERPTURvY3VtZW50RnJhZ21lbnQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50
RnJhZ21lbnQKLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnRGcmFnbWVudCAo
V2ViQ29yZUludGVybmFsKQotCi0rIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJh
Z21lbnRXaXRoOihEb2N1bWVudEZyYWdtZW50ICopaW1wbAotewotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxET01Eb2N1bWVudEZyYWdtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19
Ci0KLS0gKERvY3VtZW50RnJhZ21lbnQgKilfZnJhZ21lbnQKLXsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RG9jdW1lbnRGcmFnbWVudCAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwot
fQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01E
b2N1bWVudAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQKLQotLSAoRE9NTm9kZSAqKWFk
b3B0Tm9kZTooRE9NTm9kZSAqKXNvdXJjZQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRd
LT5hZG9wdE5vZGUoW3NvdXJjZSBfbm9kZV0sIGVjKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVy
cm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Eb2N1bWVudFR5cGUgKilk
b2N0eXBlCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURvY3VtZW50VHlwZSAqPihbRE9N
Tm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+ZG9jdHlwZSgpXSk7Ci19Ci0KLS0gKERP
TUltcGxlbWVudGF0aW9uICopaW1wbGVtZW50YXRpb24KLXsKLSAgICByZXR1cm4gW0RPTUltcGxl
bWVudGF0aW9uIF9ET01JbXBsZW1lbnRhdGlvbldpdGg6aW1wbGVtZW50YXRpb25Gcm9udChbc2Vs
ZiBfZG9jdW1lbnRdKV07Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilkb2N1bWVudEVsZW1lbnQKLXsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6
W3NlbGYgX2RvY3VtZW50XS0+ZG9jdW1lbnRFbGVtZW50KCldKTsKLX0KLQotLSAoRE9NRWxlbWVu
dCAqKWNyZWF0ZUVsZW1lbnQ6KE5TU3RyaW5nICopdGFnTmFtZQotewotICAgIEFTU0VSVCh0YWdO
YW1lKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTUVsZW1lbnQgKnJlc3Vs
dCA9IHN0YXRpY19jYXN0PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9k
b2N1bWVudF0tPmNyZWF0ZUVsZW1lbnQodGFnTmFtZSwgZWMpLmdldCgpXSk7Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Eb2N1bWVudEZy
YWdtZW50ICopY3JlYXRlRG9jdW1lbnRGcmFnbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxET01Eb2N1bWVudEZyYWdtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1l
bnRdLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuZ2V0KCldKTsKLX0KLQotLSAoRE9NVGV4dCAq
KWNyZWF0ZVRleHROb2RlOihOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQoZGF0YSk7Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTVRleHQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxm
IF9kb2N1bWVudF0tPmNyZWF0ZVRleHROb2RlKGRhdGEpLmdldCgpXSk7Ci19Ci0KLS0gKERPTUNv
bW1lbnQgKiljcmVhdGVDb21tZW50OihOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQoZGF0
YSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUNvbW1lbnQgKj4oW0RPTU5vZGUgX25vZGVX
aXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNvbW1lbnQoZGF0YSkuZ2V0KCldKTsKLX0KLQot
LSAoRE9NQ0RBVEFTZWN0aW9uICopY3JlYXRlQ0RBVEFTZWN0aW9uOihOU1N0cmluZyAqKWRhdGEK
LXsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQ0RB
VEFTZWN0aW9uICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxET01DREFUQVNlY3Rpb24gKj4oW0RPTU5v
ZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNEQVRBU2VjdGlvbihkYXRhLCBl
eGNlcHRpb24pLmdldCgpXSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICopY3JlYXRl
UHJvY2Vzc2luZ0luc3RydWN0aW9uOihOU1N0cmluZyAqKXRhcmdldCA6KE5TU3RyaW5nICopZGF0
YQotewotICAgIEFTU0VSVCh0YXJnZXQpOwotICAgIEFTU0VSVChkYXRhKTsKLSAgICBpbnQgZXhj
ZXB0aW9uID0gMDsKLSAgICBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKnJlc3VsdCA9IHN0YXRp
Y19jYXN0PERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX2RvY3VtZW50XS0+Y3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKHRhcmdldCwgZGF0YSwg
ZXhjZXB0aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTUF0dHIgKiljcmVhdGVBdHRyaWJ1dGU6KE5TU3Ry
aW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsK
LSAgICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2RvY3VtZW50
XS0+Y3JlYXRlQXR0cmlidXRlKG5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25E
T01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTUVudGl0
eVJlZmVyZW5jZSAqKWNyZWF0ZUVudGl0eVJlZmVyZW5jZTooTlNTdHJpbmcgKiluYW1lCi17Ci0g
ICAgQVNTRVJUKG5hbWUpOwotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTUVudGl0eVJl
ZmVyZW5jZSAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RE9NRW50aXR5UmVmZXJlbmNlICo+KFtET01O
b2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVFbnRpdHlSZWZlcmVuY2UobmFt
ZSwgZXhjZXB0aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRh
Z05hbWU6KE5TU3RyaW5nICopdGFnbmFtZQotewotICAgIEFTU0VSVCh0YWduYW1lKTsKLSAgICBy
ZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Z2V0RWxl
bWVudHNCeVRhZ05hbWUodGFnbmFtZSkuZ2V0KCldOwotfQotCi0tIChET01Ob2RlICopaW1wb3J0
Tm9kZTooRE9NTm9kZSAqKWltcG9ydGVkTm9kZSA6KEJPT0wpZGVlcAotewotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpb
c2VsZiBfZG9jdW1lbnRdLT5pbXBvcnROb2RlKFtpbXBvcnRlZE5vZGUgX25vZGVdLCBkZWVwLCBl
YykuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotLSAoRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnROUzooTlNTdHJpbmcgKiluYW1lc3Bh
Y2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNl
VVJJKTsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2Rv
Y3VtZW50XS0+Y3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgZWMp
LmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxET01FbGVtZW50ICo+KHJlc3VsdCk7Ci19Ci0KLS0gKERPTUF0dHIgKiljcmVhdGVBdHRyaWJ1
dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUK
LXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7
Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0
ciBfYXR0cldpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlQXR0cmlidXRlTlMobmFtZXNwYWNl
VVJJLCBxdWFsaWZpZWROYW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlTGlzdCAq
KWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJp
bmcgKilsb2NhbE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQo
bG9jYWxOYW1lKTsKLQotICAgIHJldHVybiBbRE9NTm9kZUxpc3QgX25vZGVMaXN0V2l0aDpbc2Vs
ZiBfZG9jdW1lbnRdLT5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxO
YW1lKS5nZXQoKV07Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilnZXRFbGVtZW50QnlJZDooTlNTdHJp
bmcgKillbGVtZW50SWQKLXsKLSAgICBBU1NFUlQoZWxlbWVudElkKTsKLQotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1l
bnRdLT5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpXSk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVu
dGF0aW9uIERPTURvY3VtZW50IChET01Eb2N1bWVudFJhbmdlKQotCi0tIChET01SYW5nZSAqKWNy
ZWF0ZVJhbmdlCi17Ci0gICAgcmV0dXJuIFtET01SYW5nZSBfcmFuZ2VXaXRoOltzZWxmIF9kb2N1
bWVudF0tPmNyZWF0ZVJhbmdlKCkuZ2V0KCldOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlv
biBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRDU1MpCi0KLS0gKERPTUNTU1N0eWxlRGVjbGFyYXRp
b24gKilnZXRPdmVycmlkZVN0eWxlOihET01FbGVtZW50ICopZWx0IDooTlNTdHJpbmcgKilwc2V1
ZG9FbHQKLXsKLSAgICBFbGVtZW50ICplbGVtZW50ID0gW2VsdCBfZWxlbWVudF07Ci0gICAgU3Ry
aW5nIHBzZXVkb0VsdFN0cmluZyhwc2V1ZG9FbHQpOwotICAgIHJldHVybiBbRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6W3NlbGYgX2RvY3VtZW50XS0+Z2V0T3Zl
cnJpZGVTdHlsZShlbGVtZW50LCBwc2V1ZG9FbHRTdHJpbmcuaW1wbCgpKV07Ci19Ci0KLUBlbmQK
LQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChET01Eb2N1bWVudFN0eWxlKQotCi0tIChE
T01TdHlsZVNoZWV0TGlzdCAqKXN0eWxlU2hlZXRzCi17Ci0gICAgcmV0dXJuIFtET01TdHlsZVNo
ZWV0TGlzdCBfc3R5bGVTaGVldExpc3RXaXRoOltzZWxmIF9kb2N1bWVudF0tPnN0eWxlU2hlZXRz
KCldOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1l
bnRFeHRlbnNpb25zKQotCi0tIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopY3JlYXRlQ1NTU3R5
bGVEZWNsYXJhdGlvbgotewotICAgIHJldHVybiBbRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBfc3R5
bGVEZWNsYXJhdGlvbldpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlQ1NTU3R5bGVEZWNsYXJh
dGlvbigpLmdldCgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQg
KFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NRG9jdW1lbnQgKilfZG9jdW1lbnRXaXRoOihEb2N1
bWVudCAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnQgKj4oW0RP
TU5vZGUgX25vZGVXaXRoOmltcGxdKTsKLX0KLQotLSAoRG9jdW1lbnQgKilfZG9jdW1lbnQKLXsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50
ZXJuYWwpKTsKLX0KLQotLSAoRE9NRWxlbWVudCAqKV9vd25lckVsZW1lbnQKLXsKLSAgICByZXR1
cm4gW0RPTUVsZW1lbnQgX2VsZW1lbnRXaXRoOltzZWxmIF9kb2N1bWVudF0tPm93bmVyRWxlbWVu
dCgpXTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ly8gRE9NQ2hhcmFjdGVyRGF0YQotCi1AaW1wbGVtZW50YXRpb24gRE9NQ2hhcmFjdGVyRGF0YQot
Ci0tIChDaGFyYWN0ZXJEYXRhICopX2NoYXJhY3RlckRhdGEKLXsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q2hhcmFjdGVyRGF0YSAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQot
Ci0tIChOU1N0cmluZyAqKWRhdGEKLXsKLSAgICAvLyBEb2N1bWVudGF0aW9uIHNheXMgd2UgY2Fu
IHJhaXNlIGEgRE9NU1RSSU5HX1NJWkVfRVJSLgotICAgIC8vIEhvd2V2ZXIsIHRoZSBsb3dlciBs
YXllciBkb2VzIG5vdCByZXBvcnQgdGhhdCBlcnJvciB1cCB0byB1cy4KLSAgICByZXR1cm4gW3Nl
bGYgX2NoYXJhY3RlckRhdGFdLT5kYXRhKCk7Ci19Ci0KLS0gKHZvaWQpc2V0RGF0YTooTlNTdHJp
bmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIAotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+c2V0RGF0YShkYXRhLCBlYyk7Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodW5zaWduZWQpbGVuZ3RoCi17Ci0gICAg
cmV0dXJuIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+bGVuZ3RoKCk7Ci19Ci0KLS0gKE5TU3RyaW5n
ICopc3Vic3RyaW5nRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpY291bnQKLXsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBOU1N0cmluZyAqcmVzdWx0ID0gW3NlbGYgX2No
YXJhY3RlckRhdGFdLT5zdWJzdHJpbmdEYXRhKG9mZnNldCwgY291bnQsIGVjKTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKHZvaWQpYXBwZW5k
RGF0YTooTlNTdHJpbmcgKilhcmcKLXsKLSAgICBBU1NFUlQoYXJnKTsKLSAgICAKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPmFwcGVuZERhdGEo
YXJnLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClpbnNlcnRE
YXRhOih1bnNpZ25lZClvZmZzZXQgOihOU1N0cmluZyAqKWFyZwotewotICAgIEFTU0VSVChhcmcp
OwotICAgIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9jaGFyYWN0ZXJE
YXRhXS0+aW5zZXJ0RGF0YShvZmZzZXQsIGFyZywgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7Ci19Ci0KLS0gKHZvaWQpZGVsZXRlRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQp
IGNvdW50Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3Rl
ckRhdGFdLT5kZWxldGVEYXRhKG9mZnNldCwgY291bnQsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwotfQotCi0tICh2b2lkKXJlcGxhY2VEYXRhOih1bnNpZ25lZClvZmZzZXQgOih1bnNp
Z25lZCljb3VudCA6KE5TU3RyaW5nICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7Ci0KLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPnJlcGxhY2VE
YXRhKG9mZnNldCwgY291bnQsIGFyZywgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19
Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUF0
dHIKLQotQGltcGxlbWVudGF0aW9uIERPTUF0dHIKLQotLSAoTlNTdHJpbmcgKiluYW1lCi17Ci0g
ICAgcmV0dXJuIFtzZWxmIF9hdHRyXS0+bm9kZU5hbWUoKTsKLX0KLQotLSAoQk9PTClzcGVjaWZp
ZWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2F0dHJdLT5zcGVjaWZpZWQoKTsKLX0KLQotLSAoTlNT
dHJpbmcgKil2YWx1ZQotewotICAgIHJldHVybiBbc2VsZiBfYXR0cl0tPm5vZGVWYWx1ZSgpOwot
fQotCi0tICh2b2lkKXNldFZhbHVlOihOU1N0cmluZyAqKXZhbHVlCi17Ci0gICAgQVNTRVJUKHZh
bHVlKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9hdHRyXS0+c2V0
VmFsdWUodmFsdWUsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tIChET01F
bGVtZW50ICopb3duZXJFbGVtZW50Ci17Ci0gICAgcmV0dXJuIFtET01FbGVtZW50IF9lbGVtZW50
V2l0aDpbc2VsZiBfYXR0cl0tPm93bmVyRWxlbWVudCgpXTsKLX0KLQotLSAoRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbiAqKXN0eWxlCi17Ci0gICAgcmV0dXJuIFtET01DU1NTdHlsZURlY2xhcmF0aW9u
IF9zdHlsZURlY2xhcmF0aW9uV2l0aDogW3NlbGYgX2F0dHJdLT5zdHlsZSgpXTsKLX0KLQotQGVu
ZAotCi1AaW1wbGVtZW50YXRpb24gRE9NQXR0ciAoV2ViQ29yZUludGVybmFsKQotCi0rIChET01B
dHRyICopX2F0dHJXaXRoOihBdHRyICopaW1wbAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxE
T01BdHRyICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19Ci0KLS0gKEF0dHIgKilfYXR0
cgotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdHRyICo+KERPTV9jYXN0PE5vZGUgKj4oX2lu
dGVybmFsKSk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS8vIERPTUVsZW1lbnQKLQotQGltcGxlbWVudGF0aW9uIERPTUVsZW1lbnQKLQotLSAoTlNT
dHJpbmcgKil0YWdOYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50XS0+bm9kZU5hbWUo
KTsKLX0KLQotLSAoRE9NTmFtZWROb2RlTWFwICopYXR0cmlidXRlcwotewotICAgIHJldHVybiBb
RE9NTmFtZWROb2RlTWFwIF9uYW1lZE5vZGVNYXBXaXRoOltzZWxmIF9lbGVtZW50XS0+YXR0cmli
dXRlcygpXTsKLX0KLQotLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFt
ZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5nZXRB
dHRyaWJ1dGUobmFtZSk7Ci19Ci0KLS0gKHZvaWQpc2V0QXR0cmlidXRlOihOU1N0cmluZyAqKW5h
bWUgOihOU1N0cmluZyAqKXZhbHVlCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotICAgIEFTU0VSVCh2
YWx1ZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBbc2VsZiBfZWxlbWVudF0tPnNl
dEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgZXhjZXB0aW9uKTsKLSAgICByYWlzZU9uRE9NRXJyb3Io
ZXhjZXB0aW9uKTsKLX0KLQotLSAodm9pZClyZW1vdmVBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFt
ZQotewotICAgIEFTU0VSVChuYW1lKTsKLQotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIFtz
ZWxmIF9lbGVtZW50XS0+cmVtb3ZlQXR0cmlidXRlKG5hbWUsIGV4Y2VwdGlvbik7Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci19Ci0KLS0gKERPTUF0dHIgKilnZXRBdHRyaWJ1dGVO
b2RlOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0KLSAgICByZXR1cm4g
W0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0QXR0cmlidXRlTm9kZShuYW1l
KS5nZXQoKV07Ci19Ci0KLS0gKERPTUF0dHIgKilzZXRBdHRyaWJ1dGVOb2RlOihET01BdHRyICop
bmV3QXR0cgotewotICAgIEFTU0VSVChuZXdBdHRyKTsKLQotICAgIGludCBleGNlcHRpb24gPSAw
OwotICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVu
dF0tPnNldEF0dHJpYnV0ZU5vZGUoW25ld0F0dHIgX2F0dHJdLCBleGNlcHRpb24pLmdldCgpXTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci0tIChET01BdHRyICopcmVtb3ZlQXR0cmlidXRlTm9kZTooRE9NQXR0ciAqKW9sZEF0dHIKLXsK
LSAgICBBU1NFUlQob2xkQXR0cik7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01B
dHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2VsZW1lbnRdLT5yZW1vdmVB
dHRyaWJ1dGVOb2RlKFtvbGRBdHRyIF9hdHRyXSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9N
Tm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAg
QVNTRVJUKG5hbWUpOwotCi0gICAgcmV0dXJuIFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOltz
ZWxmIF9lbGVtZW50XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWUobmFtZSkuZ2V0KCldOwotfQotCi0t
IChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5T
U3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNT
RVJUKGxvY2FsTmFtZSk7Ci0KLSAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5nZXRBdHRyaWJ1
dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7Ci19Ci0KLS0gKHZvaWQpc2V0QXR0cmlidXRl
TlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDoo
TlNTdHJpbmcgKil2YWx1ZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VS
VChxdWFsaWZpZWROYW1lKTsKLSAgICBBU1NFUlQodmFsdWUpOwotCi0gICAgaW50IGV4Y2VwdGlv
biA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkks
IHF1YWxpZmllZE5hbWUsIHZhbHVlLCBleGNlcHRpb24pOwotICAgIHJhaXNlT25ET01FcnJvcihl
eGNlcHRpb24pOwotfQotCi0tICh2b2lkKXJlbW92ZUF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5h
bWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFj
ZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsK
LSAgICBbc2VsZiBfZWxlbWVudF0tPnJlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9j
YWxOYW1lLCBleGNlcHRpb24pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotfQot
Ci0tIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9kZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVS
SSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0g
ICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICByZXR1cm4gW0RPTUF0dHIgX2F0dHJXaXRoOltz
ZWxmIF9lbGVtZW50XS0+Z2V0QXR0cmlidXRlTm9kZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1l
KS5nZXQoKV07Ci19Ci0KLS0gKERPTUF0dHIgKilzZXRBdHRyaWJ1dGVOb2RlTlM6KERPTUF0dHIg
KiluZXdBdHRyCi17Ci0gICAgQVNTRVJUKG5ld0F0dHIpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9
IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVt
ZW50XS0+c2V0QXR0cmlidXRlTm9kZU5TKFtuZXdBdHRyIF9hdHRyXSwgZXhjZXB0aW9uKS5nZXQo
KV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAq
KW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVz
cGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICByZXR1cm4gW0RPTU5vZGVM
aXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX2VsZW1lbnRdLT5nZXRFbGVtZW50c0J5VGFnTmFtZU5T
KG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKS5nZXQoKV07Ci19Ci0KLS0gKEJPT0wpaGFzQXR0cmli
dXRlOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0KLSAgICByZXR1cm4g
W3NlbGYgX2VsZW1lbnRdLT5oYXNBdHRyaWJ1dGUobmFtZSk7Ci19Ci0KLS0gKEJPT0wpaGFzQXR0
cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUK
LXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQobG9jYWxOYW1lKTsKLQot
ICAgIHJldHVybiBbc2VsZiBfZWxlbWVudF0tPmhhc0F0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwg
bG9jYWxOYW1lKTsKLX0KLQotLSAodm9pZClmb2N1cwotewotICAgIFtzZWxmIF9lbGVtZW50XS0+
Zm9jdXMoKTsKLX0KLQotLSAodm9pZClibHVyCi17Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5ibHVy
KCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUVsZW1lbnQgKERPTUVsZW1lbnRD
U1NJbmxpbmVTdHlsZSkKLQotLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKXN0eWxlCi17Ci0g
ICAgcmV0dXJuIFtET01DU1NTdHlsZURlY2xhcmF0aW9uIF9zdHlsZURlY2xhcmF0aW9uV2l0aDpb
c2VsZiBfZWxlbWVudF0tPnN0eWxlKCldOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBE
T01FbGVtZW50IChET01FbGVtZW50RXh0ZW5zaW9ucykKLQotLSAoTlNJbWFnZSopaW1hZ2UKLXsK
LSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gW3NlbGYgX2VsZW1lbnRdLT5yZW5kZXJlcigp
OwotICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNJbWFnZSgpKSB7Ci0gICAgICAgIFJl
bmRlckltYWdlKiBpbWcgPSBzdGF0aWNfY2FzdDxSZW5kZXJJbWFnZSo+KHJlbmRlcmVyKTsKLSAg
ICAgICAgaWYgKGltZy0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1nLT5jYWNoZWRJbWFnZSgpLT5pc0Vy
cm9ySW1hZ2UoKSkKLSAgICAgICAgICAgIHJldHVybiBpbWctPmNhY2hlZEltYWdlKCktPmltYWdl
KCktPmdldE5TSW1hZ2UoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAodm9pZClz
Y3JvbGxJbnRvVmlldzooQk9PTClhbGlnblRvcAotewotICAgIFtzZWxmIF9lbGVtZW50XS0+c2Ny
b2xsSW50b1ZpZXcoYWxpZ25Ub3ApOwotfQotCi0tICh2b2lkKXNjcm9sbEludG9WaWV3SWZOZWVk
ZWQ6KEJPT0wpY2VudGVySWZOZWVkZWQKLXsKLSAgICBbc2VsZiBfZWxlbWVudF0tPnNjcm9sbElu
dG9WaWV3SWZOZWVkZWQoY2VudGVySWZOZWVkZWQpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRh
dGlvbiBET01FbGVtZW50IChXZWJDb3JlSW50ZXJuYWwpCi0KLSsgKERPTUVsZW1lbnQgKilfZWxl
bWVudFdpdGg6KEVsZW1lbnQgKilpbXBsCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUVs
ZW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTsKLX0KLQotLSAoRWxlbWVudCAqKV9l
bGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQgKj4oRE9NX2Nhc3Q8Tm9k
ZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRWxlbWVu
dCAoV2ViUHJpdmF0ZSkKLQotLSAoTlNGb250ICopX2ZvbnQKLXsKLSAgICBSZW5kZXJPYmplY3Qg
KnJlbmRlcmVyID0gW3NlbGYgX2VsZW1lbnRdLT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJl
cikgewotICAgICAgICByZXR1cm4gcmVuZGVyZXItPnN0eWxlKCktPmZvbnQoKS5nZXROU0ZvbnQo
KTsKLSAgICB9Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoTlNEYXRhKilfaW1hZ2VUSUZGUmVw
cmVzZW50YXRpb24KLXsKLSAgICBSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gW3NlbGYgX2VsZW1l
bnRdLT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNJbWFnZSgp
KSB7Ci0gICAgICAgIFJlbmRlckltYWdlKiBpbWcgPSBzdGF0aWNfY2FzdDxSZW5kZXJJbWFnZSo+
KHJlbmRlcmVyKTsKLSAgICAgICAgaWYgKGltZy0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1nLT5jYWNo
ZWRJbWFnZSgpLT5pc0Vycm9ySW1hZ2UoKSkKLSAgICAgICAgICAgIHJldHVybiAoTlNEYXRhKiko
aW1nLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpLT5nZXRUSUZGUmVwcmVzZW50YXRpb24oKSk7Ci0g
ICAgfQotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKE5TVVJMICopX2dldFVSTEF0dHJpYnV0ZToo
TlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotICAgIEVsZW1lbnQgKmUgPSBb
c2VsZiBfZWxlbWVudF07Ci0gICAgQVNTRVJUKGUpOwotICAgIHJldHVybiBLVVJMKGUtPmRvY3Vt
ZW50KCktPmNvbXBsZXRlVVJMKHBhcnNlVVJMKGUtPmdldEF0dHJpYnV0ZShuYW1lKSkuZGVwcmVj
YXRlZFN0cmluZygpKSkuZ2V0TlNVUkwoKTsKLX0KLQotLSAodm9pZCAqKV9OUE9iamVjdAotewot
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBbc2VsZiBfZWxlbWVudF07Ci0gICAgaWYgKGVsZW1lbnQt
Pmhhc1RhZ05hbWUoYXBwbGV0VGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKGVtYmVkVGFnKSB8
fCBlbGVtZW50LT5oYXNUYWdOYW1lKG9iamVjdFRhZykpCi0gICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCo+KGVsZW1lbnQpLT5nZXROUE9iamVjdCgp
OwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIDA7Ci19Ci0KLS0gKEJPT0wpaXNGb2N1c2VkCi17
Ci0gICAgRWxlbWVudCogaW1wbCA9IFtzZWxmIF9lbGVtZW50XTsKLSAgICBpZiAoaW1wbC0+ZG9j
dW1lbnQoKS0+Zm9jdXNOb2RlKCkgPT0gaW1wbCkKLSAgICAgICAgcmV0dXJuIFlFUzsKLSAgICBy
ZXR1cm4gTk87Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS8vIERPTVRleHQKLQotQGltcGxlbWVudGF0aW9uIERPTVRleHQKLQotLSAoVGV4dCAqKV90
ZXh0Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHQgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihf
aW50ZXJuYWwpKTsKLX0KLQotLSAoRE9NVGV4dCAqKXNwbGl0VGV4dDoodW5zaWduZWQpb2Zmc2V0
Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RP
TU5vZGUgX25vZGVXaXRoOltzZWxmIF90ZXh0XS0+c3BsaXRUZXh0KG9mZnNldCwgZWMpXTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01UZXh0ICo+
KHJlc3VsdCk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS8vIERPTUNvbW1lbnQKLQotQGltcGxlbWVudGF0aW9uIERPTUNvbW1lbnQKLQotQGVuZAot
Ci0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NQ0RBVEFTZWN0aW9u
Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01DREFUQVNlY3Rpb24KLQotQGVuZAotCi0vLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NRG9jdW1lbnRUeXBlCi0KLUBpbXBsZW1l
bnRhdGlvbiBET01Eb2N1bWVudFR5cGUKLQotLSAoTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgcmV0
dXJuIFtzZWxmIF9kb2N1bWVudFR5cGVdLT5wdWJsaWNJZCgpOwotfQotCi0tIChET01OYW1lZE5v
ZGVNYXAgKillbnRpdGllcwotewotICAgIHJldHVybiBbRE9NTmFtZWROb2RlTWFwIF9uYW1lZE5v
ZGVNYXBXaXRoOltzZWxmIF9kb2N1bWVudFR5cGVdLT5lbnRpdGllcygpXTsKLX0KLQotLSAoRE9N
TmFtZWROb2RlTWFwICopbm90YXRpb25zCi17Ci0gICAgcmV0dXJuIFtET01OYW1lZE5vZGVNYXAg
X25hbWVkTm9kZU1hcFdpdGg6W3NlbGYgX2RvY3VtZW50VHlwZV0tPm5vdGF0aW9ucygpXTsKLX0K
LQotLSAoTlNTdHJpbmcgKilwdWJsaWNJZAotewotICAgIHJldHVybiBbc2VsZiBfZG9jdW1lbnRU
eXBlXS0+cHVibGljSWQoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilzeXN0ZW1JZAotewotICAgIHJl
dHVybiBbc2VsZiBfZG9jdW1lbnRUeXBlXS0+c3lzdGVtSWQoKTsKLX0KLQotLSAoTlNTdHJpbmcg
KilpbnRlcm5hbFN1YnNldAotewotICAgIHJldHVybiBbc2VsZiBfZG9jdW1lbnRUeXBlXS0+aW50
ZXJuYWxTdWJzZXQoKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnRU
eXBlIChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKERvY3VtZW50VHlwZSAqKV9kb2N1bWVudFR5cGUK
LXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnRUeXBlICo+KERPTV9jYXN0PE5vZGUg
Kj4oX2ludGVybmFsKSk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS8vIERPTU5vdGF0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob3RhdGlvbgot
Ci0tIChOb3RhdGlvbiAqKV9ub3RhdGlvbgotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxOb3Rh
dGlvbiAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChOU1N0cmluZyAq
KXB1YmxpY0lkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub3RhdGlvbl0tPnB1YmxpY0lkKCk7Ci19
Ci0KLS0gKE5TU3RyaW5nICopc3lzdGVtSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vdGF0aW9u
XS0+c3lzdGVtSWQoKTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotLy8gRE9NRW50aXR5Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01FbnRpdHkKLQotLSAo
RW50aXR5ICopX2VudGl0eQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbnRpdHkgKj4oRE9N
X2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKilwdWJsaWNJZAot
ewotICAgIHJldHVybiBbc2VsZiBfZW50aXR5XS0+cHVibGljSWQoKTsKLX0KLQotLSAoTlNTdHJp
bmcgKilzeXN0ZW1JZAotewotICAgIHJldHVybiBbc2VsZiBfZW50aXR5XS0+c3lzdGVtSWQoKTsK
LX0KLQotLSAoTlNTdHJpbmcgKilub3RhdGlvbk5hbWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2Vu
dGl0eV0tPm5vdGF0aW9uTmFtZSgpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0vLyBET01FbnRpdHlSZWZlcmVuY2UKLQotQGltcGxlbWVudGF0aW9u
IERPTUVudGl0eVJlZmVyZW5jZQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KLQotQGltcGxlbWVudGF0aW9u
IERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbgotCi0tIChQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKilf
cHJvY2Vzc2luZ0luc3RydWN0aW9uCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFByb2Nlc3Np
bmdJbnN0cnVjdGlvbiAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChO
U1N0cmluZyAqKXRhcmdldAotewotICAgIHJldHVybiBbc2VsZiBfcHJvY2Vzc2luZ0luc3RydWN0
aW9uXS0+dGFyZ2V0KCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopZGF0YQotewotICAgIHJldHVybiBb
c2VsZiBfcHJvY2Vzc2luZ0luc3RydWN0aW9uXS0+ZGF0YSgpOwotfQotCi0tICh2b2lkKXNldERh
dGE6KE5TU3RyaW5nICopZGF0YQotewotICAgIEFTU0VSVChkYXRhKTsKLQotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9wcm9jZXNzaW5nSW5zdHJ1Y3Rpb25dLT5zZXREYXRh
KGRhdGEsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi1AZW5kCi0KLS8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01SYW5nZQotCi1AaW1wbGVtZW50
YXRpb24gRE9NUmFuZ2UKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkg
ewotICAgICAgICBET01fY2FzdDxSYW5nZSAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0K
LSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAo
X2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PFJhbmdlICo+KF9pbnRlcm5hbCktPmRlcmVm
KCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19Ci0KLS0gKE5TU3RyaW5nICopZGVz
Y3JpcHRpb24KLXsKLSAgICBpZiAoIV9pbnRlcm5hbCkKLSAgICAgICAgcmV0dXJuIEAiPERPTVJh
bmdlOiBudWxsPiI7Ci0gICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPERP
TVJhbmdlOiAlQCAlZCAlQCAlZD4iLAotICAgICAgICBbc2VsZiBzdGFydENvbnRhaW5lcl0sIFtz
ZWxmIHN0YXJ0T2Zmc2V0XSwKLSAgICAgICAgW3NlbGYgZW5kQ29udGFpbmVyXSwgW3NlbGYgZW5k
T2Zmc2V0XV07Ci19Ci0KLS0gKERPTU5vZGUgKilzdGFydENvbnRhaW5lcgotewotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0
aDpbc2VsZiBfcmFuZ2VdLT5zdGFydENvbnRhaW5lcihlYyldOwotICAgIHJhaXNlT25ET01FcnJv
cihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoaW50KXN0YXJ0T2Zmc2V0Ci17Ci0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW50IHJlc3VsdCA9IFtzZWxmIF9yYW5nZV0t
PnN0YXJ0T2Zmc2V0KGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUgKillbmRDb250YWluZXIKLXsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX3JhbmdlXS0+ZW5kQ29udGFpbmVyKGVjKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChpbnQpZW5kT2Zmc2V0Ci17Ci0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW50IHJlc3VsdCA9IFtzZWxmIF9yYW5nZV0tPmVuZE9mZnNl
dChlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci0tIChCT09MKWNvbGxhcHNlZAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIEJP
T0wgcmVzdWx0ID0gW3NlbGYgX3JhbmdlXS0+Y29sbGFwc2VkKGVjKTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUgKiljb21tb25B
bmNlc3RvckNvbnRhaW5lcgotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5v
ZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfcmFuZ2VdLT5jb21tb25BbmNl
c3RvckNvbnRhaW5lcihlYyldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotLSAodm9pZClzZXRTdGFydDooRE9NTm9kZSAqKXJlZk5vZGUgOihpbnQp
b2Zmc2V0Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+
c2V0U3RhcnQoW3JlZk5vZGUgX25vZGVdLCBvZmZzZXQsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwotfQotCi0tICh2b2lkKXNldEVuZDooRE9NTm9kZSAqKXJlZk5vZGUgOihpbnQpb2Zm
c2V0Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+c2V0
RW5kKFtyZWZOb2RlIF9ub2RlXSwgb2Zmc2V0LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVj
KTsKLX0KLQotLSAodm9pZClzZXRTdGFydEJlZm9yZTooRE9NTm9kZSAqKXJlZk5vZGUKLXsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5zZXRTdGFydEJlZm9y
ZShbcmVmTm9kZSBfbm9kZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0t
ICh2b2lkKXNldFN0YXJ0QWZ0ZXI6KERPTU5vZGUgKilyZWZOb2RlCi17Ci0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+c2V0U3RhcnRBZnRlcihbcmVmTm9kZSBf
bm9kZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKXNldEVu
ZEJlZm9yZTooRE9NTm9kZSAqKXJlZk5vZGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBbc2VsZiBfcmFuZ2VdLT5zZXRFbmRCZWZvcmUoW3JlZk5vZGUgX25vZGVdLCBlYyk7Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClzZXRFbmRBZnRlcjooRE9NTm9k
ZSAqKXJlZk5vZGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFu
Z2VdLT5zZXRFbmRBZnRlcihbcmVmTm9kZSBfbm9kZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwotfQotCi0tICh2b2lkKWNvbGxhcHNlOihCT09MKXRvU3RhcnQKLXsKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5jb2xsYXBzZSh0b1N0YXJ0LCBl
Yyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClzZWxlY3ROb2RlOihE
T01Ob2RlICopcmVmTm9kZQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxm
IF9yYW5nZV0tPnNlbGVjdE5vZGUoW3JlZk5vZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClzZWxlY3ROb2RlQ29udGVudHM6KERPTU5vZGUgKily
ZWZOb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+
c2VsZWN0Tm9kZUNvbnRlbnRzKFtyZWZOb2RlIF9ub2RlXSwgZWMpOwotICAgIHJhaXNlT25ET01F
cnJvcihlYyk7Ci19Ci0KLS0gKHNob3J0KWNvbXBhcmVCb3VuZGFyeVBvaW50czoodW5zaWduZWQg
c2hvcnQpaG93IDooRE9NUmFuZ2UgKilzb3VyY2VSYW5nZQotewotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIHNob3J0IHJlc3VsdCA9IFtzZWxmIF9yYW5nZV0tPmNvbXBhcmVCb3VuZGFy
eVBvaW50cyhzdGF0aWNfY2FzdDxSYW5nZTo6Q29tcGFyZUhvdz4oaG93KSwgW3NvdXJjZVJhbmdl
IF9yYW5nZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLS0gKHZvaWQpZGVsZXRlQ29udGVudHMKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5kZWxldGVDb250ZW50cyhlYyk7Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKLX0KLQotLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWV4dHJhY3RDb250
ZW50cwotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTURvY3VtZW50RnJhZ21l
bnQgKnJlc3VsdCA9IFtET01Eb2N1bWVudEZyYWdtZW50IF9kb2N1bWVudEZyYWdtZW50V2l0aDpb
c2VsZiBfcmFuZ2VdLT5leHRyYWN0Q29udGVudHMoZWMpLmdldCgpXTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTURvY3VtZW50RnJhZ21l
bnQgKiljbG9uZUNvbnRlbnRzCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9N
RG9jdW1lbnRGcmFnbWVudCAqcmVzdWx0ID0gW0RPTURvY3VtZW50RnJhZ21lbnQgX2RvY3VtZW50
RnJhZ21lbnRXaXRoOltzZWxmIF9yYW5nZV0tPmNsb25lQ29udGVudHMoZWMpLmdldCgpXTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKHZvaWQp
aW5zZXJ0Tm9kZTooRE9NTm9kZSAqKW5ld05vZGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5pbnNlcnROb2RlKFtuZXdOb2RlIF9ub2RlXSwgZWMpOwot
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc3Vycm91bmRDb250ZW50czoo
RE9NTm9kZSAqKW5ld1BhcmVudAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtz
ZWxmIF9yYW5nZV0tPnN1cnJvdW5kQ29udGVudHMoW25ld1BhcmVudCBfbm9kZV0sIGVjKTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tIChET01SYW5nZSAqKWNsb25lUmFuZ2UKLXsK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01SYW5nZSAqcmVzdWx0ID0gW0RPTVJh
bmdlIF9yYW5nZVdpdGg6W3NlbGYgX3JhbmdlXS0+Y2xvbmVSYW5nZShlYykuZ2V0KCldOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoTlNTdHJp
bmcgKil0b1N0cmluZwotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIE5TU3RyaW5n
ICpyZXN1bHQgPSBbc2VsZiBfcmFuZ2VdLT50b1N0cmluZyhlYyk7Ci0gICAgcmFpc2VPbkRPTUVy
cm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChOU1N0cmluZyAqKXRleHQKLXsK
LSAgICByZXR1cm4gW3NlbGYgX3JhbmdlXS0+dGV4dCgpOwotfQotCi0tICh2b2lkKWRldGFjaAot
ewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9yYW5nZV0tPmRldGFjaChl
Yyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRp
b24gRE9NUmFuZ2UgKFdlYkNvcmVJbnRlcm5hbCkKLQotLSAoaWQpX2luaXRXaXRoUmFuZ2U6KFJh
bmdlICopaW1wbAotewotICAgIEFTU0VSVChpbXBsKTsKLQotICAgIFtzdXBlciBfaW5pdF07Ci0g
ICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7Ci0gICAg
aW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsKLSAgICByZXR1cm4g
c2VsZjsKLX0KLQotKyAoRE9NUmFuZ2UgKilfcmFuZ2VXaXRoOihSYW5nZSAqKWltcGwKLXsKLSAg
ICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5z
dGFuY2U7Ci0gICAgY2FjaGVkSW5zdGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlm
IChjYWNoZWRJbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWlu
XSBhdXRvcmVsZWFzZV07Ci0gICAgCi0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0
aFJhbmdlOmltcGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoUmFuZ2UgKilfcmFuZ2UKLXsKLSAg
ICByZXR1cm4gRE9NX2Nhc3Q8UmFuZ2UgKj4oX2ludGVybmFsKTsKLX0KLQotQGVuZAotCi1AaW1w
bGVtZW50YXRpb24gRE9NUmFuZ2UgKFdlYlByaXZhdGUpCi0KLS0gKE5TU3RyaW5nICopX3RleHQK
LXsKLSAgICByZXR1cm4gW3NlbGYgdGV4dF07Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGVGaWx0ZXIKLQotLSAoaWQpX2luaXRXaXRoTm9k
ZUZpbHRlcjooTm9kZUZpbHRlciAqKWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBb
c3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFs
ICo+KGltcGwpOwotICAgIGltcGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1w
bCk7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLSsgKERPTU5vZGVGaWx0ZXIgKilfbm9kZUZpbHRl
cldpdGg6KE5vZGVGaWx0ZXIgKilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1
cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNl
ID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAg
IHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAg
IHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhOb2RlRmlsdGVyOmltcGxdIGF1dG9yZWxl
YXNlXTsKLX0KLQotLSAoTm9kZUZpbHRlciAqKV9ub2RlRmlsdGVyCi17Ci0gICAgcmV0dXJuIERP
TV9jYXN0PE5vZGVGaWx0ZXIgKj4oX2ludGVybmFsKTsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17
Ci0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZUZpbHRlciAqPihfaW50
ZXJuYWwpLT5kZXJlZigpOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5h
bGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIERPTV9jYXN0PE5vZGVGaWx0ZXIg
Kj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChz
aG9ydClhY2NlcHROb2RlOihET01Ob2RlICopbm9kZQotewotICAgIHJldHVybiBbc2VsZiBfbm9k
ZUZpbHRlcl0tPmFjY2VwdE5vZGUoW25vZGUgX25vZGVdKTsKLX0KLQotQGVuZAotCi0KLUBpbXBs
ZW1lbnRhdGlvbiBET01Ob2RlSXRlcmF0b3IKLQotLSAoaWQpX2luaXRXaXRoTm9kZUl0ZXJhdG9y
OihOb2RlSXRlcmF0b3IgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgot
ewotICAgIEFTU0VSVChpbXBsKTsKLQotICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2ludGVybmFs
ID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7
Ci0gICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsKLSAgICBtX2ZpbHRlciA9IFtmaWx0ZXIg
cmV0YWluXTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAoTm9kZUl0ZXJhdG9yICopX25vZGVJ
dGVyYXRvcgotewotICAgIHJldHVybiBET01fY2FzdDxOb2RlSXRlcmF0b3IgKj4oX2ludGVybmFs
KTsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW21fZmlsdGVyIHJlbGVhc2VdOwotICAg
IGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgW3NlbGYgZGV0YWNoXTsKLSAgICAgICAgRE9NX2Nh
c3Q8Tm9kZUl0ZXJhdG9yICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBl
ciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwp
IHsKLSAgICAgICAgW3NlbGYgZGV0YWNoXTsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZUl0ZXJhdG9y
ICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19
Ci0KLS0gKERPTU5vZGUgKilyb290Ci17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpb
c2VsZiBfbm9kZUl0ZXJhdG9yXS0+cm9vdCgpXTsKLX0KLQotLSAodW5zaWduZWQpd2hhdFRvU2hv
dwotewotICAgIHJldHVybiBbc2VsZiBfbm9kZUl0ZXJhdG9yXS0+d2hhdFRvU2hvdygpOwotfQot
Ci0tIChpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgaWYgKG1fZmlsdGVyKQotICAg
ICAgICAvLyBUaGlzIG5vZGUgaXRlcmF0b3Igd2FzIGNyZWF0ZWQgZnJvbSB0aGUgb2JqYyBzaWRl
Ci0gICAgICAgIHJldHVybiBbW21fZmlsdGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotCi0gICAg
Ly8gVGhpcyBub2RlIGl0ZXJhdG9yIHdhcyBjcmVhdGVkIGZyb20gdGhlIGMrKyBzaWRlCi0gICAg
cmV0dXJuIFtET01Ob2RlRmlsdGVyIF9ub2RlRmlsdGVyV2l0aDpbc2VsZiBfbm9kZUl0ZXJhdG9y
XS0+ZmlsdGVyKCldOwotfQotCi0tIChCT09MKWV4cGFuZEVudGl0eVJlZmVyZW5jZXMKLXsKLSAg
ICByZXR1cm4gW3NlbGYgX25vZGVJdGVyYXRvcl0tPmV4cGFuZEVudGl0eVJlZmVyZW5jZXMoKTsK
LX0KLQotLSAoRE9NTm9kZSAqKW5leHROb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9ub2RlSXRl
cmF0b3JdLT5uZXh0Tm9kZShlYyldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZSAqKXByZXZpb3VzTm9kZQotewotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0
aDpbc2VsZiBfbm9kZUl0ZXJhdG9yXS0+cHJldmlvdXNOb2RlKGVjKV07Ci0gICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKWRldGFjaAotewot
ICAgIFtzZWxmIF9ub2RlSXRlcmF0b3JdLT5kZXRhY2goKTsKLX0KLQotQGVuZAotCi1AaW1wbGVt
ZW50YXRpb24gRE9NTm9kZUl0ZXJhdG9yKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NTm9kZUl0
ZXJhdG9yICopX25vZGVJdGVyYXRvcldpdGg6KE5vZGVJdGVyYXRvciAqKWltcGwgZmlsdGVyOihp
ZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1
cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNl
ID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAg
IHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAg
IHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhOb2RlSXRlcmF0b3I6aW1wbCBmaWx0ZXI6
ZmlsdGVyXSBhdXRvcmVsZWFzZV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTVRy
ZWVXYWxrZXIKLQotLSAoaWQpX2luaXRXaXRoVHJlZVdhbGtlcjooVHJlZVdhbGtlciAqKWltcGwg
ZmlsdGVyOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgQVNTRVJUKGltcGwpOwot
Ci0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJ
bnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNl
bGYsIGltcGwpOwotICAgIG1fZmlsdGVyID0gW2ZpbHRlciByZXRhaW5dOwotICAgIHJldHVybiBz
ZWxmOwotfQotCi0tIChUcmVlV2Fsa2VyICopX3RyZWVXYWxrZXIKLXsKLSAgICByZXR1cm4gRE9N
X2Nhc3Q8VHJlZVdhbGtlciAqPihfaW50ZXJuYWwpOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsK
LSAgICBpZiAobV9maWx0ZXIpCi0gICAgICAgIFttX2ZpbHRlciByZWxlYXNlXTsKLSAgICBpZiAo
X2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PFRyZWVXYWxrZXIgKj4oX2ludGVybmFsKS0+
ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFs
aXplCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxUcmVlV2Fsa2Vy
ICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19
Ci0KLS0gKERPTU5vZGUgKilyb290Ci17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpb
c2VsZiBfdHJlZVdhbGtlcl0tPnJvb3QoKV07Ci19Ci0KLS0gKHVuc2lnbmVkKXdoYXRUb1Nob3cK
LXsKLSAgICByZXR1cm4gW3NlbGYgX3RyZWVXYWxrZXJdLT53aGF0VG9TaG93KCk7Ci19Ci0KLS0g
KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIKLXsKLSAgICBpZiAobV9maWx0ZXIpCi0gICAgICAg
IC8vIFRoaXMgdHJlZSB3YWxrZXIgd2FzIGNyZWF0ZWQgZnJvbSB0aGUgb2JqYyBzaWRlCi0gICAg
ICAgIHJldHVybiBbW21fZmlsdGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotCi0gICAgLy8gVGhp
cyB0cmVlIHdhbGtlciB3YXMgY3JlYXRlZCBmcm9tIHRoZSBjKysgc2lkZQotICAgIHJldHVybiBb
RE9NTm9kZUZpbHRlciBfbm9kZUZpbHRlcldpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5maWx0ZXIo
KV07Ci19Ci0KLS0gKEJPT0wpZXhwYW5kRW50aXR5UmVmZXJlbmNlcwotewotICAgIHJldHVybiBb
c2VsZiBfdHJlZVdhbGtlcl0tPmV4cGFuZEVudGl0eVJlZmVyZW5jZXMoKTsKLX0KLQotLSAoRE9N
Tm9kZSAqKWN1cnJlbnROb2RlCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2Vs
ZiBfdHJlZVdhbGtlcl0tPmN1cnJlbnROb2RlKCldOwotfQotCi0tICh2b2lkKXNldEN1cnJlbnRO
b2RlOihET01Ob2RlICopY3VycmVudE5vZGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBbc2VsZiBfdHJlZVdhbGtlcl0tPnNldEN1cnJlbnROb2RlKFtjdXJyZW50Tm9kZSBfbm9k
ZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tIChET01Ob2RlICopcGFy
ZW50Tm9kZQotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxr
ZXJdLT5wYXJlbnROb2RlKCldOwotfQotCi0tIChET01Ob2RlICopZmlyc3RDaGlsZAotewotICAg
IHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5maXJzdENoaWxk
KCldOwotfQotCi0tIChET01Ob2RlICopbGFzdENoaWxkCi17Ci0gICAgcmV0dXJuIFtET01Ob2Rl
IF9ub2RlV2l0aDpbc2VsZiBfdHJlZVdhbGtlcl0tPmxhc3RDaGlsZCgpXTsKLX0KLQotLSAoRE9N
Tm9kZSAqKXByZXZpb3VzU2libGluZwotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6
W3NlbGYgX3RyZWVXYWxrZXJdLT5wcmV2aW91c1NpYmxpbmcoKV07Ci19Ci0KLS0gKERPTU5vZGUg
KiluZXh0U2libGluZwotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3Ry
ZWVXYWxrZXJdLT5uZXh0U2libGluZygpXTsKLX0KLQotLSAoRE9NTm9kZSAqKXByZXZpb3VzTm9k
ZQotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5w
cmV2aW91c05vZGUoKV07Ci19Ci0KLS0gKERPTU5vZGUgKiluZXh0Tm9kZQotewotICAgIHJldHVy
biBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5uZXh0Tm9kZSgpXTsKLX0K
LQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NVHJlZVdhbGtlciAoV2ViQ29yZUludGVybmFs
KQotCi0rIChET01UcmVlV2Fsa2VyICopX3RyZWVXYWxrZXJXaXRoOihUcmVlV2Fsa2VyICopaW1w
bCBmaWx0ZXI6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIKLXsKLSAgICBpZiAoIWltcGwpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAgY2Fj
aGVkSW5zdGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0YW5j
ZSkKLSAgICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07
Ci0gICAgCi0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aFRyZWVXYWxrZXI6aW1w
bCBmaWx0ZXI6ZmlsdGVyXSBhdXRvcmVsZWFzZV07Ci19Ci0KLUBlbmQKLQotY2xhc3MgT2JqQ05v
ZGVGaWx0ZXJDb25kaXRpb24gOiBwdWJsaWMgTm9kZUZpbHRlckNvbmRpdGlvbiAKLXsKLXB1Ymxp
YzoKLSAgICBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihpZCA8RE9NTm9kZUZpbHRlcj4pOwotICAg
IHZpcnR1YWwgfk9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKCk7Ci0gICAgdmlydHVhbCBzaG9ydCBh
Y2NlcHROb2RlKE5vZGUqKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBPYmpDTm9kZUZpbHRlckNv
bmRpdGlvbihjb25zdCBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbiAmKTsKLSAgICBPYmpDTm9kZUZp
bHRlckNvbmRpdGlvbiAmb3BlcmF0b3I9KGNvbnN0IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uICYp
OwotCi0gICAgaWQgPERPTU5vZGVGaWx0ZXI+IG1fZmlsdGVyOwotfTsKLQotT2JqQ05vZGVGaWx0
ZXJDb25kaXRpb246Ok9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKGlkIDxET01Ob2RlRmlsdGVyPiBm
aWx0ZXIpCi0gICAgOiBtX2ZpbHRlcihmaWx0ZXIpCi17Ci0gICAgQVNTRVJUKG1fZmlsdGVyKTsK
LSAgICBDRlJldGFpbihtX2ZpbHRlcik7Ci19Ci0KLU9iakNOb2RlRmlsdGVyQ29uZGl0aW9uOjp+
T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oKQotewotICAgIENGUmVsZWFzZShtX2ZpbHRlcik7Ci19
Ci0KLXNob3J0IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2RlKE5vZGUqIG5vZGUp
IGNvbnN0Ci17Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gTm9kZUZpbHRlcjo6RklM
VEVSX1JFSkVDVDsKLSAgICByZXR1cm4gW21fZmlsdGVyIGFjY2VwdE5vZGU6W0RPTU5vZGUgX25v
ZGVXaXRoOm5vZGVdXTsKLX0KLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChET01Eb2N1
bWVudFRyYXZlcnNhbCkKLQotLSAoRE9NTm9kZUl0ZXJhdG9yICopY3JlYXRlTm9kZUl0ZXJhdG9y
OihET01Ob2RlICopcm9vdCA6KHVuc2lnbmVkKXdoYXRUb1Nob3cgOihpZCA8RE9NTm9kZUZpbHRl
cj4pZmlsdGVyIDooQk9PTClleHBhbmRFbnRpdHlSZWZlcmVuY2VzCi17Ci0gICAgUmVmUHRyPE5v
ZGVGaWx0ZXI+IGNwcEZpbHRlcjsKLSAgICBpZiAoZmlsdGVyKQotICAgICAgICBjcHBGaWx0ZXIg
PSBuZXcgTm9kZUZpbHRlcihuZXcgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oZmlsdGVyKSk7Ci0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPE5vZGVJdGVyYXRvcj4gaW1wbCA9
IFtzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZU5vZGVJdGVyYXRvcihbcm9vdCBfbm9kZV0sIHdoYXRU
b1Nob3csIGNwcEZpbHRlciwgZXhwYW5kRW50aXR5UmVmZXJlbmNlcywgZWMpOwotICAgIHJhaXNl
T25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIFtET01Ob2RlSXRlcmF0b3IgX25vZGVJdGVyYXRv
cldpdGg6aW1wbC5nZXQoKSBmaWx0ZXI6ZmlsdGVyXTsKLX0KLQotLSAoRE9NVHJlZVdhbGtlciAq
KWNyZWF0ZVRyZWVXYWxrZXI6KERPTU5vZGUgKilyb290IDoodW5zaWduZWQpd2hhdFRvU2hvdyA6
KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIgOihCT09MKWV4cGFuZEVudGl0eVJlZmVyZW5jZXMK
LXsKLSAgICBSZWZQdHI8Tm9kZUZpbHRlcj4gY3BwRmlsdGVyOwotICAgIGlmIChmaWx0ZXIpCi0g
ICAgICAgIGNwcEZpbHRlciA9IG5ldyBOb2RlRmlsdGVyKG5ldyBPYmpDTm9kZUZpbHRlckNvbmRp
dGlvbihmaWx0ZXIpKTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8VHJl
ZVdhbGtlcj4gaW1wbCA9IFtzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVRyZWVXYWxrZXIoW3Jvb3Qg
X25vZGVdLCB3aGF0VG9TaG93LCBjcHBGaWx0ZXIsIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMsIGVj
KTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBbRE9NVHJlZVdhbGtlciBf
dHJlZVdhbGtlcldpdGg6aW1wbC5nZXQoKSBmaWx0ZXI6ZmlsdGVyXTsKLX0KLQotQGVuZAotCi1P
YmpDRXZlbnRMaXN0ZW5lciogT2JqQ0V2ZW50TGlzdGVuZXI6OmZpbmQoaWQgPERPTUV2ZW50TGlz
dGVuZXI+IGxpc3RlbmVyKQotewotICAgIGlmIChMaXN0ZW5lck1hcCogbWFwID0gbGlzdGVuZXJN
YXApCi0gICAgICAgIHJldHVybiBtYXAtPmdldChsaXN0ZW5lcik7Ci0gICAgcmV0dXJuIE5VTEw7
Ci19Ci0KLU9iakNFdmVudExpc3RlbmVyICpPYmpDRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGlkIDxE
T01FdmVudExpc3RlbmVyPiBsaXN0ZW5lcikKLXsKLSAgICBPYmpDRXZlbnRMaXN0ZW5lciAqd3Jh
cHBlciA9IGZpbmQobGlzdGVuZXIpOwotICAgIGlmICghd3JhcHBlcikKLSAgICAgICAgd3JhcHBl
ciA9IG5ldyBPYmpDRXZlbnRMaXN0ZW5lcihsaXN0ZW5lcik7Ci0gICAgd3JhcHBlci0+cmVmKCk7
Ci0gICAgcmV0dXJuIHdyYXBwZXI7Ci19Ci0KLU9iakNFdmVudExpc3RlbmVyOjpPYmpDRXZlbnRM
aXN0ZW5lcihpZCA8RE9NRXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpCi0gICAgOiBtX2xpc3RlbmVy
KFtsaXN0ZW5lciByZXRhaW5dKQotewotICAgIExpc3RlbmVyTWFwKiBtYXAgPSBsaXN0ZW5lck1h
cDsKLSAgICBpZiAoIW1hcCkgewotICAgICAgICBtYXAgPSBuZXcgTGlzdGVuZXJNYXA7Ci0gICAg
ICAgIGxpc3RlbmVyTWFwID0gbWFwOwotICAgIH0KLSAgICBtYXAtPnNldChsaXN0ZW5lciwgdGhp
cyk7Ci19Ci0KLU9iakNFdmVudExpc3RlbmVyOjp+T2JqQ0V2ZW50TGlzdGVuZXIoKQotewotICAg
IGxpc3RlbmVyTWFwLT5yZW1vdmUobV9saXN0ZW5lcik7Ci0gICAgW21fbGlzdGVuZXIgcmVsZWFz
ZV07Ci19Ci0KLXZvaWQgT2JqQ0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KEV2ZW50ICpldmVu
dCwgYm9vbCkKLXsKLSAgICBbbV9saXN0ZW5lciBoYW5kbGVFdmVudDpbRE9NRXZlbnQgX2V2ZW50
V2l0aDpldmVudF1dOwotfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5vZGVMaXN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5vZGVMaXN0LmgJKHJl
dmlzaW9uIDE1OTU5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5vZGVMaXN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyMTggKzI0LDExIEBACiAgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKICAqLwogCi0jaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdC5oPgorI2ltcG9y
dCA8V2ViQ29yZS9ET01PYmplY3QuaD4KIAotQGNsYXNzIERPTURvY3VtZW50OyAKLUBjbGFzcyBE
T01Eb2N1bWVudFR5cGU7Ci1AY2xhc3MgRE9NRWxlbWVudDsKLUBjbGFzcyBET01OYW1lZE5vZGVN
YXA7Ci1AY2xhc3MgRE9NTm9kZUxpc3Q7Ci0KLXR5cGVkZWYgc3RydWN0IERPTU9iamVjdEludGVy
bmFsIERPTU9iamVjdEludGVybmFsOwotCi1AaW50ZXJmYWNlIERPTU9iamVjdCA6IFdlYlNjcmlw
dE9iamVjdCA8TlNDb3B5aW5nPgotewotICAgIERPTU9iamVjdEludGVybmFsICpfaW50ZXJuYWw7
Ci19Ci1AZW5kCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIERPTVRpbWVTdGFtcDsKLQot
ZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgRE9NRXhjZXB0aW9uOwotCi1lbnVtIHsKLSAgICAvLwot
ICAgIC8vIERPTSBleGNlcHRpb24gY29kZXMKLSAgICAvLwotICAgIERPTV9JTkRFWF9TSVpFX0VS
UiAgICAgICAgICAgICAgICA9IDEsCi0gICAgRE9NX0RPTVNUUklOR19TSVpFX0VSUiAgICAgICAg
ICAgID0gMiwKLSAgICBET01fSElFUkFSQ0hZX1JFUVVFU1RfRVJSICAgICAgICAgPSAzLAotICAg
IERPTV9XUk9OR19ET0NVTUVOVF9FUlIgICAgICAgICAgICA9IDQsCi0gICAgRE9NX0lOVkFMSURf
Q0hBUkFDVEVSX0VSUiAgICAgICAgID0gNSwKLSAgICBET01fTk9fREFUQV9BTExPV0VEX0VSUiAg
ICAgICAgICAgPSA2LAotICAgIERPTV9OT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIgICA9IDcs
Ci0gICAgRE9NX05PVF9GT1VORF9FUlIgICAgICAgICAgICAgICAgID0gOCwKLSAgICBET01fTk9U
X1NVUFBPUlRFRF9FUlIgICAgICAgICAgICAgPSA5LAotICAgIERPTV9JTlVTRV9BVFRSSUJVVEVf
RVJSICAgICAgICAgICA9IDEwLAotICAgIERPTV9JTlZBTElEX1NUQVRFX0VSUiAgICAgICAgICAg
ICA9IDExLAotICAgIERPTV9TWU5UQVhfRVJSICAgICAgICAgICAgICAgICAgICA9IDEyLAotICAg
IERPTV9JTlZBTElEX01PRElGSUNBVElPTl9FUlIgICAgICA9IDEzLAotICAgIERPTV9OQU1FU1BB
Q0VfRVJSICAgICAgICAgICAgICAgICA9IDE0LAotICAgIERPTV9JTlZBTElEX0FDQ0VTU19FUlIg
ICAgICAgICAgICA9IDE1Ci19OwotCi1AaW50ZXJmYWNlIERPTUltcGxlbWVudGF0aW9uIDogRE9N
T2JqZWN0Ci0tIChCT09MKWhhc0ZlYXR1cmU6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5n
ICopdmVyc2lvbjsKLS0gKERPTURvY3VtZW50VHlwZSAqKWNyZWF0ZURvY3VtZW50VHlwZTooTlNT
dHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKilwdWJsaWNJZCA6KE5TU3RyaW5nICop
c3lzdGVtSWQ7Ci0tIChET01Eb2N1bWVudCAqKWNyZWF0ZURvY3VtZW50OihOU1N0cmluZyAqKW5h
bWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KERPTURvY3VtZW50VHlwZSAq
KWRvY3R5cGU7Ci1AZW5kCi0KLWVudW0gewotICAgIC8vCi0gICAgLy8gRE9NIG5vZGUgdHlwZXMK
LSAgICAvLwotICAgIERPTV9FTEVNRU5UX05PREUgICAgICAgICAgICAgICAgICA9IDEsCi0gICAg
RE9NX0FUVFJJQlVURV9OT0RFICAgICAgICAgICAgICAgID0gMiwKLSAgICBET01fVEVYVF9OT0RF
ICAgICAgICAgICAgICAgICAgICAgPSAzLAotICAgIERPTV9DREFUQV9TRUNUSU9OX05PREUgICAg
ICAgICAgICA9IDQsCi0gICAgRE9NX0VOVElUWV9SRUZFUkVOQ0VfTk9ERSAgICAgICAgID0gNSwK
LSAgICBET01fRU5USVRZX05PREUgICAgICAgICAgICAgICAgICAgPSA2LAotICAgIERPTV9QUk9D
RVNTSU5HX0lOU1RSVUNUSU9OX05PREUgICA9IDcsCi0gICAgRE9NX0NPTU1FTlRfTk9ERSAgICAg
ICAgICAgICAgICAgID0gOCwKLSAgICBET01fRE9DVU1FTlRfTk9ERSAgICAgICAgICAgICAgICAg
PSA5LAotICAgIERPTV9ET0NVTUVOVF9UWVBFX05PREUgICAgICAgICAgICA9IDEwLAotICAgIERP
TV9ET0NVTUVOVF9GUkFHTUVOVF9OT0RFICAgICAgICA9IDExLAotICAgIERPTV9OT1RBVElPTl9O
T0RFICAgICAgICAgICAgICAgICA9IDEyCi19OwotCi1AaW50ZXJmYWNlIERPTU5vZGUgOiBET01P
YmplY3QKLS0gKE5TU3RyaW5nICopbm9kZU5hbWU7Ci0tIChOU1N0cmluZyAqKW5vZGVWYWx1ZTsK
LS0gKHZvaWQpc2V0Tm9kZVZhbHVlOihOU1N0cmluZyAqKXN0cmluZzsKLS0gKHVuc2lnbmVkIHNo
b3J0KW5vZGVUeXBlOwotLSAoRE9NTm9kZSAqKXBhcmVudE5vZGU7Ci0tIChET01Ob2RlTGlzdCAq
KWNoaWxkTm9kZXM7Ci0tIChET01Ob2RlICopZmlyc3RDaGlsZDsKLS0gKERPTU5vZGUgKilsYXN0
Q2hpbGQ7Ci0tIChET01Ob2RlICopcHJldmlvdXNTaWJsaW5nOwotLSAoRE9NTm9kZSAqKW5leHRT
aWJsaW5nOwotLSAoRE9NTmFtZWROb2RlTWFwICopYXR0cmlidXRlczsKLS0gKERPTURvY3VtZW50
ICopb3duZXJEb2N1bWVudDsKLS0gKERPTU5vZGUgKilpbnNlcnRCZWZvcmU6KERPTU5vZGUgKilu
ZXdDaGlsZCA6KERPTU5vZGUgKilyZWZDaGlsZDsKLS0gKERPTU5vZGUgKilyZXBsYWNlQ2hpbGQ6
KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilvbGRDaGlsZDsKLS0gKERPTU5vZGUgKily
ZW1vdmVDaGlsZDooRE9NTm9kZSAqKW9sZENoaWxkOwotLSAoRE9NTm9kZSAqKWFwcGVuZENoaWxk
OihET01Ob2RlICopbmV3Q2hpbGQ7Ci0tIChCT09MKWhhc0NoaWxkTm9kZXM7Ci0tIChET01Ob2Rl
ICopY2xvbmVOb2RlOihCT09MKWRlZXA7Ci0tICh2b2lkKW5vcm1hbGl6ZTsKLS0gKEJPT0wpaXNT
dXBwb3J0ZWQ6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbjsKLS0gKE5T
U3RyaW5nICopbmFtZXNwYWNlVVJJOwotLSAoTlNTdHJpbmcgKilwcmVmaXg7Ci0tICh2b2lkKXNl
dFByZWZpeDooTlNTdHJpbmcgKilwcmVmaXg7Ci0tIChOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0g
KEJPT0wpaGFzQXR0cmlidXRlczsKLS0gKEJPT0wpaXNTYW1lTm9kZTooRE9NTm9kZSAqKW90aGVy
OwotLSAoQk9PTClpc0VxdWFsTm9kZTooRE9NTm9kZSAqKW90aGVyOwotLSAoTlNTdHJpbmcgKil0
ZXh0Q29udGVudDsKLS0gKHZvaWQpc2V0VGV4dENvbnRlbnQ6KE5TU3RyaW5nICopdGV4dDsKLUBl
bmQKK0BjbGFzcyBET01Ob2RlOwogCiBAaW50ZXJmYWNlIERPTU5vZGVMaXN0IDogRE9NT2JqZWN0
CiAtIChET01Ob2RlICopaXRlbToodW5zaWduZWQpaW5kZXg7CiAtICh1bnNpZ25lZClsZW5ndGg7
CiBAZW5kCi0KLUBpbnRlcmZhY2UgRE9NTmFtZWROb2RlTWFwIDogRE9NT2JqZWN0Ci0tIChET01O
b2RlICopZ2V0TmFtZWRJdGVtOihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01Ob2RlICopc2V0TmFt
ZWRJdGVtOihET01Ob2RlICopYXJnOwotLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbTooTlNT
dHJpbmcgKiluYW1lOwotLSAoRE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4OwotLSAodW5z
aWduZWQpbGVuZ3RoOwotLSAoRE9NTm9kZSAqKWdldE5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5h
bWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAoRE9NTm9kZSAqKXNldE5hbWVk
SXRlbU5TOihET01Ob2RlICopYXJnOwotLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbU5TOihO
U1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotQGVuZAotCi1A
aW50ZXJmYWNlIERPTUNoYXJhY3RlckRhdGEgOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKWRhdGE7
Ci0tICh2b2lkKXNldERhdGE6KE5TU3RyaW5nICopZGF0YTsKLS0gKHVuc2lnbmVkKWxlbmd0aDsK
LS0gKE5TU3RyaW5nICopc3Vic3RyaW5nRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQp
Y291bnQ7Ci0tICh2b2lkKWFwcGVuZERhdGE6KE5TU3RyaW5nICopYXJnOwotLSAodm9pZClpbnNl
cnREYXRhOih1bnNpZ25lZClvZmZzZXQgOihOU1N0cmluZyAqKWFyZzsKLS0gKHZvaWQpZGVsZXRl
RGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpIGNvdW50OwotLSAodm9pZClyZXBsYWNl
RGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpY291bnQgOihOU1N0cmluZyAqKWFyZzsK
LUBlbmQKLQotQGludGVyZmFjZSBET01BdHRyIDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKiluYW1l
OwotLSAoQk9PTClzcGVjaWZpZWQ7Ci0tIChOU1N0cmluZyAqKXZhbHVlOwotLSAodm9pZClzZXRW
YWx1ZTooTlNTdHJpbmcgKil2YWx1ZTsKLS0gKERPTUVsZW1lbnQgKilvd25lckVsZW1lbnQ7Ci1A
ZW5kCi0KLUBpbnRlcmZhY2UgRE9NRWxlbWVudCA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopdGFn
TmFtZTsKLS0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWU7Ci0tICh2
b2lkKXNldEF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lIDooTlNTdHJpbmcgKil2YWx1ZTsKLS0g
KHZvaWQpcmVtb3ZlQXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01BdHRyICopZ2V0
QXR0cmlidXRlTm9kZTooTlNTdHJpbmcgKiluYW1lOwotLSAoRE9NQXR0ciAqKXNldEF0dHJpYnV0
ZU5vZGU6KERPTUF0dHIgKiluZXdBdHRyOwotLSAoRE9NQXR0ciAqKXJlbW92ZUF0dHJpYnV0ZU5v
ZGU6KERPTUF0dHIgKilvbGRBdHRyOwotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFn
TmFtZTooTlNTdHJpbmcgKiluYW1lOwotLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1dGVOUzooTlNT
dHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKHZvaWQpc2V0
QXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZp
ZWROYW1lIDooTlNTdHJpbmcgKil2YWx1ZTsKLS0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlTlM6KE5T
U3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tIChET01BdHRy
ICopZ2V0QXR0cmlidXRlTm9kZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5n
ICopbG9jYWxOYW1lOwotLSAoRE9NQXR0ciAqKXNldEF0dHJpYnV0ZU5vZGVOUzooRE9NQXR0ciAq
KW5ld0F0dHI7Ci0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3Ry
aW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tIChCT09MKWhhc0F0
dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lOwotLSAoQk9PTCloYXNBdHRyaWJ1dGVOUzooTlNTdHJp
bmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKHZvaWQpZm9jdXM7
Ci0tICh2b2lkKWJsdXI7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NVGV4dCA6IERPTUNoYXJhY3Rl
ckRhdGEKLS0gKERPTVRleHQgKilzcGxpdFRleHQ6KHVuc2lnbmVkKW9mZnNldDsKLUBlbmQKLQot
QGludGVyZmFjZSBET01Db21tZW50IDogRE9NQ2hhcmFjdGVyRGF0YQotQGVuZAotCi1AaW50ZXJm
YWNlIERPTUNEQVRBU2VjdGlvbiA6IERPTVRleHQKLUBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1
bWVudFR5cGUgOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKW5hbWU7Ci0tIChET01OYW1lZE5vZGVN
YXAgKillbnRpdGllczsKLS0gKERPTU5hbWVkTm9kZU1hcCAqKW5vdGF0aW9uczsKLS0gKE5TU3Ry
aW5nICopcHVibGljSWQ7Ci0tIChOU1N0cmluZyAqKXN5c3RlbUlkOwotLSAoTlNTdHJpbmcgKilp
bnRlcm5hbFN1YnNldDsKLUBlbmQKLQotQGludGVyZmFjZSBET01Ob3RhdGlvbiA6IERPTU5vZGUK
LS0gKE5TU3RyaW5nICopcHVibGljSWQ7Ci0tIChOU1N0cmluZyAqKXN5c3RlbUlkOwotQGVuZAot
Ci1AaW50ZXJmYWNlIERPTUVudGl0eSA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopcHVibGljSWQ7
Ci0tIChOU1N0cmluZyAqKXN5c3RlbUlkOwotLSAoTlNTdHJpbmcgKilub3RhdGlvbk5hbWU7Ci1A
ZW5kCi0KLUBpbnRlcmZhY2UgRE9NRW50aXR5UmVmZXJlbmNlIDogRE9NTm9kZQotQGVuZAotCi1A
aW50ZXJmYWNlIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiA6IERPTU5vZGUKLS0gKE5TU3RyaW5n
ICopdGFyZ2V0OwotLSAoTlNTdHJpbmcgKilkYXRhOwotLSAodm9pZClzZXREYXRhOihOU1N0cmlu
ZyAqKWRhdGE7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRG9jdW1lbnRGcmFnbWVudCA6IERPTU5v
ZGUKLUBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudCA6IERPTU5vZGUKLS0gKERPTURvY3Vt
ZW50VHlwZSAqKWRvY3R5cGU7Ci0tIChET01JbXBsZW1lbnRhdGlvbiAqKWltcGxlbWVudGF0aW9u
OwotLSAoRE9NRWxlbWVudCAqKWRvY3VtZW50RWxlbWVudDsKLS0gKERPTUVsZW1lbnQgKiljcmVh
dGVFbGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWU7Ci0tIChET01Eb2N1bWVudEZyYWdtZW50ICop
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudDsKLS0gKERPTVRleHQgKiljcmVhdGVUZXh0Tm9kZTooTlNT
dHJpbmcgKilkYXRhOwotLSAoRE9NQ29tbWVudCAqKWNyZWF0ZUNvbW1lbnQ6KE5TU3RyaW5nICop
ZGF0YTsKLS0gKERPTUNEQVRBU2VjdGlvbiAqKWNyZWF0ZUNEQVRBU2VjdGlvbjooTlNTdHJpbmcg
KilkYXRhOwotLSAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICopY3JlYXRlUHJvY2Vzc2luZ0lu
c3RydWN0aW9uOihOU1N0cmluZyAqKXRhcmdldCA6KE5TU3RyaW5nICopZGF0YTsKLS0gKERPTUF0
dHIgKiljcmVhdGVBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTUVudGl0eVJlZmVy
ZW5jZSAqKWNyZWF0ZUVudGl0eVJlZmVyZW5jZTooTlNTdHJpbmcgKiluYW1lOwotLSAoRE9NTm9k
ZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZTooTlNTdHJpbmcgKil0YWduYW1lOwotLSAoRE9N
Tm9kZSAqKWltcG9ydE5vZGU6KERPTU5vZGUgKilpbXBvcnRlZE5vZGUgOihCT09MKWRlZXA7Ci0t
IChET01FbGVtZW50ICopY3JlYXRlRWxlbWVudE5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6
KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZTsKLS0gKERPTUF0dHIgKiljcmVhdGVBdHRyaWJ1dGVO
UzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWU7Ci0t
IChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNw
YWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tIChET01FbGVtZW50ICopZ2V0RWxlbWVu
dEJ5SWQ6KE5TU3RyaW5nICopZWxlbWVudElkOwotLSAoRE9NTm9kZSAqKWFkb3B0Tm9kZTooRE9N
Tm9kZSAqKXNvdXJjZTsKLUBlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2Rl
TGlzdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZUxpc3Qu
bW0JKHJldmlzaW9uIDE1OTU5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5vZGVMaXN0
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNC0yMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDA2IEphbWVzIEcuIFNwZXRoIChzcGV0aEBlbmQuY29tKQorICogQ29w
eXJpZ2h0IChDKSAyMDA2IEphbWVzIEcuIFNwZXRoIDxzcGV0aEBlbmQuY29tPgorICogQ29weXJp
Z2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwyMzQ4ICsyNiw0MSBAQAogICovCiAKICNp
bXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRE9NLmgiCisjaW1wb3J0ICJET01Ob2RlTGlzdC5o
IgogCi0jaW1wb3J0ICJDREFUQVNlY3Rpb24uaCIKLSNpbXBvcnQgImNzc2hlbHBlci5oIgotI2lt
cG9ydCAiQ1NTU3R5bGVTaGVldC5oIgotI2ltcG9ydCAiQ29tbWVudC5oIgotI2ltcG9ydCAiRE9N
RXZlbnRzSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTUltcGxlbWVudGF0aW9uRnJvbnQuaCIKICNp
bXBvcnQgIkRPTUludGVybmFsLmgiCi0jaW1wb3J0ICJET01Qcml2YXRlLmgiCi0jaW1wb3J0ICJE
b2N1bWVudC5oIgotI2ltcG9ydCAiRG9jdW1lbnRGcmFnbWVudC5oIgotI2ltcG9ydCAiRG9jdW1l
bnRUeXBlLmgiCi0jaW1wb3J0ICJFbnRpdHkuaCIKLSNpbXBvcnQgIkVudGl0eVJlZmVyZW5jZS5o
IgotI2ltcG9ydCAiRXZlbnQuaCIKLSNpbXBvcnQgIkV2ZW50TGlzdGVuZXIuaCIKLSNpbXBvcnQg
IkZvdW5kYXRpb25FeHRyYXMuaCIKLSNpbXBvcnQgIkZyYW1lTWFjLmgiCi0jaW1wb3J0ICJIVE1M
RG9jdW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxOYW1lcy5oIgotI2ltcG9ydCAiSFRNTFBsdWdJbkVs
ZW1lbnQuaCIKLSNpbXBvcnQgIk5vZGVGaWx0ZXIuaCIKLSNpbXBvcnQgIk5vZGVGaWx0ZXJDb25k
aXRpb24uaCIKLSNpbXBvcnQgIk5vZGVJdGVyYXRvci5oIgogI2ltcG9ydCAiTm9kZUxpc3QuaCIK
LSNpbXBvcnQgIk5vdGF0aW9uLmgiCi0jaW1wb3J0ICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIK
LSNpbXBvcnQgIlF1YWxpZmllZE5hbWUuaCIKLSNpbXBvcnQgIlJhbmdlLmgiCi0jaW1wb3J0ICJS
ZW5kZXJJbWFnZS5oIgotI2ltcG9ydCAiVHJlZVdhbGtlci5oIgotI2ltcG9ydCAiV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oIgotI2ltcG9ydCA8b2JqYy9vYmpjLWNsYXNzLmg+CisjaW1wb3J0ICJE
T01Ob2RlLmgiCiAKLXVzaW5nIFdlYkNvcmU6OkF0b21pY1N0cmluZzsKLXVzaW5nIFdlYkNvcmU6
OkF0b21pY1N0cmluZ0ltcGw7Ci11c2luZyBXZWJDb3JlOjpBdHRyOwotdXNpbmcgV2ViQ29yZTo6
Q2hhcmFjdGVyRGF0YTsKLXVzaW5nIFdlYkNvcmU6OkRlcHJlY2F0ZWRWYWx1ZUxpc3Q7Ci11c2lu
ZyBXZWJDb3JlOjpEb2N1bWVudDsKLXVzaW5nIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ7Ci11
c2luZyBXZWJDb3JlOjpEb2N1bWVudFR5cGU7Ci11c2luZyBXZWJDb3JlOjpET01JbXBsZW1lbnRh
dGlvbkZyb250OwotdXNpbmcgV2ViQ29yZTo6RWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6OkVudGl0
eTsKLXVzaW5nIFdlYkNvcmU6OkV2ZW50OwotdXNpbmcgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcjsK
LXVzaW5nIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGU7Ci11c2luZyBXZWJDb3JlOjpIVE1MRG9jdW1l
bnQ7Ci11c2luZyBXZWJDb3JlOjpIVE1MRWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6OkZyYW1lTWFj
OwotdXNpbmcgV2ViQ29yZTo6SW50UmVjdDsKLXVzaW5nIFdlYkNvcmU6OktVUkw7Ci11c2luZyBX
ZWJDb3JlOjpOYW1lZE5vZGVNYXA7Ci11c2luZyBXZWJDb3JlOjpOb2RlOwotdXNpbmcgV2ViQ29y
ZTo6Tm9kZUZpbHRlcjsKLXVzaW5nIFdlYkNvcmU6Ok5vZGVGaWx0ZXJDb25kaXRpb247Ci11c2lu
ZyBXZWJDb3JlOjpOb2RlSXRlcmF0b3I7Ci11c2luZyBXZWJDb3JlOjpOb2RlTGlzdDsKLXVzaW5n
IFdlYkNvcmU6Ok5vdGF0aW9uOwotdXNpbmcgV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9u
OwotdXNpbmcgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTsKLXVzaW5nIFdlYkNvcmU6OlJhbmdlOwot
dXNpbmcgV2ViQ29yZTo6UmVuZGVySW1hZ2U7Ci11c2luZyBXZWJDb3JlOjpSZW5kZXJPYmplY3Q7
Ci11c2luZyBXZWJDb3JlOjpTdHJpbmc7Ci11c2luZyBXZWJDb3JlOjpUZXh0OwotdXNpbmcgV2Vi
Q29yZTo6VHJlZVdhbGtlcjsKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkhUTUxOYW1lczsK
LQotQGludGVyZmFjZSBET01BdHRyIChXZWJDb3JlSW50ZXJuYWwpCi0rIChET01BdHRyICopX2F0
dHJXaXRoOihBdHRyICopaW1wbDsKLS0gKEF0dHIgKilfYXR0cjsKLUBlbmQKLQotQGludGVyZmFj
ZSBET01Eb2N1bWVudFR5cGUgKFdlYkNvcmVJbnRlcm5hbCkKLS0gKERvY3VtZW50VHlwZSAqKV9k
b2N1bWVudFR5cGU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSW1wbGVtZW50YXRpb24gKFdlYkNv
cmVJbnRlcm5hbCkKLSsgKERPTUltcGxlbWVudGF0aW9uICopX0RPTUltcGxlbWVudGF0aW9uV2l0
aDooRE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKWltcGw7Ci0tIChET01JbXBsZW1lbnRhdGlvbkZy
b250ICopX0RPTUltcGxlbWVudGF0aW9uOwotQGVuZAotCi1jbGFzcyBPYmpDRXZlbnRMaXN0ZW5l
ciA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgT2JqQ0V2ZW50
TGlzdGVuZXIgKmZpbmQoaWQgPERPTUV2ZW50TGlzdGVuZXI+KTsKLSAgICBzdGF0aWMgT2JqQ0V2
ZW50TGlzdGVuZXIgKmNyZWF0ZShpZCA8RE9NRXZlbnRMaXN0ZW5lcj4pOwotCi1wcml2YXRlOgot
ICAgIE9iakNFdmVudExpc3RlbmVyKGlkIDxET01FdmVudExpc3RlbmVyPik7Ci0gICAgdmlydHVh
bCB+T2JqQ0V2ZW50TGlzdGVuZXIoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChF
dmVudCAqLCBib29sIGlzV2luZG93RXZlbnQpOwotCi0gICAgaWQgPERPTUV2ZW50TGlzdGVuZXI+
IG1fbGlzdGVuZXI7Ci19OwotCi10eXBlZGVmIEhhc2hNYXA8aWQsIE9iakNFdmVudExpc3RlbmVy
Kj4gTGlzdGVuZXJNYXA7Ci10eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENsYXNz
PiBPYmpDQ2xhc3NNYXA7Ci0KLXN0YXRpYyBPYmpDQ2xhc3NNYXAqIGVsZW1lbnRDbGFzc01hcDsK
LXN0YXRpYyBMaXN0ZW5lck1hcCogbGlzdGVuZXJNYXA7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0vLyBET01PYmplY3QKLQotQGltcGxlbWVudGF0aW9uIERPTU9iamVj
dAotCi0vLyBQcmV2ZW50IGNyZWF0aW9uIG9mIERPTSBvYmplY3RzIGJ5IGNsaWVudHMgd2hvIGp1
c3QgIltbeHh4IGFsbG9jXSBpbml0XSIuCi0tIChpZClpbml0Ci17Ci0gICAgW05TRXhjZXB0aW9u
IHJhaXNlOk5TR2VuZXJpY0V4Y2VwdGlvbiBmb3JtYXQ6QCIrWyVAIGluaXRdOiBzaG91bGQgbmV2
ZXIgYmUgdXNlZCIsIE5TU3RyaW5nRnJvbUNsYXNzKFtzZWxmIGNsYXNzXSldOwotICAgIFtzZWxm
IHJlbGVhc2VdOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAg
IGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgcmVtb3ZlRE9NV3JhcHBlcihfaW50ZXJuYWwpOwot
ICAgIH0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAg
ICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIHJlbW92ZURPTVdyYXBwZXIoX2ludGVybmFsKTsK
LSAgICB9Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQotLSAoaWQpY29weVdpdGhab25lOihO
U1pvbmUgKil6b25lCi17Ci0gICAgcmV0dXJuIFtzZWxmIHJldGFpbl07Ci19Ci0KLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIERPTU9iamVjdCAoV2ViQ29yZUludGVybmFsKQotCi0tIChpZClfaW5p
dAotewotICAgIHJldHVybiBbc3VwZXIgX2luaXRdOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Ob2RlCi0KLUBpbXBsZW1lbnRhdGlvbiBE
T01Ob2RlCi0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAg
ICAgRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3Vw
ZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAoX2ludGVybmFs
KSB7Ci0gICAgICAgIERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9
Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQotLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgot
ewotICAgIGlmICghX2ludGVybmFsKSB7Ci0gICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIjwlQDogbnVsbD4iLAotICAgICAgICAgICAgW1tzZWxmIGNsYXNzXSBkZXNj
cmlwdGlvbl0sIHNlbGZdOwotICAgIH0KLSAgICBOU1N0cmluZyAqdmFsdWUgPSBbc2VsZiBub2Rl
VmFsdWVdOwotICAgIGlmICh2YWx1ZSkgewotICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCI8JUAgWyVAXTogJXAgJyVAJz4iLAotICAgICAgICAgICAgW1tzZWxmIGNs
YXNzXSBkZXNjcmlwdGlvbl0sIFtzZWxmIG5vZGVOYW1lXSwgX2ludGVybmFsLCB2YWx1ZV07Ci0g
ICAgfQotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQCBbJUBdOiAl
cD4iLAotICAgICAgICBbW3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9uXSwgW3NlbGYgbm9kZU5hbWVd
LCBfaW50ZXJuYWxdOwotfQotCi0tIChOU1N0cmluZyAqKW5vZGVOYW1lCi17Ci0gICAgcmV0dXJu
IFtzZWxmIF9ub2RlXS0+bm9kZU5hbWUoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilub2RlVmFsdWUK
LXsKLSAgICAvLyBEb2N1bWVudGF0aW9uIHNheXMgd2UgY2FuIHJhaXNlIGEgRE9NU1RSSU5HX1NJ
WkVfRVJSLgotICAgIC8vIEhvd2V2ZXIsIHRoZSBsb3dlciBsYXllciBkb2VzIG5vdCByZXBvcnQg
dGhhdCBlcnJvciB1cCB0byB1cy4KLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2RlVmFsdWUo
KTsKLX0KLQotLSAodm9pZClzZXROb2RlVmFsdWU6KE5TU3RyaW5nICopc3RyaW5nCi17Ci0gICAg
QVNTRVJUKHN0cmluZyk7Ci0gICAgCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3Nl
bGYgX25vZGVdLT5zZXROb2RlVmFsdWUoc3RyaW5nLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLX0KLQotLSAodW5zaWduZWQgc2hvcnQpbm9kZVR5cGUKLXsKLSAgICByZXR1cm4gW3Nl
bGYgX25vZGVdLT5ub2RlVHlwZSgpOwotfQotCi0tIChET01Ob2RlICopcGFyZW50Tm9kZQotewot
ICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5wYXJlbnROb2RlKCld
OwotfQotCi0tIChET01Ob2RlTGlzdCAqKWNoaWxkTm9kZXMKLXsKLSAgICByZXR1cm4gW0RPTU5v
ZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX25vZGVdLT5jaGlsZE5vZGVzKCkuZ2V0KCldOwot
fQotCi0tIChET01Ob2RlICopZmlyc3RDaGlsZAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX25vZGVdLT5maXJzdENoaWxkKCldOwotfQotCi0tIChET01Ob2RlICopbGFz
dENoaWxkCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPmxh
c3RDaGlsZCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKXByZXZpb3VzU2libGluZwotewotICAgIHJl
dHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5wcmV2aW91c1NpYmxpbmcoKV07
Ci19Ci0KLS0gKERPTU5vZGUgKiluZXh0U2libGluZwotewotICAgIHJldHVybiBbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX25vZGVdLT5uZXh0U2libGluZygpXTsKLX0KLQotLSAoRE9NTmFtZWRO
b2RlTWFwICopYXR0cmlidXRlcwotewotICAgIC8vIERPTSBsZXZlbCAyIGNvcmUgc3BlY2lmaWNh
dGlvbiBzYXlzOiAKLSAgICAvLyBBIE5hbWVkTm9kZU1hcCBjb250YWluaW5nIHRoZSBhdHRyaWJ1
dGVzIG9mIHRoaXMgbm9kZSAoaWYgaXQgaXMgYW4gRWxlbWVudCkgb3IgbnVsbCBvdGhlcndpc2Uu
Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoRE9NRG9jdW1lbnQgKilvd25lckRvY3VtZW50Ci17
Ci0gICAgcmV0dXJuIFtET01Eb2N1bWVudCBfZG9jdW1lbnRXaXRoOltzZWxmIF9ub2RlXS0+ZG9j
dW1lbnQoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilpbnNlcnRCZWZvcmU6KERPTU5vZGUgKiluZXdD
aGlsZCA6KERPTU5vZGUgKilyZWZDaGlsZAotewotICAgIEFTU0VSVChuZXdDaGlsZCk7Ci0gICAg
QVNTRVJUKHJlZkNoaWxkKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChb
c2VsZiBfbm9kZV0tPmluc2VydEJlZm9yZShbbmV3Q2hpbGQgX25vZGVdLCBbcmVmQ2hpbGQgX25v
ZGVdLCBlYykpCi0gICAgICAgIHJldHVybiBuZXdDaGlsZDsKLSAgICByYWlzZU9uRE9NRXJyb3Io
ZWMpOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKERPTU5vZGUgKilyZXBsYWNlQ2hpbGQ6KERP
TU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilvbGRDaGlsZAotewotICAgIEFTU0VSVChuZXdD
aGlsZCk7Ci0gICAgQVNTRVJUKG9sZENoaWxkKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIGlmIChbc2VsZiBfbm9kZV0tPnJlcGxhY2VDaGlsZChbbmV3Q2hpbGQgX25vZGVdLCBb
b2xkQ2hpbGQgX25vZGVdLCBlYykpCi0gICAgICAgIHJldHVybiBvbGRDaGlsZDsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKERPTU5vZGUgKilyZW1v
dmVDaGlsZDooRE9NTm9kZSAqKW9sZENoaWxkCi17Ci0gICAgQVNTRVJUKG9sZENoaWxkKTsKLQot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChbc2VsZiBfbm9kZV0tPnJlbW92ZUNo
aWxkKFtvbGRDaGlsZCBfbm9kZV0sIGVjKSkKLSAgICAgICAgcmV0dXJuIG9sZENoaWxkOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoRE9NTm9kZSAq
KWFwcGVuZENoaWxkOihET01Ob2RlICopbmV3Q2hpbGQKLXsKLSAgICBBU1NFUlQobmV3Q2hpbGQp
OwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKFtzZWxmIF9ub2RlXS0+YXBw
ZW5kQ2hpbGQoW25ld0NoaWxkIF9ub2RlXSwgZWMpKQotICAgICAgICByZXR1cm4gbmV3Q2hpbGQ7
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChCT09M
KWhhc0NoaWxkTm9kZXMKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5oYXNDaGlsZE5vZGVz
KCk7Ci19Ci0KLS0gKERPTU5vZGUgKiljbG9uZU5vZGU6KEJPT0wpZGVlcAotewotICAgIHJldHVy
biBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5jbG9uZU5vZGUoZGVlcCkuZ2V0KCld
OwotfQotCi0tICh2b2lkKW5vcm1hbGl6ZQotewotICAgIFtzZWxmIF9ub2RlXS0+bm9ybWFsaXpl
KCk7Ci19Ci0KLS0gKEJPT0wpaXNTdXBwb3J0ZWQ6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3Ry
aW5nICopdmVyc2lvbgotewotICAgIEFTU0VSVChmZWF0dXJlKTsKLSAgICBBU1NFUlQodmVyc2lv
bik7Ci0KLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc1N1cHBvcnRlZChmZWF0dXJlLCB2ZXJz
aW9uKTsKLX0KLQotLSAoTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkKLXsKLSAgICByZXR1cm4gW3Nl
bGYgX25vZGVdLT5uYW1lc3BhY2VVUkkoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilwcmVmaXgKLXsK
LSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5wcmVmaXgoKTsKLX0KLQotLSAodm9pZClzZXRQcmVm
aXg6KE5TU3RyaW5nICopcHJlZml4Ci17Ci0gICAgQVNTRVJUKHByZWZpeCk7Ci0KLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBTdHJpbmcgcHJlZml4U3RyKHByZWZpeCk7Ci0gICAgW3Nl
bGYgX25vZGVdLT5zZXRQcmVmaXgocHJlZml4U3RyLmltcGwoKSwgZWMpOwotICAgIHJhaXNlT25E
T01FcnJvcihlYyk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgcmV0dXJu
IFtzZWxmIF9ub2RlXS0+bG9jYWxOYW1lKCk7Ci19Ci0KLS0gKEJPT0wpaGFzQXR0cmlidXRlcwot
ewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmhhc0F0dHJpYnV0ZXMoKTsKLX0KLQotLSAoQk9P
TClpc1NhbWVOb2RlOihET01Ob2RlICopb3RoZXIKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVd
LT5pc1NhbWVOb2RlKFtvdGhlciBfbm9kZV0pOwotfQotCi0tIChCT09MKWlzRXF1YWxOb2RlOihE
T01Ob2RlICopb3RoZXIKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc0VxdWFsTm9kZShb
b3RoZXIgX25vZGVdKTsKLX0KLQotLSAoQk9PTClpc0RlZmF1bHROYW1lc3BhY2U6KE5TU3RyaW5n
ICopbmFtZXNwYWNlVVJJCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aXNEZWZhdWx0TmFt
ZXNwYWNlKG5hbWVzcGFjZVVSSSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbG9va3VwUHJlZml4OihO
U1N0cmluZyAqKW5hbWVzcGFjZVVSSQotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmxvb2t1
cFByZWZpeChuYW1lc3BhY2VVUkkpOwotfQotCi0tIChOU1N0cmluZyAqKWxvb2t1cE5hbWVzcGFj
ZVVSSTooTlNTdHJpbmcgKilwcmVmaXgKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5sb29r
dXBOYW1lc3BhY2VVUkkocHJlZml4KTsKLX0KLQotLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudAot
ewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPnRleHRDb250ZW50KCk7Ci19Ci0KLS0gKHZvaWQp
c2V0VGV4dENvbnRlbnQ6KE5TU3RyaW5nICopdGV4dAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIFtzZWxmIF9ub2RlXS0+c2V0VGV4dENvbnRlbnQodGV4dCwgZWMpOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKE5TUmVjdClib3VuZGluZ0JveAotewotICAgIFdl
YkNvcmU6OlJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBbc2VsZiBfbm9kZV0tPnJlbmRlcmVyKCk7
Ci0gICAgaWYgKHJlbmRlcmVyKQotICAgICAgICByZXR1cm4gcmVuZGVyZXItPmFic29sdXRlQm91
bmRpbmdCb3hSZWN0KCk7Ci0gICAgcmV0dXJuIE5TWmVyb1JlY3Q7Ci19Ci0KLS0gKE5TQXJyYXkg
KilsaW5lQm94UmVjdHMKLXsKLSAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0g
W3NlbGYgX25vZGVdLT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlcikgewotICAgICAgICBO
U011dGFibGVBcnJheSAqcmVzdWx0cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwot
ICAgICAgICBEZXByZWNhdGVkVmFsdWVMaXN0PEludFJlY3Q+IHJlY3RzID0gcmVuZGVyZXItPmxp
bmVCb3hSZWN0cygpOwotICAgICAgICBpZiAoIXJlY3RzLmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgZm9yIChEZXByZWNhdGVkVmFsdWVMaXN0PEludFJlY3Q+OjpDb25zdEl0ZXJhdG9yIGl0ID0g
cmVjdHMuYmVnaW4oKTsgaXQgIT0gcmVjdHMuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICAgICAg
W3Jlc3VsdHMgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6Kml0XV07Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIFtyZXN1bHRzIGF1dG9yZWxlYXNlXTsKLSAgICB9Ci0gICAgcmV0
dXJuIG5pbDsKLX0KLQotQGVuZAotCi1zdGF0aWMgdm9pZCBhZGRFbGVtZW50Q2xhc3MoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnLCBDbGFzcyBvYmpDQ2xhc3MpCi17Ci0gICAgZWxlbWVudENsYXNz
TWFwLT5zZXQodGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgb2JqQ0NsYXNzKTsKLX0KLQotc3RhdGlj
IHZvaWQgY3JlYXRlSFRNTEVsZW1lbnRDbGFzc01hcCgpCi17Ci0gICAgLy8gQ3JlYXRlIHRoZSB0
YWJsZS4KLSAgICBlbGVtZW50Q2xhc3NNYXAgPSBuZXcgT2JqQ0NsYXNzTWFwOwotICAgIAotICAg
IC8vIFBvcHVsYXRlIGl0IHdpdGggSFRNTCBlbGVtZW50IGNsYXNzZXMuCi0gICAgYWRkRWxlbWVu
dENsYXNzKGFUYWcsIFtET01IVE1MQW5jaG9yRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1l
bnRDbGFzcyhhcHBsZXRUYWcsIFtET01IVE1MQXBwbGV0RWxlbWVudCBjbGFzc10pOwotICAgIGFk
ZEVsZW1lbnRDbGFzcyhhcmVhVGFnLCBbRE9NSFRNTEFyZWFFbGVtZW50IGNsYXNzXSk7Ci0gICAg
YWRkRWxlbWVudENsYXNzKGJhc2VUYWcsIFtET01IVE1MQmFzZUVsZW1lbnQgY2xhc3NdKTsKLSAg
ICBhZGRFbGVtZW50Q2xhc3MoYmFzZWZvbnRUYWcsIFtET01IVE1MQmFzZUZvbnRFbGVtZW50IGNs
YXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGJvZHlUYWcsIFtET01IVE1MQm9keUVsZW1lbnQg
Y2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoYnJUYWcsIFtET01IVE1MQlJFbGVtZW50IGNs
YXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGJ1dHRvblRhZywgW0RPTUhUTUxCdXR0b25FbGVt
ZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGNhbnZhc1RhZywgW0RPTUhUTUxJbWFn
ZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoY2FwdGlvblRhZywgW0RPTUhU
TUxUYWJsZUNhcHRpb25FbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGNvbFRh
ZywgW0RPTUhUTUxUYWJsZUNvbEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mo
Y29sZ3JvdXBUYWcsIFtET01IVE1MVGFibGVDb2xFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxl
bWVudENsYXNzKGRpclRhZywgW0RPTUhUTUxEaXJlY3RvcnlFbGVtZW50IGNsYXNzXSk7Ci0gICAg
YWRkRWxlbWVudENsYXNzKGRpdlRhZywgW0RPTUhUTUxEaXZFbGVtZW50IGNsYXNzXSk7Ci0gICAg
YWRkRWxlbWVudENsYXNzKGRsVGFnLCBbRE9NSFRNTERMaXN0RWxlbWVudCBjbGFzc10pOwotICAg
IGFkZEVsZW1lbnRDbGFzcyhmaWVsZHNldFRhZywgW0RPTUhUTUxGaWVsZFNldEVsZW1lbnQgY2xh
c3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoZm9udFRhZywgW0RPTUhUTUxGb250RWxlbWVudCBj
bGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhmb3JtVGFnLCBbRE9NSFRNTEZvcm1FbGVtZW50
IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGZyYW1lVGFnLCBbRE9NSFRNTEZyYW1lRWxl
bWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhmcmFtZXNldFRhZywgW0RPTUhUTUxG
cmFtZVNldEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDFUYWcsIFtET01I
VE1MSGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDJUYWcsIFtE
T01IVE1MSGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDNUYWcs
IFtET01IVE1MSGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDRU
YWcsIFtET01IVE1MSGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mo
aDVUYWcsIFtET01IVE1MSGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xh
c3MoaDZUYWcsIFtET01IVE1MSGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50
Q2xhc3MoaGVhZFRhZywgW0RPTUhUTUxIZWFkRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1l
bnRDbGFzcyhoclRhZywgW0RPTUhUTUxIUkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50
Q2xhc3MoaHRtbFRhZywgW0RPTUhUTUxIdG1sRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1l
bnRDbGFzcyhpZnJhbWVUYWcsIFtET01IVE1MSUZyYW1lRWxlbWVudCBjbGFzc10pOwotICAgIGFk
ZEVsZW1lbnRDbGFzcyhpbWdUYWcsIFtET01IVE1MSW1hZ2VFbGVtZW50IGNsYXNzXSk7Ci0gICAg
YWRkRWxlbWVudENsYXNzKGlucHV0VGFnLCBbRE9NSFRNTElucHV0RWxlbWVudCBjbGFzc10pOwot
ICAgIGFkZEVsZW1lbnRDbGFzcyhpc2luZGV4VGFnLCBbRE9NSFRNTElzSW5kZXhFbGVtZW50IGNs
YXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGxhYmVsVGFnLCBbRE9NSFRNTExhYmVsRWxlbWVu
dCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhsZWdlbmRUYWcsIFtET01IVE1MTGVnZW5k
RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhsaVRhZywgW0RPTUhUTUxMSUVs
ZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MobGlua1RhZywgW0RPTUhUTUxMaW5r
RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhsaXN0aW5nVGFnLCBbRE9NSFRN
TFByZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MobWFwVGFnLCBbRE9NSFRN
TE1hcEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MobWVudVRhZywgW0RPTUhU
TUxNZW51RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhtZXRhVGFnLCBbRE9N
SFRNTE1ldGFFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKG9iamVjdFRhZywg
W0RPTUhUTUxPYmplY3RFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKG9sVGFn
LCBbRE9NSFRNTE9MaXN0RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhvcHRn
cm91cFRhZywgW0RPTUhUTUxPcHRHcm91cEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50
Q2xhc3Mob3B0aW9uVGFnLCBbRE9NSFRNTE9wdGlvbkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRF
bGVtZW50Q2xhc3MocFRhZywgW0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50IGNsYXNzXSk7Ci0gICAg
YWRkRWxlbWVudENsYXNzKHBhcmFtVGFnLCBbRE9NSFRNTFBhcmFtRWxlbWVudCBjbGFzc10pOwot
ICAgIGFkZEVsZW1lbnRDbGFzcyhwcmVUYWcsIFtET01IVE1MUHJlRWxlbWVudCBjbGFzc10pOwot
ICAgIGFkZEVsZW1lbnRDbGFzcyhxVGFnLCBbRE9NSFRNTFF1b3RlRWxlbWVudCBjbGFzc10pOwot
ICAgIGFkZEVsZW1lbnRDbGFzcyhzY3JpcHRUYWcsIFtET01IVE1MU2NyaXB0RWxlbWVudCBjbGFz
c10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhzZWxlY3RUYWcsIFtET01IVE1MU2VsZWN0RWxlbWVu
dCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhzdHlsZVRhZywgW0RPTUhUTUxTdHlsZUVs
ZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModGFibGVUYWcsIFtET01IVE1MVGFi
bGVFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHRib2R5VGFnLCBbRE9NSFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModGRUYWcs
IFtET01IVE1MVGFibGVDZWxsRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh0
ZXh0YXJlYVRhZywgW0RPTUhUTUxUZXh0QXJlYUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVt
ZW50Q2xhc3ModGZvb3RUYWcsIFtET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCBjbGFzc10pOwot
ICAgIGFkZEVsZW1lbnRDbGFzcyh0aGVhZFRhZywgW0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50
IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHRpdGxlVGFnLCBbRE9NSFRNTFRpdGxlRWxl
bWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh0clRhZywgW0RPTUhUTUxUYWJsZVJv
d0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModWxUYWcsIFtET01IVE1MVUxp
c3RFbGVtZW50IGNsYXNzXSk7Ci0KLSAgICAvLyBGSVhNRTogUmVmbGVjdCBtYXJxdWVlIG9uY2Ug
dGhlIEFQSSBoYXMgYmVlbiBkZXRlcm1pbmVkLgotfQotCi1zdGF0aWMgQ2xhc3MgZWxlbWVudENs
YXNzKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKLXsKLSAgICBpZiAoIWVsZW1lbnRDbGFz
c01hcCkKLSAgICAgICAgY3JlYXRlSFRNTEVsZW1lbnRDbGFzc01hcCgpOwotICAgIENsYXNzIG9i
amNDbGFzcyA9IGVsZW1lbnRDbGFzc01hcC0+Z2V0KHRhZ05hbWUuaW1wbCgpKTsKLSAgICBpZiAo
IW9iamNDbGFzcykKLSAgICAgICAgb2JqY0NsYXNzID0gW0RPTUhUTUxFbGVtZW50IGNsYXNzXTsK
LSAgICByZXR1cm4gb2JqY0NsYXNzOwotfQotCi1AaW1wbGVtZW50YXRpb24gRE9NTm9kZSAoV2Vi
Q29yZUludGVybmFsKQotCi0tIChpZClfaW5pdFdpdGhOb2RlOihOb2RlICopaW1wbAotewotICAg
IEFTU0VSVChpbXBsKTsKLQotICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2ludGVybmFsID0gRE9N
X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0gICAg
YWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotKyAoRE9N
Tm9kZSAqKV9ub2RlV2l0aDooTm9kZSAqKWltcGwKLXsKLSAgICBpZiAoIWltcGwpCi0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAgY2FjaGVkSW5z
dGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKLSAg
ICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAg
Ci0gICAgQ2xhc3Mgd3JhcHBlckNsYXNzID0gbmlsOwotICAgIHN3aXRjaCAoaW1wbC0+bm9kZVR5
cGUoKSkgewotICAgICAgICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERToKLSAgICAgICAgICAgIGlm
IChpbXBsLT5pc0hUTUxFbGVtZW50KCkpCi0gICAgICAgICAgICAgICAgd3JhcHBlckNsYXNzID0g
ZWxlbWVudENsYXNzKHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oaW1wbCktPmxvY2FsTmFtZSgp
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9N
RWxlbWVudCBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpB
VFRSSUJVVEVfTk9ERToKLSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01BdHRyIGNsYXNz
XTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKLSAg
ICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01UZXh0IGNsYXNzXTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKLSAgICAgICAgICAg
IHdyYXBwZXJDbGFzcyA9IFtET01DREFUQVNlY3Rpb24gY2xhc3NdOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgotICAgICAgICAg
ICAgd3JhcHBlckNsYXNzID0gW0RPTUVudGl0eVJlZmVyZW5jZSBjbGFzc107Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKLSAgICAgICAgICAgIHdy
YXBwZXJDbGFzcyA9IFtET01FbnRpdHkgY2xhc3NdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgotICAgICAgICAgICAg
d3JhcHBlckNsYXNzID0gW0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiBjbGFzc107Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpDT01NRU5UX05PREU6Ci0gICAgICAgICAg
ICB3cmFwcGVyQ2xhc3MgPSBbRE9NQ29tbWVudCBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgotICAgICAgICAgICAgaWYgKHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4oaW1wbCktPmlzSFRNTERvY3VtZW50KCkpCi0gICAgICAgICAgICAg
ICAgd3JhcHBlckNsYXNzID0gW0RPTUhUTUxEb2N1bWVudCBjbGFzc107Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTURvY3VtZW50IGNsYXNzXTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9E
RToKLSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01Eb2N1bWVudFR5cGUgY2xhc3NdOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRf
Tk9ERToKLSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01Eb2N1bWVudEZyYWdtZW50IGNs
YXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05P
REU6Ci0gICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NTm90YXRpb24gY2xhc3NdOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6
Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ3JlYXRlIGFuIFhQYXRoIG9iamVjdGl2ZSBDIHdyYXBw
ZXIKLSAgICAgICAgICAgIC8vIFNlZSBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hv
d19idWcuY2dpP2lkPTg3NTUKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotICAgIHJl
dHVybiBbW1t3cmFwcGVyQ2xhc3MgYWxsb2NdIF9pbml0V2l0aE5vZGU6aW1wbF0gYXV0b3JlbGVh
c2VdOwotfQotCi0tIChOb2RlICopX25vZGUKLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8Tm9kZSAq
PihfaW50ZXJuYWwpOwotfQotCi0tIChjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICop
X2V4ZWN1dGlvbkNvbnRleHQKLXsKLSAgICBpZiAoTm9kZSAqbiA9IFtzZWxmIF9ub2RlXSkKLSAg
ICAgICAgaWYgKEZyYW1lTWFjICpmID0gTWFjKG4tPmRvY3VtZW50KCktPmZyYW1lKCkpKQotICAg
ICAgICAgICAgcmV0dXJuIGYtPmV4ZWN1dGlvbkNvbnRleHRGb3JET00oKTsKLQotICAgIHJldHVy
biAwOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChXZWJQcml2YXRlKQot
Ci0tIChCT09MKWlzQ29udGVudEVkaXRhYmxlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+
aXNDb250ZW50RWRpdGFibGUoKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NTm9k
ZSAoRE9NRXZlbnRUYXJnZXQpCi0KLS0gKHZvaWQpYWRkRXZlbnRMaXN0ZW5lcjooTlNTdHJpbmcg
Kil0eXBlIDooaWQgPERPTUV2ZW50TGlzdGVuZXI+KWxpc3RlbmVyIDooQk9PTCl1c2VDYXB0dXJl
Ci17Ci0gICAgaWYgKCFbc2VsZiBfbm9kZV0tPmlzRXZlbnRUYXJnZXROb2RlKCkpCi0gICAgICAg
IHJhaXNlRE9NRXhjZXB0aW9uKERPTV9OT1RfU1VQUE9SVEVEX0VSUik7Ci0gICAgCi0gICAgRXZl
bnRMaXN0ZW5lciAqd3JhcHBlciA9IE9iakNFdmVudExpc3RlbmVyOjpjcmVhdGUobGlzdGVuZXIp
OwotICAgIEV2ZW50VGFyZ2V0Tm9kZUNhc3QoW3NlbGYgX25vZGVdKS0+YWRkRXZlbnRMaXN0ZW5l
cih0eXBlLCB3cmFwcGVyLCB1c2VDYXB0dXJlKTsKLSAgICB3cmFwcGVyLT5kZXJlZigpOwotfQot
Ci0tICh2b2lkKXJlbW92ZUV2ZW50TGlzdGVuZXI6KE5TU3RyaW5nICopdHlwZSA6KGlkIDxET01F
dmVudExpc3RlbmVyPilsaXN0ZW5lciA6KEJPT0wpdXNlQ2FwdHVyZQotewotICAgIGlmICghW3Nl
bGYgX25vZGVdLT5pc0V2ZW50VGFyZ2V0Tm9kZSgpKQotICAgICAgICByYWlzZURPTUV4Y2VwdGlv
bihET01fTk9UX1NVUFBPUlRFRF9FUlIpOwotCi0gICAgaWYgKEV2ZW50TGlzdGVuZXIgKndyYXBw
ZXIgPSBPYmpDRXZlbnRMaXN0ZW5lcjo6ZmluZChsaXN0ZW5lcikpCi0gICAgICAgIEV2ZW50VGFy
Z2V0Tm9kZUNhc3QoW3NlbGYgX25vZGVdKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCB3cmFw
cGVyLCB1c2VDYXB0dXJlKTsKLX0KLQotLSAoQk9PTClkaXNwYXRjaEV2ZW50OihET01FdmVudCAq
KWV2ZW50Ci17Ci0gICAgaWYgKCFbc2VsZiBfbm9kZV0tPmlzRXZlbnRUYXJnZXROb2RlKCkpCi0g
ICAgICAgIHJhaXNlRE9NRXhjZXB0aW9uKERPTV9OT1RfU1VQUE9SVEVEX0VSUik7Ci0KLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBCT09MIHJlc3VsdCA9IEV2ZW50VGFyZ2V0Tm9kZUNh
c3QoW3NlbGYgX25vZGVdKS0+ZGlzcGF0Y2hFdmVudChbZXZlbnQgX2V2ZW50XSwgZWMpOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotQGVuZAotCi0v
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NTmFtZWROb2RlTWFwCi0K
LUBpbXBsZW1lbnRhdGlvbiBET01OYW1lZE5vZGVNYXAKLQotLSAodm9pZClkZWFsbG9jCi17Ci0g
ICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxOYW1lZE5vZGVNYXAgKj4oX2lu
dGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2
b2lkKWZpbmFsaXplCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxO
YW1lZE5vZGVNYXAgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGZp
bmFsaXplXTsKLX0KLQotLSAoTmFtZWROb2RlTWFwICopX25hbWVkTm9kZU1hcAotewotICAgIHJl
dHVybiBET01fY2FzdDxOYW1lZE5vZGVNYXAgKj4oX2ludGVybmFsKTsKLX0KLQotLSAoRE9NTm9k
ZSAqKWdldE5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwot
Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+Z2V0
TmFtZWRJdGVtKG5hbWUpLmdldCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbToo
RE9NTm9kZSAqKWFyZwotewotICAgIEFTU0VSVChhcmcpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9
IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1l
ZE5vZGVNYXBdLT5zZXROYW1lZEl0ZW0oW2FyZyBfbm9kZV0sIGV4Y2VwdGlvbikuZ2V0KCldOwot
ICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LS0gKERPTU5vZGUgKilyZW1vdmVOYW1lZEl0ZW06KE5TU3RyaW5nICopbmFtZQotewotICAgIEFT
U0VSVChuYW1lKTsKLQotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTU5vZGUgKnJlc3Vs
dCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+cmVtb3ZlTmFtZWRJ
dGVtKG5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRp
b24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUgKilpdGVtOih1bnNpZ25l
ZClpbmRleAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9k
ZU1hcF0tPml0ZW0oaW5kZXgpLmdldCgpXTsKLX0KLQotLSAodW5zaWduZWQpbGVuZ3RoCi17Ci0g
ICAgcmV0dXJuIFtzZWxmIF9uYW1lZE5vZGVNYXBdLT5sZW5ndGgoKTsKLX0KLQotLSAoRE9NTm9k
ZSAqKWdldE5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICop
bG9jYWxOYW1lCi17Ci0gICAgaWYgKCFuYW1lc3BhY2VVUkkgfHwgIWxvY2FsTmFtZSkgewotICAg
ICAgICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6
W3NlbGYgX25hbWVkTm9kZU1hcF0tPmdldE5hbWVkSXRlbU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxO
YW1lKS5nZXQoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilzZXROYW1lZEl0ZW1OUzooRE9NTm9kZSAq
KWFyZwotewotICAgIEFTU0VSVChhcmcpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAg
RE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBd
LT5zZXROYW1lZEl0ZW1OUyhbYXJnIF9ub2RlXSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9N
Tm9kZSAqKXJlbW92ZU5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3Ry
aW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJU
KGxvY2FsTmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01Ob2RlICpyZXN1
bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPnJlbW92ZU5hbWVk
SXRlbU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICBy
YWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1AZW5k
Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01OYW1lZE5vZGVNYXAgKFdlYkNvcmVJbnRlcm5hbCkKLQot
LSAoaWQpX2luaXRXaXRoTmFtZWROb2RlTWFwOihOYW1lZE5vZGVNYXAgKilpbXBsCi17Ci0gICAg
QVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01f
Y2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBh
ZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01O
YW1lZE5vZGVNYXAgKilfbmFtZWROb2RlTWFwV2l0aDooTmFtZWROb2RlTWFwICopaW1wbAotewot
ICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJ
bnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAg
aWYgKGNhY2hlZEluc3RhbmNlKQotICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRh
aW5dIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRX
aXRoTmFtZWROb2RlTWFwOmltcGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotQGVuZAotCi0vLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NTm9kZUxpc3QKLQotQGltcGxlbWVu
dGF0aW9uIERPTU5vZGVMaXN0Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJu
YWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZUxpc3QgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsK
LSAgICB9Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0g
ICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50ZXJu
YWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChOb2Rl
TGlzdCAqKV9ub2RlTGlzdAotewotICAgIHJldHVybiBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50
ZXJuYWwpOwotfQotCi0tIChET01Ob2RlICopaXRlbToodW5zaWduZWQpaW5kZXgKLXsKLSAgICBy
ZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9ub2RlTGlzdF0tPml0ZW0oaW5kZXgpXTsK
LX0KLQotLSAodW5zaWduZWQpbGVuZ3RoCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlTGlzdF0t
Pmxlbmd0aCgpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlTGlzdCAoV2Vi
Q29yZUludGVybmFsKQotCi0tIChpZClfaW5pdFdpdGhOb2RlTGlzdDooTm9kZUxpc3QgKilpbXBs
Ci17Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJu
YWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYo
KTsKLSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQot
Ci0rIChET01Ob2RlTGlzdCAqKV9ub2RlTGlzdFdpdGg6KE5vZGVMaXN0ICopaW1wbAotewotICAg
IGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0
YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYg
KGNhY2hlZEluc3RhbmNlKQotICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5d
IGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRo
Tm9kZUxpc3Q6aW1wbF0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01JbXBsZW1lbnRhdGlvbgotCi1AaW1wbGVtZW50
YXRpb24gRE9NSW1wbGVtZW50YXRpb24KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9p
bnRlcm5hbCkKLSAgICAgICAgRE9NX2Nhc3Q8RE9NSW1wbGVtZW50YXRpb25Gcm9udCAqPihfaW50
ZXJuYWwpLT5kZXJlZigpOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5h
bGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIERPTV9jYXN0PERPTUltcGxlbWVu
dGF0aW9uRnJvbnQgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZmluYWxpemVd
OwotfQotCi0tIChCT09MKWhhc0ZlYXR1cmU6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5n
ICopdmVyc2lvbgotewotICAgIEFTU0VSVChmZWF0dXJlKTsKLSAgICBBU1NFUlQodmVyc2lvbik7
Ci0KLSAgICByZXR1cm4gW3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+aGFzRmVhdHVyZShmZWF0
dXJlLCB2ZXJzaW9uKTsKLX0KLQotLSAoRE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRU
eXBlOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXB1YmxpY0lkIDooTlNT
dHJpbmcgKilzeXN0ZW1JZAotewotICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsKLSAgICBBU1NF
UlQocHVibGljSWQpOwotICAgIEFTU0VSVChzeXN0ZW1JZCk7Ci0KLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBSZWZQdHI8RG9jdW1lbnRUeXBlPiBpbXBsID0gW3NlbGYgX0RPTUltcGxl
bWVudGF0aW9uXS0+Y3JlYXRlRG9jdW1lbnRUeXBlKHF1YWxpZmllZE5hbWUsIHB1YmxpY0lkLCBz
eXN0ZW1JZCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PERPTURvY3VtZW50VHlwZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQoKV0p
OwotfQotCi0tIChET01Eb2N1bWVudCAqKWNyZWF0ZURvY3VtZW50OihOU1N0cmluZyAqKW5hbWVz
cGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KERPTURvY3VtZW50VHlwZSAqKWRv
Y3R5cGUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQocXVhbGlmaWVk
TmFtZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8RG9jdW1lbnQ+
IGltcGwgPSBbc2VsZiBfRE9NSW1wbGVtZW50YXRpb25dLT5jcmVhdGVEb2N1bWVudChuYW1lc3Bh
Y2VVUkksIHF1YWxpZmllZE5hbWUsIFtkb2N0eXBlIF9kb2N1bWVudFR5cGVdLCBlYyk7Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnQg
Kj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGwuZ2V0KCldKTsKLX0KLQotLSAoRE9NSFRNTERvY3Vt
ZW50ICopY3JlYXRlSFRNTERvY3VtZW50OihOU1N0cmluZyAqKXRpdGxlCi17Ci0gICAgUmVmUHRy
PEhUTUxEb2N1bWVudD4gaW1wbCA9IFtzZWxmIF9ET01JbXBsZW1lbnRhdGlvbl0tPmNyZWF0ZUhU
TUxEb2N1bWVudCh0aXRsZSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUhUTUxEb2N1bWVu
dCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQoKV0pOwotfQotQGVuZAotCi1AaW1wbGVt
ZW50YXRpb24gRE9NSW1wbGVtZW50YXRpb24gKERPTUltcGxlbWVudGF0aW9uQ1NTKQotCi0tIChE
T01DU1NTdHlsZVNoZWV0ICopY3JlYXRlQ1NTU3R5bGVTaGVldDooTlNTdHJpbmcgKil0aXRsZSA6
KE5TU3RyaW5nICopbWVkaWEKLXsKLSAgICBBU1NFUlQodGl0bGUpOwotICAgIEFTU0VSVChtZWRp
YSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01DU1NTdHlsZVNoZWV0ICpy
ZXN1bHQgPSBbRE9NQ1NTU3R5bGVTaGVldCBfQ1NTU3R5bGVTaGVldFdpdGg6W3NlbGYgX0RPTUlt
cGxlbWVudGF0aW9uXS0+Y3JlYXRlQ1NTU3R5bGVTaGVldCh0aXRsZSwgbWVkaWEsIGVjKS5nZXQo
KV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1A
ZW5kCi0gCi1AaW1wbGVtZW50YXRpb24gRE9NSW1wbGVtZW50YXRpb24gKFdlYkNvcmVJbnRlcm5h
bCkKLQotLSAoaWQpX2luaXRXaXRoRE9NSW1wbGVtZW50YXRpb246KERPTUltcGxlbWVudGF0aW9u
RnJvbnQgKilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsK
LSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAg
ICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVy
biBzZWxmOwotfQotCi0rIChET01JbXBsZW1lbnRhdGlvbiAqKV9ET01JbXBsZW1lbnRhdGlvbldp
dGg6KERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAg
ICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hl
ZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2Up
Ci0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwot
ICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhET01JbXBsZW1lbnRhdGlv
bjppbXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilf
RE9NSW1wbGVtZW50YXRpb24KLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8RE9NSW1wbGVtZW50YXRp
b25Gcm9udCAqPihfaW50ZXJuYWwpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0vLyBET01Eb2N1bWVudEZyYWdtZW50Ci0KLUBpbXBsZW1lbnRhdGlv
biBET01Eb2N1bWVudEZyYWdtZW50Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3Vt
ZW50RnJhZ21lbnQgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NRG9jdW1lbnRGcmFnbWVudCAq
KV9kb2N1bWVudEZyYWdtZW50V2l0aDooRG9jdW1lbnRGcmFnbWVudCAqKWltcGwKLXsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnRGcmFnbWVudCAqPihbRE9NTm9kZSBfbm9kZVdp
dGg6aW1wbF0pOwotfQotCi0tIChEb2N1bWVudEZyYWdtZW50ICopX2ZyYWdtZW50Ci17Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihf
aW50ZXJuYWwpKTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotLy8gRE9NRG9jdW1lbnQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50Ci0KLS0g
KERPTU5vZGUgKilhZG9wdE5vZGU6KERPTU5vZGUgKilzb3VyY2UKLXsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX2RvY3VtZW50XS0+YWRvcHROb2RlKFtzb3VyY2UgX25vZGVdLCBlYykuZ2V0KCldOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRG9j
dW1lbnRUeXBlICopZG9jdHlwZQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVu
dFR5cGUgKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmRvY3R5cGUoKV0p
OwotfQotCi0tIChET01JbXBsZW1lbnRhdGlvbiAqKWltcGxlbWVudGF0aW9uCi17Ci0gICAgcmV0
dXJuIFtET01JbXBsZW1lbnRhdGlvbiBfRE9NSW1wbGVtZW50YXRpb25XaXRoOmltcGxlbWVudGF0
aW9uRnJvbnQoW3NlbGYgX2RvY3VtZW50XSldOwotfQotCi0tIChET01FbGVtZW50ICopZG9jdW1l
bnRFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUVsZW1lbnQgKj4oW0RPTU5v
ZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmRvY3VtZW50RWxlbWVudCgpXSk7Ci19Ci0K
LS0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWUKLXsKLSAg
ICBBU1NFUlQodGFnTmFtZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01F
bGVtZW50ICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2Rl
V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVFbGVtZW50KHRhZ05hbWUsIGVjKS5nZXQoKV0p
OwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAo
RE9NRG9jdW1lbnRGcmFnbWVudCAqKWNyZWF0ZURvY3VtZW50RnJhZ21lbnQKLXsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnRGcmFnbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6
W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLmdldCgpXSk7Ci19Ci0K
LS0gKERPTVRleHQgKiljcmVhdGVUZXh0Tm9kZTooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNT
RVJUKGRhdGEpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01UZXh0ICo+KFtET01Ob2RlIF9u
b2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVUZXh0Tm9kZShkYXRhKS5nZXQoKV0pOwot
fQotCi0tIChET01Db21tZW50ICopY3JlYXRlQ29tbWVudDooTlNTdHJpbmcgKilkYXRhCi17Ci0g
ICAgQVNTRVJUKGRhdGEpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Db21tZW50ICo+KFtE
T01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDb21tZW50KGRhdGEpLmdl
dCgpXSk7Ci19Ci0KLS0gKERPTUNEQVRBU2VjdGlvbiAqKWNyZWF0ZUNEQVRBU2VjdGlvbjooTlNT
dHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIGludCBleGNlcHRpb24gPSAw
OwotICAgIERPTUNEQVRBU2VjdGlvbiAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RE9NQ0RBVEFTZWN0
aW9uICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDREFUQVNl
Y3Rpb24oZGF0YSwgZXhjZXB0aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNl
cHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTVByb2Nlc3NpbmdJbnN0cnVj
dGlvbiAqKWNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbjooTlNTdHJpbmcgKil0YXJnZXQgOihO
U1N0cmluZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQodGFyZ2V0KTsKLSAgICBBU1NFUlQoZGF0YSk7
Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICpy
ZXN1bHQgPSBzdGF0aWNfY2FzdDxET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKj4oW0RPTU5vZGUg
X25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbih0
YXJnZXQsIGRhdGEsIGV4Y2VwdGlvbikuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhj
ZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01BdHRyICopY3JlYXRlQXR0
cmlidXRlOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0gICAgaW50IGV4
Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltz
ZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUF0dHJpYnV0ZShuYW1lLCBleGNlcHRpb24pLmdldCgpXTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci0tIChET01FbnRpdHlSZWZlcmVuY2UgKiljcmVhdGVFbnRpdHlSZWZlcmVuY2U6KE5TU3RyaW5n
ICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAg
ICBET01FbnRpdHlSZWZlcmVuY2UgKnJlc3VsdCA9IHN0YXRpY19jYXN0PERPTUVudGl0eVJlZmVy
ZW5jZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRW50aXR5
UmVmZXJlbmNlKG5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3Io
ZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlTGlzdCAqKWdl
dEVsZW1lbnRzQnlUYWdOYW1lOihOU1N0cmluZyAqKXRhZ25hbWUKLXsKLSAgICBBU1NFUlQodGFn
bmFtZSk7Ci0gICAgcmV0dXJuIFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOltzZWxmIF9kb2N1
bWVudF0tPmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ25hbWUpLmdldCgpXTsKLX0KLQotLSAoRE9N
Tm9kZSAqKWltcG9ydE5vZGU6KERPTU5vZGUgKilpbXBvcnRlZE5vZGUgOihCT09MKWRlZXAKLXsK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9k
ZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+aW1wb3J0Tm9kZShbaW1wb3J0ZWROb2RlIF9u
b2RlXSwgZGVlcCwgZWMpLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50TlM6KE5TU3Ry
aW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lCi17Ci0gICAgQVNT
RVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotCi0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVX
aXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHF1YWxp
ZmllZE5hbWUsIGVjKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihyZXN1bHQpOwotfQotCi0tIChET01BdHRyICop
Y3JlYXRlQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilx
dWFsaWZpZWROYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1
YWxpZmllZE5hbWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVz
dWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUF0dHJpYnV0
ZU5TKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAo
RE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFj
ZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7
Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2Rl
TGlzdFdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhuYW1lc3Bh
Y2VVUkksIGxvY2FsTmFtZSkuZ2V0KCldOwotfQotCi0tIChET01FbGVtZW50ICopZ2V0RWxlbWVu
dEJ5SWQ6KE5TU3RyaW5nICopZWxlbWVudElkCi17Ci0gICAgQVNTRVJUKGVsZW1lbnRJZCk7Ci0K
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6
W3NlbGYgX2RvY3VtZW50XS0+Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKV0pOwotfQotCi1AZW5k
Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRSYW5nZSkKLQotLSAo
RE9NUmFuZ2UgKiljcmVhdGVSYW5nZQotewotICAgIHJldHVybiBbRE9NUmFuZ2UgX3JhbmdlV2l0
aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVSYW5nZSgpLmdldCgpXTsKLX0KLQotQGVuZAotCi1A
aW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50Q1NTKQotCi0tIChET01DU1NT
dHlsZURlY2xhcmF0aW9uICopZ2V0T3ZlcnJpZGVTdHlsZTooRE9NRWxlbWVudCAqKWVsdCA6KE5T
U3RyaW5nICopcHNldWRvRWx0Ci17Ci0gICAgRWxlbWVudCAqZWxlbWVudCA9IFtlbHQgX2VsZW1l
bnRdOwotICAgIFN0cmluZyBwc2V1ZG9FbHRTdHJpbmcocHNldWRvRWx0KTsKLSAgICByZXR1cm4g
W0RPTUNTU1N0eWxlRGVjbGFyYXRpb24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOltzZWxmIF9kb2N1
bWVudF0tPmdldE92ZXJyaWRlU3R5bGUoZWxlbWVudCwgcHNldWRvRWx0U3RyaW5nLmltcGwoKSld
OwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRT
dHlsZSkKLQotLSAoRE9NU3R5bGVTaGVldExpc3QgKilzdHlsZVNoZWV0cwotewotICAgIHJldHVy
biBbRE9NU3R5bGVTaGVldExpc3QgX3N0eWxlU2hlZXRMaXN0V2l0aDpbc2VsZiBfZG9jdW1lbnRd
LT5zdHlsZVNoZWV0cygpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1l
bnQgKERPTURvY3VtZW50RXh0ZW5zaW9ucykKLQotLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAq
KWNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24KLXsKLSAgICByZXR1cm4gW0RPTUNTU1N0eWxlRGVj
bGFyYXRpb24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNT
U1N0eWxlRGVjbGFyYXRpb24oKS5nZXQoKV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9u
IERPTURvY3VtZW50IChXZWJDb3JlSW50ZXJuYWwpCi0KLSsgKERPTURvY3VtZW50ICopX2RvY3Vt
ZW50V2l0aDooRG9jdW1lbnQgKilpbXBsCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURv
Y3VtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19Ci0KLS0gKERvY3VtZW50ICop
X2RvY3VtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50ICo+KERPTV9jYXN0
PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilfb3duZXJFbGVtZW50
Ci17Ci0gICAgcmV0dXJuIFtET01FbGVtZW50IF9lbGVtZW50V2l0aDpbc2VsZiBfZG9jdW1lbnRd
LT5vd25lckVsZW1lbnQoKV07Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS8vIERPTUNoYXJhY3RlckRhdGEKLQotQGltcGxlbWVudGF0aW9uIERPTUNo
YXJhY3RlckRhdGEKLQotLSAoQ2hhcmFjdGVyRGF0YSAqKV9jaGFyYWN0ZXJEYXRhCi17Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PENoYXJhY3RlckRhdGEgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50
ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgLy8gRG9jdW1lbnRhdGlv
biBzYXlzIHdlIGNhbiByYWlzZSBhIERPTVNUUklOR19TSVpFX0VSUi4KLSAgICAvLyBIb3dldmVy
LCB0aGUgbG93ZXIgbGF5ZXIgZG9lcyBub3QgcmVwb3J0IHRoYXQgZXJyb3IgdXAgdG8gdXMuCi0g
ICAgcmV0dXJuIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+ZGF0YSgpOwotfQotCi0tICh2b2lkKXNl
dERhdGE6KE5TU3RyaW5nICopZGF0YQotewotICAgIEFTU0VSVChkYXRhKTsKLSAgICAKLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPnNldERhdGEo
ZGF0YSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHVuc2lnbmVkKWxl
bmd0aAotewotICAgIHJldHVybiBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPmxlbmd0aCgpOwotfQot
Ci0tIChOU1N0cmluZyAqKXN1YnN0cmluZ0RhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVk
KWNvdW50Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgTlNTdHJpbmcgKnJlc3Vs
dCA9IFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+c3Vic3RyaW5nRGF0YShvZmZzZXQsIGNvdW50LCBl
Yyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0t
ICh2b2lkKWFwcGVuZERhdGE6KE5TU3RyaW5nICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7Ci0g
ICAgCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFd
LT5hcHBlbmREYXRhKGFyZywgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0g
KHZvaWQpaW5zZXJ0RGF0YToodW5zaWduZWQpb2Zmc2V0IDooTlNTdHJpbmcgKilhcmcKLXsKLSAg
ICBBU1NFUlQoYXJnKTsKLSAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2Vs
ZiBfY2hhcmFjdGVyRGF0YV0tPmluc2VydERhdGEob2Zmc2V0LCBhcmcsIGVjKTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKWRlbGV0ZURhdGE6KHVuc2lnbmVkKW9mZnNl
dCA6KHVuc2lnbmVkKSBjb3VudAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtz
ZWxmIF9jaGFyYWN0ZXJEYXRhXS0+ZGVsZXRlRGF0YShvZmZzZXQsIGNvdW50LCBlYyk7Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClyZXBsYWNlRGF0YToodW5zaWduZWQp
b2Zmc2V0IDoodW5zaWduZWQpY291bnQgOihOU1N0cmluZyAqKWFyZwotewotICAgIEFTU0VSVChh
cmcpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRh
dGFdLT5yZXBsYWNlRGF0YShvZmZzZXQsIGNvdW50LCBhcmcsIGVjKTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0vLyBET01BdHRyCi0KLUBpbXBsZW1lbnRhdGlvbiBET01BdHRyCi0KLS0gKE5TU3RyaW5n
ICopbmFtZQotewotICAgIHJldHVybiBbc2VsZiBfYXR0cl0tPm5vZGVOYW1lKCk7Ci19Ci0KLS0g
KEJPT0wpc3BlY2lmaWVkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9hdHRyXS0+c3BlY2lmaWVkKCk7
Ci19Ci0KLS0gKE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2F0dHJdLT5u
b2RlVmFsdWUoKTsKLX0KLQotLSAodm9pZClzZXRWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZQotewot
ICAgIEFTU0VSVCh2YWx1ZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2Vs
ZiBfYXR0cl0tPnNldFZhbHVlKHZhbHVlLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsK
LX0KLQotLSAoRE9NRWxlbWVudCAqKW93bmVyRWxlbWVudAotewotICAgIHJldHVybiBbRE9NRWxl
bWVudCBfZWxlbWVudFdpdGg6W3NlbGYgX2F0dHJdLT5vd25lckVsZW1lbnQoKV07Ci19Ci0KLS0g
KERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZQotewotICAgIHJldHVybiBbRE9NQ1NTU3R5
bGVEZWNsYXJhdGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6IFtzZWxmIF9hdHRyXS0+c3R5bGUo
KV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUF0dHIgKFdlYkNvcmVJbnRlcm5h
bCkKLQotKyAoRE9NQXR0ciAqKV9hdHRyV2l0aDooQXR0ciAqKWltcGwKLXsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RE9NQXR0ciAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwotfQotCi0t
IChBdHRyICopX2F0dHIKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXR0ciAqPihET01fY2Fz
dDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0vLyBET01FbGVtZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01FbGVt
ZW50Ci0KLS0gKE5TU3RyaW5nICopdGFnTmFtZQotewotICAgIHJldHVybiBbc2VsZiBfZWxlbWVu
dF0tPm5vZGVOYW1lKCk7Ci19Ci0KLS0gKERPTU5hbWVkTm9kZU1hcCAqKWF0dHJpYnV0ZXMKLXsK
LSAgICByZXR1cm4gW0RPTU5hbWVkTm9kZU1hcCBfbmFtZWROb2RlTWFwV2l0aDpbc2VsZiBfZWxl
bWVudF0tPmF0dHJpYnV0ZXMoKV07Ci19Ci0KLS0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRlOihO
U1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0gICAgcmV0dXJuIFtzZWxmIF9l
bGVtZW50XS0+Z2V0QXR0cmlidXRlKG5hbWUpOwotfQotCi0tICh2b2lkKXNldEF0dHJpYnV0ZToo
TlNTdHJpbmcgKiluYW1lIDooTlNTdHJpbmcgKil2YWx1ZQotewotICAgIEFTU0VSVChuYW1lKTsK
LSAgICBBU1NFUlQodmFsdWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYg
X2VsZW1lbnRdLT5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIGV4Y2VwdGlvbik7Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci19Ci0KLS0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlOihO
U1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9u
ID0gMDsKLSAgICBbc2VsZiBfZWxlbWVudF0tPnJlbW92ZUF0dHJpYnV0ZShuYW1lLCBleGNlcHRp
b24pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotfQotCi0tIChET01BdHRyICop
Z2V0QXR0cmlidXRlTm9kZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwot
Ci0gICAgcmV0dXJuIFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJp
YnV0ZU5vZGUobmFtZSkuZ2V0KCldOwotfQotCi0tIChET01BdHRyICopc2V0QXR0cmlidXRlTm9k
ZTooRE9NQXR0ciAqKW5ld0F0dHIKLXsKLSAgICBBU1NFUlQobmV3QXR0cik7Ci0KLSAgICBpbnQg
ZXhjZXB0aW9uID0gMDsKLSAgICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldpdGg6
W3NlbGYgX2VsZW1lbnRdLT5zZXRBdHRyaWJ1dGVOb2RlKFtuZXdBdHRyIF9hdHRyXSwgZXhjZXB0
aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotLSAoRE9NQXR0ciAqKXJlbW92ZUF0dHJpYnV0ZU5vZGU6KERPTUF0dHIg
KilvbGRBdHRyCi17Ci0gICAgQVNTRVJUKG9sZEF0dHIpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9
IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVt
ZW50XS0+cmVtb3ZlQXR0cmlidXRlTm9kZShbb2xkQXR0ciBfYXR0cl0sIGV4Y2VwdGlvbikuZ2V0
KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWU6KE5TU3RyaW5nICop
bmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLQotICAgIHJldHVybiBbRE9NTm9kZUxpc3QgX25v
ZGVMaXN0V2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEVsZW1lbnRzQnlUYWdOYW1lKG5hbWUpLmdl
dCgpXTsKLX0KLQotLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1l
c3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VV
UkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50
XS0+Z2V0QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwotfQotCi0tICh2b2lk
KXNldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVh
bGlmaWVkTmFtZSA6KE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJ
KTsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7Ci0gICAgQVNTRVJUKHZhbHVlKTsKLQotICAg
IGludCBleGNlcHRpb24gPSAwOwotICAgIFtzZWxmIF9lbGVtZW50XS0+c2V0QXR0cmlidXRlTlMo
bmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCB2YWx1ZSwgZXhjZXB0aW9uKTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLX0KLQotLSAodm9pZClyZW1vdmVBdHRyaWJ1dGVOUzoo
TlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFT
U0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgaW50IGV4
Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5yZW1vdmVBdHRyaWJ1dGVOUyhuYW1l
c3BhY2VVUkksIGxvY2FsTmFtZSwgZXhjZXB0aW9uKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhj
ZXB0aW9uKTsKLX0KLQotLSAoRE9NQXR0ciAqKWdldEF0dHJpYnV0ZU5vZGVOUzooTlNTdHJpbmcg
KiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VSVChuYW1l
c3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtET01BdHRy
IF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0ZU5vZGVOUyhuYW1lc3BhY2VV
UkksIGxvY2FsTmFtZSkuZ2V0KCldOwotfQotCi0tIChET01BdHRyICopc2V0QXR0cmlidXRlTm9k
ZU5TOihET01BdHRyICopbmV3QXR0cgotewotICAgIEFTU0VSVChuZXdBdHRyKTsKLQotICAgIGlu
dCBleGNlcHRpb24gPSAwOwotICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0
aDpbc2VsZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZU5vZGVOUyhbbmV3QXR0ciBfYXR0cl0sIGV4
Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWVO
UzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAg
IEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0
dXJuIFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0RWxlbWVu
dHNCeVRhZ05hbWVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkuZ2V0KCldOwotfQotCi0tIChC
T09MKWhhc0F0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwot
Ci0gICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50XS0+aGFzQXR0cmlidXRlKG5hbWUpOwotfQotCi0t
IChCT09MKWhhc0F0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5n
ICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxv
Y2FsTmFtZSk7Ci0KLSAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5oYXNBdHRyaWJ1dGVOUyhu
YW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7Ci19Ci0KLS0gKHZvaWQpZm9jdXMKLXsKLSAgICBbc2Vs
ZiBfZWxlbWVudF0tPmZvY3VzKCk7Ci19Ci0KLS0gKHZvaWQpYmx1cgotewotICAgIFtzZWxmIF9l
bGVtZW50XS0+Ymx1cigpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01FbGVtZW50
IChET01FbGVtZW50Q1NTSW5saW5lU3R5bGUpCi0KLS0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24g
KilzdHlsZQotewotICAgIHJldHVybiBbRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBfc3R5bGVEZWNs
YXJhdGlvbldpdGg6W3NlbGYgX2VsZW1lbnRdLT5zdHlsZSgpXTsKLX0KLQotQGVuZAotCi1AaW1w
bGVtZW50YXRpb24gRE9NRWxlbWVudCAoRE9NRWxlbWVudEV4dGVuc2lvbnMpCi0KLS0gKE5TSW1h
Z2UqKWltYWdlCi17Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IFtzZWxmIF9lbGVtZW50
XS0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzSW1hZ2UoKSkg
ewotICAgICAgICBSZW5kZXJJbWFnZSogaW1nID0gc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UqPihy
ZW5kZXJlcik7Ci0gICAgICAgIGlmIChpbWctPmNhY2hlZEltYWdlKCkgJiYgIWltZy0+Y2FjaGVk
SW1hZ2UoKS0+aXNFcnJvckltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gaW1nLT5jYWNoZWRJ
bWFnZSgpLT5pbWFnZSgpLT5nZXROU0ltYWdlKCk7Ci0gICAgfQotICAgIHJldHVybiBuaWw7Ci19
Ci0KLS0gKHZvaWQpc2Nyb2xsSW50b1ZpZXc6KEJPT0wpYWxpZ25Ub3AKLXsKLSAgICBbc2VsZiBf
ZWxlbWVudF0tPnNjcm9sbEludG9WaWV3KGFsaWduVG9wKTsKLX0KLQotLSAodm9pZClzY3JvbGxJ
bnRvVmlld0lmTmVlZGVkOihCT09MKWNlbnRlcklmTmVlZGVkCi17Ci0gICAgW3NlbGYgX2VsZW1l
bnRdLT5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKGNlbnRlcklmTmVlZGVkKTsKLX0KLQotQGVuZAot
Ci1AaW1wbGVtZW50YXRpb24gRE9NRWxlbWVudCAoV2ViQ29yZUludGVybmFsKQotCi0rIChET01F
bGVtZW50ICopX2VsZW1lbnRXaXRoOihFbGVtZW50ICopaW1wbAotewotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19Ci0KLS0g
KEVsZW1lbnQgKilfZWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50ICo+
KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0
aW9uIERPTUVsZW1lbnQgKFdlYlByaXZhdGUpCi0KLS0gKE5TRm9udCAqKV9mb250Ci17Ci0gICAg
UmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9lbGVtZW50XS0+cmVuZGVyZXIoKTsKLSAg
ICBpZiAocmVuZGVyZXIpIHsKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5zdHlsZSgpLT5mb250
KCkuZ2V0TlNGb250KCk7Ci0gICAgfQotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKE5TRGF0YSop
X2ltYWdlVElGRlJlcHJlc2VudGF0aW9uCi17Ci0gICAgUmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9
IFtzZWxmIF9lbGVtZW50XS0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVy
ZXItPmlzSW1hZ2UoKSkgewotICAgICAgICBSZW5kZXJJbWFnZSogaW1nID0gc3RhdGljX2Nhc3Q8
UmVuZGVySW1hZ2UqPihyZW5kZXJlcik7Ci0gICAgICAgIGlmIChpbWctPmNhY2hlZEltYWdlKCkg
JiYgIWltZy0+Y2FjaGVkSW1hZ2UoKS0+aXNFcnJvckltYWdlKCkpCi0gICAgICAgICAgICByZXR1
cm4gKE5TRGF0YSopKGltZy0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKS0+Z2V0VElGRlJlcHJlc2Vu
dGF0aW9uKCkpOwotICAgIH0KLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChOU1VSTCAqKV9nZXRV
UkxBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBF
bGVtZW50ICplID0gW3NlbGYgX2VsZW1lbnRdOwotICAgIEFTU0VSVChlKTsKLSAgICByZXR1cm4g
S1VSTChlLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChwYXJzZVVSTChlLT5nZXRBdHRyaWJ1dGUo
bmFtZSkpLmRlcHJlY2F0ZWRTdHJpbmcoKSkpLmdldE5TVVJMKCk7Ci19Ci0KLS0gKHZvaWQgKilf
TlBPYmplY3QKLXsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gW3NlbGYgX2VsZW1lbnRdOwotICAg
IGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGFwcGxldFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFt
ZShlbWJlZFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQotICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqPihlbGVtZW50KS0+
Z2V0TlBPYmplY3QoKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiAwOwotfQotCi0tIChCT09M
KWlzRm9jdXNlZAotewotICAgIEVsZW1lbnQqIGltcGwgPSBbc2VsZiBfZWxlbWVudF07Ci0gICAg
aWYgKGltcGwtPmRvY3VtZW50KCktPmZvY3VzTm9kZSgpID09IGltcGwpCi0gICAgICAgIHJldHVy
biBZRVM7Ci0gICAgcmV0dXJuIE5POwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0vLyBET01UZXh0Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01UZXh0Ci0K
LS0gKFRleHQgKilfdGV4dAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0ICo+KERPTV9j
YXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKERPTVRleHQgKilzcGxpdFRleHQ6KHVu
c2lnbmVkKW9mZnNldAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUg
KnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfdGV4dF0tPnNwbGl0VGV4dChvZmZz
ZXQsIGVjKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RE9NVGV4dCAqPihyZXN1bHQpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0vLyBET01Db21tZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Db21t
ZW50Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERP
TUNEQVRBU2VjdGlvbgotCi1AaW1wbGVtZW50YXRpb24gRE9NQ0RBVEFTZWN0aW9uCi0KLUBlbmQK
LQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTURvY3VtZW50VHlw
ZQotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnRUeXBlCi0KLS0gKE5TU3RyaW5nICopbmFt
ZQotewotICAgIHJldHVybiBbc2VsZiBfZG9jdW1lbnRUeXBlXS0+cHVibGljSWQoKTsKLX0KLQot
LSAoRE9NTmFtZWROb2RlTWFwICopZW50aXRpZXMKLXsKLSAgICByZXR1cm4gW0RPTU5hbWVkTm9k
ZU1hcCBfbmFtZWROb2RlTWFwV2l0aDpbc2VsZiBfZG9jdW1lbnRUeXBlXS0+ZW50aXRpZXMoKV07
Ci19Ci0KLS0gKERPTU5hbWVkTm9kZU1hcCAqKW5vdGF0aW9ucwotewotICAgIHJldHVybiBbRE9N
TmFtZWROb2RlTWFwIF9uYW1lZE5vZGVNYXBXaXRoOltzZWxmIF9kb2N1bWVudFR5cGVdLT5ub3Rh
dGlvbnMoKV07Ci19Ci0KLS0gKE5TU3RyaW5nICopcHVibGljSWQKLXsKLSAgICByZXR1cm4gW3Nl
bGYgX2RvY3VtZW50VHlwZV0tPnB1YmxpY0lkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopc3lzdGVt
SWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2RvY3VtZW50VHlwZV0tPnN5c3RlbUlkKCk7Ci19Ci0K
LS0gKE5TU3RyaW5nICopaW50ZXJuYWxTdWJzZXQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2RvY3Vt
ZW50VHlwZV0tPmludGVybmFsU3Vic2V0KCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9u
IERPTURvY3VtZW50VHlwZSAoV2ViQ29yZUludGVybmFsKQotCi0tIChEb2N1bWVudFR5cGUgKilf
ZG9jdW1lbnRUeXBlCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50VHlwZSAqPihE
T01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Ob3RhdGlvbgotCi1AaW1wbGVtZW50YXRpb24g
RE9NTm90YXRpb24KLQotLSAoTm90YXRpb24gKilfbm90YXRpb24KLXsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Tm90YXRpb24gKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQot
LSAoTlNTdHJpbmcgKilwdWJsaWNJZAotewotICAgIHJldHVybiBbc2VsZiBfbm90YXRpb25dLT5w
dWJsaWNJZCgpOwotfQotCi0tIChOU1N0cmluZyAqKXN5c3RlbUlkCi17Ci0gICAgcmV0dXJuIFtz
ZWxmIF9ub3RhdGlvbl0tPnN5c3RlbUlkKCk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUVudGl0eQotCi1AaW1wbGVtZW50YXRpb24gRE9N
RW50aXR5Ci0KLS0gKEVudGl0eSAqKV9lbnRpdHkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RW50aXR5ICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3RyaW5n
ICopcHVibGljSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2VudGl0eV0tPnB1YmxpY0lkKCk7Ci19
Ci0KLS0gKE5TU3RyaW5nICopc3lzdGVtSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2VudGl0eV0t
PnN5c3RlbUlkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbm90YXRpb25OYW1lCi17Ci0gICAgcmV0
dXJuIFtzZWxmIF9lbnRpdHldLT5ub3RhdGlvbk5hbWUoKTsKLX0KLQotQGVuZAotCi0vLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NRW50aXR5UmVmZXJlbmNlCi0KLUBp
bXBsZW1lbnRhdGlvbiBET01FbnRpdHlSZWZlcmVuY2UKLQotQGVuZAotCi0vLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uCi0KLUBp
bXBsZW1lbnRhdGlvbiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KLQotLSAoUHJvY2Vzc2luZ0lu
c3RydWN0aW9uICopX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbgotewotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwp
KTsKLX0KLQotLSAoTlNTdHJpbmcgKil0YXJnZXQKLXsKLSAgICByZXR1cm4gW3NlbGYgX3Byb2Nl
c3NpbmdJbnN0cnVjdGlvbl0tPnRhcmdldCgpOwotfQotCi0tIChOU1N0cmluZyAqKWRhdGEKLXsK
LSAgICByZXR1cm4gW3NlbGYgX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbl0tPmRhdGEoKTsKLX0KLQot
LSAodm9pZClzZXREYXRhOihOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQoZGF0YSk7Ci0K
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcHJvY2Vzc2luZ0luc3RydWN0
aW9uXS0+c2V0RGF0YShkYXRhLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQot
QGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NUmFuZ2UK
LQotQGltcGxlbWVudGF0aW9uIERPTVJhbmdlCi0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlm
IChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8UmFuZ2UgKj4oX2ludGVybmFsKS0+ZGVy
ZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXpl
Ci17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxSYW5nZSAqPihfaW50
ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChO
U1N0cmluZyAqKWRlc2NyaXB0aW9uCi17Ci0gICAgaWYgKCFfaW50ZXJuYWwpCi0gICAgICAgIHJl
dHVybiBAIjxET01SYW5nZTogbnVsbD4iOwotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIjxET01SYW5nZTogJUAgJWQgJUAgJWQ+IiwKLSAgICAgICAgW3NlbGYgc3RhcnRD
b250YWluZXJdLCBbc2VsZiBzdGFydE9mZnNldF0sCi0gICAgICAgIFtzZWxmIGVuZENvbnRhaW5l
cl0sIFtzZWxmIGVuZE9mZnNldF1dOwotfQotCi0tIChET01Ob2RlICopc3RhcnRDb250YWluZXIK
LXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9N
Tm9kZSBfbm9kZVdpdGg6W3NlbGYgX3JhbmdlXS0+c3RhcnRDb250YWluZXIoZWMpXTsKLSAgICBy
YWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKGludClzdGFy
dE9mZnNldAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGludCByZXN1bHQgPSBb
c2VsZiBfcmFuZ2VdLT5zdGFydE9mZnNldChlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlICopZW5kQ29udGFpbmVyCi17Ci0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUg
X25vZGVXaXRoOltzZWxmIF9yYW5nZV0tPmVuZENvbnRhaW5lcihlYyldOwotICAgIHJhaXNlT25E
T01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoaW50KWVuZE9mZnNldAot
ewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGludCByZXN1bHQgPSBbc2VsZiBfcmFu
Z2VdLT5lbmRPZmZzZXQoZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotLSAoQk9PTCljb2xsYXBzZWQKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBCT09MIHJlc3VsdCA9IFtzZWxmIF9yYW5nZV0tPmNvbGxhcHNlZChlYyk7Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01O
b2RlICopY29tbW9uQW5jZXN0b3JDb250YWluZXIKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3Jhbmdl
XS0+Y29tbW9uQW5jZXN0b3JDb250YWluZXIoZWMpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKHZvaWQpc2V0U3RhcnQ6KERPTU5vZGUgKily
ZWZOb2RlIDooaW50KW9mZnNldAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtz
ZWxmIF9yYW5nZV0tPnNldFN0YXJ0KFtyZWZOb2RlIF9ub2RlXSwgb2Zmc2V0LCBlYyk7Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClzZXRFbmQ6KERPTU5vZGUgKilyZWZO
b2RlIDooaW50KW9mZnNldAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxm
IF9yYW5nZV0tPnNldEVuZChbcmVmTm9kZSBfbm9kZV0sIG9mZnNldCwgZWMpOwotICAgIHJhaXNl
T25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc2V0U3RhcnRCZWZvcmU6KERPTU5vZGUgKily
ZWZOb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+
c2V0U3RhcnRCZWZvcmUoW3JlZk5vZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLX0KLQotLSAodm9pZClzZXRTdGFydEFmdGVyOihET01Ob2RlICopcmVmTm9kZQotewot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9yYW5nZV0tPnNldFN0YXJ0QWZ0
ZXIoW3JlZk5vZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQot
LSAodm9pZClzZXRFbmRCZWZvcmU6KERPTU5vZGUgKilyZWZOb2RlCi17Ci0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+c2V0RW5kQmVmb3JlKFtyZWZOb2RlIF9u
b2RlXSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc2V0RW5k
QWZ0ZXI6KERPTU5vZGUgKilyZWZOb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgW3NlbGYgX3JhbmdlXS0+c2V0RW5kQWZ0ZXIoW3JlZk5vZGUgX25vZGVdLCBlYyk7Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZCljb2xsYXBzZTooQk9PTCl0b1N0YXJ0
Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+Y29sbGFw
c2UodG9TdGFydCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQp
c2VsZWN0Tm9kZTooRE9NTm9kZSAqKXJlZk5vZGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5zZWxlY3ROb2RlKFtyZWZOb2RlIF9ub2RlXSwgZWMpOwot
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc2VsZWN0Tm9kZUNvbnRlbnRz
OihET01Ob2RlICopcmVmTm9kZQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtz
ZWxmIF9yYW5nZV0tPnNlbGVjdE5vZGVDb250ZW50cyhbcmVmTm9kZSBfbm9kZV0sIGVjKTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tIChzaG9ydCljb21wYXJlQm91bmRhcnlQb2lu
dHM6KHVuc2lnbmVkIHNob3J0KWhvdyA6KERPTVJhbmdlICopc291cmNlUmFuZ2UKLXsKLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBzaG9ydCByZXN1bHQgPSBbc2VsZiBfcmFuZ2VdLT5j
b21wYXJlQm91bmRhcnlQb2ludHMoc3RhdGljX2Nhc3Q8UmFuZ2U6OkNvbXBhcmVIb3c+KGhvdyks
IFtzb3VyY2VSYW5nZSBfcmFuZ2VdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKWRlbGV0ZUNvbnRlbnRzCi17Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+ZGVsZXRlQ29udGVudHMoZWMp
OwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKERPTURvY3VtZW50RnJhZ21lbnQg
KilleHRyYWN0Q29udGVudHMKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01E
b2N1bWVudEZyYWdtZW50ICpyZXN1bHQgPSBbRE9NRG9jdW1lbnRGcmFnbWVudCBfZG9jdW1lbnRG
cmFnbWVudFdpdGg6W3NlbGYgX3JhbmdlXS0+ZXh0cmFjdENvbnRlbnRzKGVjKS5nZXQoKV07Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01E
b2N1bWVudEZyYWdtZW50ICopY2xvbmVDb250ZW50cwotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIERPTURvY3VtZW50RnJhZ21lbnQgKnJlc3VsdCA9IFtET01Eb2N1bWVudEZyYWdt
ZW50IF9kb2N1bWVudEZyYWdtZW50V2l0aDpbc2VsZiBfcmFuZ2VdLT5jbG9uZUNvbnRlbnRzKGVj
KS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi0tICh2b2lkKWluc2VydE5vZGU6KERPTU5vZGUgKiluZXdOb2RlCi17Ci0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+aW5zZXJ0Tm9kZShbbmV3Tm9kZSBf
bm9kZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKXN1cnJv
dW5kQ29udGVudHM6KERPTU5vZGUgKiluZXdQYXJlbnQKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5zdXJyb3VuZENvbnRlbnRzKFtuZXdQYXJlbnQgX25v
ZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoRE9NUmFuZ2UgKilj
bG9uZVJhbmdlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NUmFuZ2UgKnJl
c3VsdCA9IFtET01SYW5nZSBfcmFuZ2VXaXRoOltzZWxmIF9yYW5nZV0tPmNsb25lUmFuZ2UoZWMp
LmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLS0gKE5TU3RyaW5nICopdG9TdHJpbmcKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBOU1N0cmluZyAqcmVzdWx0ID0gW3NlbGYgX3JhbmdlXS0+dG9TdHJpbmcoZWMpOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoTlNTdHJp
bmcgKil0ZXh0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9yYW5nZV0tPnRleHQoKTsKLX0KLQotLSAo
dm9pZClkZXRhY2gKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFu
Z2VdLT5kZXRhY2goZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIERPTVJhbmdlIChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKGlkKV9pbml0
V2l0aFJhbmdlOihSYW5nZSAqKWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3Vw
ZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+
KGltcGwpOwotICAgIGltcGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7
Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLSsgKERPTVJhbmdlICopX3JhbmdlV2l0aDooUmFuZ2Ug
KilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAg
IGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihp
bXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZElu
c3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFs
bG9jXSBfaW5pdFdpdGhSYW5nZTppbXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKFJhbmdlICop
X3JhbmdlCi17Ci0gICAgcmV0dXJuIERPTV9jYXN0PFJhbmdlICo+KF9pbnRlcm5hbCk7Ci19Ci0K
LUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTVJhbmdlIChXZWJQcml2YXRlKQotCi0tIChOU1N0
cmluZyAqKV90ZXh0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIHRleHRdOwotfQotCi1AZW5kCi0KLS8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlRmlsdGVyCi0KLS0gKGlk
KV9pbml0V2l0aE5vZGVGaWx0ZXI6KE5vZGVGaWx0ZXIgKilpbXBsCi17Ci0gICAgQVNTRVJUKGlt
cGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01P
YmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFw
cGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01Ob2RlRmlsdGVy
ICopX25vZGVGaWx0ZXJXaXRoOihOb2RlRmlsdGVyICopaW1wbAotewotICAgIGlmICghaW1wbCkK
LSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBj
YWNoZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3Rh
bmNlKQotICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNl
XTsKLSAgICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTm9kZUZpbHRlcjpp
bXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKE5vZGVGaWx0ZXIgKilfbm9kZUZpbHRlcgotewot
ICAgIHJldHVybiBET01fY2FzdDxOb2RlRmlsdGVyICo+KF9pbnRlcm5hbCk7Ci19CitAaW1wbGVt
ZW50YXRpb24gRE9NTm9kZUxpc3QKIAogLSAodm9pZClkZWFsbG9jCiB7CiAgICAgaWYgKF9pbnRl
cm5hbCkKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZUZpbHRlciAqPihfaW50ZXJuYWwpLT5kZXJlZigp
OworICAgICAgICBET01fY2FzdDxXZWJDb3JlOjpOb2RlTGlzdCAqPihfaW50ZXJuYWwpLT5kZXJl
ZigpOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAodm9pZClmaW5hbGl6ZQogewogICAg
IGlmIChfaW50ZXJuYWwpCi0gICAgICAgIERPTV9jYXN0PE5vZGVGaWx0ZXIgKj4oX2ludGVybmFs
KS0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChzaG9ydClhY2NlcHRO
b2RlOihET01Ob2RlICopbm9kZQotewotICAgIHJldHVybiBbc2VsZiBfbm9kZUZpbHRlcl0tPmFj
Y2VwdE5vZGUoW25vZGUgX25vZGVdKTsKLX0KLQotQGVuZAotCi0KLUBpbXBsZW1lbnRhdGlvbiBE
T01Ob2RlSXRlcmF0b3IKLQotLSAoaWQpX2luaXRXaXRoTm9kZUl0ZXJhdG9yOihOb2RlSXRlcmF0
b3IgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgotewotICAgIEFTU0VS
VChpbXBsKTsKLQotICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8
RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9N
V3JhcHBlcihzZWxmLCBpbXBsKTsKLSAgICBtX2ZpbHRlciA9IFtmaWx0ZXIgcmV0YWluXTsKLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLSAoTm9kZUl0ZXJhdG9yICopX25vZGVJdGVyYXRvcgotewot
ICAgIHJldHVybiBET01fY2FzdDxOb2RlSXRlcmF0b3IgKj4oX2ludGVybmFsKTsKLX0KLQotLSAo
dm9pZClkZWFsbG9jCi17Ci0gICAgW21fZmlsdGVyIHJlbGVhc2VdOwotICAgIGlmIChfaW50ZXJu
YWwpIHsKLSAgICAgICAgW3NlbGYgZGV0YWNoXTsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZUl0ZXJh
dG9yICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsK
LX0KLQotLSAodm9pZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAg
W3NlbGYgZGV0YWNoXTsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZUl0ZXJhdG9yICo+KF9pbnRlcm5h
bCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19Ci0KLS0gKERPTU5v
ZGUgKilyb290Ci17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZUl0
ZXJhdG9yXS0+cm9vdCgpXTsKLX0KLQotLSAodW5zaWduZWQpd2hhdFRvU2hvdwotewotICAgIHJl
dHVybiBbc2VsZiBfbm9kZUl0ZXJhdG9yXS0+d2hhdFRvU2hvdygpOwotfQotCi0tIChpZCA8RE9N
Tm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgaWYgKG1fZmlsdGVyKQotICAgICAgICAvLyBUaGlz
IG5vZGUgaXRlcmF0b3Igd2FzIGNyZWF0ZWQgZnJvbSB0aGUgb2JqYyBzaWRlCi0gICAgICAgIHJl
dHVybiBbW21fZmlsdGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotCi0gICAgLy8gVGhpcyBub2Rl
IGl0ZXJhdG9yIHdhcyBjcmVhdGVkIGZyb20gdGhlIGMrKyBzaWRlCi0gICAgcmV0dXJuIFtET01O
b2RlRmlsdGVyIF9ub2RlRmlsdGVyV2l0aDpbc2VsZiBfbm9kZUl0ZXJhdG9yXS0+ZmlsdGVyKCld
OwotfQotCi0tIChCT09MKWV4cGFuZEVudGl0eVJlZmVyZW5jZXMKLXsKLSAgICByZXR1cm4gW3Nl
bGYgX25vZGVJdGVyYXRvcl0tPmV4cGFuZEVudGl0eVJlZmVyZW5jZXMoKTsKLX0KLQotLSAoRE9N
Tm9kZSAqKW5leHROb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9k
ZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9ub2RlSXRlcmF0b3JdLT5uZXh0
Tm9kZShlYyldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotLSAoRE9NTm9kZSAqKXByZXZpb3VzTm9kZQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9k
ZUl0ZXJhdG9yXS0+cHJldmlvdXNOb2RlKGVjKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKWRldGFjaAotewotICAgIFtzZWxmIF9u
b2RlSXRlcmF0b3JdLT5kZXRhY2goKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9N
Tm9kZUl0ZXJhdG9yKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NTm9kZUl0ZXJhdG9yICopX25v
ZGVJdGVyYXRvcldpdGg6KE5vZGVJdGVyYXRvciAqKWltcGwgZmlsdGVyOihpZCA8RE9NTm9kZUZp
bHRlcj4pZmlsdGVyCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAg
IAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3Jh
cHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2Nh
Y2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tz
ZWxmIGFsbG9jXSBfaW5pdFdpdGhOb2RlSXRlcmF0b3I6aW1wbCBmaWx0ZXI6ZmlsdGVyXSBhdXRv
cmVsZWFzZV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTVRyZWVXYWxrZXIKLQot
LSAoaWQpX2luaXRXaXRoVHJlZVdhbGtlcjooVHJlZVdhbGtlciAqKWltcGwgZmlsdGVyOihpZCA8
RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVy
IF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihp
bXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwot
ICAgIG1fZmlsdGVyID0gW2ZpbHRlciByZXRhaW5dOwotICAgIHJldHVybiBzZWxmOwotfQotCi0t
IChUcmVlV2Fsa2VyICopX3RyZWVXYWxrZXIKLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8VHJlZVdh
bGtlciAqPihfaW50ZXJuYWwpOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAobV9m
aWx0ZXIpCi0gICAgICAgIFttX2ZpbHRlciByZWxlYXNlXTsKLSAgICBpZiAoX2ludGVybmFsKSB7
Ci0gICAgICAgIERPTV9jYXN0PFRyZWVXYWxrZXIgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAg
ICB9Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAg
aWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxUcmVlV2Fsa2VyICo+KF9pbnRlcm5h
bCktPmRlcmVmKCk7Ci0gICAgfQorICAgICAgICBET01fY2FzdDxXZWJDb3JlOjpOb2RlTGlzdCAq
PihfaW50ZXJuYWwpLT5kZXJlZigpOwogICAgIFtzdXBlciBmaW5hbGl6ZV07CiB9CiAKLS0gKERP
TU5vZGUgKilyb290Ci17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfdHJl
ZVdhbGtlcl0tPnJvb3QoKV07Ci19Ci0KLS0gKHVuc2lnbmVkKXdoYXRUb1Nob3cKLXsKLSAgICBy
ZXR1cm4gW3NlbGYgX3RyZWVXYWxrZXJdLT53aGF0VG9TaG93KCk7Ci19Ci0KLS0gKGlkIDxET01O
b2RlRmlsdGVyPilmaWx0ZXIKLXsKLSAgICBpZiAobV9maWx0ZXIpCi0gICAgICAgIC8vIFRoaXMg
dHJlZSB3YWxrZXIgd2FzIGNyZWF0ZWQgZnJvbSB0aGUgb2JqYyBzaWRlCi0gICAgICAgIHJldHVy
biBbW21fZmlsdGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotCi0gICAgLy8gVGhpcyB0cmVlIHdh
bGtlciB3YXMgY3JlYXRlZCBmcm9tIHRoZSBjKysgc2lkZQotICAgIHJldHVybiBbRE9NTm9kZUZp
bHRlciBfbm9kZUZpbHRlcldpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5maWx0ZXIoKV07Ci19Ci0K
LS0gKEJPT0wpZXhwYW5kRW50aXR5UmVmZXJlbmNlcwotewotICAgIHJldHVybiBbc2VsZiBfdHJl
ZVdhbGtlcl0tPmV4cGFuZEVudGl0eVJlZmVyZW5jZXMoKTsKLX0KLQotLSAoRE9NTm9kZSAqKWN1
cnJlbnROb2RlCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfdHJlZVdh
bGtlcl0tPmN1cnJlbnROb2RlKCldOwotfQotCi0tICh2b2lkKXNldEN1cnJlbnROb2RlOihET01O
b2RlICopY3VycmVudE5vZGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2Vs
ZiBfdHJlZVdhbGtlcl0tPnNldEN1cnJlbnROb2RlKFtjdXJyZW50Tm9kZSBfbm9kZV0sIGVjKTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tIChET01Ob2RlICopcGFyZW50Tm9kZQot
ewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5wYXJl
bnROb2RlKCldOwotfQotCi0tIChET01Ob2RlICopZmlyc3RDaGlsZAotewotICAgIHJldHVybiBb
RE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5maXJzdENoaWxkKCldOwotfQot
Ci0tIChET01Ob2RlICopbGFzdENoaWxkCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0
aDpbc2VsZiBfdHJlZVdhbGtlcl0tPmxhc3RDaGlsZCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKXBy
ZXZpb3VzU2libGluZwotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3Ry
ZWVXYWxrZXJdLT5wcmV2aW91c1NpYmxpbmcoKV07Ci19Ci0KLS0gKERPTU5vZGUgKiluZXh0U2li
bGluZwotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJd
LT5uZXh0U2libGluZygpXTsKLX0KLQotLSAoRE9NTm9kZSAqKXByZXZpb3VzTm9kZQotewotICAg
IHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5wcmV2aW91c05v
ZGUoKV07Ci19Ci0KLS0gKERPTU5vZGUgKiluZXh0Tm9kZQotewotICAgIHJldHVybiBbRE9NTm9k
ZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5uZXh0Tm9kZSgpXTsKLX0KLQotQGVuZAot
Ci1AaW1wbGVtZW50YXRpb24gRE9NVHJlZVdhbGtlciAoV2ViQ29yZUludGVybmFsKQotCi0rIChE
T01UcmVlV2Fsa2VyICopX3RyZWVXYWxrZXJXaXRoOihUcmVlV2Fsa2VyICopaW1wbCBmaWx0ZXI6
KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIKLXsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAgY2FjaGVkSW5zdGFu
Y2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKLSAgICAg
ICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgCi0g
ICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aFRyZWVXYWxrZXI6aW1wbCBmaWx0ZXI6
ZmlsdGVyXSBhdXRvcmVsZWFzZV07Ci19Ci0KLUBlbmQKLQotY2xhc3MgT2JqQ05vZGVGaWx0ZXJD
b25kaXRpb24gOiBwdWJsaWMgTm9kZUZpbHRlckNvbmRpdGlvbiAKLXsKLXB1YmxpYzoKLSAgICBP
YmpDTm9kZUZpbHRlckNvbmRpdGlvbihpZCA8RE9NTm9kZUZpbHRlcj4pOwotICAgIHZpcnR1YWwg
fk9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKCk7Ci0gICAgdmlydHVhbCBzaG9ydCBhY2NlcHROb2Rl
KE5vZGUqKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihj
b25zdCBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbiAmKTsKLSAgICBPYmpDTm9kZUZpbHRlckNvbmRp
dGlvbiAmb3BlcmF0b3I9KGNvbnN0IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uICYpOwotCi0gICAg
aWQgPERPTU5vZGVGaWx0ZXI+IG1fZmlsdGVyOwotfTsKLQotT2JqQ05vZGVGaWx0ZXJDb25kaXRp
b246Ok9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKGlkIDxET01Ob2RlRmlsdGVyPiBmaWx0ZXIpCi0g
ICAgOiBtX2ZpbHRlcihmaWx0ZXIpCi17Ci0gICAgQVNTRVJUKG1fZmlsdGVyKTsKLSAgICBDRlJl
dGFpbihtX2ZpbHRlcik7Ci19Ci0KLU9iakNOb2RlRmlsdGVyQ29uZGl0aW9uOjp+T2JqQ05vZGVG
aWx0ZXJDb25kaXRpb24oKQotewotICAgIENGUmVsZWFzZShtX2ZpbHRlcik7Ci19Ci0KLXNob3J0
IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2RlKE5vZGUqIG5vZGUpIGNvbnN0Cist
IChXZWJDb3JlOjpOb2RlTGlzdCAqKV9ub2RlTGlzdAogewotICAgIGlmICghbm9kZSkKLSAgICAg
ICAgcmV0dXJuIE5vZGVGaWx0ZXI6OkZJTFRFUl9SRUpFQ1Q7Ci0gICAgcmV0dXJuIFttX2ZpbHRl
ciBhY2NlcHROb2RlOltET01Ob2RlIF9ub2RlV2l0aDpub2RlXV07CisgICAgcmV0dXJuIERPTV9j
YXN0PFdlYkNvcmU6Ok5vZGVMaXN0ICo+KF9pbnRlcm5hbCk7CiB9CiAKLUBpbXBsZW1lbnRhdGlv
biBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRUcmF2ZXJzYWwpCi0KLS0gKERPTU5vZGVJdGVyYXRv
ciAqKWNyZWF0ZU5vZGVJdGVyYXRvcjooRE9NTm9kZSAqKXJvb3QgOih1bnNpZ25lZCl3aGF0VG9T
aG93IDooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlciA6KEJPT0wpZXhwYW5kRW50aXR5UmVmZXJl
bmNlcworLSAoRE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4CiB7Ci0gICAgUmVmUHRyPE5v
ZGVGaWx0ZXI+IGNwcEZpbHRlcjsKLSAgICBpZiAoZmlsdGVyKQotICAgICAgICBjcHBGaWx0ZXIg
PSBuZXcgTm9kZUZpbHRlcihuZXcgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oZmlsdGVyKSk7Ci0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPE5vZGVJdGVyYXRvcj4gaW1wbCA9
IFtzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZU5vZGVJdGVyYXRvcihbcm9vdCBfbm9kZV0sIHdoYXRU
b1Nob3csIGNwcEZpbHRlciwgZXhwYW5kRW50aXR5UmVmZXJlbmNlcywgZWMpOwotICAgIHJhaXNl
T25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIFtET01Ob2RlSXRlcmF0b3IgX25vZGVJdGVyYXRv
cldpdGg6aW1wbC5nZXQoKSBmaWx0ZXI6ZmlsdGVyXTsKKyAgICByZXR1cm4gW0RPTU5vZGUgX25v
ZGVXaXRoOltzZWxmIF9ub2RlTGlzdF0tPml0ZW0oaW5kZXgpXTsKIH0KIAotLSAoRE9NVHJlZVdh
bGtlciAqKWNyZWF0ZVRyZWVXYWxrZXI6KERPTU5vZGUgKilyb290IDoodW5zaWduZWQpd2hhdFRv
U2hvdyA6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIgOihCT09MKWV4cGFuZEVudGl0eVJlZmVy
ZW5jZXMKKy0gKHVuc2lnbmVkKWxlbmd0aAogewotICAgIFJlZlB0cjxOb2RlRmlsdGVyPiBjcHBG
aWx0ZXI7Ci0gICAgaWYgKGZpbHRlcikKLSAgICAgICAgY3BwRmlsdGVyID0gbmV3IE5vZGVGaWx0
ZXIobmV3IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKGZpbHRlcikpOwotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIFJlZlB0cjxUcmVlV2Fsa2VyPiBpbXBsID0gW3NlbGYgX2RvY3VtZW50
XS0+Y3JlYXRlVHJlZVdhbGtlcihbcm9vdCBfbm9kZV0sIHdoYXRUb1Nob3csIGNwcEZpbHRlciwg
ZXhwYW5kRW50aXR5UmVmZXJlbmNlcywgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0g
ICAgcmV0dXJuIFtET01UcmVlV2Fsa2VyIF90cmVlV2Fsa2VyV2l0aDppbXBsLmdldCgpIGZpbHRl
cjpmaWx0ZXJdOworICAgIHJldHVybiBbc2VsZiBfbm9kZUxpc3RdLT5sZW5ndGgoKTsKIH0KIAog
QGVuZAotCi1PYmpDRXZlbnRMaXN0ZW5lciogT2JqQ0V2ZW50TGlzdGVuZXI6OmZpbmQoaWQgPERP
TUV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKQotewotICAgIGlmIChMaXN0ZW5lck1hcCogbWFwID0g
bGlzdGVuZXJNYXApCi0gICAgICAgIHJldHVybiBtYXAtPmdldChsaXN0ZW5lcik7Ci0gICAgcmV0
dXJuIE5VTEw7Ci19Ci0KLU9iakNFdmVudExpc3RlbmVyICpPYmpDRXZlbnRMaXN0ZW5lcjo6Y3Jl
YXRlKGlkIDxET01FdmVudExpc3RlbmVyPiBsaXN0ZW5lcikKLXsKLSAgICBPYmpDRXZlbnRMaXN0
ZW5lciAqd3JhcHBlciA9IGZpbmQobGlzdGVuZXIpOwotICAgIGlmICghd3JhcHBlcikKLSAgICAg
ICAgd3JhcHBlciA9IG5ldyBPYmpDRXZlbnRMaXN0ZW5lcihsaXN0ZW5lcik7Ci0gICAgd3JhcHBl
ci0+cmVmKCk7Ci0gICAgcmV0dXJuIHdyYXBwZXI7Ci19Ci0KLU9iakNFdmVudExpc3RlbmVyOjpP
YmpDRXZlbnRMaXN0ZW5lcihpZCA8RE9NRXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpCi0gICAgOiBt
X2xpc3RlbmVyKFtsaXN0ZW5lciByZXRhaW5dKQotewotICAgIExpc3RlbmVyTWFwKiBtYXAgPSBs
aXN0ZW5lck1hcDsKLSAgICBpZiAoIW1hcCkgewotICAgICAgICBtYXAgPSBuZXcgTGlzdGVuZXJN
YXA7Ci0gICAgICAgIGxpc3RlbmVyTWFwID0gbWFwOwotICAgIH0KLSAgICBtYXAtPnNldChsaXN0
ZW5lciwgdGhpcyk7Ci19Ci0KLU9iakNFdmVudExpc3RlbmVyOjp+T2JqQ0V2ZW50TGlzdGVuZXIo
KQotewotICAgIGxpc3RlbmVyTWFwLT5yZW1vdmUobV9saXN0ZW5lcik7Ci0gICAgW21fbGlzdGVu
ZXIgcmVsZWFzZV07Ci19Ci0KLXZvaWQgT2JqQ0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KEV2
ZW50ICpldmVudCwgYm9vbCkKLXsKLSAgICBbbV9saXN0ZW5lciBoYW5kbGVFdmVudDpbRE9NRXZl
bnQgX2V2ZW50V2l0aDpldmVudF1dOwotfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01PYmplY3Qu
aAkocmV2aXNpb24gMTU5NTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwyOCArMjYsMTIgQEAKIAogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3QuaD4KIAotQGNsYXNzIERPTURvY3VtZW50OyAKLUBj
bGFzcyBET01Eb2N1bWVudFR5cGU7Ci1AY2xhc3MgRE9NRWxlbWVudDsKLUBjbGFzcyBET01OYW1l
ZE5vZGVNYXA7Ci1AY2xhc3MgRE9NTm9kZUxpc3Q7Ci0KLXR5cGVkZWYgc3RydWN0IERPTU9iamVj
dEludGVybmFsIERPTU9iamVjdEludGVybmFsOwotCi1AaW50ZXJmYWNlIERPTU9iamVjdCA6IFdl
YlNjcmlwdE9iamVjdCA8TlNDb3B5aW5nPgotewotICAgIERPTU9iamVjdEludGVybmFsICpfaW50
ZXJuYWw7Ci19Ci1AZW5kCi0KIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIERPTVRpbWVTdGFt
cDsKIAogZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgRE9NRXhjZXB0aW9uOwogCisvLyBET00gZXhj
ZXB0aW9uIGNvZGVzCiBlbnVtIHsKLSAgICAvLwotICAgIC8vIERPTSBleGNlcHRpb24gY29kZXMK
LSAgICAvLwogICAgIERPTV9JTkRFWF9TSVpFX0VSUiAgICAgICAgICAgICAgICA9IDEsCiAgICAg
RE9NX0RPTVNUUklOR19TSVpFX0VSUiAgICAgICAgICAgID0gMiwKICAgICBET01fSElFUkFSQ0hZ
X1JFUVVFU1RfRVJSICAgICAgICAgPSAzLApAQCAtNjQsMTYgKzQ5LDkgQEAgZW51bSB7CiAgICAg
RE9NX0lOVkFMSURfQUNDRVNTX0VSUiAgICAgICAgICAgID0gMTUKIH07CiAKLUBpbnRlcmZhY2Ug
RE9NSW1wbGVtZW50YXRpb24gOiBET01PYmplY3QKLS0gKEJPT0wpaGFzRmVhdHVyZTooTlNTdHJp
bmcgKilmZWF0dXJlIDooTlNTdHJpbmcgKil2ZXJzaW9uOwotLSAoRE9NRG9jdW1lbnRUeXBlICop
Y3JlYXRlRG9jdW1lbnRUeXBlOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0cmluZyAq
KXB1YmxpY0lkIDooTlNTdHJpbmcgKilzeXN0ZW1JZDsKLS0gKERPTURvY3VtZW50ICopY3JlYXRl
RG9jdW1lbnQ6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWRO
YW1lIDooRE9NRG9jdW1lbnRUeXBlICopZG9jdHlwZTsKLUBlbmQKIAorLy8gRE9NIG5vZGUgdHlw
ZXMKIGVudW0gewotICAgIC8vCi0gICAgLy8gRE9NIG5vZGUgdHlwZXMKLSAgICAvLwogICAgIERP
TV9FTEVNRU5UX05PREUgICAgICAgICAgICAgICAgICA9IDEsCiAgICAgRE9NX0FUVFJJQlVURV9O
T0RFICAgICAgICAgICAgICAgID0gMiwKICAgICBET01fVEVYVF9OT0RFICAgICAgICAgICAgICAg
ICAgICAgPSAzLApAQCAtODgsMTUzICs2NiwxMCBAQCBlbnVtIHsKICAgICBET01fTk9UQVRJT05f
Tk9ERSAgICAgICAgICAgICAgICAgPSAxMgogfTsKIAotQGludGVyZmFjZSBET01Ob2RlIDogRE9N
T2JqZWN0Ci0tIChOU1N0cmluZyAqKW5vZGVOYW1lOwotLSAoTlNTdHJpbmcgKilub2RlVmFsdWU7
Ci0tICh2b2lkKXNldE5vZGVWYWx1ZTooTlNTdHJpbmcgKilzdHJpbmc7Ci0tICh1bnNpZ25lZCBz
aG9ydClub2RlVHlwZTsKLS0gKERPTU5vZGUgKilwYXJlbnROb2RlOwotLSAoRE9NTm9kZUxpc3Qg
KiljaGlsZE5vZGVzOwotLSAoRE9NTm9kZSAqKWZpcnN0Q2hpbGQ7Ci0tIChET01Ob2RlICopbGFz
dENoaWxkOwotLSAoRE9NTm9kZSAqKXByZXZpb3VzU2libGluZzsKLS0gKERPTU5vZGUgKiluZXh0
U2libGluZzsKLS0gKERPTU5hbWVkTm9kZU1hcCAqKWF0dHJpYnV0ZXM7Ci0tIChET01Eb2N1bWVu
dCAqKW93bmVyRG9jdW1lbnQ7Ci0tIChET01Ob2RlICopaW5zZXJ0QmVmb3JlOihET01Ob2RlICop
bmV3Q2hpbGQgOihET01Ob2RlICopcmVmQ2hpbGQ7Ci0tIChET01Ob2RlICopcmVwbGFjZUNoaWxk
OihET01Ob2RlICopbmV3Q2hpbGQgOihET01Ob2RlICopb2xkQ2hpbGQ7Ci0tIChET01Ob2RlICop
cmVtb3ZlQ2hpbGQ6KERPTU5vZGUgKilvbGRDaGlsZDsKLS0gKERPTU5vZGUgKilhcHBlbmRDaGls
ZDooRE9NTm9kZSAqKW5ld0NoaWxkOwotLSAoQk9PTCloYXNDaGlsZE5vZGVzOwotLSAoRE9NTm9k
ZSAqKWNsb25lTm9kZTooQk9PTClkZWVwOwotLSAodm9pZClub3JtYWxpemU7Ci0tIChCT09MKWlz
U3VwcG9ydGVkOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0cmluZyAqKXZlcnNpb247Ci0tIChO
U1N0cmluZyAqKW5hbWVzcGFjZVVSSTsKLS0gKE5TU3RyaW5nICopcHJlZml4OwotLSAodm9pZClz
ZXRQcmVmaXg6KE5TU3RyaW5nICopcHJlZml4OwotLSAoTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0t
IChCT09MKWhhc0F0dHJpYnV0ZXM7Ci0tIChCT09MKWlzU2FtZU5vZGU6KERPTU5vZGUgKilvdGhl
cjsKLS0gKEJPT0wpaXNFcXVhbE5vZGU6KERPTU5vZGUgKilvdGhlcjsKLS0gKE5TU3RyaW5nICop
dGV4dENvbnRlbnQ7Ci0tICh2b2lkKXNldFRleHRDb250ZW50OihOU1N0cmluZyAqKXRleHQ7Ci1A
ZW5kCi0KLUBpbnRlcmZhY2UgRE9NTm9kZUxpc3QgOiBET01PYmplY3QKLS0gKERPTU5vZGUgKilp
dGVtOih1bnNpZ25lZClpbmRleDsKLS0gKHVuc2lnbmVkKWxlbmd0aDsKLUBlbmQKLQotQGludGVy
ZmFjZSBET01OYW1lZE5vZGVNYXAgOiBET01PYmplY3QKLS0gKERPTU5vZGUgKilnZXROYW1lZEl0
ZW06KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTU5vZGUgKilzZXROYW1lZEl0ZW06KERPTU5vZGUg
Kilhcmc7Ci0tIChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVtOihOU1N0cmluZyAqKW5hbWU7Ci0t
IChET01Ob2RlICopaXRlbToodW5zaWduZWQpaW5kZXg7Ci0tICh1bnNpZ25lZClsZW5ndGg7Ci0t
IChET01Ob2RlICopZ2V0TmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNT
dHJpbmcgKilsb2NhbE5hbWU7Ci0tIChET01Ob2RlICopc2V0TmFtZWRJdGVtTlM6KERPTU5vZGUg
Kilhcmc7Ci0tIChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFtZXNw
YWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NQ2hh
cmFjdGVyRGF0YSA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopZGF0YTsKLS0gKHZvaWQpc2V0RGF0
YTooTlNTdHJpbmcgKilkYXRhOwotLSAodW5zaWduZWQpbGVuZ3RoOwotLSAoTlNTdHJpbmcgKilz
dWJzdHJpbmdEYXRhOih1bnNpZ25lZClvZmZzZXQgOih1bnNpZ25lZCljb3VudDsKLS0gKHZvaWQp
YXBwZW5kRGF0YTooTlNTdHJpbmcgKilhcmc7Ci0tICh2b2lkKWluc2VydERhdGE6KHVuc2lnbmVk
KW9mZnNldCA6KE5TU3RyaW5nICopYXJnOwotLSAodm9pZClkZWxldGVEYXRhOih1bnNpZ25lZClv
ZmZzZXQgOih1bnNpZ25lZCkgY291bnQ7Ci0tICh2b2lkKXJlcGxhY2VEYXRhOih1bnNpZ25lZClv
ZmZzZXQgOih1bnNpZ25lZCljb3VudCA6KE5TU3RyaW5nICopYXJnOwotQGVuZAotCi1AaW50ZXJm
YWNlIERPTUF0dHIgOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKW5hbWU7Ci0tIChCT09MKXNwZWNp
ZmllZDsKLS0gKE5TU3RyaW5nICopdmFsdWU7Ci0tICh2b2lkKXNldFZhbHVlOihOU1N0cmluZyAq
KXZhbHVlOwotLSAoRE9NRWxlbWVudCAqKW93bmVyRWxlbWVudDsKLUBlbmQKLQotQGludGVyZmFj
ZSBET01FbGVtZW50IDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKil0YWdOYW1lOwotLSAoTlNTdHJp
bmcgKilnZXRBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKHZvaWQpc2V0QXR0cmlidXRl
OihOU1N0cmluZyAqKW5hbWUgOihOU1N0cmluZyAqKXZhbHVlOwotLSAodm9pZClyZW1vdmVBdHRy
aWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTUF0dHIgKilnZXRBdHRyaWJ1dGVOb2RlOihO
U1N0cmluZyAqKW5hbWU7Ci0tIChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZTooRE9NQXR0ciAq
KW5ld0F0dHI7Ci0tIChET01BdHRyICopcmVtb3ZlQXR0cmlidXRlTm9kZTooRE9NQXR0ciAqKW9s
ZEF0dHI7Ci0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lOihOU1N0cmluZyAq
KW5hbWU7Ci0tIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFj
ZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAodm9pZClzZXRBdHRyaWJ1dGVOUzooTlNT
dHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0cmlu
ZyAqKXZhbHVlOwotLSAodm9pZClyZW1vdmVBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3Bh
Y2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKERPTUF0dHIgKilnZXRBdHRyaWJ1dGVO
b2RlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0t
IChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZU5TOihET01BdHRyICopbmV3QXR0cjsKLS0gKERP
TU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VV
UkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKEJPT0wpaGFzQXR0cmlidXRlOihOU1N0cmlu
ZyAqKW5hbWU7Ci0tIChCT09MKWhhc0F0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVS
SSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAodm9pZClmb2N1czsKLS0gKHZvaWQpYmx1cjsK
LUBlbmQKLQotQGludGVyZmFjZSBET01UZXh0IDogRE9NQ2hhcmFjdGVyRGF0YQotLSAoRE9NVGV4
dCAqKXNwbGl0VGV4dDoodW5zaWduZWQpb2Zmc2V0OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUNv
bW1lbnQgOiBET01DaGFyYWN0ZXJEYXRhCi1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NQ0RBVEFTZWN0
aW9uIDogRE9NVGV4dAotQGVuZAotCi1AaW50ZXJmYWNlIERPTURvY3VtZW50VHlwZSA6IERPTU5v
ZGUKLS0gKE5TU3RyaW5nICopbmFtZTsKLS0gKERPTU5hbWVkTm9kZU1hcCAqKWVudGl0aWVzOwot
LSAoRE9NTmFtZWROb2RlTWFwICopbm90YXRpb25zOwotLSAoTlNTdHJpbmcgKilwdWJsaWNJZDsK
LS0gKE5TU3RyaW5nICopc3lzdGVtSWQ7Ci0tIChOU1N0cmluZyAqKWludGVybmFsU3Vic2V0Owot
QGVuZAotCi1AaW50ZXJmYWNlIERPTU5vdGF0aW9uIDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKilw
dWJsaWNJZDsKLS0gKE5TU3RyaW5nICopc3lzdGVtSWQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9N
RW50aXR5IDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKilwdWJsaWNJZDsKLS0gKE5TU3RyaW5nICop
c3lzdGVtSWQ7Ci0tIChOU1N0cmluZyAqKW5vdGF0aW9uTmFtZTsKLUBlbmQKLQotQGludGVyZmFj
ZSBET01FbnRpdHlSZWZlcmVuY2UgOiBET01Ob2RlCi1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NUHJv
Y2Vzc2luZ0luc3RydWN0aW9uIDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKil0YXJnZXQ7Ci0tIChO
U1N0cmluZyAqKWRhdGE7Ci0tICh2b2lkKXNldERhdGE6KE5TU3RyaW5nICopZGF0YTsKLUBlbmQK
LQotQGludGVyZmFjZSBET01Eb2N1bWVudEZyYWdtZW50IDogRE9NTm9kZQotQGVuZAordHlwZWRl
ZiBzdHJ1Y3QgRE9NT2JqZWN0SW50ZXJuYWwgRE9NT2JqZWN0SW50ZXJuYWw7CiAKLUBpbnRlcmZh
Y2UgRE9NRG9jdW1lbnQgOiBET01Ob2RlCi0tIChET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlOwot
LSAoRE9NSW1wbGVtZW50YXRpb24gKilpbXBsZW1lbnRhdGlvbjsKLS0gKERPTUVsZW1lbnQgKilk
b2N1bWVudEVsZW1lbnQ7Ci0tIChET01FbGVtZW50ICopY3JlYXRlRWxlbWVudDooTlNTdHJpbmcg
Kil0YWdOYW1lOwotLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWNyZWF0ZURvY3VtZW50RnJhZ21l
bnQ7Ci0tIChET01UZXh0ICopY3JlYXRlVGV4dE5vZGU6KE5TU3RyaW5nICopZGF0YTsKLS0gKERP
TUNvbW1lbnQgKiljcmVhdGVDb21tZW50OihOU1N0cmluZyAqKWRhdGE7Ci0tIChET01DREFUQVNl
Y3Rpb24gKiljcmVhdGVDREFUQVNlY3Rpb246KE5TU3RyaW5nICopZGF0YTsKLS0gKERPTVByb2Nl
c3NpbmdJbnN0cnVjdGlvbiAqKWNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbjooTlNTdHJpbmcg
Kil0YXJnZXQgOihOU1N0cmluZyAqKWRhdGE7Ci0tIChET01BdHRyICopY3JlYXRlQXR0cmlidXRl
OihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01FbnRpdHlSZWZlcmVuY2UgKiljcmVhdGVFbnRpdHlS
ZWZlcmVuY2U6KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNC
eVRhZ05hbWU6KE5TU3RyaW5nICopdGFnbmFtZTsKLS0gKERPTU5vZGUgKilpbXBvcnROb2RlOihE
T01Ob2RlICopaW1wb3J0ZWROb2RlIDooQk9PTClkZWVwOwotLSAoRE9NRWxlbWVudCAqKWNyZWF0
ZUVsZW1lbnROUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmll
ZE5hbWU7Ci0tIChET01BdHRyICopY3JlYXRlQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNw
YWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lOwotLSAoRE9NTm9kZUxpc3QgKilnZXRF
bGVtZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICop
bG9jYWxOYW1lOwotLSAoRE9NRWxlbWVudCAqKWdldEVsZW1lbnRCeUlkOihOU1N0cmluZyAqKWVs
ZW1lbnRJZDsKLS0gKERPTU5vZGUgKilhZG9wdE5vZGU6KERPTU5vZGUgKilzb3VyY2U7CitAaW50
ZXJmYWNlIERPTU9iamVjdCA6IFdlYlNjcmlwdE9iamVjdCA8TlNDb3B5aW5nPgoreworICAgIERP
TU9iamVjdEludGVybmFsICpfaW50ZXJuYWw7Cit9CiBAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NT2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01PYmplY3QubW0JKHJldmlzaW9uIDE1OTU5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTU9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBKYW1lcyBHLiBTcGV0aCAoc3BldGhAZW5kLmNv
bSkKKyAqIENvcHlyaWdodCAoQykgMjAwNiBKYW1lcyBHLiBTcGV0aCA8c3BldGhAZW5kLmNvbT4K
KyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNv
bT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMTE0ICsyNiw5IEBACiAg
Ki8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJET00uaCIKKyNpbXBvcnQgIkRPTU9i
amVjdC5oIgogCi0jaW1wb3J0ICJDREFUQVNlY3Rpb24uaCIKLSNpbXBvcnQgImNzc2hlbHBlci5o
IgotI2ltcG9ydCAiQ1NTU3R5bGVTaGVldC5oIgotI2ltcG9ydCAiQ29tbWVudC5oIgotI2ltcG9y
dCAiRE9NRXZlbnRzSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTUltcGxlbWVudGF0aW9uRnJvbnQu
aCIKICNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0jaW1wb3J0ICJET01Qcml2YXRlLmgiCi0jaW1w
b3J0ICJEb2N1bWVudC5oIgotI2ltcG9ydCAiRG9jdW1lbnRGcmFnbWVudC5oIgotI2ltcG9ydCAi
RG9jdW1lbnRUeXBlLmgiCi0jaW1wb3J0ICJFbnRpdHkuaCIKLSNpbXBvcnQgIkVudGl0eVJlZmVy
ZW5jZS5oIgotI2ltcG9ydCAiRXZlbnQuaCIKLSNpbXBvcnQgIkV2ZW50TGlzdGVuZXIuaCIKLSNp
bXBvcnQgIkZvdW5kYXRpb25FeHRyYXMuaCIKLSNpbXBvcnQgIkZyYW1lTWFjLmgiCi0jaW1wb3J0
ICJIVE1MRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxOYW1lcy5oIgotI2ltcG9ydCAiSFRNTFBs
dWdJbkVsZW1lbnQuaCIKLSNpbXBvcnQgIk5vZGVGaWx0ZXIuaCIKLSNpbXBvcnQgIk5vZGVGaWx0
ZXJDb25kaXRpb24uaCIKLSNpbXBvcnQgIk5vZGVJdGVyYXRvci5oIgotI2ltcG9ydCAiTm9kZUxp
c3QuaCIKLSNpbXBvcnQgIk5vdGF0aW9uLmgiCi0jaW1wb3J0ICJQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uaCIKLSNpbXBvcnQgIlF1YWxpZmllZE5hbWUuaCIKLSNpbXBvcnQgIlJhbmdlLmgiCi0jaW1w
b3J0ICJSZW5kZXJJbWFnZS5oIgotI2ltcG9ydCAiVHJlZVdhbGtlci5oIgotI2ltcG9ydCAiV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgotI2ltcG9ydCA8b2JqYy9vYmpjLWNsYXNzLmg+Ci0KLXVz
aW5nIFdlYkNvcmU6OkF0b21pY1N0cmluZzsKLXVzaW5nIFdlYkNvcmU6OkF0b21pY1N0cmluZ0lt
cGw7Ci11c2luZyBXZWJDb3JlOjpBdHRyOwotdXNpbmcgV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTsK
LXVzaW5nIFdlYkNvcmU6OkRlcHJlY2F0ZWRWYWx1ZUxpc3Q7Ci11c2luZyBXZWJDb3JlOjpEb2N1
bWVudDsKLXVzaW5nIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ7Ci11c2luZyBXZWJDb3JlOjpE
b2N1bWVudFR5cGU7Ci11c2luZyBXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbkZyb250OwotdXNp
bmcgV2ViQ29yZTo6RWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6OkVudGl0eTsKLXVzaW5nIFdlYkNv
cmU6OkV2ZW50OwotdXNpbmcgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcjsKLXVzaW5nIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGU7Ci11c2luZyBXZWJDb3JlOjpIVE1MRG9jdW1lbnQ7Ci11c2luZyBXZWJD
b3JlOjpIVE1MRWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6OkZyYW1lTWFjOwotdXNpbmcgV2ViQ29y
ZTo6SW50UmVjdDsKLXVzaW5nIFdlYkNvcmU6OktVUkw7Ci11c2luZyBXZWJDb3JlOjpOYW1lZE5v
ZGVNYXA7Ci11c2luZyBXZWJDb3JlOjpOb2RlOwotdXNpbmcgV2ViQ29yZTo6Tm9kZUZpbHRlcjsK
LXVzaW5nIFdlYkNvcmU6Ok5vZGVGaWx0ZXJDb25kaXRpb247Ci11c2luZyBXZWJDb3JlOjpOb2Rl
SXRlcmF0b3I7Ci11c2luZyBXZWJDb3JlOjpOb2RlTGlzdDsKLXVzaW5nIFdlYkNvcmU6Ok5vdGF0
aW9uOwotdXNpbmcgV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOwotdXNpbmcgV2ViQ29y
ZTo6UXVhbGlmaWVkTmFtZTsKLXVzaW5nIFdlYkNvcmU6OlJhbmdlOwotdXNpbmcgV2ViQ29yZTo6
UmVuZGVySW1hZ2U7Ci11c2luZyBXZWJDb3JlOjpSZW5kZXJPYmplY3Q7Ci11c2luZyBXZWJDb3Jl
OjpTdHJpbmc7Ci11c2luZyBXZWJDb3JlOjpUZXh0OwotdXNpbmcgV2ViQ29yZTo6VHJlZVdhbGtl
cjsKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkhUTUxOYW1lczsKLQotQGludGVyZmFjZSBE
T01BdHRyIChXZWJDb3JlSW50ZXJuYWwpCi0rIChET01BdHRyICopX2F0dHJXaXRoOihBdHRyICop
aW1wbDsKLS0gKEF0dHIgKilfYXR0cjsKLUBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudFR5
cGUgKFdlYkNvcmVJbnRlcm5hbCkKLS0gKERvY3VtZW50VHlwZSAqKV9kb2N1bWVudFR5cGU7Ci1A
ZW5kCi0KLUBpbnRlcmZhY2UgRE9NSW1wbGVtZW50YXRpb24gKFdlYkNvcmVJbnRlcm5hbCkKLSsg
KERPTUltcGxlbWVudGF0aW9uICopX0RPTUltcGxlbWVudGF0aW9uV2l0aDooRE9NSW1wbGVtZW50
YXRpb25Gcm9udCAqKWltcGw7Ci0tIChET01JbXBsZW1lbnRhdGlvbkZyb250ICopX0RPTUltcGxl
bWVudGF0aW9uOwotQGVuZAotCi1jbGFzcyBPYmpDRXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBFdmVu
dExpc3RlbmVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgT2JqQ0V2ZW50TGlzdGVuZXIgKmZpbmQo
aWQgPERPTUV2ZW50TGlzdGVuZXI+KTsKLSAgICBzdGF0aWMgT2JqQ0V2ZW50TGlzdGVuZXIgKmNy
ZWF0ZShpZCA8RE9NRXZlbnRMaXN0ZW5lcj4pOwotCi1wcml2YXRlOgotICAgIE9iakNFdmVudExp
c3RlbmVyKGlkIDxET01FdmVudExpc3RlbmVyPik7Ci0gICAgdmlydHVhbCB+T2JqQ0V2ZW50TGlz
dGVuZXIoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChFdmVudCAqLCBib29sIGlz
V2luZG93RXZlbnQpOwotCi0gICAgaWQgPERPTUV2ZW50TGlzdGVuZXI+IG1fbGlzdGVuZXI7Ci19
OwotCi10eXBlZGVmIEhhc2hNYXA8aWQsIE9iakNFdmVudExpc3RlbmVyKj4gTGlzdGVuZXJNYXA7
Ci10eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENsYXNzPiBPYmpDQ2xhc3NNYXA7
Ci0KLXN0YXRpYyBPYmpDQ2xhc3NNYXAqIGVsZW1lbnRDbGFzc01hcDsKLXN0YXRpYyBMaXN0ZW5l
ck1hcCogbGlzdGVuZXJNYXA7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyBET01PYmplY3QKIAogQGltcGxlbWVudGF0aW9uIERPTU9iamVjdAogCkBAIC0xNDYsMTcg
KzQyLDE1IEBAIHN0YXRpYyBMaXN0ZW5lck1hcCogbGlzdGVuZXJNYXA7CiAKIC0gKHZvaWQpZGVh
bGxvYwogewotICAgIGlmIChfaW50ZXJuYWwpIHsKKyAgICBpZiAoX2ludGVybmFsKQogICAgICAg
ICByZW1vdmVET01XcmFwcGVyKF9pbnRlcm5hbCk7Ci0gICAgfQogICAgIFtzdXBlciBkZWFsbG9j
XTsKIH0KIAogLSAodm9pZClmaW5hbGl6ZQogewotICAgIGlmIChfaW50ZXJuYWwpIHsKKyAgICBp
ZiAoX2ludGVybmFsKQogICAgICAgICByZW1vdmVET01XcmFwcGVyKF9pbnRlcm5hbCk7Ci0gICAg
fQogICAgIFtzdXBlciBmaW5hbGl6ZV07CiB9CiAKQEAgLTE2NiwyMjA3ICs2MCwzIEBAIHN0YXRp
YyBMaXN0ZW5lck1hcCogbGlzdGVuZXJNYXA7CiB9CiAKIEBlbmQKLQotQGltcGxlbWVudGF0aW9u
IERPTU9iamVjdCAoV2ViQ29yZUludGVybmFsKQotCi0tIChpZClfaW5pdAotewotICAgIHJldHVy
biBbc3VwZXIgX2luaXRdOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyBET01Ob2RlCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlCi0KLS0gKHZv
aWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9k
ZSAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19
Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERP
TV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGZp
bmFsaXplXTsKLX0KLQotLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgotewotICAgIGlmICghX2lu
dGVybmFsKSB7Ci0gICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwl
QDogbnVsbD4iLAotICAgICAgICAgICAgW1tzZWxmIGNsYXNzXSBkZXNjcmlwdGlvbl0sIHNlbGZd
OwotICAgIH0KLSAgICBOU1N0cmluZyAqdmFsdWUgPSBbc2VsZiBub2RlVmFsdWVdOwotICAgIGlm
ICh2YWx1ZSkgewotICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8
JUAgWyVAXTogJXAgJyVAJz4iLAotICAgICAgICAgICAgW1tzZWxmIGNsYXNzXSBkZXNjcmlwdGlv
bl0sIFtzZWxmIG5vZGVOYW1lXSwgX2ludGVybmFsLCB2YWx1ZV07Ci0gICAgfQotICAgIHJldHVy
biBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQCBbJUBdOiAlcD4iLAotICAgICAgICBb
W3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9uXSwgW3NlbGYgbm9kZU5hbWVdLCBfaW50ZXJuYWxdOwot
fQotCi0tIChOU1N0cmluZyAqKW5vZGVOYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+
bm9kZU5hbWUoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilub2RlVmFsdWUKLXsKLSAgICAvLyBEb2N1
bWVudGF0aW9uIHNheXMgd2UgY2FuIHJhaXNlIGEgRE9NU1RSSU5HX1NJWkVfRVJSLgotICAgIC8v
IEhvd2V2ZXIsIHRoZSBsb3dlciBsYXllciBkb2VzIG5vdCByZXBvcnQgdGhhdCBlcnJvciB1cCB0
byB1cy4KLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2RlVmFsdWUoKTsKLX0KLQotLSAodm9p
ZClzZXROb2RlVmFsdWU6KE5TU3RyaW5nICopc3RyaW5nCi17Ci0gICAgQVNTRVJUKHN0cmluZyk7
Ci0gICAgCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX25vZGVdLT5zZXRO
b2RlVmFsdWUoc3RyaW5nLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAo
dW5zaWduZWQgc2hvcnQpbm9kZVR5cGUKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2Rl
VHlwZSgpOwotfQotCi0tIChET01Ob2RlICopcGFyZW50Tm9kZQotewotICAgIHJldHVybiBbRE9N
Tm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5wYXJlbnROb2RlKCldOwotfQotCi0tIChET01O
b2RlTGlzdCAqKWNoaWxkTm9kZXMKLXsKLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlz
dFdpdGg6W3NlbGYgX25vZGVdLT5jaGlsZE5vZGVzKCkuZ2V0KCldOwotfQotCi0tIChET01Ob2Rl
ICopZmlyc3RDaGlsZAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25v
ZGVdLT5maXJzdENoaWxkKCldOwotfQotCi0tIChET01Ob2RlICopbGFzdENoaWxkCi17Ci0gICAg
cmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPmxhc3RDaGlsZCgpXTsKLX0K
LQotLSAoRE9NTm9kZSAqKXByZXZpb3VzU2libGluZwotewotICAgIHJldHVybiBbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX25vZGVdLT5wcmV2aW91c1NpYmxpbmcoKV07Ci19Ci0KLS0gKERPTU5v
ZGUgKiluZXh0U2libGluZwotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYg
X25vZGVdLT5uZXh0U2libGluZygpXTsKLX0KLQotLSAoRE9NTmFtZWROb2RlTWFwICopYXR0cmli
dXRlcwotewotICAgIC8vIERPTSBsZXZlbCAyIGNvcmUgc3BlY2lmaWNhdGlvbiBzYXlzOiAKLSAg
ICAvLyBBIE5hbWVkTm9kZU1hcCBjb250YWluaW5nIHRoZSBhdHRyaWJ1dGVzIG9mIHRoaXMgbm9k
ZSAoaWYgaXQgaXMgYW4gRWxlbWVudCkgb3IgbnVsbCBvdGhlcndpc2UuCi0gICAgcmV0dXJuIG5p
bDsKLX0KLQotLSAoRE9NRG9jdW1lbnQgKilvd25lckRvY3VtZW50Ci17Ci0gICAgcmV0dXJuIFtE
T01Eb2N1bWVudCBfZG9jdW1lbnRXaXRoOltzZWxmIF9ub2RlXS0+ZG9jdW1lbnQoKV07Ci19Ci0K
LS0gKERPTU5vZGUgKilpbnNlcnRCZWZvcmU6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUg
KilyZWZDaGlsZAotewotICAgIEFTU0VSVChuZXdDaGlsZCk7Ci0gICAgQVNTRVJUKHJlZkNoaWxk
KTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChbc2VsZiBfbm9kZV0tPmlu
c2VydEJlZm9yZShbbmV3Q2hpbGQgX25vZGVdLCBbcmVmQ2hpbGQgX25vZGVdLCBlYykpCi0gICAg
ICAgIHJldHVybiBuZXdDaGlsZDsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVy
biBuaWw7Ci19Ci0KLS0gKERPTU5vZGUgKilyZXBsYWNlQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGls
ZCA6KERPTU5vZGUgKilvbGRDaGlsZAotewotICAgIEFTU0VSVChuZXdDaGlsZCk7Ci0gICAgQVNT
RVJUKG9sZENoaWxkKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChbc2Vs
ZiBfbm9kZV0tPnJlcGxhY2VDaGlsZChbbmV3Q2hpbGQgX25vZGVdLCBbb2xkQ2hpbGQgX25vZGVd
LCBlYykpCi0gICAgICAgIHJldHVybiBvbGRDaGlsZDsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKERPTU5vZGUgKilyZW1vdmVDaGlsZDooRE9NTm9k
ZSAqKW9sZENoaWxkCi17Ci0gICAgQVNTRVJUKG9sZENoaWxkKTsKLQotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIGlmIChbc2VsZiBfbm9kZV0tPnJlbW92ZUNoaWxkKFtvbGRDaGlsZCBf
bm9kZV0sIGVjKSkKLSAgICAgICAgcmV0dXJuIG9sZENoaWxkOwotICAgIHJhaXNlT25ET01FcnJv
cihlYyk7Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoRE9NTm9kZSAqKWFwcGVuZENoaWxkOihE
T01Ob2RlICopbmV3Q2hpbGQKLXsKLSAgICBBU1NFUlQobmV3Q2hpbGQpOwotCi0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKFtzZWxmIF9ub2RlXS0+YXBwZW5kQ2hpbGQoW25ld0No
aWxkIF9ub2RlXSwgZWMpKQotICAgICAgICByZXR1cm4gbmV3Q2hpbGQ7Ci0gICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChCT09MKWhhc0NoaWxkTm9kZXMK
LXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5oYXNDaGlsZE5vZGVzKCk7Ci19Ci0KLS0gKERP
TU5vZGUgKiljbG9uZU5vZGU6KEJPT0wpZGVlcAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX25vZGVdLT5jbG9uZU5vZGUoZGVlcCkuZ2V0KCldOwotfQotCi0tICh2b2lk
KW5vcm1hbGl6ZQotewotICAgIFtzZWxmIF9ub2RlXS0+bm9ybWFsaXplKCk7Ci19Ci0KLS0gKEJP
T0wpaXNTdXBwb3J0ZWQ6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbgot
ewotICAgIEFTU0VSVChmZWF0dXJlKTsKLSAgICBBU1NFUlQodmVyc2lvbik7Ci0KLSAgICByZXR1
cm4gW3NlbGYgX25vZGVdLT5pc1N1cHBvcnRlZChmZWF0dXJlLCB2ZXJzaW9uKTsKLX0KLQotLSAo
TlNTdHJpbmcgKiluYW1lc3BhY2VVUkkKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5uYW1l
c3BhY2VVUkkoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilwcmVmaXgKLXsKLSAgICByZXR1cm4gW3Nl
bGYgX25vZGVdLT5wcmVmaXgoKTsKLX0KLQotLSAodm9pZClzZXRQcmVmaXg6KE5TU3RyaW5nICop
cHJlZml4Ci17Ci0gICAgQVNTRVJUKHByZWZpeCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBTdHJpbmcgcHJlZml4U3RyKHByZWZpeCk7Ci0gICAgW3NlbGYgX25vZGVdLT5zZXRQ
cmVmaXgocHJlZml4U3RyLmltcGwoKSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19
Ci0KLS0gKE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+
bG9jYWxOYW1lKCk7Ci19Ci0KLS0gKEJPT0wpaGFzQXR0cmlidXRlcwotewotICAgIHJldHVybiBb
c2VsZiBfbm9kZV0tPmhhc0F0dHJpYnV0ZXMoKTsKLX0KLQotLSAoQk9PTClpc1NhbWVOb2RlOihE
T01Ob2RlICopb3RoZXIKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc1NhbWVOb2RlKFtv
dGhlciBfbm9kZV0pOwotfQotCi0tIChCT09MKWlzRXF1YWxOb2RlOihET01Ob2RlICopb3RoZXIK
LXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc0VxdWFsTm9kZShbb3RoZXIgX25vZGVdKTsK
LX0KLQotLSAoQk9PTClpc0RlZmF1bHROYW1lc3BhY2U6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJ
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aXNEZWZhdWx0TmFtZXNwYWNlKG5hbWVzcGFj
ZVVSSSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbG9va3VwUHJlZml4OihOU1N0cmluZyAqKW5hbWVz
cGFjZVVSSQotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmxvb2t1cFByZWZpeChuYW1lc3Bh
Y2VVUkkpOwotfQotCi0tIChOU1N0cmluZyAqKWxvb2t1cE5hbWVzcGFjZVVSSTooTlNTdHJpbmcg
KilwcmVmaXgKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5sb29rdXBOYW1lc3BhY2VVUkko
cHJlZml4KTsKLX0KLQotLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudAotewotICAgIHJldHVybiBb
c2VsZiBfbm9kZV0tPnRleHRDb250ZW50KCk7Ci19Ci0KLS0gKHZvaWQpc2V0VGV4dENvbnRlbnQ6
KE5TU3RyaW5nICopdGV4dAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxm
IF9ub2RlXS0+c2V0VGV4dENvbnRlbnQodGV4dCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7Ci19Ci0KLS0gKE5TUmVjdClib3VuZGluZ0JveAotewotICAgIFdlYkNvcmU6OlJlbmRlck9i
amVjdCAqcmVuZGVyZXIgPSBbc2VsZiBfbm9kZV0tPnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRl
cmVyKQotICAgICAgICByZXR1cm4gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7
Ci0gICAgcmV0dXJuIE5TWmVyb1JlY3Q7Ci19Ci0KLS0gKE5TQXJyYXkgKilsaW5lQm94UmVjdHMK
LXsKLSAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gW3NlbGYgX25vZGVdLT5y
ZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlcikgewotICAgICAgICBOU011dGFibGVBcnJheSAq
cmVzdWx0cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAgICAgICBEZXByZWNh
dGVkVmFsdWVMaXN0PEludFJlY3Q+IHJlY3RzID0gcmVuZGVyZXItPmxpbmVCb3hSZWN0cygpOwot
ICAgICAgICBpZiAoIXJlY3RzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgZm9yIChEZXByZWNh
dGVkVmFsdWVMaXN0PEludFJlY3Q+OjpDb25zdEl0ZXJhdG9yIGl0ID0gcmVjdHMuYmVnaW4oKTsg
aXQgIT0gcmVjdHMuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICAgICAgW3Jlc3VsdHMgYWRkT2Jq
ZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6Kml0XV07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIFtyZXN1bHRzIGF1dG9yZWxlYXNlXTsKLSAgICB9Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQot
QGVuZAotCi1zdGF0aWMgdm9pZCBhZGRFbGVtZW50Q2xhc3MoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnLCBDbGFzcyBvYmpDQ2xhc3MpCi17Ci0gICAgZWxlbWVudENsYXNzTWFwLT5zZXQodGFnLmxv
Y2FsTmFtZSgpLmltcGwoKSwgb2JqQ0NsYXNzKTsKLX0KLQotc3RhdGljIHZvaWQgY3JlYXRlSFRN
TEVsZW1lbnRDbGFzc01hcCgpCi17Ci0gICAgLy8gQ3JlYXRlIHRoZSB0YWJsZS4KLSAgICBlbGVt
ZW50Q2xhc3NNYXAgPSBuZXcgT2JqQ0NsYXNzTWFwOwotICAgIAotICAgIC8vIFBvcHVsYXRlIGl0
IHdpdGggSFRNTCBlbGVtZW50IGNsYXNzZXMuCi0gICAgYWRkRWxlbWVudENsYXNzKGFUYWcsIFtE
T01IVE1MQW5jaG9yRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhhcHBsZXRU
YWcsIFtET01IVE1MQXBwbGV0RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhh
cmVhVGFnLCBbRE9NSFRNTEFyZWFFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KGJhc2VUYWcsIFtET01IVE1MQmFzZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xh
c3MoYmFzZWZvbnRUYWcsIFtET01IVE1MQmFzZUZvbnRFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRk
RWxlbWVudENsYXNzKGJvZHlUYWcsIFtET01IVE1MQm9keUVsZW1lbnQgY2xhc3NdKTsKLSAgICBh
ZGRFbGVtZW50Q2xhc3MoYnJUYWcsIFtET01IVE1MQlJFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRk
RWxlbWVudENsYXNzKGJ1dHRvblRhZywgW0RPTUhUTUxCdXR0b25FbGVtZW50IGNsYXNzXSk7Ci0g
ICAgYWRkRWxlbWVudENsYXNzKGNhbnZhc1RhZywgW0RPTUhUTUxJbWFnZUVsZW1lbnQgY2xhc3Nd
KTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoY2FwdGlvblRhZywgW0RPTUhUTUxUYWJsZUNhcHRpb25F
bGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGNvbFRhZywgW0RPTUhUTUxUYWJs
ZUNvbEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoY29sZ3JvdXBUYWcsIFtE
T01IVE1MVGFibGVDb2xFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGRpclRh
ZywgW0RPTUhUTUxEaXJlY3RvcnlFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KGRpdlRhZywgW0RPTUhUTUxEaXZFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KGRsVGFnLCBbRE9NSFRNTERMaXN0RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFz
cyhmaWVsZHNldFRhZywgW0RPTUhUTUxGaWVsZFNldEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRF
bGVtZW50Q2xhc3MoZm9udFRhZywgW0RPTUhUTUxGb250RWxlbWVudCBjbGFzc10pOwotICAgIGFk
ZEVsZW1lbnRDbGFzcyhmb3JtVGFnLCBbRE9NSFRNTEZvcm1FbGVtZW50IGNsYXNzXSk7Ci0gICAg
YWRkRWxlbWVudENsYXNzKGZyYW1lVGFnLCBbRE9NSFRNTEZyYW1lRWxlbWVudCBjbGFzc10pOwot
ICAgIGFkZEVsZW1lbnRDbGFzcyhmcmFtZXNldFRhZywgW0RPTUhUTUxGcmFtZVNldEVsZW1lbnQg
Y2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDFUYWcsIFtET01IVE1MSGVhZGluZ0VsZW1l
bnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDJUYWcsIFtET01IVE1MSGVhZGluZ0Vs
ZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDNUYWcsIFtET01IVE1MSGVhZGlu
Z0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDRUYWcsIFtET01IVE1MSGVh
ZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDVUYWcsIFtET01IVE1M
SGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDZUYWcsIFtET01I
VE1MSGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaGVhZFRhZywg
W0RPTUhUTUxIZWFkRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoclRhZywg
W0RPTUhUTUxIUkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaHRtbFRhZywg
W0RPTUhUTUxIdG1sRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhpZnJhbWVU
YWcsIFtET01IVE1MSUZyYW1lRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhp
bWdUYWcsIFtET01IVE1MSW1hZ2VFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KGlucHV0VGFnLCBbRE9NSFRNTElucHV0RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyhpc2luZGV4VGFnLCBbRE9NSFRNTElzSW5kZXhFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRk
RWxlbWVudENsYXNzKGxhYmVsVGFnLCBbRE9NSFRNTExhYmVsRWxlbWVudCBjbGFzc10pOwotICAg
IGFkZEVsZW1lbnRDbGFzcyhsZWdlbmRUYWcsIFtET01IVE1MTGVnZW5kRWxlbWVudCBjbGFzc10p
OwotICAgIGFkZEVsZW1lbnRDbGFzcyhsaVRhZywgW0RPTUhUTUxMSUVsZW1lbnQgY2xhc3NdKTsK
LSAgICBhZGRFbGVtZW50Q2xhc3MobGlua1RhZywgW0RPTUhUTUxMaW5rRWxlbWVudCBjbGFzc10p
OwotICAgIGFkZEVsZW1lbnRDbGFzcyhsaXN0aW5nVGFnLCBbRE9NSFRNTFByZUVsZW1lbnQgY2xh
c3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MobWFwVGFnLCBbRE9NSFRNTE1hcEVsZW1lbnQgY2xh
c3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MobWVudVRhZywgW0RPTUhUTUxNZW51RWxlbWVudCBj
bGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhtZXRhVGFnLCBbRE9NSFRNTE1ldGFFbGVtZW50
IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKG9iamVjdFRhZywgW0RPTUhUTUxPYmplY3RF
bGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKG9sVGFnLCBbRE9NSFRNTE9MaXN0
RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhvcHRncm91cFRhZywgW0RPTUhU
TUxPcHRHcm91cEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mob3B0aW9uVGFn
LCBbRE9NSFRNTE9wdGlvbkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MocFRh
ZywgW0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KHBhcmFtVGFnLCBbRE9NSFRNTFBhcmFtRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyhwcmVUYWcsIFtET01IVE1MUHJlRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyhxVGFnLCBbRE9NSFRNTFF1b3RlRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyhzY3JpcHRUYWcsIFtET01IVE1MU2NyaXB0RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVs
ZW1lbnRDbGFzcyhzZWxlY3RUYWcsIFtET01IVE1MU2VsZWN0RWxlbWVudCBjbGFzc10pOwotICAg
IGFkZEVsZW1lbnRDbGFzcyhzdHlsZVRhZywgW0RPTUhUTUxTdHlsZUVsZW1lbnQgY2xhc3NdKTsK
LSAgICBhZGRFbGVtZW50Q2xhc3ModGFibGVUYWcsIFtET01IVE1MVGFibGVFbGVtZW50IGNsYXNz
XSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHRib2R5VGFnLCBbRE9NSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModGRUYWcsIFtET01IVE1MVGFibGVD
ZWxsRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh0ZXh0YXJlYVRhZywgW0RP
TUhUTUxUZXh0QXJlYUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModGZvb3RU
YWcsIFtET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyh0aGVhZFRhZywgW0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50IGNsYXNzXSk7Ci0gICAg
YWRkRWxlbWVudENsYXNzKHRpdGxlVGFnLCBbRE9NSFRNTFRpdGxlRWxlbWVudCBjbGFzc10pOwot
ICAgIGFkZEVsZW1lbnRDbGFzcyh0clRhZywgW0RPTUhUTUxUYWJsZVJvd0VsZW1lbnQgY2xhc3Nd
KTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModWxUYWcsIFtET01IVE1MVUxpc3RFbGVtZW50IGNsYXNz
XSk7Ci0KLSAgICAvLyBGSVhNRTogUmVmbGVjdCBtYXJxdWVlIG9uY2UgdGhlIEFQSSBoYXMgYmVl
biBkZXRlcm1pbmVkLgotfQotCi1zdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21p
Y1N0cmluZyYgdGFnTmFtZSkKLXsKLSAgICBpZiAoIWVsZW1lbnRDbGFzc01hcCkKLSAgICAgICAg
Y3JlYXRlSFRNTEVsZW1lbnRDbGFzc01hcCgpOwotICAgIENsYXNzIG9iamNDbGFzcyA9IGVsZW1l
bnRDbGFzc01hcC0+Z2V0KHRhZ05hbWUuaW1wbCgpKTsKLSAgICBpZiAoIW9iamNDbGFzcykKLSAg
ICAgICAgb2JqY0NsYXNzID0gW0RPTUhUTUxFbGVtZW50IGNsYXNzXTsKLSAgICByZXR1cm4gb2Jq
Y0NsYXNzOwotfQotCi1AaW1wbGVtZW50YXRpb24gRE9NTm9kZSAoV2ViQ29yZUludGVybmFsKQot
Ci0tIChpZClfaW5pdFdpdGhOb2RlOihOb2RlICopaW1wbAotewotICAgIEFTU0VSVChpbXBsKTsK
LQotICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0
SW50ZXJuYWwgKj4oaW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcihz
ZWxmLCBpbXBsKTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotKyAoRE9NTm9kZSAqKV9ub2RlV2l0
aDooTm9kZSAqKWltcGwKLXsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAgY2FjaGVkSW5zdGFuY2UgPSBnZXRET01X
cmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIFtb
Y2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgCi0gICAgQ2xhc3Mgd3Jh
cHBlckNsYXNzID0gbmlsOwotICAgIHN3aXRjaCAoaW1wbC0+bm9kZVR5cGUoKSkgewotICAgICAg
ICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERToKLSAgICAgICAgICAgIGlmIChpbXBsLT5pc0hUTUxF
bGVtZW50KCkpCi0gICAgICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gZWxlbWVudENsYXNzKHN0
YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oaW1wbCktPmxvY2FsTmFtZSgpKTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NRWxlbWVudCBjbGFzc107
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToK
LSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01BdHRyIGNsYXNzXTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKLSAgICAgICAgICAgIHdyYXBw
ZXJDbGFzcyA9IFtET01UZXh0IGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKLSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9
IFtET01DREFUQVNlY3Rpb24gY2xhc3NdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgotICAgICAgICAgICAgd3JhcHBlckNsYXNz
ID0gW0RPTUVudGl0eVJlZmVyZW5jZSBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKLSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtE
T01FbnRpdHkgY2xhc3NdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6
UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgotICAgICAgICAgICAgd3JhcHBlckNsYXNzID0g
W0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBOb2RlOjpDT01NRU5UX05PREU6Ci0gICAgICAgICAgICB3cmFwcGVyQ2xhc3Mg
PSBbRE9NQ29tbWVudCBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBO
b2RlOjpET0NVTUVOVF9OT0RFOgotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PERvY3VtZW50
Kj4oaW1wbCktPmlzSFRNTERvY3VtZW50KCkpCi0gICAgICAgICAgICAgICAgd3JhcHBlckNsYXNz
ID0gW0RPTUhUTUxEb2N1bWVudCBjbGFzc107Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgd3JhcHBlckNsYXNzID0gW0RPTURvY3VtZW50IGNsYXNzXTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKLSAgICAgICAgICAg
IHdyYXBwZXJDbGFzcyA9IFtET01Eb2N1bWVudFR5cGUgY2xhc3NdOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICAgICAg
ICAgIHdyYXBwZXJDbGFzcyA9IFtET01Eb2N1bWVudEZyYWdtZW50IGNsYXNzXTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6Ci0gICAgICAgICAg
ICB3cmFwcGVyQ2xhc3MgPSBbRE9NTm90YXRpb24gY2xhc3NdOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgICAgICAgICAv
LyBGSVhNRTogQ3JlYXRlIGFuIFhQYXRoIG9iamVjdGl2ZSBDIHdyYXBwZXIKLSAgICAgICAgICAg
IC8vIFNlZSBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTg3
NTUKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotICAgIHJldHVybiBbW1t3cmFwcGVy
Q2xhc3MgYWxsb2NdIF9pbml0V2l0aE5vZGU6aW1wbF0gYXV0b3JlbGVhc2VdOwotfQotCi0tIChO
b2RlICopX25vZGUKLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpOwot
fQotCi0tIChjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICopX2V4ZWN1dGlvbkNvbnRl
eHQKLXsKLSAgICBpZiAoTm9kZSAqbiA9IFtzZWxmIF9ub2RlXSkKLSAgICAgICAgaWYgKEZyYW1l
TWFjICpmID0gTWFjKG4tPmRvY3VtZW50KCktPmZyYW1lKCkpKQotICAgICAgICAgICAgcmV0dXJu
IGYtPmV4ZWN1dGlvbkNvbnRleHRGb3JET00oKTsKLQotICAgIHJldHVybiAwOwotfQotCi1AZW5k
Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChXZWJQcml2YXRlKQotCi0tIChCT09MKWlzQ29u
dGVudEVkaXRhYmxlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aXNDb250ZW50RWRpdGFi
bGUoKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NTm9kZSAoRE9NRXZlbnRUYXJn
ZXQpCi0KLS0gKHZvaWQpYWRkRXZlbnRMaXN0ZW5lcjooTlNTdHJpbmcgKil0eXBlIDooaWQgPERP
TUV2ZW50TGlzdGVuZXI+KWxpc3RlbmVyIDooQk9PTCl1c2VDYXB0dXJlCi17Ci0gICAgaWYgKCFb
c2VsZiBfbm9kZV0tPmlzRXZlbnRUYXJnZXROb2RlKCkpCi0gICAgICAgIHJhaXNlRE9NRXhjZXB0
aW9uKERPTV9OT1RfU1VQUE9SVEVEX0VSUik7Ci0gICAgCi0gICAgRXZlbnRMaXN0ZW5lciAqd3Jh
cHBlciA9IE9iakNFdmVudExpc3RlbmVyOjpjcmVhdGUobGlzdGVuZXIpOwotICAgIEV2ZW50VGFy
Z2V0Tm9kZUNhc3QoW3NlbGYgX25vZGVdKS0+YWRkRXZlbnRMaXN0ZW5lcih0eXBlLCB3cmFwcGVy
LCB1c2VDYXB0dXJlKTsKLSAgICB3cmFwcGVyLT5kZXJlZigpOwotfQotCi0tICh2b2lkKXJlbW92
ZUV2ZW50TGlzdGVuZXI6KE5TU3RyaW5nICopdHlwZSA6KGlkIDxET01FdmVudExpc3RlbmVyPils
aXN0ZW5lciA6KEJPT0wpdXNlQ2FwdHVyZQotewotICAgIGlmICghW3NlbGYgX25vZGVdLT5pc0V2
ZW50VGFyZ2V0Tm9kZSgpKQotICAgICAgICByYWlzZURPTUV4Y2VwdGlvbihET01fTk9UX1NVUFBP
UlRFRF9FUlIpOwotCi0gICAgaWYgKEV2ZW50TGlzdGVuZXIgKndyYXBwZXIgPSBPYmpDRXZlbnRM
aXN0ZW5lcjo6ZmluZChsaXN0ZW5lcikpCi0gICAgICAgIEV2ZW50VGFyZ2V0Tm9kZUNhc3QoW3Nl
bGYgX25vZGVdKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCB3cmFwcGVyLCB1c2VDYXB0dXJl
KTsKLX0KLQotLSAoQk9PTClkaXNwYXRjaEV2ZW50OihET01FdmVudCAqKWV2ZW50Ci17Ci0gICAg
aWYgKCFbc2VsZiBfbm9kZV0tPmlzRXZlbnRUYXJnZXROb2RlKCkpCi0gICAgICAgIHJhaXNlRE9N
RXhjZXB0aW9uKERPTV9OT1RfU1VQUE9SVEVEX0VSUik7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBCT09MIHJlc3VsdCA9IEV2ZW50VGFyZ2V0Tm9kZUNhc3QoW3NlbGYgX25vZGVd
KS0+ZGlzcGF0Y2hFdmVudChbZXZlbnQgX2V2ZW50XSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJv
cihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NTmFtZWROb2RlTWFwCi0KLUBpbXBsZW1lbnRhdGlv
biBET01OYW1lZE5vZGVNYXAKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5h
bCkgewotICAgICAgICBET01fY2FzdDxOYW1lZE5vZGVNYXAgKj4oX2ludGVybmFsKS0+ZGVyZWYo
KTsKLSAgICB9Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17
Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxOYW1lZE5vZGVNYXAgKj4o
X2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQot
LSAoTmFtZWROb2RlTWFwICopX25hbWVkTm9kZU1hcAotewotICAgIHJldHVybiBET01fY2FzdDxO
YW1lZE5vZGVNYXAgKj4oX2ludGVybmFsKTsKLX0KLQotLSAoRE9NTm9kZSAqKWdldE5hbWVkSXRl
bTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0gICAgcmV0dXJuIFtE
T01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+Z2V0TmFtZWRJdGVtKG5hbWUp
LmdldCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbTooRE9NTm9kZSAqKWFyZwot
ewotICAgIEFTU0VSVChhcmcpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NTm9k
ZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5zZXRO
YW1lZEl0ZW0oW2FyZyBfbm9kZV0sIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01F
cnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUgKily
ZW1vdmVOYW1lZEl0ZW06KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLQot
ICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9u
b2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+cmVtb3ZlTmFtZWRJdGVtKG5hbWUsIGV4Y2Vw
dGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleAotewotICAg
IHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPml0ZW0oaW5k
ZXgpLmdldCgpXTsKLX0KLQotLSAodW5zaWduZWQpbGVuZ3RoCi17Ci0gICAgcmV0dXJuIFtzZWxm
IF9uYW1lZE5vZGVNYXBdLT5sZW5ndGgoKTsKLX0KLQotLSAoRE9NTm9kZSAqKWdldE5hbWVkSXRl
bU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0g
ICAgaWYgKCFuYW1lc3BhY2VVUkkgfHwgIWxvY2FsTmFtZSkgewotICAgICAgICByZXR1cm4gbmls
OwotICAgIH0KLQotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9k
ZU1hcF0tPmdldE5hbWVkSXRlbU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKS5nZXQoKV07Ci19
Ci0KLS0gKERPTU5vZGUgKilzZXROYW1lZEl0ZW1OUzooRE9NTm9kZSAqKWFyZwotewotICAgIEFT
U0VSVChhcmcpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0
ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5zZXROYW1lZEl0ZW1O
UyhbYXJnIF9ub2RlXSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4
Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZSAqKXJlbW92ZU5h
bWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1l
Ci17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0K
LSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPnJlbW92ZU5hbWVkSXRlbU5TKG5hbWVzcGFj
ZVVSSSwgbG9jYWxOYW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3Io
ZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRh
dGlvbiBET01OYW1lZE5vZGVNYXAgKFdlYkNvcmVJbnRlcm5hbCkKLQotLSAoaWQpX2luaXRXaXRo
TmFtZWROb2RlTWFwOihOYW1lZE5vZGVNYXAgKilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwpOwot
Ci0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJ
bnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNl
bGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01OYW1lZE5vZGVNYXAgKilf
bmFtZWROb2RlTWFwV2l0aDooTmFtZWROb2RlTWFwICopaW1wbAotewotICAgIGlmICghaW1wbCkK
LSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBj
YWNoZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3Rh
bmNlKQotICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNl
XTsKLSAgICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTmFtZWROb2RlTWFw
OmltcGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotLy8gRE9NTm9kZUxpc3QKLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGVM
aXN0Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAg
RE9NX2Nhc3Q8Tm9kZUxpc3QgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1
cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgaWYgKF9pbnRlcm5h
bCkgewotICAgICAgICBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwot
ICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChOb2RlTGlzdCAqKV9ub2RlTGlz
dAotewotICAgIHJldHVybiBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50ZXJuYWwpOwotfQotCi0t
IChET01Ob2RlICopaXRlbToodW5zaWduZWQpaW5kZXgKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUg
X25vZGVXaXRoOltzZWxmIF9ub2RlTGlzdF0tPml0ZW0oaW5kZXgpXTsKLX0KLQotLSAodW5zaWdu
ZWQpbGVuZ3RoCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlTGlzdF0tPmxlbmd0aCgpOwotfQot
Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlTGlzdCAoV2ViQ29yZUludGVybmFsKQot
Ci0tIChpZClfaW5pdFdpdGhOb2RlTGlzdDooTm9kZUxpc3QgKilpbXBsCi17Ci0gICAgQVNTRVJU
KGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxE
T01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01X
cmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01Ob2RlTGlz
dCAqKV9ub2RlTGlzdFdpdGg6KE5vZGVMaXN0ICopaW1wbAotewotICAgIGlmICghaW1wbCkKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNo
ZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNl
KQotICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsK
LSAgICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTm9kZUxpc3Q6aW1wbF0g
YXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0vLyBET01JbXBsZW1lbnRhdGlvbgotCi1AaW1wbGVtZW50YXRpb24gRE9NSW1wbGVt
ZW50YXRpb24KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAg
ICAgRE9NX2Nhc3Q8RE9NSW1wbGVtZW50YXRpb25Gcm9udCAqPihfaW50ZXJuYWwpLT5kZXJlZigp
OwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6ZQotewotICAgIGlm
IChfaW50ZXJuYWwpCi0gICAgICAgIERPTV9jYXN0PERPTUltcGxlbWVudGF0aW9uRnJvbnQgKj4o
X2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChCT09M
KWhhc0ZlYXR1cmU6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbgotewot
ICAgIEFTU0VSVChmZWF0dXJlKTsKLSAgICBBU1NFUlQodmVyc2lvbik7Ci0KLSAgICByZXR1cm4g
W3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+aGFzRmVhdHVyZShmZWF0dXJlLCB2ZXJzaW9uKTsK
LX0KLQotLSAoRE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBlOihOU1N0cmluZyAq
KXF1YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXB1YmxpY0lkIDooTlNTdHJpbmcgKilzeXN0ZW1J
ZAotewotICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsKLSAgICBBU1NFUlQocHVibGljSWQpOwot
ICAgIEFTU0VSVChzeXN0ZW1JZCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBS
ZWZQdHI8RG9jdW1lbnRUeXBlPiBpbXBsID0gW3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+Y3Jl
YXRlRG9jdW1lbnRUeXBlKHF1YWxpZmllZE5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCwgZWMpOwot
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURvY3Vt
ZW50VHlwZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQoKV0pOwotfQotCi0tIChET01E
b2N1bWVudCAqKWNyZWF0ZURvY3VtZW50OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3Ry
aW5nICopcXVhbGlmaWVkTmFtZSA6KERPTURvY3VtZW50VHlwZSAqKWRvY3R5cGUKLXsKLSAgICBB
U1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7Ci0KLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8RG9jdW1lbnQ+IGltcGwgPSBbc2VsZiBf
RE9NSW1wbGVtZW50YXRpb25dLT5jcmVhdGVEb2N1bWVudChuYW1lc3BhY2VVUkksIHF1YWxpZmll
ZE5hbWUsIFtkb2N0eXBlIF9kb2N1bWVudFR5cGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnQgKj4oW0RPTU5vZGUgX25v
ZGVXaXRoOmltcGwuZ2V0KCldKTsKLX0KLQotLSAoRE9NSFRNTERvY3VtZW50ICopY3JlYXRlSFRN
TERvY3VtZW50OihOU1N0cmluZyAqKXRpdGxlCi17Ci0gICAgUmVmUHRyPEhUTUxEb2N1bWVudD4g
aW1wbCA9IFtzZWxmIF9ET01JbXBsZW1lbnRhdGlvbl0tPmNyZWF0ZUhUTUxEb2N1bWVudCh0aXRs
ZSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUhUTUxEb2N1bWVudCAqPihbRE9NTm9kZSBf
bm9kZVdpdGg6aW1wbC5nZXQoKV0pOwotfQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NSW1w
bGVtZW50YXRpb24gKERPTUltcGxlbWVudGF0aW9uQ1NTKQotCi0tIChET01DU1NTdHlsZVNoZWV0
ICopY3JlYXRlQ1NTU3R5bGVTaGVldDooTlNTdHJpbmcgKil0aXRsZSA6KE5TU3RyaW5nICopbWVk
aWEKLXsKLSAgICBBU1NFUlQodGl0bGUpOwotICAgIEFTU0VSVChtZWRpYSk7Ci0KLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBET01DU1NTdHlsZVNoZWV0ICpyZXN1bHQgPSBbRE9NQ1NT
U3R5bGVTaGVldCBfQ1NTU3R5bGVTaGVldFdpdGg6W3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+
Y3JlYXRlQ1NTU3R5bGVTaGVldCh0aXRsZSwgbWVkaWEsIGVjKS5nZXQoKV07Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1AZW5kCi0gCi1AaW1wbGVt
ZW50YXRpb24gRE9NSW1wbGVtZW50YXRpb24gKFdlYkNvcmVJbnRlcm5hbCkKLQotLSAoaWQpX2lu
aXRXaXRoRE9NSW1wbGVtZW50YXRpb246KERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilpbXBsCi17
Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwg
PSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsK
LSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0r
IChET01JbXBsZW1lbnRhdGlvbiAqKV9ET01JbXBsZW1lbnRhdGlvbldpdGg6KERPTUltcGxlbWVu
dGF0aW9uRnJvbnQgKilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gbmls
OwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0
RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVy
biBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVy
biBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhET01JbXBsZW1lbnRhdGlvbjppbXBsXSBhdXRvcmVs
ZWFzZV07Ci19Ci0KLS0gKERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilfRE9NSW1wbGVtZW50YXRp
b24KLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8RE9NSW1wbGVtZW50YXRpb25Gcm9udCAqPihfaW50
ZXJuYWwpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyBET01Eb2N1bWVudEZyYWdtZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudEZy
YWdtZW50Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50RnJhZ21lbnQgKFdl
YkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdt
ZW50V2l0aDooRG9jdW1lbnRGcmFnbWVudCAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RE9NRG9jdW1lbnRGcmFnbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwotfQot
Ci0tIChEb2N1bWVudEZyYWdtZW50ICopX2ZyYWdtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PERvY3VtZW50RnJhZ21lbnQgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0K
LQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NRG9j
dW1lbnQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50Ci0KLS0gKERPTU5vZGUgKilhZG9w
dE5vZGU6KERPTU5vZGUgKilzb3VyY2UKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+
YWRvcHROb2RlKFtzb3VyY2UgX25vZGVdLCBlYykuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJv
cihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRG9jdW1lbnRUeXBlICopZG9j
dHlwZQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudFR5cGUgKj4oW0RPTU5v
ZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmRvY3R5cGUoKV0pOwotfQotCi0tIChET01J
bXBsZW1lbnRhdGlvbiAqKWltcGxlbWVudGF0aW9uCi17Ci0gICAgcmV0dXJuIFtET01JbXBsZW1l
bnRhdGlvbiBfRE9NSW1wbGVtZW50YXRpb25XaXRoOmltcGxlbWVudGF0aW9uRnJvbnQoW3NlbGYg
X2RvY3VtZW50XSldOwotfQotCi0tIChET01FbGVtZW50ICopZG9jdW1lbnRFbGVtZW50Ci17Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOltz
ZWxmIF9kb2N1bWVudF0tPmRvY3VtZW50RWxlbWVudCgpXSk7Ci19Ci0KLS0gKERPTUVsZW1lbnQg
KiljcmVhdGVFbGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWUKLXsKLSAgICBBU1NFUlQodGFnTmFt
ZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01FbGVtZW50ICpyZXN1bHQg
PSBzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9j
dW1lbnRdLT5jcmVhdGVFbGVtZW50KHRhZ05hbWUsIGVjKS5nZXQoKV0pOwotICAgIHJhaXNlT25E
T01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRG9jdW1lbnRGcmFn
bWVudCAqKWNyZWF0ZURvY3VtZW50RnJhZ21lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RE9NRG9jdW1lbnRGcmFnbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50
XS0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLmdldCgpXSk7Ci19Ci0KLS0gKERPTVRleHQgKilj
cmVhdGVUZXh0Tm9kZTooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxET01UZXh0ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBf
ZG9jdW1lbnRdLT5jcmVhdGVUZXh0Tm9kZShkYXRhKS5nZXQoKV0pOwotfQotCi0tIChET01Db21t
ZW50ICopY3JlYXRlQ29tbWVudDooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEp
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Db21tZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0
aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDb21tZW50KGRhdGEpLmdldCgpXSk7Ci19Ci0KLS0g
KERPTUNEQVRBU2VjdGlvbiAqKWNyZWF0ZUNEQVRBU2VjdGlvbjooTlNTdHJpbmcgKilkYXRhCi17
Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTUNEQVRB
U2VjdGlvbiAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RE9NQ0RBVEFTZWN0aW9uICo+KFtET01Ob2Rl
IF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDREFUQVNlY3Rpb24oZGF0YSwgZXhj
ZXB0aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKWNyZWF0ZVBy
b2Nlc3NpbmdJbnN0cnVjdGlvbjooTlNTdHJpbmcgKil0YXJnZXQgOihOU1N0cmluZyAqKWRhdGEK
LXsKLSAgICBBU1NFUlQodGFyZ2V0KTsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgaW50IGV4Y2Vw
dGlvbiA9IDA7Ci0gICAgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICpyZXN1bHQgPSBzdGF0aWNf
Y2FzdDxET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxm
IF9kb2N1bWVudF0tPmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbih0YXJnZXQsIGRhdGEsIGV4
Y2VwdGlvbikuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01BdHRyICopY3JlYXRlQXR0cmlidXRlOihOU1N0cmlu
ZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0g
ICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9kb2N1bWVudF0t
PmNyZWF0ZUF0dHJpYnV0ZShuYW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01FbnRpdHlS
ZWZlcmVuY2UgKiljcmVhdGVFbnRpdHlSZWZlcmVuY2U6KE5TU3RyaW5nICopbmFtZQotewotICAg
IEFTU0VSVChuYW1lKTsKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01FbnRpdHlSZWZl
cmVuY2UgKnJlc3VsdCA9IHN0YXRpY19jYXN0PERPTUVudGl0eVJlZmVyZW5jZSAqPihbRE9NTm9k
ZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRW50aXR5UmVmZXJlbmNlKG5hbWUs
IGV4Y2VwdGlvbikuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdO
YW1lOihOU1N0cmluZyAqKXRhZ25hbWUKLXsKLSAgICBBU1NFUlQodGFnbmFtZSk7Ci0gICAgcmV0
dXJuIFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOltzZWxmIF9kb2N1bWVudF0tPmdldEVsZW1l
bnRzQnlUYWdOYW1lKHRhZ25hbWUpLmdldCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKWltcG9ydE5v
ZGU6KERPTU5vZGUgKilpbXBvcnRlZE5vZGUgOihCT09MKWRlZXAKLXsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX2RvY3VtZW50XS0+aW1wb3J0Tm9kZShbaW1wb3J0ZWROb2RlIF9ub2RlXSwgZGVlcCwgZWMp
LmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLS0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50TlM6KE5TU3RyaW5nICopbmFtZXNwYWNl
VVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVS
SSk7Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1
bWVudF0tPmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGVjKS5n
ZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RE9NRWxlbWVudCAqPihyZXN1bHQpOwotfQotCi0tIChET01BdHRyICopY3JlYXRlQXR0cmlidXRl
TlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lCi17
Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwot
Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIg
X2F0dHJXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVS
SSwgcXVhbGlmaWVkTmFtZSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZUxpc3QgKiln
ZXRFbGVtZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5n
ICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxv
Y2FsTmFtZSk7Ci0KLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYg
X2RvY3VtZW50XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFt
ZSkuZ2V0KCldOwotfQotCi0tIChET01FbGVtZW50ICopZ2V0RWxlbWVudEJ5SWQ6KE5TU3RyaW5n
ICopZWxlbWVudElkCi17Ci0gICAgQVNTRVJUKGVsZW1lbnRJZCk7Ci0KLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RE9NRWxlbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50
XS0+Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKV0pOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRh
dGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRSYW5nZSkKLQotLSAoRE9NUmFuZ2UgKiljcmVh
dGVSYW5nZQotewotICAgIHJldHVybiBbRE9NUmFuZ2UgX3JhbmdlV2l0aDpbc2VsZiBfZG9jdW1l
bnRdLT5jcmVhdGVSYW5nZSgpLmdldCgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24g
RE9NRG9jdW1lbnQgKERPTURvY3VtZW50Q1NTKQotCi0tIChET01DU1NTdHlsZURlY2xhcmF0aW9u
ICopZ2V0T3ZlcnJpZGVTdHlsZTooRE9NRWxlbWVudCAqKWVsdCA6KE5TU3RyaW5nICopcHNldWRv
RWx0Ci17Ci0gICAgRWxlbWVudCAqZWxlbWVudCA9IFtlbHQgX2VsZW1lbnRdOwotICAgIFN0cmlu
ZyBwc2V1ZG9FbHRTdHJpbmcocHNldWRvRWx0KTsKLSAgICByZXR1cm4gW0RPTUNTU1N0eWxlRGVj
bGFyYXRpb24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOltzZWxmIF9kb2N1bWVudF0tPmdldE92ZXJy
aWRlU3R5bGUoZWxlbWVudCwgcHNldWRvRWx0U3RyaW5nLmltcGwoKSldOwotfQotCi1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRTdHlsZSkKLQotLSAoRE9N
U3R5bGVTaGVldExpc3QgKilzdHlsZVNoZWV0cwotewotICAgIHJldHVybiBbRE9NU3R5bGVTaGVl
dExpc3QgX3N0eWxlU2hlZXRMaXN0V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5zdHlsZVNoZWV0cygp
XTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50
RXh0ZW5zaW9ucykKLQotLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKWNyZWF0ZUNTU1N0eWxl
RGVjbGFyYXRpb24KLXsKLSAgICByZXR1cm4gW0RPTUNTU1N0eWxlRGVjbGFyYXRpb24gX3N0eWxl
RGVjbGFyYXRpb25XaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRp
b24oKS5nZXQoKV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChX
ZWJDb3JlSW50ZXJuYWwpCi0KLSsgKERPTURvY3VtZW50ICopX2RvY3VtZW50V2l0aDooRG9jdW1l
bnQgKilpbXBsCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURvY3VtZW50ICo+KFtET01O
b2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19Ci0KLS0gKERvY3VtZW50ICopX2RvY3VtZW50Ci17Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50ICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVy
bmFsKSk7Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilfb3duZXJFbGVtZW50Ci17Ci0gICAgcmV0dXJu
IFtET01FbGVtZW50IF9lbGVtZW50V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5vd25lckVsZW1lbnQo
KV07Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8v
IERPTUNoYXJhY3RlckRhdGEKLQotQGltcGxlbWVudGF0aW9uIERPTUNoYXJhY3RlckRhdGEKLQot
LSAoQ2hhcmFjdGVyRGF0YSAqKV9jaGFyYWN0ZXJEYXRhCi17Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PENoYXJhY3RlckRhdGEgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQot
LSAoTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgLy8gRG9jdW1lbnRhdGlvbiBzYXlzIHdlIGNhbiBy
YWlzZSBhIERPTVNUUklOR19TSVpFX0VSUi4KLSAgICAvLyBIb3dldmVyLCB0aGUgbG93ZXIgbGF5
ZXIgZG9lcyBub3QgcmVwb3J0IHRoYXQgZXJyb3IgdXAgdG8gdXMuCi0gICAgcmV0dXJuIFtzZWxm
IF9jaGFyYWN0ZXJEYXRhXS0+ZGF0YSgpOwotfQotCi0tICh2b2lkKXNldERhdGE6KE5TU3RyaW5n
ICopZGF0YQotewotICAgIEFTU0VSVChkYXRhKTsKLSAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPnNldERhdGEoZGF0YSwgZWMpOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHVuc2lnbmVkKWxlbmd0aAotewotICAgIHJl
dHVybiBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPmxlbmd0aCgpOwotfQotCi0tIChOU1N0cmluZyAq
KXN1YnN0cmluZ0RhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKWNvdW50Ci17Ci0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgTlNTdHJpbmcgKnJlc3VsdCA9IFtzZWxmIF9jaGFy
YWN0ZXJEYXRhXS0+c3Vic3RyaW5nRGF0YShvZmZzZXQsIGNvdW50LCBlYyk7Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKWFwcGVuZERh
dGE6KE5TU3RyaW5nICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7Ci0gICAgCi0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5hcHBlbmREYXRhKGFy
ZywgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpaW5zZXJ0RGF0
YToodW5zaWduZWQpb2Zmc2V0IDooTlNTdHJpbmcgKilhcmcKLXsKLSAgICBBU1NFUlQoYXJnKTsK
LSAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0
YV0tPmluc2VydERhdGEob2Zmc2V0LCBhcmcsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OwotfQotCi0tICh2b2lkKWRlbGV0ZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKSBj
b3VudAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9jaGFyYWN0ZXJE
YXRhXS0+ZGVsZXRlRGF0YShvZmZzZXQsIGNvdW50LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLX0KLQotLSAodm9pZClyZXBsYWNlRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWdu
ZWQpY291bnQgOihOU1N0cmluZyAqKWFyZwotewotICAgIEFTU0VSVChhcmcpOwotCi0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5yZXBsYWNlRGF0
YShvZmZzZXQsIGNvdW50LCBhcmcsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQot
Ci1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01BdHRy
Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01BdHRyCi0KLS0gKE5TU3RyaW5nICopbmFtZQotewotICAg
IHJldHVybiBbc2VsZiBfYXR0cl0tPm5vZGVOYW1lKCk7Ci19Ci0KLS0gKEJPT0wpc3BlY2lmaWVk
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9hdHRyXS0+c3BlY2lmaWVkKCk7Ci19Ci0KLS0gKE5TU3Ry
aW5nICopdmFsdWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2F0dHJdLT5ub2RlVmFsdWUoKTsKLX0K
LQotLSAodm9pZClzZXRWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZQotewotICAgIEFTU0VSVCh2YWx1
ZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfYXR0cl0tPnNldFZh
bHVlKHZhbHVlLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoRE9NRWxl
bWVudCAqKW93bmVyRWxlbWVudAotewotICAgIHJldHVybiBbRE9NRWxlbWVudCBfZWxlbWVudFdp
dGg6W3NlbGYgX2F0dHJdLT5vd25lckVsZW1lbnQoKV07Ci19Ci0KLS0gKERPTUNTU1N0eWxlRGVj
bGFyYXRpb24gKilzdHlsZQotewotICAgIHJldHVybiBbRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBf
c3R5bGVEZWNsYXJhdGlvbldpdGg6IFtzZWxmIF9hdHRyXS0+c3R5bGUoKV07Ci19Ci0KLUBlbmQK
LQotQGltcGxlbWVudGF0aW9uIERPTUF0dHIgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NQXR0
ciAqKV9hdHRyV2l0aDooQXR0ciAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9N
QXR0ciAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwotfQotCi0tIChBdHRyICopX2F0dHIK
LXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXR0ciAqPihET01fY2FzdDxOb2RlICo+KF9pbnRl
cm5hbCkpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyBET01FbGVtZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01FbGVtZW50Ci0KLS0gKE5TU3Ry
aW5nICopdGFnTmFtZQotewotICAgIHJldHVybiBbc2VsZiBfZWxlbWVudF0tPm5vZGVOYW1lKCk7
Ci19Ci0KLS0gKERPTU5hbWVkTm9kZU1hcCAqKWF0dHJpYnV0ZXMKLXsKLSAgICByZXR1cm4gW0RP
TU5hbWVkTm9kZU1hcCBfbmFtZWROb2RlTWFwV2l0aDpbc2VsZiBfZWxlbWVudF0tPmF0dHJpYnV0
ZXMoKV07Ci19Ci0KLS0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUK
LXsKLSAgICBBU1NFUlQobmFtZSk7Ci0gICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50XS0+Z2V0QXR0
cmlidXRlKG5hbWUpOwotfQotCi0tICh2b2lkKXNldEF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1l
IDooTlNTdHJpbmcgKil2YWx1ZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBBU1NFUlQodmFs
dWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5zZXRB
dHRyaWJ1dGUobmFtZSwgdmFsdWUsIGV4Y2VwdGlvbik7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4
Y2VwdGlvbik7Ci19Ci0KLS0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUK
LXsKLSAgICBBU1NFUlQobmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBbc2Vs
ZiBfZWxlbWVudF0tPnJlbW92ZUF0dHJpYnV0ZShuYW1lLCBleGNlcHRpb24pOwotICAgIHJhaXNl
T25ET01FcnJvcihleGNlcHRpb24pOwotfQotCi0tIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9k
ZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0gICAgcmV0dXJuIFtE
T01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0ZU5vZGUobmFtZSku
Z2V0KCldOwotfQotCi0tIChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZTooRE9NQXR0ciAqKW5l
d0F0dHIKLXsKLSAgICBBU1NFUlQobmV3QXR0cik7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsK
LSAgICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2VsZW1lbnRd
LT5zZXRBdHRyaWJ1dGVOb2RlKFtuZXdBdHRyIF9hdHRyXSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
LSAoRE9NQXR0ciAqKXJlbW92ZUF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKilvbGRBdHRyCi17Ci0g
ICAgQVNTRVJUKG9sZEF0dHIpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0
ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+cmVtb3ZlQXR0
cmlidXRlTm9kZShbb2xkQXR0ciBfYXR0cl0sIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNl
T25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5v
ZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWU6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFT
U0VSVChuYW1lKTsKLQotICAgIHJldHVybiBbRE9NTm9kZUxpc3QgX25vZGVMaXN0V2l0aDpbc2Vs
ZiBfZWxlbWVudF0tPmdldEVsZW1lbnRzQnlUYWdOYW1lKG5hbWUpLmdldCgpXTsKLX0KLQotLSAo
TlNTdHJpbmcgKilnZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0
cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VS
VChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50XS0+Z2V0QXR0cmlidXRl
TlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwotfQotCi0tICh2b2lkKXNldEF0dHJpYnV0ZU5T
OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5T
U3RyaW5nICopdmFsdWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQo
cXVhbGlmaWVkTmFtZSk7Ci0gICAgQVNTRVJUKHZhbHVlKTsKLQotICAgIGludCBleGNlcHRpb24g
PSAwOwotICAgIFtzZWxmIF9lbGVtZW50XS0+c2V0QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBx
dWFsaWZpZWROYW1lLCB2YWx1ZSwgZXhjZXB0aW9uKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhj
ZXB0aW9uKTsKLX0KLQotLSAodm9pZClyZW1vdmVBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1l
c3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VV
UkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0g
ICAgW3NlbGYgX2VsZW1lbnRdLT5yZW1vdmVBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2Fs
TmFtZSwgZXhjZXB0aW9uKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLX0KLQot
LSAoRE9NQXR0ciAqKWdldEF0dHJpYnV0ZU5vZGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkg
OihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAg
IEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtET01BdHRyIF9hdHRyV2l0aDpbc2Vs
ZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0ZU5vZGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSku
Z2V0KCldOwotfQotCi0tIChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZU5TOihET01BdHRyICop
bmV3QXR0cgotewotICAgIEFTU0VSVChuZXdBdHRyKTsKLQotICAgIGludCBleGNlcHRpb24gPSAw
OwotICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVu
dF0tPnNldEF0dHJpYnV0ZU5vZGVOUyhbbmV3QXR0ciBfYXR0cl0sIGV4Y2VwdGlvbikuZ2V0KCld
OwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWVOUzooTlNTdHJpbmcgKilu
YW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VSVChuYW1lc3Bh
Y2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtET01Ob2RlTGlz
dCBfbm9kZUxpc3RXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhu
YW1lc3BhY2VVUkksIGxvY2FsTmFtZSkuZ2V0KCldOwotfQotCi0tIChCT09MKWhhc0F0dHJpYnV0
ZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0gICAgcmV0dXJuIFtz
ZWxmIF9lbGVtZW50XS0+aGFzQXR0cmlidXRlKG5hbWUpOwotfQotCi0tIChCT09MKWhhc0F0dHJp
YnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17
Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAg
ICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5oYXNBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxv
Y2FsTmFtZSk7Ci19Ci0KLS0gKHZvaWQpZm9jdXMKLXsKLSAgICBbc2VsZiBfZWxlbWVudF0tPmZv
Y3VzKCk7Ci19Ci0KLS0gKHZvaWQpYmx1cgotewotICAgIFtzZWxmIF9lbGVtZW50XS0+Ymx1cigp
OwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01FbGVtZW50IChET01FbGVtZW50Q1NT
SW5saW5lU3R5bGUpCi0KLS0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZQotewotICAg
IHJldHVybiBbRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6W3Nl
bGYgX2VsZW1lbnRdLT5zdHlsZSgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9N
RWxlbWVudCAoRE9NRWxlbWVudEV4dGVuc2lvbnMpCi0KLS0gKE5TSW1hZ2UqKWltYWdlCi17Ci0g
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IFtzZWxmIF9lbGVtZW50XS0+cmVuZGVyZXIoKTsK
LSAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzSW1hZ2UoKSkgewotICAgICAgICBSZW5k
ZXJJbWFnZSogaW1nID0gc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UqPihyZW5kZXJlcik7Ci0gICAg
ICAgIGlmIChpbWctPmNhY2hlZEltYWdlKCkgJiYgIWltZy0+Y2FjaGVkSW1hZ2UoKS0+aXNFcnJv
ckltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gaW1nLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgp
LT5nZXROU0ltYWdlKCk7Ci0gICAgfQotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKHZvaWQpc2Ny
b2xsSW50b1ZpZXc6KEJPT0wpYWxpZ25Ub3AKLXsKLSAgICBbc2VsZiBfZWxlbWVudF0tPnNjcm9s
bEludG9WaWV3KGFsaWduVG9wKTsKLX0KLQotLSAodm9pZClzY3JvbGxJbnRvVmlld0lmTmVlZGVk
OihCT09MKWNlbnRlcklmTmVlZGVkCi17Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5zY3JvbGxJbnRv
Vmlld0lmTmVlZGVkKGNlbnRlcklmTmVlZGVkKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRp
b24gRE9NRWxlbWVudCAoV2ViQ29yZUludGVybmFsKQotCi0rIChET01FbGVtZW50ICopX2VsZW1l
bnRXaXRoOihFbGVtZW50ICopaW1wbAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01FbGVt
ZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19Ci0KLS0gKEVsZW1lbnQgKilfZWxl
bWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50ICo+KERPTV9jYXN0PE5vZGUg
Kj4oX2ludGVybmFsKSk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUVsZW1lbnQg
KFdlYlByaXZhdGUpCi0KLS0gKE5TRm9udCAqKV9mb250Ci17Ci0gICAgUmVuZGVyT2JqZWN0ICpy
ZW5kZXJlciA9IFtzZWxmIF9lbGVtZW50XS0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIp
IHsKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5zdHlsZSgpLT5mb250KCkuZ2V0TlNGb250KCk7
Ci0gICAgfQotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKE5TRGF0YSopX2ltYWdlVElGRlJlcHJl
c2VudGF0aW9uCi17Ci0gICAgUmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9lbGVtZW50
XS0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzSW1hZ2UoKSkg
ewotICAgICAgICBSZW5kZXJJbWFnZSogaW1nID0gc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UqPihy
ZW5kZXJlcik7Ci0gICAgICAgIGlmIChpbWctPmNhY2hlZEltYWdlKCkgJiYgIWltZy0+Y2FjaGVk
SW1hZ2UoKS0+aXNFcnJvckltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gKE5TRGF0YSopKGlt
Zy0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKS0+Z2V0VElGRlJlcHJlc2VudGF0aW9uKCkpOwotICAg
IH0KLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChOU1VSTCAqKV9nZXRVUkxBdHRyaWJ1dGU6KE5T
U3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBFbGVtZW50ICplID0gW3Nl
bGYgX2VsZW1lbnRdOwotICAgIEFTU0VSVChlKTsKLSAgICByZXR1cm4gS1VSTChlLT5kb2N1bWVu
dCgpLT5jb21wbGV0ZVVSTChwYXJzZVVSTChlLT5nZXRBdHRyaWJ1dGUobmFtZSkpLmRlcHJlY2F0
ZWRTdHJpbmcoKSkpLmdldE5TVVJMKCk7Ci19Ci0KLS0gKHZvaWQgKilfTlBPYmplY3QKLXsKLSAg
ICBFbGVtZW50KiBlbGVtZW50ID0gW3NlbGYgX2VsZW1lbnRdOwotICAgIGlmIChlbGVtZW50LT5o
YXNUYWdOYW1lKGFwcGxldFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShlbWJlZFRhZykgfHwg
ZWxlbWVudC0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqPihlbGVtZW50KS0+Z2V0TlBPYmplY3QoKTsK
LSAgICBlbHNlCi0gICAgICAgIHJldHVybiAwOwotfQotCi0tIChCT09MKWlzRm9jdXNlZAotewot
ICAgIEVsZW1lbnQqIGltcGwgPSBbc2VsZiBfZWxlbWVudF07Ci0gICAgaWYgKGltcGwtPmRvY3Vt
ZW50KCktPmZvY3VzTm9kZSgpID09IGltcGwpCi0gICAgICAgIHJldHVybiBZRVM7Ci0gICAgcmV0
dXJuIE5POwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyBET01UZXh0Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01UZXh0Ci0KLS0gKFRleHQgKilfdGV4
dAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0ICo+KERPTV9jYXN0PE5vZGUgKj4oX2lu
dGVybmFsKSk7Ci19Ci0KLS0gKERPTVRleHQgKilzcGxpdFRleHQ6KHVuc2lnbmVkKW9mZnNldAot
ewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01O
b2RlIF9ub2RlV2l0aDpbc2VsZiBfdGV4dF0tPnNwbGl0VGV4dChvZmZzZXQsIGVjKV07Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NVGV4dCAqPihy
ZXN1bHQpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyBET01Db21tZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Db21tZW50Ci0KLUBlbmQKLQot
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUNEQVRBU2VjdGlvbgot
Ci1AaW1wbGVtZW50YXRpb24gRE9NQ0RBVEFTZWN0aW9uCi0KLUBlbmQKLQotLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTURvY3VtZW50VHlwZQotCi1AaW1wbGVtZW50
YXRpb24gRE9NRG9jdW1lbnRUeXBlCi0KLS0gKE5TU3RyaW5nICopbmFtZQotewotICAgIHJldHVy
biBbc2VsZiBfZG9jdW1lbnRUeXBlXS0+cHVibGljSWQoKTsKLX0KLQotLSAoRE9NTmFtZWROb2Rl
TWFwICopZW50aXRpZXMKLXsKLSAgICByZXR1cm4gW0RPTU5hbWVkTm9kZU1hcCBfbmFtZWROb2Rl
TWFwV2l0aDpbc2VsZiBfZG9jdW1lbnRUeXBlXS0+ZW50aXRpZXMoKV07Ci19Ci0KLS0gKERPTU5h
bWVkTm9kZU1hcCAqKW5vdGF0aW9ucwotewotICAgIHJldHVybiBbRE9NTmFtZWROb2RlTWFwIF9u
YW1lZE5vZGVNYXBXaXRoOltzZWxmIF9kb2N1bWVudFR5cGVdLT5ub3RhdGlvbnMoKV07Ci19Ci0K
LS0gKE5TU3RyaW5nICopcHVibGljSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2RvY3VtZW50VHlw
ZV0tPnB1YmxpY0lkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopc3lzdGVtSWQKLXsKLSAgICByZXR1
cm4gW3NlbGYgX2RvY3VtZW50VHlwZV0tPnN5c3RlbUlkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICop
aW50ZXJuYWxTdWJzZXQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2RvY3VtZW50VHlwZV0tPmludGVy
bmFsU3Vic2V0KCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50VHlw
ZSAoV2ViQ29yZUludGVybmFsKQotCi0tIChEb2N1bWVudFR5cGUgKilfZG9jdW1lbnRUeXBlCi17
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50VHlwZSAqPihET01fY2FzdDxOb2RlICo+
KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0vLyBET01Ob3RhdGlvbgotCi1AaW1wbGVtZW50YXRpb24gRE9NTm90YXRpb24KLQot
LSAoTm90YXRpb24gKilfbm90YXRpb24KLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Tm90YXRp
b24gKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKilw
dWJsaWNJZAotewotICAgIHJldHVybiBbc2VsZiBfbm90YXRpb25dLT5wdWJsaWNJZCgpOwotfQot
Ci0tIChOU1N0cmluZyAqKXN5c3RlbUlkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub3RhdGlvbl0t
PnN5c3RlbUlkKCk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLS8vIERPTUVudGl0eQotCi1AaW1wbGVtZW50YXRpb24gRE9NRW50aXR5Ci0KLS0gKEVu
dGl0eSAqKV9lbnRpdHkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RW50aXR5ICo+KERPTV9j
YXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopcHVibGljSWQKLXsK
LSAgICByZXR1cm4gW3NlbGYgX2VudGl0eV0tPnB1YmxpY0lkKCk7Ci19Ci0KLS0gKE5TU3RyaW5n
ICopc3lzdGVtSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2VudGl0eV0tPnN5c3RlbUlkKCk7Ci19
Ci0KLS0gKE5TU3RyaW5nICopbm90YXRpb25OYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9lbnRp
dHldLT5ub3RhdGlvbk5hbWUoKTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotLy8gRE9NRW50aXR5UmVmZXJlbmNlCi0KLUBpbXBsZW1lbnRhdGlvbiBE
T01FbnRpdHlSZWZlcmVuY2UKLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotLy8gRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBE
T01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KLQotLSAoUHJvY2Vzc2luZ0luc3RydWN0aW9uICopX3By
b2Nlc3NpbmdJbnN0cnVjdGlvbgotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24gKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNT
dHJpbmcgKil0YXJnZXQKLXsKLSAgICByZXR1cm4gW3NlbGYgX3Byb2Nlc3NpbmdJbnN0cnVjdGlv
bl0tPnRhcmdldCgpOwotfQotCi0tIChOU1N0cmluZyAqKWRhdGEKLXsKLSAgICByZXR1cm4gW3Nl
bGYgX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbl0tPmRhdGEoKTsKLX0KLQotLSAodm9pZClzZXREYXRh
OihOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQoZGF0YSk7Ci0KLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcHJvY2Vzc2luZ0luc3RydWN0aW9uXS0+c2V0RGF0YShk
YXRhLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotQGVuZAotCi0vLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NUmFuZ2UKLQotQGltcGxlbWVudGF0
aW9uIERPTVJhbmdlCi0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpIHsK
LSAgICAgICAgRE9NX2Nhc3Q8UmFuZ2UgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0g
ICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgaWYgKF9p
bnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxSYW5nZSAqPihfaW50ZXJuYWwpLT5kZXJlZigp
OwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChOU1N0cmluZyAqKWRlc2Ny
aXB0aW9uCi17Ci0gICAgaWYgKCFfaW50ZXJuYWwpCi0gICAgICAgIHJldHVybiBAIjxET01SYW5n
ZTogbnVsbD4iOwotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxET01S
YW5nZTogJUAgJWQgJUAgJWQ+IiwKLSAgICAgICAgW3NlbGYgc3RhcnRDb250YWluZXJdLCBbc2Vs
ZiBzdGFydE9mZnNldF0sCi0gICAgICAgIFtzZWxmIGVuZENvbnRhaW5lcl0sIFtzZWxmIGVuZE9m
ZnNldF1dOwotfQotCi0tIChET01Ob2RlICopc3RhcnRDb250YWluZXIKLXsKLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6
W3NlbGYgX3JhbmdlXS0+c3RhcnRDb250YWluZXIoZWMpXTsKLSAgICByYWlzZU9uRE9NRXJyb3Io
ZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKGludClzdGFydE9mZnNldAotewotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGludCByZXN1bHQgPSBbc2VsZiBfcmFuZ2VdLT5z
dGFydE9mZnNldChlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi0tIChET01Ob2RlICopZW5kQ29udGFpbmVyCi17Ci0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxm
IF9yYW5nZV0tPmVuZENvbnRhaW5lcihlYyldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoaW50KWVuZE9mZnNldAotewotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIGludCByZXN1bHQgPSBbc2VsZiBfcmFuZ2VdLT5lbmRPZmZzZXQo
ZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
LSAoQk9PTCljb2xsYXBzZWQKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBCT09M
IHJlc3VsdCA9IFtzZWxmIF9yYW5nZV0tPmNvbGxhcHNlZChlYyk7Ci0gICAgcmFpc2VPbkRPTUVy
cm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlICopY29tbW9uQW5j
ZXN0b3JDb250YWluZXIKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2Rl
ICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3JhbmdlXS0+Y29tbW9uQW5jZXN0
b3JDb250YWluZXIoZWMpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLS0gKHZvaWQpc2V0U3RhcnQ6KERPTU5vZGUgKilyZWZOb2RlIDooaW50KW9m
ZnNldAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9yYW5nZV0tPnNl
dFN0YXJ0KFtyZWZOb2RlIF9ub2RlXSwgb2Zmc2V0LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLX0KLQotLSAodm9pZClzZXRFbmQ6KERPTU5vZGUgKilyZWZOb2RlIDooaW50KW9mZnNl
dAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9yYW5nZV0tPnNldEVu
ZChbcmVmTm9kZSBfbm9kZV0sIG9mZnNldCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7
Ci19Ci0KLS0gKHZvaWQpc2V0U3RhcnRCZWZvcmU6KERPTU5vZGUgKilyZWZOb2RlCi17Ci0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+c2V0U3RhcnRCZWZvcmUo
W3JlZk5vZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAo
dm9pZClzZXRTdGFydEFmdGVyOihET01Ob2RlICopcmVmTm9kZQotewotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIFtzZWxmIF9yYW5nZV0tPnNldFN0YXJ0QWZ0ZXIoW3JlZk5vZGUgX25v
ZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClzZXRFbmRC
ZWZvcmU6KERPTU5vZGUgKilyZWZOb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgW3NlbGYgX3JhbmdlXS0+c2V0RW5kQmVmb3JlKFtyZWZOb2RlIF9ub2RlXSwgZWMpOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc2V0RW5kQWZ0ZXI6KERPTU5vZGUg
KilyZWZOb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3Jhbmdl
XS0+c2V0RW5kQWZ0ZXIoW3JlZk5vZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLX0KLQotLSAodm9pZCljb2xsYXBzZTooQk9PTCl0b1N0YXJ0Ci17Ci0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+Y29sbGFwc2UodG9TdGFydCwgZWMp
OwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc2VsZWN0Tm9kZTooRE9N
Tm9kZSAqKXJlZk5vZGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBf
cmFuZ2VdLT5zZWxlY3ROb2RlKFtyZWZOb2RlIF9ub2RlXSwgZWMpOwotICAgIHJhaXNlT25ET01F
cnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc2VsZWN0Tm9kZUNvbnRlbnRzOihET01Ob2RlICopcmVm
Tm9kZQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9yYW5nZV0tPnNl
bGVjdE5vZGVDb250ZW50cyhbcmVmTm9kZSBfbm9kZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwotfQotCi0tIChzaG9ydCljb21wYXJlQm91bmRhcnlQb2ludHM6KHVuc2lnbmVkIHNo
b3J0KWhvdyA6KERPTVJhbmdlICopc291cmNlUmFuZ2UKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBzaG9ydCByZXN1bHQgPSBbc2VsZiBfcmFuZ2VdLT5jb21wYXJlQm91bmRhcnlQ
b2ludHMoc3RhdGljX2Nhc3Q8UmFuZ2U6OkNvbXBhcmVIb3c+KGhvdyksIFtzb3VyY2VSYW5nZSBf
cmFuZ2VdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi0tICh2b2lkKWRlbGV0ZUNvbnRlbnRzCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+ZGVsZXRlQ29udGVudHMoZWMpOwotICAgIHJhaXNlT25E
T01FcnJvcihlYyk7Ci19Ci0KLS0gKERPTURvY3VtZW50RnJhZ21lbnQgKilleHRyYWN0Q29udGVu
dHMKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Eb2N1bWVudEZyYWdtZW50
ICpyZXN1bHQgPSBbRE9NRG9jdW1lbnRGcmFnbWVudCBfZG9jdW1lbnRGcmFnbWVudFdpdGg6W3Nl
bGYgX3JhbmdlXS0+ZXh0cmFjdENvbnRlbnRzKGVjKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVy
cm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Eb2N1bWVudEZyYWdtZW50
ICopY2xvbmVDb250ZW50cwotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTURv
Y3VtZW50RnJhZ21lbnQgKnJlc3VsdCA9IFtET01Eb2N1bWVudEZyYWdtZW50IF9kb2N1bWVudEZy
YWdtZW50V2l0aDpbc2VsZiBfcmFuZ2VdLT5jbG9uZUNvbnRlbnRzKGVjKS5nZXQoKV07Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKWlu
c2VydE5vZGU6KERPTU5vZGUgKiluZXdOb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgW3NlbGYgX3JhbmdlXS0+aW5zZXJ0Tm9kZShbbmV3Tm9kZSBfbm9kZV0sIGVjKTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKXN1cnJvdW5kQ29udGVudHM6KERP
TU5vZGUgKiluZXdQYXJlbnQKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2Vs
ZiBfcmFuZ2VdLT5zdXJyb3VuZENvbnRlbnRzKFtuZXdQYXJlbnQgX25vZGVdLCBlYyk7Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoRE9NUmFuZ2UgKiljbG9uZVJhbmdlCi17Ci0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NUmFuZ2UgKnJlc3VsdCA9IFtET01SYW5n
ZSBfcmFuZ2VXaXRoOltzZWxmIF9yYW5nZV0tPmNsb25lUmFuZ2UoZWMpLmdldCgpXTsKLSAgICBy
YWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKE5TU3RyaW5n
ICopdG9TdHJpbmcKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBOU1N0cmluZyAq
cmVzdWx0ID0gW3NlbGYgX3JhbmdlXS0+dG9TdHJpbmcoZWMpOwotICAgIHJhaXNlT25ET01FcnJv
cihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoTlNTdHJpbmcgKil0ZXh0Ci17Ci0g
ICAgcmV0dXJuIFtzZWxmIF9yYW5nZV0tPnRleHQoKTsKLX0KLQotLSAodm9pZClkZXRhY2gKLXsK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5kZXRhY2goZWMp
OwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9u
IERPTVJhbmdlIChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKGlkKV9pbml0V2l0aFJhbmdlOihSYW5n
ZSAqKWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAg
IF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGlt
cGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNl
bGY7Ci19Ci0KLSsgKERPTVJhbmdlICopX3JhbmdlV2l0aDooUmFuZ2UgKilpbXBsCi17Ci0gICAg
aWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3Rh
bmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAo
Y2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0g
YXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhS
YW5nZTppbXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKFJhbmdlICopX3JhbmdlCi17Ci0gICAg
cmV0dXJuIERPTV9jYXN0PFJhbmdlICo+KF9pbnRlcm5hbCk7Ci19Ci0KLUBlbmQKLQotQGltcGxl
bWVudGF0aW9uIERPTVJhbmdlIChXZWJQcml2YXRlKQotCi0tIChOU1N0cmluZyAqKV90ZXh0Ci17
Ci0gICAgcmV0dXJuIFtzZWxmIHRleHRdOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlRmlsdGVyCi0KLS0gKGlkKV9pbml0V2l0aE5vZGVG
aWx0ZXI6KE5vZGVGaWx0ZXIgKilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1
cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAq
PihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwp
OwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01Ob2RlRmlsdGVyICopX25vZGVGaWx0ZXJX
aXRoOihOb2RlRmlsdGVyICopaW1wbAotewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9
IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQotICAgICAgICBy
ZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICBy
ZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTm9kZUZpbHRlcjppbXBsXSBhdXRvcmVsZWFz
ZV07Ci19Ci0KLS0gKE5vZGVGaWx0ZXIgKilfbm9kZUZpbHRlcgotewotICAgIHJldHVybiBET01f
Y2FzdDxOb2RlRmlsdGVyICo+KF9pbnRlcm5hbCk7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewot
ICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIERPTV9jYXN0PE5vZGVGaWx0ZXIgKj4oX2ludGVy
bmFsKS0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxp
emUKLXsKLSAgICBpZiAoX2ludGVybmFsKQotICAgICAgICBET01fY2FzdDxOb2RlRmlsdGVyICo+
KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQotLSAoc2hv
cnQpYWNjZXB0Tm9kZTooRE9NTm9kZSAqKW5vZGUKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVG
aWx0ZXJdLT5hY2NlcHROb2RlKFtub2RlIF9ub2RlXSk7Ci19Ci0KLUBlbmQKLQotCi1AaW1wbGVt
ZW50YXRpb24gRE9NTm9kZUl0ZXJhdG9yCi0KLS0gKGlkKV9pbml0V2l0aE5vZGVJdGVyYXRvcjoo
Tm9kZUl0ZXJhdG9yICopaW1wbCBmaWx0ZXI6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIKLXsK
LSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9
IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGltcGwtPnJlZigpOwot
ICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgbV9maWx0ZXIgPSBbZmlsdGVyIHJl
dGFpbl07Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKE5vZGVJdGVyYXRvciAqKV9ub2RlSXRl
cmF0b3IKLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8Tm9kZUl0ZXJhdG9yICo+KF9pbnRlcm5hbCk7
Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFttX2ZpbHRlciByZWxlYXNlXTsKLSAgICBp
ZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIFtzZWxmIGRldGFjaF07Ci0gICAgICAgIERPTV9jYXN0
PE5vZGVJdGVyYXRvciAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIg
ZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7
Ci0gICAgICAgIFtzZWxmIGRldGFjaF07Ci0gICAgICAgIERPTV9jYXN0PE5vZGVJdGVyYXRvciAq
PihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQot
Ci0tIChET01Ob2RlICopcm9vdAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX25vZGVJdGVyYXRvcl0tPnJvb3QoKV07Ci19Ci0KLS0gKHVuc2lnbmVkKXdoYXRUb1Nob3cK
LXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVJdGVyYXRvcl0tPndoYXRUb1Nob3coKTsKLX0KLQot
LSAoaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgotewotICAgIGlmIChtX2ZpbHRlcikKLSAgICAg
ICAgLy8gVGhpcyBub2RlIGl0ZXJhdG9yIHdhcyBjcmVhdGVkIGZyb20gdGhlIG9iamMgc2lkZQot
ICAgICAgICByZXR1cm4gW1ttX2ZpbHRlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLQotICAgIC8v
IFRoaXMgbm9kZSBpdGVyYXRvciB3YXMgY3JlYXRlZCBmcm9tIHRoZSBjKysgc2lkZQotICAgIHJl
dHVybiBbRE9NTm9kZUZpbHRlciBfbm9kZUZpbHRlcldpdGg6W3NlbGYgX25vZGVJdGVyYXRvcl0t
PmZpbHRlcigpXTsKLX0KLQotLSAoQk9PTClleHBhbmRFbnRpdHlSZWZlcmVuY2VzCi17Ci0gICAg
cmV0dXJuIFtzZWxmIF9ub2RlSXRlcmF0b3JdLT5leHBhbmRFbnRpdHlSZWZlcmVuY2VzKCk7Ci19
Ci0KLS0gKERPTU5vZGUgKiluZXh0Tm9kZQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZUl0ZXJh
dG9yXS0+bmV4dE5vZGUoZWMpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUgKilwcmV2aW91c05vZGUKLXsKLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6
W3NlbGYgX25vZGVJdGVyYXRvcl0tPnByZXZpb3VzTm9kZShlYyldOwotICAgIHJhaXNlT25ET01F
cnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAodm9pZClkZXRhY2gKLXsKLSAg
ICBbc2VsZiBfbm9kZUl0ZXJhdG9yXS0+ZGV0YWNoKCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVu
dGF0aW9uIERPTU5vZGVJdGVyYXRvcihXZWJDb3JlSW50ZXJuYWwpCi0KLSsgKERPTU5vZGVJdGVy
YXRvciAqKV9ub2RlSXRlcmF0b3JXaXRoOihOb2RlSXRlcmF0b3IgKilpbXBsIGZpbHRlcjooaWQg
PERPTU5vZGVGaWx0ZXI+KWZpbHRlcgotewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9
IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQotICAgICAgICBy
ZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICBy
ZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTm9kZUl0ZXJhdG9yOmltcGwgZmlsdGVyOmZp
bHRlcl0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01UcmVl
V2Fsa2VyCi0KLS0gKGlkKV9pbml0V2l0aFRyZWVXYWxrZXI6KFRyZWVXYWxrZXIgKilpbXBsIGZp
bHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgotewotICAgIEFTU0VSVChpbXBsKTsKLQot
ICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50
ZXJuYWwgKj4oaW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcihzZWxm
LCBpbXBsKTsKLSAgICBtX2ZpbHRlciA9IFtmaWx0ZXIgcmV0YWluXTsKLSAgICByZXR1cm4gc2Vs
ZjsKLX0KLQotLSAoVHJlZVdhbGtlciAqKV90cmVlV2Fsa2VyCi17Ci0gICAgcmV0dXJuIERPTV9j
YXN0PFRyZWVXYWxrZXIgKj4oX2ludGVybmFsKTsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0g
ICAgaWYgKG1fZmlsdGVyKQotICAgICAgICBbbV9maWx0ZXIgcmVsZWFzZV07Ci0gICAgaWYgKF9p
bnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxUcmVlV2Fsa2VyICo+KF9pbnRlcm5hbCktPmRl
cmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6
ZQotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8VHJlZVdhbGtlciAq
PihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQot
Ci0tIChET01Ob2RlICopcm9vdAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX3RyZWVXYWxrZXJdLT5yb290KCldOwotfQotCi0tICh1bnNpZ25lZCl3aGF0VG9TaG93Ci17
Ci0gICAgcmV0dXJuIFtzZWxmIF90cmVlV2Fsa2VyXS0+d2hhdFRvU2hvdygpOwotfQotCi0tIChp
ZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgaWYgKG1fZmlsdGVyKQotICAgICAgICAv
LyBUaGlzIHRyZWUgd2Fsa2VyIHdhcyBjcmVhdGVkIGZyb20gdGhlIG9iamMgc2lkZQotICAgICAg
ICByZXR1cm4gW1ttX2ZpbHRlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLQotICAgIC8vIFRoaXMg
dHJlZSB3YWxrZXIgd2FzIGNyZWF0ZWQgZnJvbSB0aGUgYysrIHNpZGUKLSAgICByZXR1cm4gW0RP
TU5vZGVGaWx0ZXIgX25vZGVGaWx0ZXJXaXRoOltzZWxmIF90cmVlV2Fsa2VyXS0+ZmlsdGVyKCld
OwotfQotCi0tIChCT09MKWV4cGFuZEVudGl0eVJlZmVyZW5jZXMKLXsKLSAgICByZXR1cm4gW3Nl
bGYgX3RyZWVXYWxrZXJdLT5leHBhbmRFbnRpdHlSZWZlcmVuY2VzKCk7Ci19Ci0KLS0gKERPTU5v
ZGUgKiljdXJyZW50Tm9kZQotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYg
X3RyZWVXYWxrZXJdLT5jdXJyZW50Tm9kZSgpXTsKLX0KLQotLSAodm9pZClzZXRDdXJyZW50Tm9k
ZTooRE9NTm9kZSAqKWN1cnJlbnROb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgW3NlbGYgX3RyZWVXYWxrZXJdLT5zZXRDdXJyZW50Tm9kZShbY3VycmVudE5vZGUgX25vZGVd
LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoRE9NTm9kZSAqKXBhcmVu
dE5vZGUKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90cmVlV2Fsa2Vy
XS0+cGFyZW50Tm9kZSgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKWZpcnN0Q2hpbGQKLXsKLSAgICBy
ZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90cmVlV2Fsa2VyXS0+Zmlyc3RDaGlsZCgp
XTsKLX0KLQotLSAoRE9NTm9kZSAqKWxhc3RDaGlsZAotewotICAgIHJldHVybiBbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5sYXN0Q2hpbGQoKV07Ci19Ci0KLS0gKERPTU5v
ZGUgKilwcmV2aW91c1NpYmxpbmcKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltz
ZWxmIF90cmVlV2Fsa2VyXS0+cHJldmlvdXNTaWJsaW5nKCldOwotfQotCi0tIChET01Ob2RlICop
bmV4dFNpYmxpbmcKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90cmVl
V2Fsa2VyXS0+bmV4dFNpYmxpbmcoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilwcmV2aW91c05vZGUK
LXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90cmVlV2Fsa2VyXS0+cHJl
dmlvdXNOb2RlKCldOwotfQotCi0tIChET01Ob2RlICopbmV4dE5vZGUKLXsKLSAgICByZXR1cm4g
W0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90cmVlV2Fsa2VyXS0+bmV4dE5vZGUoKV07Ci19Ci0K
LUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTVRyZWVXYWxrZXIgKFdlYkNvcmVJbnRlcm5hbCkK
LQotKyAoRE9NVHJlZVdhbGtlciAqKV90cmVlV2Fsa2VyV2l0aDooVHJlZVdhbGtlciAqKWltcGwg
ZmlsdGVyOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgaWYgKCFpbXBsKQotICAg
ICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hl
ZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2Up
Ci0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwot
ICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhUcmVlV2Fsa2VyOmltcGwg
ZmlsdGVyOmZpbHRlcl0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLWNsYXNzIE9iakNOb2Rl
RmlsdGVyQ29uZGl0aW9uIDogcHVibGljIE5vZGVGaWx0ZXJDb25kaXRpb24gCi17Ci1wdWJsaWM6
Ci0gICAgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oaWQgPERPTU5vZGVGaWx0ZXI+KTsKLSAgICB2
aXJ0dWFsIH5PYmpDTm9kZUZpbHRlckNvbmRpdGlvbigpOwotICAgIHZpcnR1YWwgc2hvcnQgYWNj
ZXB0Tm9kZShOb2RlKikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgT2JqQ05vZGVGaWx0ZXJDb25k
aXRpb24oY29uc3QgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24gJik7Ci0gICAgT2JqQ05vZGVGaWx0
ZXJDb25kaXRpb24gJm9wZXJhdG9yPShjb25zdCBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbiAmKTsK
LQotICAgIGlkIDxET01Ob2RlRmlsdGVyPiBtX2ZpbHRlcjsKLX07Ci0KLU9iakNOb2RlRmlsdGVy
Q29uZGl0aW9uOjpPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihpZCA8RE9NTm9kZUZpbHRlcj4gZmls
dGVyKQotICAgIDogbV9maWx0ZXIoZmlsdGVyKQotewotICAgIEFTU0VSVChtX2ZpbHRlcik7Ci0g
ICAgQ0ZSZXRhaW4obV9maWx0ZXIpOwotfQotCi1PYmpDTm9kZUZpbHRlckNvbmRpdGlvbjo6fk9i
akNOb2RlRmlsdGVyQ29uZGl0aW9uKCkKLXsKLSAgICBDRlJlbGVhc2UobV9maWx0ZXIpOwotfQot
Ci1zaG9ydCBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0Tm9kZShOb2RlKiBub2RlKSBj
b25zdAotewotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXI6OkZJTFRF
Ul9SRUpFQ1Q7Ci0gICAgcmV0dXJuIFttX2ZpbHRlciBhY2NlcHROb2RlOltET01Ob2RlIF9ub2Rl
V2l0aDpub2RlXV07Ci19Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1l
bnRUcmF2ZXJzYWwpCi0KLS0gKERPTU5vZGVJdGVyYXRvciAqKWNyZWF0ZU5vZGVJdGVyYXRvcjoo
RE9NTm9kZSAqKXJvb3QgOih1bnNpZ25lZCl3aGF0VG9TaG93IDooaWQgPERPTU5vZGVGaWx0ZXI+
KWZpbHRlciA6KEJPT0wpZXhwYW5kRW50aXR5UmVmZXJlbmNlcwotewotICAgIFJlZlB0cjxOb2Rl
RmlsdGVyPiBjcHBGaWx0ZXI7Ci0gICAgaWYgKGZpbHRlcikKLSAgICAgICAgY3BwRmlsdGVyID0g
bmV3IE5vZGVGaWx0ZXIobmV3IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKGZpbHRlcikpOwotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxOb2RlSXRlcmF0b3I+IGltcGwgPSBb
c2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVOb2RlSXRlcmF0b3IoW3Jvb3QgX25vZGVdLCB3aGF0VG9T
aG93LCBjcHBGaWx0ZXIsIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMsIGVjKTsKLSAgICByYWlzZU9u
RE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBbRE9NTm9kZUl0ZXJhdG9yIF9ub2RlSXRlcmF0b3JX
aXRoOmltcGwuZ2V0KCkgZmlsdGVyOmZpbHRlcl07Ci19Ci0KLS0gKERPTVRyZWVXYWxrZXIgKilj
cmVhdGVUcmVlV2Fsa2VyOihET01Ob2RlICopcm9vdCA6KHVuc2lnbmVkKXdoYXRUb1Nob3cgOihp
ZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyIDooQk9PTClleHBhbmRFbnRpdHlSZWZlcmVuY2VzCi17
Ci0gICAgUmVmUHRyPE5vZGVGaWx0ZXI+IGNwcEZpbHRlcjsKLSAgICBpZiAoZmlsdGVyKQotICAg
ICAgICBjcHBGaWx0ZXIgPSBuZXcgTm9kZUZpbHRlcihuZXcgT2JqQ05vZGVGaWx0ZXJDb25kaXRp
b24oZmlsdGVyKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFRyZWVX
YWxrZXI+IGltcGwgPSBbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVUcmVlV2Fsa2VyKFtyb290IF9u
b2RlXSwgd2hhdFRvU2hvdywgY3BwRmlsdGVyLCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzLCBlYyk7
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gW0RPTVRyZWVXYWxrZXIgX3Ry
ZWVXYWxrZXJXaXRoOmltcGwuZ2V0KCkgZmlsdGVyOmZpbHRlcl07Ci19Ci0KLUBlbmQKLQotT2Jq
Q0V2ZW50TGlzdGVuZXIqIE9iakNFdmVudExpc3RlbmVyOjpmaW5kKGlkIDxET01FdmVudExpc3Rl
bmVyPiBsaXN0ZW5lcikKLXsKLSAgICBpZiAoTGlzdGVuZXJNYXAqIG1hcCA9IGxpc3RlbmVyTWFw
KQotICAgICAgICByZXR1cm4gbWFwLT5nZXQobGlzdGVuZXIpOwotICAgIHJldHVybiBOVUxMOwot
fQotCi1PYmpDRXZlbnRMaXN0ZW5lciAqT2JqQ0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShpZCA8RE9N
RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpCi17Ci0gICAgT2JqQ0V2ZW50TGlzdGVuZXIgKndyYXBw
ZXIgPSBmaW5kKGxpc3RlbmVyKTsKLSAgICBpZiAoIXdyYXBwZXIpCi0gICAgICAgIHdyYXBwZXIg
PSBuZXcgT2JqQ0V2ZW50TGlzdGVuZXIobGlzdGVuZXIpOwotICAgIHdyYXBwZXItPnJlZigpOwot
ICAgIHJldHVybiB3cmFwcGVyOwotfQotCi1PYmpDRXZlbnRMaXN0ZW5lcjo6T2JqQ0V2ZW50TGlz
dGVuZXIoaWQgPERPTUV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKQotICAgIDogbV9saXN0ZW5lcihb
bGlzdGVuZXIgcmV0YWluXSkKLXsKLSAgICBMaXN0ZW5lck1hcCogbWFwID0gbGlzdGVuZXJNYXA7
Ci0gICAgaWYgKCFtYXApIHsKLSAgICAgICAgbWFwID0gbmV3IExpc3RlbmVyTWFwOwotICAgICAg
ICBsaXN0ZW5lck1hcCA9IG1hcDsKLSAgICB9Ci0gICAgbWFwLT5zZXQobGlzdGVuZXIsIHRoaXMp
OwotfQotCi1PYmpDRXZlbnRMaXN0ZW5lcjo6fk9iakNFdmVudExpc3RlbmVyKCkKLXsKLSAgICBs
aXN0ZW5lck1hcC0+cmVtb3ZlKG1fbGlzdGVuZXIpOwotICAgIFttX2xpc3RlbmVyIHJlbGVhc2Vd
OwotfQotCi12b2lkIE9iakNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChFdmVudCAqZXZlbnQs
IGJvb2wpCi17Ci0gICAgW21fbGlzdGVuZXIgaGFuZGxlRXZlbnQ6W0RPTUV2ZW50IF9ldmVudFdp
dGg6ZXZlbnRdXTsKLX0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Qcml2YXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVByaXZhdGUuaAkocmV2aXNp
b24gMTU5NTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUHJpdmF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjQsOSArMjUsMTIgQEAKICAqLwogCiAjaW1wb3J0IDxXZWJDb3Jl
L0RPTUNTUy5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01FbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL0RPTUV2ZW50cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0RPTU5vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NUmFuZ2UuaD4KLSNpbXBvcnQg
PFdlYkNvcmUvRE9NRXZlbnRzLmg+CisKIAogQGludGVyZmFjZSBET01SYW5nZSAoV2ViUHJpdmF0
ZSkKIC8vIHVzZXMgc2FtZSBhbGdvcml0aG0gYXMgaW5uZXJUZXh0CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NUmFuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NUmFuZ2UuaAkocmV2aXNpb24gMTU5NTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NUmFuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDcgKzI0LDggQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAogICovCiAKLSNpbXBvcnQgPFdlYkNvcmUvRE9NQ29yZS5oPgorI2ltcG9ydCA8
V2ViQ29yZS9ET01Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KIAog
ZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgRE9NUmFuZ2VFeGNlcHRpb247CiAKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01TdHlsZXNoZWV0cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01TdHlsZXNoZWV0cy5oCShyZXZpc2lvbiAxNTk1OSkKKysrIFdlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01TdHlsZXNoZWV0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vpbmln
IDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjMsOSArMjQsMTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpbXBvcnQgPFdlYkNv
cmUvRE9NQ29yZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Eb2N1bWVudC5oPgorI2ltcG9ydCA8
V2ViQ29yZS9ET01PYmplY3QuaD4KIAogQGNsYXNzIERPTU1lZGlhTGlzdDsKK0BjbGFzcyBET01O
b2RlOwogQGNsYXNzIERPTVN0eWxlU2hlZXQ7CiAKIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IERP
TUV2ZW50RXhjZXB0aW9uOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVRleHQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVGV4dC5oCShyZXZpc2lvbiAx
NTk1OSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01UZXh0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2
IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMywyMTggKzI0LDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAK
LSNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0Lmg+Ci0KLUBjbGFzcyBET01Eb2N1bWVu
dDsgCi1AY2xhc3MgRE9NRG9jdW1lbnRUeXBlOwotQGNsYXNzIERPTUVsZW1lbnQ7Ci1AY2xhc3Mg
RE9NTmFtZWROb2RlTWFwOwotQGNsYXNzIERPTU5vZGVMaXN0OwotCi10eXBlZGVmIHN0cnVjdCBE
T01PYmplY3RJbnRlcm5hbCBET01PYmplY3RJbnRlcm5hbDsKLQotQGludGVyZmFjZSBET01PYmpl
Y3QgOiBXZWJTY3JpcHRPYmplY3QgPE5TQ29weWluZz4KLXsKLSAgICBET01PYmplY3RJbnRlcm5h
bCAqX2ludGVybmFsOwotfQotQGVuZAotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBET01U
aW1lU3RhbXA7Ci0KLWV4dGVybiBOU1N0cmluZyAqIGNvbnN0IERPTUV4Y2VwdGlvbjsKLQotZW51
bSB7Ci0gICAgLy8KLSAgICAvLyBET00gZXhjZXB0aW9uIGNvZGVzCi0gICAgLy8KLSAgICBET01f
SU5ERVhfU0laRV9FUlIgICAgICAgICAgICAgICAgPSAxLAotICAgIERPTV9ET01TVFJJTkdfU0la
RV9FUlIgICAgICAgICAgICA9IDIsCi0gICAgRE9NX0hJRVJBUkNIWV9SRVFVRVNUX0VSUiAgICAg
ICAgID0gMywKLSAgICBET01fV1JPTkdfRE9DVU1FTlRfRVJSICAgICAgICAgICAgPSA0LAotICAg
IERPTV9JTlZBTElEX0NIQVJBQ1RFUl9FUlIgICAgICAgICA9IDUsCi0gICAgRE9NX05PX0RBVEFf
QUxMT1dFRF9FUlIgICAgICAgICAgID0gNiwKLSAgICBET01fTk9fTU9ESUZJQ0FUSU9OX0FMTE9X
RURfRVJSICAgPSA3LAotICAgIERPTV9OT1RfRk9VTkRfRVJSICAgICAgICAgICAgICAgICA9IDgs
Ci0gICAgRE9NX05PVF9TVVBQT1JURURfRVJSICAgICAgICAgICAgID0gOSwKLSAgICBET01fSU5V
U0VfQVRUUklCVVRFX0VSUiAgICAgICAgICAgPSAxMCwKLSAgICBET01fSU5WQUxJRF9TVEFURV9F
UlIgICAgICAgICAgICAgPSAxMSwKLSAgICBET01fU1lOVEFYX0VSUiAgICAgICAgICAgICAgICAg
ICAgPSAxMiwKLSAgICBET01fSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSICAgICAgPSAxMywKLSAg
ICBET01fTkFNRVNQQUNFX0VSUiAgICAgICAgICAgICAgICAgPSAxNCwKLSAgICBET01fSU5WQUxJ
RF9BQ0NFU1NfRVJSICAgICAgICAgICAgPSAxNQotfTsKLQotQGludGVyZmFjZSBET01JbXBsZW1l
bnRhdGlvbiA6IERPTU9iamVjdAotLSAoQk9PTCloYXNGZWF0dXJlOihOU1N0cmluZyAqKWZlYXR1
cmUgOihOU1N0cmluZyAqKXZlcnNpb247Ci0tIChET01Eb2N1bWVudFR5cGUgKiljcmVhdGVEb2N1
bWVudFR5cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICopcHVibGljSWQg
OihOU1N0cmluZyAqKXN5c3RlbUlkOwotLSAoRE9NRG9jdW1lbnQgKiljcmVhdGVEb2N1bWVudDoo
TlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihET01E
b2N1bWVudFR5cGUgKilkb2N0eXBlOwotQGVuZAotCi1lbnVtIHsKLSAgICAvLwotICAgIC8vIERP
TSBub2RlIHR5cGVzCi0gICAgLy8KLSAgICBET01fRUxFTUVOVF9OT0RFICAgICAgICAgICAgICAg
ICAgPSAxLAotICAgIERPTV9BVFRSSUJVVEVfTk9ERSAgICAgICAgICAgICAgICA9IDIsCi0gICAg
RE9NX1RFWFRfTk9ERSAgICAgICAgICAgICAgICAgICAgID0gMywKLSAgICBET01fQ0RBVEFfU0VD
VElPTl9OT0RFICAgICAgICAgICAgPSA0LAotICAgIERPTV9FTlRJVFlfUkVGRVJFTkNFX05PREUg
ICAgICAgICA9IDUsCi0gICAgRE9NX0VOVElUWV9OT0RFICAgICAgICAgICAgICAgICAgID0gNiwK
LSAgICBET01fUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFICAgPSA3LAotICAgIERPTV9DT01N
RU5UX05PREUgICAgICAgICAgICAgICAgICA9IDgsCi0gICAgRE9NX0RPQ1VNRU5UX05PREUgICAg
ICAgICAgICAgICAgID0gOSwKLSAgICBET01fRE9DVU1FTlRfVFlQRV9OT0RFICAgICAgICAgICAg
PSAxMCwKLSAgICBET01fRE9DVU1FTlRfRlJBR01FTlRfTk9ERSAgICAgICAgPSAxMSwKLSAgICBE
T01fTk9UQVRJT05fTk9ERSAgICAgICAgICAgICAgICAgPSAxMgotfTsKLQotQGludGVyZmFjZSBE
T01Ob2RlIDogRE9NT2JqZWN0Ci0tIChOU1N0cmluZyAqKW5vZGVOYW1lOwotLSAoTlNTdHJpbmcg
Kilub2RlVmFsdWU7Ci0tICh2b2lkKXNldE5vZGVWYWx1ZTooTlNTdHJpbmcgKilzdHJpbmc7Ci0t
ICh1bnNpZ25lZCBzaG9ydClub2RlVHlwZTsKLS0gKERPTU5vZGUgKilwYXJlbnROb2RlOwotLSAo
RE9NTm9kZUxpc3QgKiljaGlsZE5vZGVzOwotLSAoRE9NTm9kZSAqKWZpcnN0Q2hpbGQ7Ci0tIChE
T01Ob2RlICopbGFzdENoaWxkOwotLSAoRE9NTm9kZSAqKXByZXZpb3VzU2libGluZzsKLS0gKERP
TU5vZGUgKiluZXh0U2libGluZzsKLS0gKERPTU5hbWVkTm9kZU1hcCAqKWF0dHJpYnV0ZXM7Ci0t
IChET01Eb2N1bWVudCAqKW93bmVyRG9jdW1lbnQ7Ci0tIChET01Ob2RlICopaW5zZXJ0QmVmb3Jl
OihET01Ob2RlICopbmV3Q2hpbGQgOihET01Ob2RlICopcmVmQ2hpbGQ7Ci0tIChET01Ob2RlICop
cmVwbGFjZUNoaWxkOihET01Ob2RlICopbmV3Q2hpbGQgOihET01Ob2RlICopb2xkQ2hpbGQ7Ci0t
IChET01Ob2RlICopcmVtb3ZlQ2hpbGQ6KERPTU5vZGUgKilvbGRDaGlsZDsKLS0gKERPTU5vZGUg
KilhcHBlbmRDaGlsZDooRE9NTm9kZSAqKW5ld0NoaWxkOwotLSAoQk9PTCloYXNDaGlsZE5vZGVz
OwotLSAoRE9NTm9kZSAqKWNsb25lTm9kZTooQk9PTClkZWVwOwotLSAodm9pZClub3JtYWxpemU7
Ci0tIChCT09MKWlzU3VwcG9ydGVkOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0cmluZyAqKXZl
cnNpb247Ci0tIChOU1N0cmluZyAqKW5hbWVzcGFjZVVSSTsKLS0gKE5TU3RyaW5nICopcHJlZml4
OwotLSAodm9pZClzZXRQcmVmaXg6KE5TU3RyaW5nICopcHJlZml4OwotLSAoTlNTdHJpbmcgKils
b2NhbE5hbWU7Ci0tIChCT09MKWhhc0F0dHJpYnV0ZXM7Ci0tIChCT09MKWlzU2FtZU5vZGU6KERP
TU5vZGUgKilvdGhlcjsKLS0gKEJPT0wpaXNFcXVhbE5vZGU6KERPTU5vZGUgKilvdGhlcjsKLS0g
KE5TU3RyaW5nICopdGV4dENvbnRlbnQ7Ci0tICh2b2lkKXNldFRleHRDb250ZW50OihOU1N0cmlu
ZyAqKXRleHQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NTm9kZUxpc3QgOiBET01PYmplY3QKLS0g
KERPTU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleDsKLS0gKHVuc2lnbmVkKWxlbmd0aDsKLUBl
bmQKLQotQGludGVyZmFjZSBET01OYW1lZE5vZGVNYXAgOiBET01PYmplY3QKLS0gKERPTU5vZGUg
KilnZXROYW1lZEl0ZW06KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTU5vZGUgKilzZXROYW1lZEl0
ZW06KERPTU5vZGUgKilhcmc7Ci0tIChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVtOihOU1N0cmlu
ZyAqKW5hbWU7Ci0tIChET01Ob2RlICopaXRlbToodW5zaWduZWQpaW5kZXg7Ci0tICh1bnNpZ25l
ZClsZW5ndGg7Ci0tIChET01Ob2RlICopZ2V0TmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFtZXNw
YWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tIChET01Ob2RlICopc2V0TmFtZWRJdGVt
TlM6KERPTU5vZGUgKilhcmc7Ci0tIChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVtTlM6KE5TU3Ry
aW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci1AZW5kCi0KLUBpbnRl
cmZhY2UgRE9NQ2hhcmFjdGVyRGF0YSA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopZGF0YTsKLS0g
KHZvaWQpc2V0RGF0YTooTlNTdHJpbmcgKilkYXRhOwotLSAodW5zaWduZWQpbGVuZ3RoOwotLSAo
TlNTdHJpbmcgKilzdWJzdHJpbmdEYXRhOih1bnNpZ25lZClvZmZzZXQgOih1bnNpZ25lZCljb3Vu
dDsKLS0gKHZvaWQpYXBwZW5kRGF0YTooTlNTdHJpbmcgKilhcmc7Ci0tICh2b2lkKWluc2VydERh
dGE6KHVuc2lnbmVkKW9mZnNldCA6KE5TU3RyaW5nICopYXJnOwotLSAodm9pZClkZWxldGVEYXRh
Oih1bnNpZ25lZClvZmZzZXQgOih1bnNpZ25lZCkgY291bnQ7Ci0tICh2b2lkKXJlcGxhY2VEYXRh
Oih1bnNpZ25lZClvZmZzZXQgOih1bnNpZ25lZCljb3VudCA6KE5TU3RyaW5nICopYXJnOwotQGVu
ZAotCi1AaW50ZXJmYWNlIERPTUF0dHIgOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKW5hbWU7Ci0t
IChCT09MKXNwZWNpZmllZDsKLS0gKE5TU3RyaW5nICopdmFsdWU7Ci0tICh2b2lkKXNldFZhbHVl
OihOU1N0cmluZyAqKXZhbHVlOwotLSAoRE9NRWxlbWVudCAqKW93bmVyRWxlbWVudDsKLUBlbmQK
LQotQGludGVyZmFjZSBET01FbGVtZW50IDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKil0YWdOYW1l
OwotLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKHZvaWQp
c2V0QXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUgOihOU1N0cmluZyAqKXZhbHVlOwotLSAodm9p
ZClyZW1vdmVBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTUF0dHIgKilnZXRBdHRy
aWJ1dGVOb2RlOihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01BdHRyICopc2V0QXR0cmlidXRlTm9k
ZTooRE9NQXR0ciAqKW5ld0F0dHI7Ci0tIChET01BdHRyICopcmVtb3ZlQXR0cmlidXRlTm9kZToo
RE9NQXR0ciAqKW9sZEF0dHI7Ci0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1l
OihOU1N0cmluZyAqKW5hbWU7Ci0tIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZU5TOihOU1N0cmlu
ZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAodm9pZClzZXRBdHRy
aWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5h
bWUgOihOU1N0cmluZyAqKXZhbHVlOwotLSAodm9pZClyZW1vdmVBdHRyaWJ1dGVOUzooTlNTdHJp
bmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKERPTUF0dHIgKiln
ZXRBdHRyaWJ1dGVOb2RlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKils
b2NhbE5hbWU7Ci0tIChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZU5TOihET01BdHRyICopbmV3
QXR0cjsKLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWVOUzooTlNTdHJpbmcg
KiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKEJPT0wpaGFzQXR0cmli
dXRlOihOU1N0cmluZyAqKW5hbWU7Ci0tIChCT09MKWhhc0F0dHJpYnV0ZU5TOihOU1N0cmluZyAq
KW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAodm9pZClmb2N1czsKLS0g
KHZvaWQpYmx1cjsKLUBlbmQKKyNpbXBvcnQgPFdlYkNvcmUvRE9NQ2hhcmFjdGVyRGF0YS5oPgog
CiBAaW50ZXJmYWNlIERPTVRleHQgOiBET01DaGFyYWN0ZXJEYXRhCiAtIChET01UZXh0ICopc3Bs
aXRUZXh0Oih1bnNpZ25lZClvZmZzZXQ7CiBAZW5kCi0KLUBpbnRlcmZhY2UgRE9NQ29tbWVudCA6
IERPTUNoYXJhY3RlckRhdGEKLUBlbmQKLQotQGludGVyZmFjZSBET01DREFUQVNlY3Rpb24gOiBE
T01UZXh0Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRG9jdW1lbnRUeXBlIDogRE9NTm9kZQotLSAo
TlNTdHJpbmcgKiluYW1lOwotLSAoRE9NTmFtZWROb2RlTWFwICopZW50aXRpZXM7Ci0tIChET01O
YW1lZE5vZGVNYXAgKilub3RhdGlvbnM7Ci0tIChOU1N0cmluZyAqKXB1YmxpY0lkOwotLSAoTlNT
dHJpbmcgKilzeXN0ZW1JZDsKLS0gKE5TU3RyaW5nICopaW50ZXJuYWxTdWJzZXQ7Ci1AZW5kCi0K
LUBpbnRlcmZhY2UgRE9NTm90YXRpb24gOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKXB1YmxpY0lk
OwotLSAoTlNTdHJpbmcgKilzeXN0ZW1JZDsKLUBlbmQKLQotQGludGVyZmFjZSBET01FbnRpdHkg
OiBET01Ob2RlCi0tIChOU1N0cmluZyAqKXB1YmxpY0lkOwotLSAoTlNTdHJpbmcgKilzeXN0ZW1J
ZDsKLS0gKE5TU3RyaW5nICopbm90YXRpb25OYW1lOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUVu
dGl0eVJlZmVyZW5jZSA6IERPTU5vZGUKLUBlbmQKLQotQGludGVyZmFjZSBET01Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24gOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKXRhcmdldDsKLS0gKE5TU3RyaW5n
ICopZGF0YTsKLS0gKHZvaWQpc2V0RGF0YTooTlNTdHJpbmcgKilkYXRhOwotQGVuZAotCi1AaW50
ZXJmYWNlIERPTURvY3VtZW50RnJhZ21lbnQgOiBET01Ob2RlCi1AZW5kCi0KLUBpbnRlcmZhY2Ug
RE9NRG9jdW1lbnQgOiBET01Ob2RlCi0tIChET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlOwotLSAo
RE9NSW1wbGVtZW50YXRpb24gKilpbXBsZW1lbnRhdGlvbjsKLS0gKERPTUVsZW1lbnQgKilkb2N1
bWVudEVsZW1lbnQ7Ci0tIChET01FbGVtZW50ICopY3JlYXRlRWxlbWVudDooTlNTdHJpbmcgKil0
YWdOYW1lOwotLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWNyZWF0ZURvY3VtZW50RnJhZ21lbnQ7
Ci0tIChET01UZXh0ICopY3JlYXRlVGV4dE5vZGU6KE5TU3RyaW5nICopZGF0YTsKLS0gKERPTUNv
bW1lbnQgKiljcmVhdGVDb21tZW50OihOU1N0cmluZyAqKWRhdGE7Ci0tIChET01DREFUQVNlY3Rp
b24gKiljcmVhdGVDREFUQVNlY3Rpb246KE5TU3RyaW5nICopZGF0YTsKLS0gKERPTVByb2Nlc3Np
bmdJbnN0cnVjdGlvbiAqKWNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbjooTlNTdHJpbmcgKil0
YXJnZXQgOihOU1N0cmluZyAqKWRhdGE7Ci0tIChET01BdHRyICopY3JlYXRlQXR0cmlidXRlOihO
U1N0cmluZyAqKW5hbWU7Ci0tIChET01FbnRpdHlSZWZlcmVuY2UgKiljcmVhdGVFbnRpdHlSZWZl
cmVuY2U6KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRh
Z05hbWU6KE5TU3RyaW5nICopdGFnbmFtZTsKLS0gKERPTU5vZGUgKilpbXBvcnROb2RlOihET01O
b2RlICopaW1wb3J0ZWROb2RlIDooQk9PTClkZWVwOwotLSAoRE9NRWxlbWVudCAqKWNyZWF0ZUVs
ZW1lbnROUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5h
bWU7Ci0tIChET01BdHRyICopY3JlYXRlQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNl
VVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lOwotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVt
ZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9j
YWxOYW1lOwotLSAoRE9NRWxlbWVudCAqKWdldEVsZW1lbnRCeUlkOihOU1N0cmluZyAqKWVsZW1l
bnRJZDsKLS0gKERPTU5vZGUgKilhZG9wdE5vZGU6KERPTU5vZGUgKilzb3VyY2U7Ci1AZW5kCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVGV4dC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NVGV4dC5tbQkocmV2aXNpb24gMTU5NTkpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NVGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBKYW1lcyBHLiBTcGV0aCAo
c3BldGhAZW5kLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNiBKYW1lcyBHLiBTcGV0aCA8c3Bl
dGhAZW5kLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2Vp
bmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMjM0
OCArMjYsMjcgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkRPTS5oIgor
I2ltcG9ydCAiRE9NVGV4dC5oIgogCi0jaW1wb3J0ICJDREFUQVNlY3Rpb24uaCIKLSNpbXBvcnQg
ImNzc2hlbHBlci5oIgotI2ltcG9ydCAiQ1NTU3R5bGVTaGVldC5oIgotI2ltcG9ydCAiQ29tbWVu
dC5oIgotI2ltcG9ydCAiRE9NRXZlbnRzSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTUltcGxlbWVu
dGF0aW9uRnJvbnQuaCIKICNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0jaW1wb3J0ICJET01Qcml2
YXRlLmgiCi0jaW1wb3J0ICJEb2N1bWVudC5oIgotI2ltcG9ydCAiRG9jdW1lbnRGcmFnbWVudC5o
IgotI2ltcG9ydCAiRG9jdW1lbnRUeXBlLmgiCi0jaW1wb3J0ICJFbnRpdHkuaCIKLSNpbXBvcnQg
IkVudGl0eVJlZmVyZW5jZS5oIgotI2ltcG9ydCAiRXZlbnQuaCIKLSNpbXBvcnQgIkV2ZW50TGlz
dGVuZXIuaCIKLSNpbXBvcnQgIkZvdW5kYXRpb25FeHRyYXMuaCIKLSNpbXBvcnQgIkZyYW1lTWFj
LmgiCi0jaW1wb3J0ICJIVE1MRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxOYW1lcy5oIgotI2lt
cG9ydCAiSFRNTFBsdWdJbkVsZW1lbnQuaCIKLSNpbXBvcnQgIk5vZGVGaWx0ZXIuaCIKLSNpbXBv
cnQgIk5vZGVGaWx0ZXJDb25kaXRpb24uaCIKLSNpbXBvcnQgIk5vZGVJdGVyYXRvci5oIgotI2lt
cG9ydCAiTm9kZUxpc3QuaCIKLSNpbXBvcnQgIk5vdGF0aW9uLmgiCi0jaW1wb3J0ICJQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uaCIKLSNpbXBvcnQgIlF1YWxpZmllZE5hbWUuaCIKLSNpbXBvcnQgIlJh
bmdlLmgiCi0jaW1wb3J0ICJSZW5kZXJJbWFnZS5oIgotI2ltcG9ydCAiVHJlZVdhbGtlci5oIgot
I2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgotI2ltcG9ydCA8b2JqYy9vYmpjLWNs
YXNzLmg+CisjaW1wb3J0ICJUZXh0LmgiCiAKLXVzaW5nIFdlYkNvcmU6OkF0b21pY1N0cmluZzsK
LXVzaW5nIFdlYkNvcmU6OkF0b21pY1N0cmluZ0ltcGw7Ci11c2luZyBXZWJDb3JlOjpBdHRyOwot
dXNpbmcgV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTsKLXVzaW5nIFdlYkNvcmU6OkRlcHJlY2F0ZWRW
YWx1ZUxpc3Q7Ci11c2luZyBXZWJDb3JlOjpEb2N1bWVudDsKLXVzaW5nIFdlYkNvcmU6OkRvY3Vt
ZW50RnJhZ21lbnQ7Ci11c2luZyBXZWJDb3JlOjpEb2N1bWVudFR5cGU7Ci11c2luZyBXZWJDb3Jl
OjpET01JbXBsZW1lbnRhdGlvbkZyb250OwotdXNpbmcgV2ViQ29yZTo6RWxlbWVudDsKLXVzaW5n
IFdlYkNvcmU6OkVudGl0eTsKLXVzaW5nIFdlYkNvcmU6OkV2ZW50OwotdXNpbmcgV2ViQ29yZTo6
RXZlbnRMaXN0ZW5lcjsKLXVzaW5nIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGU7Ci11c2luZyBXZWJD
b3JlOjpIVE1MRG9jdW1lbnQ7Ci11c2luZyBXZWJDb3JlOjpIVE1MRWxlbWVudDsKLXVzaW5nIFdl
YkNvcmU6OkZyYW1lTWFjOwotdXNpbmcgV2ViQ29yZTo6SW50UmVjdDsKLXVzaW5nIFdlYkNvcmU6
OktVUkw7Ci11c2luZyBXZWJDb3JlOjpOYW1lZE5vZGVNYXA7Ci11c2luZyBXZWJDb3JlOjpOb2Rl
OwotdXNpbmcgV2ViQ29yZTo6Tm9kZUZpbHRlcjsKLXVzaW5nIFdlYkNvcmU6Ok5vZGVGaWx0ZXJD
b25kaXRpb247Ci11c2luZyBXZWJDb3JlOjpOb2RlSXRlcmF0b3I7Ci11c2luZyBXZWJDb3JlOjpO
b2RlTGlzdDsKLXVzaW5nIFdlYkNvcmU6Ok5vdGF0aW9uOwotdXNpbmcgV2ViQ29yZTo6UHJvY2Vz
c2luZ0luc3RydWN0aW9uOwotdXNpbmcgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTsKLXVzaW5nIFdl
YkNvcmU6OlJhbmdlOwotdXNpbmcgV2ViQ29yZTo6UmVuZGVySW1hZ2U7Ci11c2luZyBXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q7Ci11c2luZyBXZWJDb3JlOjpTdHJpbmc7Ci11c2luZyBXZWJDb3JlOjpU
ZXh0OwotdXNpbmcgV2ViQ29yZTo6VHJlZVdhbGtlcjsKKyNpbXBvcnQgIkRPTU5vZGUuaCIKKyNp
bXBvcnQgIk5vZGUuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkhUTUxOYW1lczsKLQot
QGludGVyZmFjZSBET01BdHRyIChXZWJDb3JlSW50ZXJuYWwpCi0rIChET01BdHRyICopX2F0dHJX
aXRoOihBdHRyICopaW1wbDsKLS0gKEF0dHIgKilfYXR0cjsKLUBlbmQKLQotQGludGVyZmFjZSBE
T01Eb2N1bWVudFR5cGUgKFdlYkNvcmVJbnRlcm5hbCkKLS0gKERvY3VtZW50VHlwZSAqKV9kb2N1
bWVudFR5cGU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSW1wbGVtZW50YXRpb24gKFdlYkNvcmVJ
bnRlcm5hbCkKLSsgKERPTUltcGxlbWVudGF0aW9uICopX0RPTUltcGxlbWVudGF0aW9uV2l0aDoo
RE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKWltcGw7Ci0tIChET01JbXBsZW1lbnRhdGlvbkZyb250
ICopX0RPTUltcGxlbWVudGF0aW9uOwotQGVuZAotCi1jbGFzcyBPYmpDRXZlbnRMaXN0ZW5lciA6
IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgT2JqQ0V2ZW50TGlz
dGVuZXIgKmZpbmQoaWQgPERPTUV2ZW50TGlzdGVuZXI+KTsKLSAgICBzdGF0aWMgT2JqQ0V2ZW50
TGlzdGVuZXIgKmNyZWF0ZShpZCA8RE9NRXZlbnRMaXN0ZW5lcj4pOwotCi1wcml2YXRlOgotICAg
IE9iakNFdmVudExpc3RlbmVyKGlkIDxET01FdmVudExpc3RlbmVyPik7Ci0gICAgdmlydHVhbCB+
T2JqQ0V2ZW50TGlzdGVuZXIoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChFdmVu
dCAqLCBib29sIGlzV2luZG93RXZlbnQpOwotCi0gICAgaWQgPERPTUV2ZW50TGlzdGVuZXI+IG1f
bGlzdGVuZXI7Ci19OwotCi10eXBlZGVmIEhhc2hNYXA8aWQsIE9iakNFdmVudExpc3RlbmVyKj4g
TGlzdGVuZXJNYXA7Ci10eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENsYXNzPiBP
YmpDQ2xhc3NNYXA7Ci0KLXN0YXRpYyBPYmpDQ2xhc3NNYXAqIGVsZW1lbnRDbGFzc01hcDsKLXN0
YXRpYyBMaXN0ZW5lck1hcCogbGlzdGVuZXJNYXA7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0vLyBET01PYmplY3QKLQotQGltcGxlbWVudGF0aW9uIERPTU9iamVjdAot
Ci0vLyBQcmV2ZW50IGNyZWF0aW9uIG9mIERPTSBvYmplY3RzIGJ5IGNsaWVudHMgd2hvIGp1c3Qg
IltbeHh4IGFsbG9jXSBpbml0XSIuCi0tIChpZClpbml0Ci17Ci0gICAgW05TRXhjZXB0aW9uIHJh
aXNlOk5TR2VuZXJpY0V4Y2VwdGlvbiBmb3JtYXQ6QCIrWyVAIGluaXRdOiBzaG91bGQgbmV2ZXIg
YmUgdXNlZCIsIE5TU3RyaW5nRnJvbUNsYXNzKFtzZWxmIGNsYXNzXSldOwotICAgIFtzZWxmIHJl
bGVhc2VdOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlm
IChfaW50ZXJuYWwpIHsKLSAgICAgICAgcmVtb3ZlRE9NV3JhcHBlcihfaW50ZXJuYWwpOwotICAg
IH0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBp
ZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIHJlbW92ZURPTVdyYXBwZXIoX2ludGVybmFsKTsKLSAg
ICB9Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQotLSAoaWQpY29weVdpdGhab25lOihOU1pv
bmUgKil6b25lCi17Ci0gICAgcmV0dXJuIFtzZWxmIHJldGFpbl07Ci19Ci0KLUBlbmQKLQotQGlt
cGxlbWVudGF0aW9uIERPTU9iamVjdCAoV2ViQ29yZUludGVybmFsKQotCi0tIChpZClfaW5pdAot
ewotICAgIHJldHVybiBbc3VwZXIgX2luaXRdOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Ob2RlCi0KLUBpbXBsZW1lbnRhdGlvbiBET01O
b2RlCi0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAg
RE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIg
ZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7
Ci0gICAgICAgIERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0g
ICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQotLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgotewot
ICAgIGlmICghX2ludGVybmFsKSB7Ci0gICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIjwlQDogbnVsbD4iLAotICAgICAgICAgICAgW1tzZWxmIGNsYXNzXSBkZXNjcmlw
dGlvbl0sIHNlbGZdOwotICAgIH0KLSAgICBOU1N0cmluZyAqdmFsdWUgPSBbc2VsZiBub2RlVmFs
dWVdOwotICAgIGlmICh2YWx1ZSkgewotICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCI8JUAgWyVAXTogJXAgJyVAJz4iLAotICAgICAgICAgICAgW1tzZWxmIGNsYXNz
XSBkZXNjcmlwdGlvbl0sIFtzZWxmIG5vZGVOYW1lXSwgX2ludGVybmFsLCB2YWx1ZV07Ci0gICAg
fQotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQCBbJUBdOiAlcD4i
LAotICAgICAgICBbW3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9uXSwgW3NlbGYgbm9kZU5hbWVdLCBf
aW50ZXJuYWxdOwotfQotCi0tIChOU1N0cmluZyAqKW5vZGVOYW1lCi17Ci0gICAgcmV0dXJuIFtz
ZWxmIF9ub2RlXS0+bm9kZU5hbWUoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilub2RlVmFsdWUKLXsK
LSAgICAvLyBEb2N1bWVudGF0aW9uIHNheXMgd2UgY2FuIHJhaXNlIGEgRE9NU1RSSU5HX1NJWkVf
RVJSLgotICAgIC8vIEhvd2V2ZXIsIHRoZSBsb3dlciBsYXllciBkb2VzIG5vdCByZXBvcnQgdGhh
dCBlcnJvciB1cCB0byB1cy4KLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2RlVmFsdWUoKTsK
LX0KLQotLSAodm9pZClzZXROb2RlVmFsdWU6KE5TU3RyaW5nICopc3RyaW5nCi17Ci0gICAgQVNT
RVJUKHN0cmluZyk7Ci0gICAgCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYg
X25vZGVdLT5zZXROb2RlVmFsdWUoc3RyaW5nLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVj
KTsKLX0KLQotLSAodW5zaWduZWQgc2hvcnQpbm9kZVR5cGUKLXsKLSAgICByZXR1cm4gW3NlbGYg
X25vZGVdLT5ub2RlVHlwZSgpOwotfQotCi0tIChET01Ob2RlICopcGFyZW50Tm9kZQotewotICAg
IHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5wYXJlbnROb2RlKCldOwot
fQotCi0tIChET01Ob2RlTGlzdCAqKWNoaWxkTm9kZXMKLXsKLSAgICByZXR1cm4gW0RPTU5vZGVM
aXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX25vZGVdLT5jaGlsZE5vZGVzKCkuZ2V0KCldOwotfQot
Ci0tIChET01Ob2RlICopZmlyc3RDaGlsZAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdp
dGg6W3NlbGYgX25vZGVdLT5maXJzdENoaWxkKCldOwotfQotCi0tIChET01Ob2RlICopbGFzdENo
aWxkCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPmxhc3RD
aGlsZCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKXByZXZpb3VzU2libGluZwotewotICAgIHJldHVy
biBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5wcmV2aW91c1NpYmxpbmcoKV07Ci19
Ci0KLS0gKERPTU5vZGUgKiluZXh0U2libGluZwotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX25vZGVdLT5uZXh0U2libGluZygpXTsKLX0KLQotLSAoRE9NTmFtZWROb2Rl
TWFwICopYXR0cmlidXRlcwotewotICAgIC8vIERPTSBsZXZlbCAyIGNvcmUgc3BlY2lmaWNhdGlv
biBzYXlzOiAKLSAgICAvLyBBIE5hbWVkTm9kZU1hcCBjb250YWluaW5nIHRoZSBhdHRyaWJ1dGVz
IG9mIHRoaXMgbm9kZSAoaWYgaXQgaXMgYW4gRWxlbWVudCkgb3IgbnVsbCBvdGhlcndpc2UuCi0g
ICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoRE9NRG9jdW1lbnQgKilvd25lckRvY3VtZW50Ci17Ci0g
ICAgcmV0dXJuIFtET01Eb2N1bWVudCBfZG9jdW1lbnRXaXRoOltzZWxmIF9ub2RlXS0+ZG9jdW1l
bnQoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilpbnNlcnRCZWZvcmU6KERPTU5vZGUgKiluZXdDaGls
ZCA6KERPTU5vZGUgKilyZWZDaGlsZAotewotICAgIEFTU0VSVChuZXdDaGlsZCk7Ci0gICAgQVNT
RVJUKHJlZkNoaWxkKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChbc2Vs
ZiBfbm9kZV0tPmluc2VydEJlZm9yZShbbmV3Q2hpbGQgX25vZGVdLCBbcmVmQ2hpbGQgX25vZGVd
LCBlYykpCi0gICAgICAgIHJldHVybiBuZXdDaGlsZDsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKERPTU5vZGUgKilyZXBsYWNlQ2hpbGQ6KERPTU5v
ZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilvbGRDaGlsZAotewotICAgIEFTU0VSVChuZXdDaGls
ZCk7Ci0gICAgQVNTRVJUKG9sZENoaWxkKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIGlmIChbc2VsZiBfbm9kZV0tPnJlcGxhY2VDaGlsZChbbmV3Q2hpbGQgX25vZGVdLCBbb2xk
Q2hpbGQgX25vZGVdLCBlYykpCi0gICAgICAgIHJldHVybiBvbGRDaGlsZDsKLSAgICByYWlzZU9u
RE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKERPTU5vZGUgKilyZW1vdmVD
aGlsZDooRE9NTm9kZSAqKW9sZENoaWxkCi17Ci0gICAgQVNTRVJUKG9sZENoaWxkKTsKLQotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChbc2VsZiBfbm9kZV0tPnJlbW92ZUNoaWxk
KFtvbGRDaGlsZCBfbm9kZV0sIGVjKSkKLSAgICAgICAgcmV0dXJuIG9sZENoaWxkOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoRE9NTm9kZSAqKWFw
cGVuZENoaWxkOihET01Ob2RlICopbmV3Q2hpbGQKLXsKLSAgICBBU1NFUlQobmV3Q2hpbGQpOwot
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKFtzZWxmIF9ub2RlXS0+YXBwZW5k
Q2hpbGQoW25ld0NoaWxkIF9ub2RlXSwgZWMpKQotICAgICAgICByZXR1cm4gbmV3Q2hpbGQ7Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChCT09MKWhh
c0NoaWxkTm9kZXMKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5oYXNDaGlsZE5vZGVzKCk7
Ci19Ci0KLS0gKERPTU5vZGUgKiljbG9uZU5vZGU6KEJPT0wpZGVlcAotewotICAgIHJldHVybiBb
RE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5jbG9uZU5vZGUoZGVlcCkuZ2V0KCldOwot
fQotCi0tICh2b2lkKW5vcm1hbGl6ZQotewotICAgIFtzZWxmIF9ub2RlXS0+bm9ybWFsaXplKCk7
Ci19Ci0KLS0gKEJPT0wpaXNTdXBwb3J0ZWQ6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5n
ICopdmVyc2lvbgotewotICAgIEFTU0VSVChmZWF0dXJlKTsKLSAgICBBU1NFUlQodmVyc2lvbik7
Ci0KLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc1N1cHBvcnRlZChmZWF0dXJlLCB2ZXJzaW9u
KTsKLX0KLQotLSAoTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkKLXsKLSAgICByZXR1cm4gW3NlbGYg
X25vZGVdLT5uYW1lc3BhY2VVUkkoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilwcmVmaXgKLXsKLSAg
ICByZXR1cm4gW3NlbGYgX25vZGVdLT5wcmVmaXgoKTsKLX0KLQotLSAodm9pZClzZXRQcmVmaXg6
KE5TU3RyaW5nICopcHJlZml4Ci17Ci0gICAgQVNTRVJUKHByZWZpeCk7Ci0KLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBTdHJpbmcgcHJlZml4U3RyKHByZWZpeCk7Ci0gICAgW3NlbGYg
X25vZGVdLT5zZXRQcmVmaXgocHJlZml4U3RyLmltcGwoKSwgZWMpOwotICAgIHJhaXNlT25ET01F
cnJvcihlYyk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgcmV0dXJuIFtz
ZWxmIF9ub2RlXS0+bG9jYWxOYW1lKCk7Ci19Ci0KLS0gKEJPT0wpaGFzQXR0cmlidXRlcwotewot
ICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmhhc0F0dHJpYnV0ZXMoKTsKLX0KLQotLSAoQk9PTClp
c1NhbWVOb2RlOihET01Ob2RlICopb3RoZXIKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5p
c1NhbWVOb2RlKFtvdGhlciBfbm9kZV0pOwotfQotCi0tIChCT09MKWlzRXF1YWxOb2RlOihET01O
b2RlICopb3RoZXIKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc0VxdWFsTm9kZShbb3Ro
ZXIgX25vZGVdKTsKLX0KLQotLSAoQk9PTClpc0RlZmF1bHROYW1lc3BhY2U6KE5TU3RyaW5nICop
bmFtZXNwYWNlVVJJCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aXNEZWZhdWx0TmFtZXNw
YWNlKG5hbWVzcGFjZVVSSSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbG9va3VwUHJlZml4OihOU1N0
cmluZyAqKW5hbWVzcGFjZVVSSQotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmxvb2t1cFBy
ZWZpeChuYW1lc3BhY2VVUkkpOwotfQotCi0tIChOU1N0cmluZyAqKWxvb2t1cE5hbWVzcGFjZVVS
STooTlNTdHJpbmcgKilwcmVmaXgKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5sb29rdXBO
YW1lc3BhY2VVUkkocHJlZml4KTsKLX0KLQotLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudAotewot
ICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPnRleHRDb250ZW50KCk7Ci19Ci0KLS0gKHZvaWQpc2V0
VGV4dENvbnRlbnQ6KE5TU3RyaW5nICopdGV4dAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIFtzZWxmIF9ub2RlXS0+c2V0VGV4dENvbnRlbnQodGV4dCwgZWMpOwotICAgIHJhaXNl
T25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKE5TUmVjdClib3VuZGluZ0JveAotewotICAgIFdlYkNv
cmU6OlJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBbc2VsZiBfbm9kZV0tPnJlbmRlcmVyKCk7Ci0g
ICAgaWYgKHJlbmRlcmVyKQotICAgICAgICByZXR1cm4gcmVuZGVyZXItPmFic29sdXRlQm91bmRp
bmdCb3hSZWN0KCk7Ci0gICAgcmV0dXJuIE5TWmVyb1JlY3Q7Ci19Ci0KLS0gKE5TQXJyYXkgKils
aW5lQm94UmVjdHMKLXsKLSAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gW3Nl
bGYgX25vZGVdLT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlcikgewotICAgICAgICBOU011
dGFibGVBcnJheSAqcmVzdWx0cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAg
ICAgICBEZXByZWNhdGVkVmFsdWVMaXN0PEludFJlY3Q+IHJlY3RzID0gcmVuZGVyZXItPmxpbmVC
b3hSZWN0cygpOwotICAgICAgICBpZiAoIXJlY3RzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAg
Zm9yIChEZXByZWNhdGVkVmFsdWVMaXN0PEludFJlY3Q+OjpDb25zdEl0ZXJhdG9yIGl0ID0gcmVj
dHMuYmVnaW4oKTsgaXQgIT0gcmVjdHMuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICAgICAgW3Jl
c3VsdHMgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6Kml0XV07Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIFtyZXN1bHRzIGF1dG9yZWxlYXNlXTsKLSAgICB9Ci0gICAgcmV0dXJu
IG5pbDsKLX0KLQotQGVuZAotCi1zdGF0aWMgdm9pZCBhZGRFbGVtZW50Q2xhc3MoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnLCBDbGFzcyBvYmpDQ2xhc3MpCi17Ci0gICAgZWxlbWVudENsYXNzTWFw
LT5zZXQodGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgb2JqQ0NsYXNzKTsKLX0KLQotc3RhdGljIHZv
aWQgY3JlYXRlSFRNTEVsZW1lbnRDbGFzc01hcCgpCi17Ci0gICAgLy8gQ3JlYXRlIHRoZSB0YWJs
ZS4KLSAgICBlbGVtZW50Q2xhc3NNYXAgPSBuZXcgT2JqQ0NsYXNzTWFwOwotICAgIAotICAgIC8v
IFBvcHVsYXRlIGl0IHdpdGggSFRNTCBlbGVtZW50IGNsYXNzZXMuCi0gICAgYWRkRWxlbWVudENs
YXNzKGFUYWcsIFtET01IVE1MQW5jaG9yRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyhhcHBsZXRUYWcsIFtET01IVE1MQXBwbGV0RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVs
ZW1lbnRDbGFzcyhhcmVhVGFnLCBbRE9NSFRNTEFyZWFFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRk
RWxlbWVudENsYXNzKGJhc2VUYWcsIFtET01IVE1MQmFzZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBh
ZGRFbGVtZW50Q2xhc3MoYmFzZWZvbnRUYWcsIFtET01IVE1MQmFzZUZvbnRFbGVtZW50IGNsYXNz
XSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGJvZHlUYWcsIFtET01IVE1MQm9keUVsZW1lbnQgY2xh
c3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoYnJUYWcsIFtET01IVE1MQlJFbGVtZW50IGNsYXNz
XSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGJ1dHRvblRhZywgW0RPTUhUTUxCdXR0b25FbGVtZW50
IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGNhbnZhc1RhZywgW0RPTUhUTUxJbWFnZUVs
ZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoY2FwdGlvblRhZywgW0RPTUhUTUxU
YWJsZUNhcHRpb25FbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGNvbFRhZywg
W0RPTUhUTUxUYWJsZUNvbEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoY29s
Z3JvdXBUYWcsIFtET01IVE1MVGFibGVDb2xFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVu
dENsYXNzKGRpclRhZywgW0RPTUhUTUxEaXJlY3RvcnlFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRk
RWxlbWVudENsYXNzKGRpdlRhZywgW0RPTUhUTUxEaXZFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRk
RWxlbWVudENsYXNzKGRsVGFnLCBbRE9NSFRNTERMaXN0RWxlbWVudCBjbGFzc10pOwotICAgIGFk
ZEVsZW1lbnRDbGFzcyhmaWVsZHNldFRhZywgW0RPTUhUTUxGaWVsZFNldEVsZW1lbnQgY2xhc3Nd
KTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoZm9udFRhZywgW0RPTUhUTUxGb250RWxlbWVudCBjbGFz
c10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhmb3JtVGFnLCBbRE9NSFRNTEZvcm1FbGVtZW50IGNs
YXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGZyYW1lVGFnLCBbRE9NSFRNTEZyYW1lRWxlbWVu
dCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhmcmFtZXNldFRhZywgW0RPTUhUTUxGcmFt
ZVNldEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDFUYWcsIFtET01IVE1M
SGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDJUYWcsIFtET01I
VE1MSGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDNUYWcsIFtE
T01IVE1MSGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDRUYWcs
IFtET01IVE1MSGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDVU
YWcsIFtET01IVE1MSGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mo
aDZUYWcsIFtET01IVE1MSGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xh
c3MoaGVhZFRhZywgW0RPTUhUTUxIZWFkRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyhoclRhZywgW0RPTUhUTUxIUkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xh
c3MoaHRtbFRhZywgW0RPTUhUTUxIdG1sRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyhpZnJhbWVUYWcsIFtET01IVE1MSUZyYW1lRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVs
ZW1lbnRDbGFzcyhpbWdUYWcsIFtET01IVE1MSW1hZ2VFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRk
RWxlbWVudENsYXNzKGlucHV0VGFnLCBbRE9NSFRNTElucHV0RWxlbWVudCBjbGFzc10pOwotICAg
IGFkZEVsZW1lbnRDbGFzcyhpc2luZGV4VGFnLCBbRE9NSFRNTElzSW5kZXhFbGVtZW50IGNsYXNz
XSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGxhYmVsVGFnLCBbRE9NSFRNTExhYmVsRWxlbWVudCBj
bGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhsZWdlbmRUYWcsIFtET01IVE1MTGVnZW5kRWxl
bWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhsaVRhZywgW0RPTUhUTUxMSUVsZW1l
bnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MobGlua1RhZywgW0RPTUhUTUxMaW5rRWxl
bWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhsaXN0aW5nVGFnLCBbRE9NSFRNTFBy
ZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MobWFwVGFnLCBbRE9NSFRNTE1h
cEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MobWVudVRhZywgW0RPTUhUTUxN
ZW51RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhtZXRhVGFnLCBbRE9NSFRN
TE1ldGFFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKG9iamVjdFRhZywgW0RP
TUhUTUxPYmplY3RFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKG9sVGFnLCBb
RE9NSFRNTE9MaXN0RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhvcHRncm91
cFRhZywgW0RPTUhUTUxPcHRHcm91cEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xh
c3Mob3B0aW9uVGFnLCBbRE9NSFRNTE9wdGlvbkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVt
ZW50Q2xhc3MocFRhZywgW0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRk
RWxlbWVudENsYXNzKHBhcmFtVGFnLCBbRE9NSFRNTFBhcmFtRWxlbWVudCBjbGFzc10pOwotICAg
IGFkZEVsZW1lbnRDbGFzcyhwcmVUYWcsIFtET01IVE1MUHJlRWxlbWVudCBjbGFzc10pOwotICAg
IGFkZEVsZW1lbnRDbGFzcyhxVGFnLCBbRE9NSFRNTFF1b3RlRWxlbWVudCBjbGFzc10pOwotICAg
IGFkZEVsZW1lbnRDbGFzcyhzY3JpcHRUYWcsIFtET01IVE1MU2NyaXB0RWxlbWVudCBjbGFzc10p
OwotICAgIGFkZEVsZW1lbnRDbGFzcyhzZWxlY3RUYWcsIFtET01IVE1MU2VsZWN0RWxlbWVudCBj
bGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhzdHlsZVRhZywgW0RPTUhUTUxTdHlsZUVsZW1l
bnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModGFibGVUYWcsIFtET01IVE1MVGFibGVF
bGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHRib2R5VGFnLCBbRE9NSFRNTFRh
YmxlU2VjdGlvbkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModGRUYWcsIFtE
T01IVE1MVGFibGVDZWxsRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh0ZXh0
YXJlYVRhZywgW0RPTUhUTUxUZXh0QXJlYUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50
Q2xhc3ModGZvb3RUYWcsIFtET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCBjbGFzc10pOwotICAg
IGFkZEVsZW1lbnRDbGFzcyh0aGVhZFRhZywgW0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50IGNs
YXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHRpdGxlVGFnLCBbRE9NSFRNTFRpdGxlRWxlbWVu
dCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh0clRhZywgW0RPTUhUTUxUYWJsZVJvd0Vs
ZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModWxUYWcsIFtET01IVE1MVUxpc3RF
bGVtZW50IGNsYXNzXSk7Ci0KLSAgICAvLyBGSVhNRTogUmVmbGVjdCBtYXJxdWVlIG9uY2UgdGhl
IEFQSSBoYXMgYmVlbiBkZXRlcm1pbmVkLgotfQotCi1zdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNz
KGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKLXsKLSAgICBpZiAoIWVsZW1lbnRDbGFzc01h
cCkKLSAgICAgICAgY3JlYXRlSFRNTEVsZW1lbnRDbGFzc01hcCgpOwotICAgIENsYXNzIG9iamND
bGFzcyA9IGVsZW1lbnRDbGFzc01hcC0+Z2V0KHRhZ05hbWUuaW1wbCgpKTsKLSAgICBpZiAoIW9i
amNDbGFzcykKLSAgICAgICAgb2JqY0NsYXNzID0gW0RPTUhUTUxFbGVtZW50IGNsYXNzXTsKLSAg
ICByZXR1cm4gb2JqY0NsYXNzOwotfQotCi1AaW1wbGVtZW50YXRpb24gRE9NTm9kZSAoV2ViQ29y
ZUludGVybmFsKQotCi0tIChpZClfaW5pdFdpdGhOb2RlOihOb2RlICopaW1wbAotewotICAgIEFT
U0VSVChpbXBsKTsKLQotICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2ludGVybmFsID0gRE9NX2Nh
c3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRk
RE9NV3JhcHBlcihzZWxmLCBpbXBsKTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotKyAoRE9NTm9k
ZSAqKV9ub2RlV2l0aDooTm9kZSAqKWltcGwKLXsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAgY2FjaGVkSW5zdGFu
Y2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKLSAgICAg
ICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgCi0g
ICAgQ2xhc3Mgd3JhcHBlckNsYXNzID0gbmlsOwotICAgIHN3aXRjaCAoaW1wbC0+bm9kZVR5cGUo
KSkgewotICAgICAgICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERToKLSAgICAgICAgICAgIGlmIChp
bXBsLT5pc0hUTUxFbGVtZW50KCkpCi0gICAgICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gZWxl
bWVudENsYXNzKHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oaW1wbCktPmxvY2FsTmFtZSgpKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NRWxl
bWVudCBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpBVFRS
SUJVVEVfTk9ERToKLSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01BdHRyIGNsYXNzXTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKLSAgICAg
ICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01UZXh0IGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKLSAgICAgICAgICAgIHdy
YXBwZXJDbGFzcyA9IFtET01DREFUQVNlY3Rpb24gY2xhc3NdOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgotICAgICAgICAgICAg
d3JhcHBlckNsYXNzID0gW0RPTUVudGl0eVJlZmVyZW5jZSBjbGFzc107Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKLSAgICAgICAgICAgIHdyYXBw
ZXJDbGFzcyA9IFtET01FbnRpdHkgY2xhc3NdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgotICAgICAgICAgICAgd3Jh
cHBlckNsYXNzID0gW0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiBjbGFzc107Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpDT01NRU5UX05PREU6Ci0gICAgICAgICAgICB3
cmFwcGVyQ2xhc3MgPSBbRE9NQ29tbWVudCBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgotICAgICAgICAgICAgaWYgKHN0YXRpY19j
YXN0PERvY3VtZW50Kj4oaW1wbCktPmlzSFRNTERvY3VtZW50KCkpCi0gICAgICAgICAgICAgICAg
d3JhcHBlckNsYXNzID0gW0RPTUhUTUxEb2N1bWVudCBjbGFzc107Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTURvY3VtZW50IGNsYXNzXTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToK
LSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01Eb2N1bWVudFR5cGUgY2xhc3NdOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9E
RToKLSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01Eb2N1bWVudEZyYWdtZW50IGNsYXNz
XTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9OX05PREU6
Ci0gICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NTm90YXRpb24gY2xhc3NdOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogQ3JlYXRlIGFuIFhQYXRoIG9iamVjdGl2ZSBDIHdyYXBwZXIK
LSAgICAgICAgICAgIC8vIFNlZSBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19i
dWcuY2dpP2lkPTg3NTUKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotICAgIHJldHVy
biBbW1t3cmFwcGVyQ2xhc3MgYWxsb2NdIF9pbml0V2l0aE5vZGU6aW1wbF0gYXV0b3JlbGVhc2Vd
OwotfQotCi0tIChOb2RlICopX25vZGUKLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8Tm9kZSAqPihf
aW50ZXJuYWwpOwotfQotCi0tIChjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICopX2V4
ZWN1dGlvbkNvbnRleHQKLXsKLSAgICBpZiAoTm9kZSAqbiA9IFtzZWxmIF9ub2RlXSkKLSAgICAg
ICAgaWYgKEZyYW1lTWFjICpmID0gTWFjKG4tPmRvY3VtZW50KCktPmZyYW1lKCkpKQotICAgICAg
ICAgICAgcmV0dXJuIGYtPmV4ZWN1dGlvbkNvbnRleHRGb3JET00oKTsKLQotICAgIHJldHVybiAw
OwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChXZWJQcml2YXRlKQotCi0t
IChCT09MKWlzQ29udGVudEVkaXRhYmxlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aXND
b250ZW50RWRpdGFibGUoKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NTm9kZSAo
RE9NRXZlbnRUYXJnZXQpCi0KLS0gKHZvaWQpYWRkRXZlbnRMaXN0ZW5lcjooTlNTdHJpbmcgKil0
eXBlIDooaWQgPERPTUV2ZW50TGlzdGVuZXI+KWxpc3RlbmVyIDooQk9PTCl1c2VDYXB0dXJlCi17
Ci0gICAgaWYgKCFbc2VsZiBfbm9kZV0tPmlzRXZlbnRUYXJnZXROb2RlKCkpCi0gICAgICAgIHJh
aXNlRE9NRXhjZXB0aW9uKERPTV9OT1RfU1VQUE9SVEVEX0VSUik7Ci0gICAgCi0gICAgRXZlbnRM
aXN0ZW5lciAqd3JhcHBlciA9IE9iakNFdmVudExpc3RlbmVyOjpjcmVhdGUobGlzdGVuZXIpOwot
ICAgIEV2ZW50VGFyZ2V0Tm9kZUNhc3QoW3NlbGYgX25vZGVdKS0+YWRkRXZlbnRMaXN0ZW5lcih0
eXBlLCB3cmFwcGVyLCB1c2VDYXB0dXJlKTsKLSAgICB3cmFwcGVyLT5kZXJlZigpOwotfQotCi0t
ICh2b2lkKXJlbW92ZUV2ZW50TGlzdGVuZXI6KE5TU3RyaW5nICopdHlwZSA6KGlkIDxET01FdmVu
dExpc3RlbmVyPilsaXN0ZW5lciA6KEJPT0wpdXNlQ2FwdHVyZQotewotICAgIGlmICghW3NlbGYg
X25vZGVdLT5pc0V2ZW50VGFyZ2V0Tm9kZSgpKQotICAgICAgICByYWlzZURPTUV4Y2VwdGlvbihE
T01fTk9UX1NVUFBPUlRFRF9FUlIpOwotCi0gICAgaWYgKEV2ZW50TGlzdGVuZXIgKndyYXBwZXIg
PSBPYmpDRXZlbnRMaXN0ZW5lcjo6ZmluZChsaXN0ZW5lcikpCi0gICAgICAgIEV2ZW50VGFyZ2V0
Tm9kZUNhc3QoW3NlbGYgX25vZGVdKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCB3cmFwcGVy
LCB1c2VDYXB0dXJlKTsKLX0KLQotLSAoQk9PTClkaXNwYXRjaEV2ZW50OihET01FdmVudCAqKWV2
ZW50Ci17Ci0gICAgaWYgKCFbc2VsZiBfbm9kZV0tPmlzRXZlbnRUYXJnZXROb2RlKCkpCi0gICAg
ICAgIHJhaXNlRE9NRXhjZXB0aW9uKERPTV9OT1RfU1VQUE9SVEVEX0VSUik7Ci0KLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBCT09MIHJlc3VsdCA9IEV2ZW50VGFyZ2V0Tm9kZUNhc3Qo
W3NlbGYgX25vZGVdKS0+ZGlzcGF0Y2hFdmVudChbZXZlbnQgX2V2ZW50XSwgZWMpOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotQGVuZAotCi0vLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NTmFtZWROb2RlTWFwCi0KLUBp
bXBsZW1lbnRhdGlvbiBET01OYW1lZE5vZGVNYXAKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAg
aWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxOYW1lZE5vZGVNYXAgKj4oX2ludGVy
bmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lk
KWZpbmFsaXplCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxOYW1l
ZE5vZGVNYXAgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGZpbmFs
aXplXTsKLX0KLQotLSAoTmFtZWROb2RlTWFwICopX25hbWVkTm9kZU1hcAotewotICAgIHJldHVy
biBET01fY2FzdDxOYW1lZE5vZGVNYXAgKj4oX2ludGVybmFsKTsKLX0KLQotLSAoRE9NTm9kZSAq
KWdldE5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0g
ICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+Z2V0TmFt
ZWRJdGVtKG5hbWUpLmdldCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbTooRE9N
Tm9kZSAqKWFyZwotewotICAgIEFTU0VSVChhcmcpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7
Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5v
ZGVNYXBdLT5zZXROYW1lZEl0ZW0oW2FyZyBfbm9kZV0sIGV4Y2VwdGlvbikuZ2V0KCldOwotICAg
IHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0g
KERPTU5vZGUgKilyZW1vdmVOYW1lZEl0ZW06KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VS
VChuYW1lKTsKLQotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9
IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+cmVtb3ZlTmFtZWRJdGVt
KG5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUgKilpdGVtOih1bnNpZ25lZClp
bmRleAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1h
cF0tPml0ZW0oaW5kZXgpLmdldCgpXTsKLX0KLQotLSAodW5zaWduZWQpbGVuZ3RoCi17Ci0gICAg
cmV0dXJuIFtzZWxmIF9uYW1lZE5vZGVNYXBdLT5sZW5ndGgoKTsKLX0KLQotLSAoRE9NTm9kZSAq
KWdldE5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9j
YWxOYW1lCi17Ci0gICAgaWYgKCFuYW1lc3BhY2VVUkkgfHwgIWxvY2FsTmFtZSkgewotICAgICAg
ICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX25hbWVkTm9kZU1hcF0tPmdldE5hbWVkSXRlbU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1l
KS5nZXQoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilzZXROYW1lZEl0ZW1OUzooRE9NTm9kZSAqKWFy
ZwotewotICAgIEFTU0VSVChhcmcpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9N
Tm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5z
ZXROYW1lZEl0ZW1OUyhbYXJnIF9ub2RlXSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9k
ZSAqKXJlbW92ZU5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5n
ICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxv
Y2FsTmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQg
PSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPnJlbW92ZU5hbWVkSXRl
bU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBET01OYW1lZE5vZGVNYXAgKFdlYkNvcmVJbnRlcm5hbCkKLQotLSAo
aWQpX2luaXRXaXRoTmFtZWROb2RlTWFwOihOYW1lZE5vZGVNYXAgKilpbXBsCi17Ci0gICAgQVNT
RVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2Fz
dDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRE
T01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01OYW1l
ZE5vZGVNYXAgKilfbmFtZWROb2RlTWFwV2l0aDooTmFtZWROb2RlTWFwICopaW1wbAotewotICAg
IGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0
YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYg
KGNhY2hlZEluc3RhbmNlKQotICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5d
IGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRo
TmFtZWROb2RlTWFwOmltcGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NTm9kZUxpc3QKLQotQGltcGxlbWVudGF0
aW9uIERPTU5vZGVMaXN0Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJuYWwp
IHsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZUxpc3QgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAg
ICB9Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAg
aWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50ZXJuYWwp
LT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChOb2RlTGlz
dCAqKV9ub2RlTGlzdAotewotICAgIHJldHVybiBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50ZXJu
YWwpOwotfQotCi0tIChET01Ob2RlICopaXRlbToodW5zaWduZWQpaW5kZXgKLXsKLSAgICByZXR1
cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9ub2RlTGlzdF0tPml0ZW0oaW5kZXgpXTsKLX0K
LQotLSAodW5zaWduZWQpbGVuZ3RoCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlTGlzdF0tPmxl
bmd0aCgpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlTGlzdCAoV2ViQ29y
ZUludGVybmFsKQotCi0tIChpZClfaW5pdFdpdGhOb2RlTGlzdDooTm9kZUxpc3QgKilpbXBsCi17
Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwg
PSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsK
LSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0r
IChET01Ob2RlTGlzdCAqKV9ub2RlTGlzdFdpdGg6KE5vZGVMaXN0ICopaW1wbAotewotICAgIGlm
ICghaW1wbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5j
ZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNh
Y2hlZEluc3RhbmNlKQotICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1
dG9yZWxlYXNlXTsKLSAgICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTm9k
ZUxpc3Q6aW1wbF0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01JbXBsZW1lbnRhdGlvbgotCi1AaW1wbGVtZW50YXRp
b24gRE9NSW1wbGVtZW50YXRpb24KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRl
cm5hbCkKLSAgICAgICAgRE9NX2Nhc3Q8RE9NSW1wbGVtZW50YXRpb25Gcm9udCAqPihfaW50ZXJu
YWwpLT5kZXJlZigpOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6
ZQotewotICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIERPTV9jYXN0PERPTUltcGxlbWVudGF0
aW9uRnJvbnQgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZmluYWxpemVdOwot
fQotCi0tIChCT09MKWhhc0ZlYXR1cmU6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICop
dmVyc2lvbgotewotICAgIEFTU0VSVChmZWF0dXJlKTsKLSAgICBBU1NFUlQodmVyc2lvbik7Ci0K
LSAgICByZXR1cm4gW3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+aGFzRmVhdHVyZShmZWF0dXJl
LCB2ZXJzaW9uKTsKLX0KLQotLSAoRE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBl
OihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXB1YmxpY0lkIDooTlNTdHJp
bmcgKilzeXN0ZW1JZAotewotICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsKLSAgICBBU1NFUlQo
cHVibGljSWQpOwotICAgIEFTU0VSVChzeXN0ZW1JZCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBSZWZQdHI8RG9jdW1lbnRUeXBlPiBpbXBsID0gW3NlbGYgX0RPTUltcGxlbWVu
dGF0aW9uXS0+Y3JlYXRlRG9jdW1lbnRUeXBlKHF1YWxpZmllZE5hbWUsIHB1YmxpY0lkLCBzeXN0
ZW1JZCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PERPTURvY3VtZW50VHlwZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQoKV0pOwot
fQotCi0tIChET01Eb2N1bWVudCAqKWNyZWF0ZURvY3VtZW50OihOU1N0cmluZyAqKW5hbWVzcGFj
ZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KERPTURvY3VtZW50VHlwZSAqKWRvY3R5
cGUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFt
ZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8RG9jdW1lbnQ+IGlt
cGwgPSBbc2VsZiBfRE9NSW1wbGVtZW50YXRpb25dLT5jcmVhdGVEb2N1bWVudChuYW1lc3BhY2VV
UkksIHF1YWxpZmllZE5hbWUsIFtkb2N0eXBlIF9kb2N1bWVudFR5cGVdLCBlYyk7Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnQgKj4o
W0RPTU5vZGUgX25vZGVXaXRoOmltcGwuZ2V0KCldKTsKLX0KLQotLSAoRE9NSFRNTERvY3VtZW50
ICopY3JlYXRlSFRNTERvY3VtZW50OihOU1N0cmluZyAqKXRpdGxlCi17Ci0gICAgUmVmUHRyPEhU
TUxEb2N1bWVudD4gaW1wbCA9IFtzZWxmIF9ET01JbXBsZW1lbnRhdGlvbl0tPmNyZWF0ZUhUTUxE
b2N1bWVudCh0aXRsZSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUhUTUxEb2N1bWVudCAq
PihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQoKV0pOwotfQotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gRE9NSW1wbGVtZW50YXRpb24gKERPTUltcGxlbWVudGF0aW9uQ1NTKQotCi0tIChET01D
U1NTdHlsZVNoZWV0ICopY3JlYXRlQ1NTU3R5bGVTaGVldDooTlNTdHJpbmcgKil0aXRsZSA6KE5T
U3RyaW5nICopbWVkaWEKLXsKLSAgICBBU1NFUlQodGl0bGUpOwotICAgIEFTU0VSVChtZWRpYSk7
Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01DU1NTdHlsZVNoZWV0ICpyZXN1
bHQgPSBbRE9NQ1NTU3R5bGVTaGVldCBfQ1NTU3R5bGVTaGVldFdpdGg6W3NlbGYgX0RPTUltcGxl
bWVudGF0aW9uXS0+Y3JlYXRlQ1NTU3R5bGVTaGVldCh0aXRsZSwgbWVkaWEsIGVjKS5nZXQoKV07
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1AZW5k
Ci0gCi1AaW1wbGVtZW50YXRpb24gRE9NSW1wbGVtZW50YXRpb24gKFdlYkNvcmVJbnRlcm5hbCkK
LQotLSAoaWQpX2luaXRXaXRoRE9NSW1wbGVtZW50YXRpb246KERPTUltcGxlbWVudGF0aW9uRnJv
bnQgKilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAg
ICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBp
bXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBz
ZWxmOwotfQotCi0rIChET01JbXBsZW1lbnRhdGlvbiAqKV9ET01JbXBsZW1lbnRhdGlvbldpdGg6
KERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAg
ICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZElu
c3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0g
ICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAg
IAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhET01JbXBsZW1lbnRhdGlvbjpp
bXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilfRE9N
SW1wbGVtZW50YXRpb24KLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8RE9NSW1wbGVtZW50YXRpb25G
cm9udCAqPihfaW50ZXJuYWwpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0vLyBET01Eb2N1bWVudEZyYWdtZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBE
T01Eb2N1bWVudEZyYWdtZW50Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50
RnJhZ21lbnQgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9k
b2N1bWVudEZyYWdtZW50V2l0aDooRG9jdW1lbnRGcmFnbWVudCAqKWltcGwKLXsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnRGcmFnbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6
aW1wbF0pOwotfQotCi0tIChEb2N1bWVudEZyYWdtZW50ICopX2ZyYWdtZW50Ci17Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50
ZXJuYWwpKTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotLy8gRE9NRG9jdW1lbnQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50Ci0KLS0gKERP
TU5vZGUgKilhZG9wdE5vZGU6KERPTU5vZGUgKilzb3VyY2UKLXsKLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYg
X2RvY3VtZW50XS0+YWRvcHROb2RlKFtzb3VyY2UgX25vZGVdLCBlYykuZ2V0KCldOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRG9jdW1l
bnRUeXBlICopZG9jdHlwZQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudFR5
cGUgKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmRvY3R5cGUoKV0pOwot
fQotCi0tIChET01JbXBsZW1lbnRhdGlvbiAqKWltcGxlbWVudGF0aW9uCi17Ci0gICAgcmV0dXJu
IFtET01JbXBsZW1lbnRhdGlvbiBfRE9NSW1wbGVtZW50YXRpb25XaXRoOmltcGxlbWVudGF0aW9u
RnJvbnQoW3NlbGYgX2RvY3VtZW50XSldOwotfQotCi0tIChET01FbGVtZW50ICopZG9jdW1lbnRF
bGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUg
X25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmRvY3VtZW50RWxlbWVudCgpXSk7Ci19Ci0KLS0g
KERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWUKLXsKLSAgICBB
U1NFUlQodGFnTmFtZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01FbGVt
ZW50ICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0
aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVFbGVtZW50KHRhZ05hbWUsIGVjKS5nZXQoKV0pOwot
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9N
RG9jdW1lbnRGcmFnbWVudCAqKWNyZWF0ZURvY3VtZW50RnJhZ21lbnQKLXsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnRGcmFnbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX2RvY3VtZW50XS0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLmdldCgpXSk7Ci19Ci0KLS0g
KERPTVRleHQgKiljcmVhdGVUZXh0Tm9kZTooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJU
KGRhdGEpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01UZXh0ICo+KFtET01Ob2RlIF9ub2Rl
V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVUZXh0Tm9kZShkYXRhKS5nZXQoKV0pOwotfQot
Ci0tIChET01Db21tZW50ICopY3JlYXRlQ29tbWVudDooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAg
QVNTRVJUKGRhdGEpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Db21tZW50ICo+KFtET01O
b2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDb21tZW50KGRhdGEpLmdldCgp
XSk7Ci19Ci0KLS0gKERPTUNEQVRBU2VjdGlvbiAqKWNyZWF0ZUNEQVRBU2VjdGlvbjooTlNTdHJp
bmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIGludCBleGNlcHRpb24gPSAwOwot
ICAgIERPTUNEQVRBU2VjdGlvbiAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RE9NQ0RBVEFTZWN0aW9u
ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDREFUQVNlY3Rp
b24oZGF0YSwgZXhjZXB0aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRp
b24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlv
biAqKWNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbjooTlNTdHJpbmcgKil0YXJnZXQgOihOU1N0
cmluZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQodGFyZ2V0KTsKLSAgICBBU1NFUlQoZGF0YSk7Ci0g
ICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICpyZXN1
bHQgPSBzdGF0aWNfY2FzdDxET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKj4oW0RPTU5vZGUgX25v
ZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbih0YXJn
ZXQsIGRhdGEsIGV4Y2VwdGlvbikuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0
aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01BdHRyICopY3JlYXRlQXR0cmli
dXRlOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0gICAgaW50IGV4Y2Vw
dGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxm
IF9kb2N1bWVudF0tPmNyZWF0ZUF0dHJpYnV0ZShuYW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0t
IChET01FbnRpdHlSZWZlcmVuY2UgKiljcmVhdGVFbnRpdHlSZWZlcmVuY2U6KE5TU3RyaW5nICop
bmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBE
T01FbnRpdHlSZWZlcmVuY2UgKnJlc3VsdCA9IHN0YXRpY19jYXN0PERPTUVudGl0eVJlZmVyZW5j
ZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRW50aXR5UmVm
ZXJlbmNlKG5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhj
ZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlTGlzdCAqKWdldEVs
ZW1lbnRzQnlUYWdOYW1lOihOU1N0cmluZyAqKXRhZ25hbWUKLXsKLSAgICBBU1NFUlQodGFnbmFt
ZSk7Ci0gICAgcmV0dXJuIFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOltzZWxmIF9kb2N1bWVu
dF0tPmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ25hbWUpLmdldCgpXTsKLX0KLQotLSAoRE9NTm9k
ZSAqKWltcG9ydE5vZGU6KERPTU5vZGUgKilpbXBvcnRlZE5vZGUgOihCT09MKWRlZXAKLXsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+aW1wb3J0Tm9kZShbaW1wb3J0ZWROb2RlIF9ub2Rl
XSwgZGVlcCwgZWMpLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLS0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50TlM6KE5TU3RyaW5n
ICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lCi17Ci0gICAgQVNTRVJU
KG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotCi0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRo
OltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHF1YWxpZmll
ZE5hbWUsIGVjKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihyZXN1bHQpOwotfQotCi0tIChET01BdHRyICopY3Jl
YXRlQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFs
aWZpZWROYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1YWxp
ZmllZE5hbWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0
ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUF0dHJpYnV0ZU5T
KG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9N
Tm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVS
SSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0g
ICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlz
dFdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhuYW1lc3BhY2VV
UkksIGxvY2FsTmFtZSkuZ2V0KCldOwotfQotCi0tIChET01FbGVtZW50ICopZ2V0RWxlbWVudEJ5
SWQ6KE5TU3RyaW5nICopZWxlbWVudElkCi17Ci0gICAgQVNTRVJUKGVsZW1lbnRJZCk7Ci0KLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX2RvY3VtZW50XS0+Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKV0pOwotfQotCi1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRSYW5nZSkKLQotLSAoRE9N
UmFuZ2UgKiljcmVhdGVSYW5nZQotewotICAgIHJldHVybiBbRE9NUmFuZ2UgX3JhbmdlV2l0aDpb
c2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVSYW5nZSgpLmdldCgpXTsKLX0KLQotQGVuZAotCi1AaW1w
bGVtZW50YXRpb24gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50Q1NTKQotCi0tIChET01DU1NTdHls
ZURlY2xhcmF0aW9uICopZ2V0T3ZlcnJpZGVTdHlsZTooRE9NRWxlbWVudCAqKWVsdCA6KE5TU3Ry
aW5nICopcHNldWRvRWx0Ci17Ci0gICAgRWxlbWVudCAqZWxlbWVudCA9IFtlbHQgX2VsZW1lbnRd
OwotICAgIFN0cmluZyBwc2V1ZG9FbHRTdHJpbmcocHNldWRvRWx0KTsKLSAgICByZXR1cm4gW0RP
TUNTU1N0eWxlRGVjbGFyYXRpb24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOltzZWxmIF9kb2N1bWVu
dF0tPmdldE92ZXJyaWRlU3R5bGUoZWxlbWVudCwgcHNldWRvRWx0U3RyaW5nLmltcGwoKSldOwot
fQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRTdHls
ZSkKLQotLSAoRE9NU3R5bGVTaGVldExpc3QgKilzdHlsZVNoZWV0cwotewotICAgIHJldHVybiBb
RE9NU3R5bGVTaGVldExpc3QgX3N0eWxlU2hlZXRMaXN0V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5z
dHlsZVNoZWV0cygpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQg
KERPTURvY3VtZW50RXh0ZW5zaW9ucykKLQotLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKWNy
ZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24KLXsKLSAgICByZXR1cm4gW0RPTUNTU1N0eWxlRGVjbGFy
YXRpb24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNTU1N0
eWxlRGVjbGFyYXRpb24oKS5nZXQoKV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERP
TURvY3VtZW50IChXZWJDb3JlSW50ZXJuYWwpCi0KLSsgKERPTURvY3VtZW50ICopX2RvY3VtZW50
V2l0aDooRG9jdW1lbnQgKilpbXBsCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURvY3Vt
ZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19Ci0KLS0gKERvY3VtZW50ICopX2Rv
Y3VtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50ICo+KERPTV9jYXN0PE5v
ZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilfb3duZXJFbGVtZW50Ci17
Ci0gICAgcmV0dXJuIFtET01FbGVtZW50IF9lbGVtZW50V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5v
d25lckVsZW1lbnQoKV07Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS8vIERPTUNoYXJhY3RlckRhdGEKLQotQGltcGxlbWVudGF0aW9uIERPTUNoYXJh
Y3RlckRhdGEKLQotLSAoQ2hhcmFjdGVyRGF0YSAqKV9jaGFyYWN0ZXJEYXRhCi17Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PENoYXJhY3RlckRhdGEgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJu
YWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgLy8gRG9jdW1lbnRhdGlvbiBz
YXlzIHdlIGNhbiByYWlzZSBhIERPTVNUUklOR19TSVpFX0VSUi4KLSAgICAvLyBIb3dldmVyLCB0
aGUgbG93ZXIgbGF5ZXIgZG9lcyBub3QgcmVwb3J0IHRoYXQgZXJyb3IgdXAgdG8gdXMuCi0gICAg
cmV0dXJuIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+ZGF0YSgpOwotfQotCi0tICh2b2lkKXNldERh
dGE6KE5TU3RyaW5nICopZGF0YQotewotICAgIEFTU0VSVChkYXRhKTsKLSAgICAKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPnNldERhdGEoZGF0
YSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHVuc2lnbmVkKWxlbmd0
aAotewotICAgIHJldHVybiBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPmxlbmd0aCgpOwotfQotCi0t
IChOU1N0cmluZyAqKXN1YnN0cmluZ0RhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKWNv
dW50Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgTlNTdHJpbmcgKnJlc3VsdCA9
IFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+c3Vic3RyaW5nRGF0YShvZmZzZXQsIGNvdW50LCBlYyk7
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2
b2lkKWFwcGVuZERhdGE6KE5TU3RyaW5nICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7Ci0gICAg
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5h
cHBlbmREYXRhKGFyZywgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZv
aWQpaW5zZXJ0RGF0YToodW5zaWduZWQpb2Zmc2V0IDooTlNTdHJpbmcgKilhcmcKLXsKLSAgICBB
U1NFUlQoYXJnKTsKLSAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBf
Y2hhcmFjdGVyRGF0YV0tPmluc2VydERhdGEob2Zmc2V0LCBhcmcsIGVjKTsKLSAgICByYWlzZU9u
RE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKWRlbGV0ZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6
KHVuc2lnbmVkKSBjb3VudAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxm
IF9jaGFyYWN0ZXJEYXRhXS0+ZGVsZXRlRGF0YShvZmZzZXQsIGNvdW50LCBlYyk7Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClyZXBsYWNlRGF0YToodW5zaWduZWQpb2Zm
c2V0IDoodW5zaWduZWQpY291bnQgOihOU1N0cmluZyAqKWFyZwotewotICAgIEFTU0VSVChhcmcp
OwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFd
LT5yZXBsYWNlRGF0YShvZmZzZXQsIGNvdW50LCBhcmcsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyBET01BdHRyCi0KLUBpbXBsZW1lbnRhdGlvbiBET01BdHRyCi0KLS0gKE5TU3RyaW5nICop
bmFtZQotewotICAgIHJldHVybiBbc2VsZiBfYXR0cl0tPm5vZGVOYW1lKCk7Ci19Ci0KLS0gKEJP
T0wpc3BlY2lmaWVkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9hdHRyXS0+c3BlY2lmaWVkKCk7Ci19
Ci0KLS0gKE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2F0dHJdLT5ub2Rl
VmFsdWUoKTsKLX0KLQotLSAodm9pZClzZXRWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZQotewotICAg
IEFTU0VSVCh2YWx1ZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBf
YXR0cl0tPnNldFZhbHVlKHZhbHVlLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0K
LQotLSAoRE9NRWxlbWVudCAqKW93bmVyRWxlbWVudAotewotICAgIHJldHVybiBbRE9NRWxlbWVu
dCBfZWxlbWVudFdpdGg6W3NlbGYgX2F0dHJdLT5vd25lckVsZW1lbnQoKV07Ci19Ci0KLS0gKERP
TUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZQotewotICAgIHJldHVybiBbRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6IFtzZWxmIF9hdHRyXS0+c3R5bGUoKV07
Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUF0dHIgKFdlYkNvcmVJbnRlcm5hbCkK
LQotKyAoRE9NQXR0ciAqKV9hdHRyV2l0aDooQXR0ciAqKWltcGwKLXsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RE9NQXR0ciAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwotfQotCi0tIChB
dHRyICopX2F0dHIKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXR0ciAqPihET01fY2FzdDxO
b2RlICo+KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0vLyBET01FbGVtZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01FbGVtZW50
Ci0KLS0gKE5TU3RyaW5nICopdGFnTmFtZQotewotICAgIHJldHVybiBbc2VsZiBfZWxlbWVudF0t
Pm5vZGVOYW1lKCk7Ci19Ci0KLS0gKERPTU5hbWVkTm9kZU1hcCAqKWF0dHJpYnV0ZXMKLXsKLSAg
ICByZXR1cm4gW0RPTU5hbWVkTm9kZU1hcCBfbmFtZWROb2RlTWFwV2l0aDpbc2VsZiBfZWxlbWVu
dF0tPmF0dHJpYnV0ZXMoKV07Ci19Ci0KLS0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRlOihOU1N0
cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0gICAgcmV0dXJuIFtzZWxmIF9lbGVt
ZW50XS0+Z2V0QXR0cmlidXRlKG5hbWUpOwotfQotCi0tICh2b2lkKXNldEF0dHJpYnV0ZTooTlNT
dHJpbmcgKiluYW1lIDooTlNTdHJpbmcgKil2YWx1ZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAg
ICBBU1NFUlQodmFsdWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYgX2Vs
ZW1lbnRdLT5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIGV4Y2VwdGlvbik7Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGV4Y2VwdGlvbik7Ci19Ci0KLS0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlOihOU1N0
cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0g
MDsKLSAgICBbc2VsZiBfZWxlbWVudF0tPnJlbW92ZUF0dHJpYnV0ZShuYW1lLCBleGNlcHRpb24p
OwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotfQotCi0tIChET01BdHRyICopZ2V0
QXR0cmlidXRlTm9kZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0g
ICAgcmV0dXJuIFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0
ZU5vZGUobmFtZSkuZ2V0KCldOwotfQotCi0tIChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZToo
RE9NQXR0ciAqKW5ld0F0dHIKLXsKLSAgICBBU1NFUlQobmV3QXR0cik7Ci0KLSAgICBpbnQgZXhj
ZXB0aW9uID0gMDsKLSAgICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldpdGg6W3Nl
bGYgX2VsZW1lbnRdLT5zZXRBdHRyaWJ1dGVOb2RlKFtuZXdBdHRyIF9hdHRyXSwgZXhjZXB0aW9u
KS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotLSAoRE9NQXR0ciAqKXJlbW92ZUF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKilv
bGRBdHRyCi17Ci0gICAgQVNTRVJUKG9sZEF0dHIpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7
Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVtZW50
XS0+cmVtb3ZlQXR0cmlidXRlTm9kZShbb2xkQXR0ciBfYXR0cl0sIGV4Y2VwdGlvbikuZ2V0KCld
OwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWU6KE5TU3RyaW5nICopbmFt
ZQotewotICAgIEFTU0VSVChuYW1lKTsKLQotICAgIHJldHVybiBbRE9NTm9kZUxpc3QgX25vZGVM
aXN0V2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEVsZW1lbnRzQnlUYWdOYW1lKG5hbWUpLmdldCgp
XTsKLX0KLQotLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3Bh
Y2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkp
OwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50XS0+
Z2V0QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwotfQotCi0tICh2b2lkKXNl
dEF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlm
aWVkTmFtZSA6KE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsK
LSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7Ci0gICAgQVNTRVJUKHZhbHVlKTsKLQotICAgIGlu
dCBleGNlcHRpb24gPSAwOwotICAgIFtzZWxmIF9lbGVtZW50XS0+c2V0QXR0cmlidXRlTlMobmFt
ZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCB2YWx1ZSwgZXhjZXB0aW9uKTsKLSAgICByYWlzZU9u
RE9NRXJyb3IoZXhjZXB0aW9uKTsKLX0KLQotLSAodm9pZClyZW1vdmVBdHRyaWJ1dGVOUzooTlNT
dHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VS
VChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgaW50IGV4Y2Vw
dGlvbiA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5yZW1vdmVBdHRyaWJ1dGVOUyhuYW1lc3Bh
Y2VVUkksIGxvY2FsTmFtZSwgZXhjZXB0aW9uKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0
aW9uKTsKLX0KLQotLSAoRE9NQXR0ciAqKWdldEF0dHJpYnV0ZU5vZGVOUzooTlNTdHJpbmcgKilu
YW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VSVChuYW1lc3Bh
Y2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtET01BdHRyIF9h
dHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0ZU5vZGVOUyhuYW1lc3BhY2VVUkks
IGxvY2FsTmFtZSkuZ2V0KCldOwotfQotCi0tIChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZU5T
OihET01BdHRyICopbmV3QXR0cgotewotICAgIEFTU0VSVChuZXdBdHRyKTsKLQotICAgIGludCBl
eGNlcHRpb24gPSAwOwotICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0aDpb
c2VsZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZU5vZGVOUyhbbmV3QXR0ciBfYXR0cl0sIGV4Y2Vw
dGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWVOUzoo
TlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFT
U0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJu
IFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0RWxlbWVudHNC
eVRhZ05hbWVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkuZ2V0KCldOwotfQotCi0tIChCT09M
KWhhc0F0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0g
ICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50XS0+aGFzQXR0cmlidXRlKG5hbWUpOwotfQotCi0tIChC
T09MKWhhc0F0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICop
bG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2Fs
TmFtZSk7Ci0KLSAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5oYXNBdHRyaWJ1dGVOUyhuYW1l
c3BhY2VVUkksIGxvY2FsTmFtZSk7Ci19Ci0KLS0gKHZvaWQpZm9jdXMKLXsKLSAgICBbc2VsZiBf
ZWxlbWVudF0tPmZvY3VzKCk7Ci19Ci0KLS0gKHZvaWQpYmx1cgotewotICAgIFtzZWxmIF9lbGVt
ZW50XS0+Ymx1cigpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01FbGVtZW50IChE
T01FbGVtZW50Q1NTSW5saW5lU3R5bGUpCi0KLS0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilz
dHlsZQotewotICAgIHJldHVybiBbRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBfc3R5bGVEZWNsYXJh
dGlvbldpdGg6W3NlbGYgX2VsZW1lbnRdLT5zdHlsZSgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVt
ZW50YXRpb24gRE9NRWxlbWVudCAoRE9NRWxlbWVudEV4dGVuc2lvbnMpCi0KLS0gKE5TSW1hZ2Uq
KWltYWdlCi17Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IFtzZWxmIF9lbGVtZW50XS0+
cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzSW1hZ2UoKSkgewot
ICAgICAgICBSZW5kZXJJbWFnZSogaW1nID0gc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UqPihyZW5k
ZXJlcik7Ci0gICAgICAgIGlmIChpbWctPmNhY2hlZEltYWdlKCkgJiYgIWltZy0+Y2FjaGVkSW1h
Z2UoKS0+aXNFcnJvckltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gaW1nLT5jYWNoZWRJbWFn
ZSgpLT5pbWFnZSgpLT5nZXROU0ltYWdlKCk7Ci0gICAgfQotICAgIHJldHVybiBuaWw7Ci19Ci0K
LS0gKHZvaWQpc2Nyb2xsSW50b1ZpZXc6KEJPT0wpYWxpZ25Ub3AKLXsKLSAgICBbc2VsZiBfZWxl
bWVudF0tPnNjcm9sbEludG9WaWV3KGFsaWduVG9wKTsKLX0KLQotLSAodm9pZClzY3JvbGxJbnRv
Vmlld0lmTmVlZGVkOihCT09MKWNlbnRlcklmTmVlZGVkCi17Ci0gICAgW3NlbGYgX2VsZW1lbnRd
LT5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKGNlbnRlcklmTmVlZGVkKTsKLX0KLQotQGVuZAotCi1A
aW1wbGVtZW50YXRpb24gRE9NRWxlbWVudCAoV2ViQ29yZUludGVybmFsKQotCi0rIChET01FbGVt
ZW50ICopX2VsZW1lbnRXaXRoOihFbGVtZW50ICopaW1wbAotewotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19Ci0KLS0gKEVs
ZW1lbnQgKilfZWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50ICo+KERP
TV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9u
IERPTUVsZW1lbnQgKFdlYlByaXZhdGUpCi0KLS0gKE5TRm9udCAqKV9mb250Ci17Ci0gICAgUmVu
ZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9lbGVtZW50XS0+cmVuZGVyZXIoKTsKLSAgICBp
ZiAocmVuZGVyZXIpIHsKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5zdHlsZSgpLT5mb250KCku
Z2V0TlNGb250KCk7Ci0gICAgfQotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKE5TRGF0YSopX2lt
YWdlVElGRlJlcHJlc2VudGF0aW9uCi17Ci0gICAgUmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtz
ZWxmIF9lbGVtZW50XS0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXIt
PmlzSW1hZ2UoKSkgewotICAgICAgICBSZW5kZXJJbWFnZSogaW1nID0gc3RhdGljX2Nhc3Q8UmVu
ZGVySW1hZ2UqPihyZW5kZXJlcik7Ci0gICAgICAgIGlmIChpbWctPmNhY2hlZEltYWdlKCkgJiYg
IWltZy0+Y2FjaGVkSW1hZ2UoKS0+aXNFcnJvckltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm4g
KE5TRGF0YSopKGltZy0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKS0+Z2V0VElGRlJlcHJlc2VudGF0
aW9uKCkpOwotICAgIH0KLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChOU1VSTCAqKV9nZXRVUkxB
dHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBFbGVt
ZW50ICplID0gW3NlbGYgX2VsZW1lbnRdOwotICAgIEFTU0VSVChlKTsKLSAgICByZXR1cm4gS1VS
TChlLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChwYXJzZVVSTChlLT5nZXRBdHRyaWJ1dGUobmFt
ZSkpLmRlcHJlY2F0ZWRTdHJpbmcoKSkpLmdldE5TVVJMKCk7Ci19Ci0KLS0gKHZvaWQgKilfTlBP
YmplY3QKLXsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gW3NlbGYgX2VsZW1lbnRdOwotICAgIGlm
IChlbGVtZW50LT5oYXNUYWdOYW1lKGFwcGxldFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShl
bWJlZFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQotICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqPihlbGVtZW50KS0+Z2V0
TlBPYmplY3QoKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiAwOwotfQotCi0tIChCT09MKWlz
Rm9jdXNlZAotewotICAgIEVsZW1lbnQqIGltcGwgPSBbc2VsZiBfZWxlbWVudF07Ci0gICAgaWYg
KGltcGwtPmRvY3VtZW50KCktPmZvY3VzTm9kZSgpID09IGltcGwpCi0gICAgICAgIHJldHVybiBZ
RVM7Ci0gICAgcmV0dXJuIE5POwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0vLyBET01UZXh0Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01UZXh0Ci0KLS0g
KFRleHQgKilfdGV4dAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0ICo+KERPTV9jYXN0
PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKERPTVRleHQgKilzcGxpdFRleHQ6KHVuc2ln
bmVkKW9mZnNldAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJl
c3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfdGV4dF0tPnNwbGl0VGV4dChvZmZzZXQs
IGVjKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RE9NVGV4dCAqPihyZXN1bHQpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0vLyBET01Db21tZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Db21tZW50
Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUNE
QVRBU2VjdGlvbgotCi1AaW1wbGVtZW50YXRpb24gRE9NQ0RBVEFTZWN0aW9uCi0KLUBlbmQKLQot
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTURvY3VtZW50VHlwZQot
Ci1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnRUeXBlCi0KLS0gKE5TU3RyaW5nICopbmFtZQot
ewotICAgIHJldHVybiBbc2VsZiBfZG9jdW1lbnRUeXBlXS0+cHVibGljSWQoKTsKLX0KLQotLSAo
RE9NTmFtZWROb2RlTWFwICopZW50aXRpZXMKLXsKLSAgICByZXR1cm4gW0RPTU5hbWVkTm9kZU1h
cCBfbmFtZWROb2RlTWFwV2l0aDpbc2VsZiBfZG9jdW1lbnRUeXBlXS0+ZW50aXRpZXMoKV07Ci19
Ci0KLS0gKERPTU5hbWVkTm9kZU1hcCAqKW5vdGF0aW9ucwotewotICAgIHJldHVybiBbRE9NTmFt
ZWROb2RlTWFwIF9uYW1lZE5vZGVNYXBXaXRoOltzZWxmIF9kb2N1bWVudFR5cGVdLT5ub3RhdGlv
bnMoKV07Ci19Ci0KLS0gKE5TU3RyaW5nICopcHVibGljSWQKLXsKLSAgICByZXR1cm4gW3NlbGYg
X2RvY3VtZW50VHlwZV0tPnB1YmxpY0lkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopc3lzdGVtSWQK
LXsKLSAgICByZXR1cm4gW3NlbGYgX2RvY3VtZW50VHlwZV0tPnN5c3RlbUlkKCk7Ci19Ci0KLS0g
KE5TU3RyaW5nICopaW50ZXJuYWxTdWJzZXQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2RvY3VtZW50
VHlwZV0tPmludGVybmFsU3Vic2V0KCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERP
TURvY3VtZW50VHlwZSAoV2ViQ29yZUludGVybmFsKQotCi0tIChEb2N1bWVudFR5cGUgKilfZG9j
dW1lbnRUeXBlCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50VHlwZSAqPihET01f
Y2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Ob3RhdGlvbgotCi1AaW1wbGVtZW50YXRpb24gRE9N
Tm90YXRpb24KLQotLSAoTm90YXRpb24gKilfbm90YXRpb24KLXsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Tm90YXRpb24gKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAo
TlNTdHJpbmcgKilwdWJsaWNJZAotewotICAgIHJldHVybiBbc2VsZiBfbm90YXRpb25dLT5wdWJs
aWNJZCgpOwotfQotCi0tIChOU1N0cmluZyAqKXN5c3RlbUlkCi17Ci0gICAgcmV0dXJuIFtzZWxm
IF9ub3RhdGlvbl0tPnN5c3RlbUlkKCk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUVudGl0eQotCi1AaW1wbGVtZW50YXRpb24gRE9NRW50
aXR5Ci0KLS0gKEVudGl0eSAqKV9lbnRpdHkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RW50
aXR5ICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3RyaW5nICop
cHVibGljSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2VudGl0eV0tPnB1YmxpY0lkKCk7Ci19Ci0K
LS0gKE5TU3RyaW5nICopc3lzdGVtSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2VudGl0eV0tPnN5
c3RlbUlkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbm90YXRpb25OYW1lCi17Ci0gICAgcmV0dXJu
IFtzZWxmIF9lbnRpdHldLT5ub3RhdGlvbk5hbWUoKTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NRW50aXR5UmVmZXJlbmNlCi0KLUBpbXBs
ZW1lbnRhdGlvbiBET01FbnRpdHlSZWZlcmVuY2UKLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uCi0KLUBpbXBs
ZW1lbnRhdGlvbiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KLQotLSAoUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uICopX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbgotewotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsK
LX0KLQotLSAoTlNTdHJpbmcgKil0YXJnZXQKLXsKLSAgICByZXR1cm4gW3NlbGYgX3Byb2Nlc3Np
bmdJbnN0cnVjdGlvbl0tPnRhcmdldCgpOwotfQotCi0tIChOU1N0cmluZyAqKWRhdGEKLXsKLSAg
ICByZXR1cm4gW3NlbGYgX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbl0tPmRhdGEoKTsKLX0KLQotLSAo
dm9pZClzZXREYXRhOihOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQoZGF0YSk7Ci0KLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcHJvY2Vzc2luZ0luc3RydWN0aW9u
XS0+c2V0RGF0YShkYXRhLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotQGVu
ZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NUmFuZ2UKLQot
QGltcGxlbWVudGF0aW9uIERPTVJhbmdlCi0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChf
aW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8UmFuZ2UgKj4oX2ludGVybmFsKS0+ZGVyZWYo
KTsKLSAgICB9Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17
Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxSYW5nZSAqPihfaW50ZXJu
YWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChOU1N0
cmluZyAqKWRlc2NyaXB0aW9uCi17Ci0gICAgaWYgKCFfaW50ZXJuYWwpCi0gICAgICAgIHJldHVy
biBAIjxET01SYW5nZTogbnVsbD4iOwotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIjxET01SYW5nZTogJUAgJWQgJUAgJWQ+IiwKLSAgICAgICAgW3NlbGYgc3RhcnRDb250
YWluZXJdLCBbc2VsZiBzdGFydE9mZnNldF0sCi0gICAgICAgIFtzZWxmIGVuZENvbnRhaW5lcl0s
IFtzZWxmIGVuZE9mZnNldF1dOwotfQotCi0tIChET01Ob2RlICopc3RhcnRDb250YWluZXIKLXsK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9k
ZSBfbm9kZVdpdGg6W3NlbGYgX3JhbmdlXS0+c3RhcnRDb250YWluZXIoZWMpXTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKGludClzdGFydE9m
ZnNldAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGludCByZXN1bHQgPSBbc2Vs
ZiBfcmFuZ2VdLT5zdGFydE9mZnNldChlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlICopZW5kQ29udGFpbmVyCi17Ci0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25v
ZGVXaXRoOltzZWxmIF9yYW5nZV0tPmVuZENvbnRhaW5lcihlYyldOwotICAgIHJhaXNlT25ET01F
cnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoaW50KWVuZE9mZnNldAotewot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGludCByZXN1bHQgPSBbc2VsZiBfcmFuZ2Vd
LT5lbmRPZmZzZXQoZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotLSAoQk9PTCljb2xsYXBzZWQKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBCT09MIHJlc3VsdCA9IFtzZWxmIF9yYW5nZV0tPmNvbGxhcHNlZChlYyk7Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2Rl
ICopY29tbW9uQW5jZXN0b3JDb250YWluZXIKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3JhbmdlXS0+
Y29tbW9uQW5jZXN0b3JDb250YWluZXIoZWMpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKHZvaWQpc2V0U3RhcnQ6KERPTU5vZGUgKilyZWZO
b2RlIDooaW50KW9mZnNldAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxm
IF9yYW5nZV0tPnNldFN0YXJ0KFtyZWZOb2RlIF9ub2RlXSwgb2Zmc2V0LCBlYyk7Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClzZXRFbmQ6KERPTU5vZGUgKilyZWZOb2Rl
IDooaW50KW9mZnNldAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9y
YW5nZV0tPnNldEVuZChbcmVmTm9kZSBfbm9kZV0sIG9mZnNldCwgZWMpOwotICAgIHJhaXNlT25E
T01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc2V0U3RhcnRCZWZvcmU6KERPTU5vZGUgKilyZWZO
b2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+c2V0
U3RhcnRCZWZvcmUoW3JlZk5vZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVj
KTsKLX0KLQotLSAodm9pZClzZXRTdGFydEFmdGVyOihET01Ob2RlICopcmVmTm9kZQotewotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9yYW5nZV0tPnNldFN0YXJ0QWZ0ZXIo
W3JlZk5vZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAo
dm9pZClzZXRFbmRCZWZvcmU6KERPTU5vZGUgKilyZWZOb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+c2V0RW5kQmVmb3JlKFtyZWZOb2RlIF9ub2Rl
XSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc2V0RW5kQWZ0
ZXI6KERPTU5vZGUgKilyZWZOb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
W3NlbGYgX3JhbmdlXS0+c2V0RW5kQWZ0ZXIoW3JlZk5vZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZCljb2xsYXBzZTooQk9PTCl0b1N0YXJ0Ci17
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+Y29sbGFwc2Uo
dG9TdGFydCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc2Vs
ZWN0Tm9kZTooRE9NTm9kZSAqKXJlZk5vZGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBbc2VsZiBfcmFuZ2VdLT5zZWxlY3ROb2RlKFtyZWZOb2RlIF9ub2RlXSwgZWMpOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc2VsZWN0Tm9kZUNvbnRlbnRzOihE
T01Ob2RlICopcmVmTm9kZQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxm
IF9yYW5nZV0tPnNlbGVjdE5vZGVDb250ZW50cyhbcmVmTm9kZSBfbm9kZV0sIGVjKTsKLSAgICBy
YWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tIChzaG9ydCljb21wYXJlQm91bmRhcnlQb2ludHM6
KHVuc2lnbmVkIHNob3J0KWhvdyA6KERPTVJhbmdlICopc291cmNlUmFuZ2UKLXsKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBzaG9ydCByZXN1bHQgPSBbc2VsZiBfcmFuZ2VdLT5jb21w
YXJlQm91bmRhcnlQb2ludHMoc3RhdGljX2Nhc3Q8UmFuZ2U6OkNvbXBhcmVIb3c+KGhvdyksIFtz
b3VyY2VSYW5nZSBfcmFuZ2VdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKWRlbGV0ZUNvbnRlbnRzCi17Ci0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+ZGVsZXRlQ29udGVudHMoZWMpOwot
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKERPTURvY3VtZW50RnJhZ21lbnQgKill
eHRyYWN0Q29udGVudHMKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Eb2N1
bWVudEZyYWdtZW50ICpyZXN1bHQgPSBbRE9NRG9jdW1lbnRGcmFnbWVudCBfZG9jdW1lbnRGcmFn
bWVudFdpdGg6W3NlbGYgX3JhbmdlXS0+ZXh0cmFjdENvbnRlbnRzKGVjKS5nZXQoKV07Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Eb2N1
bWVudEZyYWdtZW50ICopY2xvbmVDb250ZW50cwotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIERPTURvY3VtZW50RnJhZ21lbnQgKnJlc3VsdCA9IFtET01Eb2N1bWVudEZyYWdtZW50
IF9kb2N1bWVudEZyYWdtZW50V2l0aDpbc2VsZiBfcmFuZ2VdLT5jbG9uZUNvbnRlbnRzKGVjKS5n
ZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci0tICh2b2lkKWluc2VydE5vZGU6KERPTU5vZGUgKiluZXdOb2RlCi17Ci0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+aW5zZXJ0Tm9kZShbbmV3Tm9kZSBfbm9k
ZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKXN1cnJvdW5k
Q29udGVudHM6KERPTU5vZGUgKiluZXdQYXJlbnQKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5zdXJyb3VuZENvbnRlbnRzKFtuZXdQYXJlbnQgX25vZGVd
LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoRE9NUmFuZ2UgKiljbG9u
ZVJhbmdlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NUmFuZ2UgKnJlc3Vs
dCA9IFtET01SYW5nZSBfcmFuZ2VXaXRoOltzZWxmIF9yYW5nZV0tPmNsb25lUmFuZ2UoZWMpLmdl
dCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LS0gKE5TU3RyaW5nICopdG9TdHJpbmcKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBOU1N0cmluZyAqcmVzdWx0ID0gW3NlbGYgX3JhbmdlXS0+dG9TdHJpbmcoZWMpOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoTlNTdHJpbmcg
Kil0ZXh0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9yYW5nZV0tPnRleHQoKTsKLX0KLQotLSAodm9p
ZClkZXRhY2gKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2Vd
LT5kZXRhY2goZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLUBlbmQKLQotQGlt
cGxlbWVudGF0aW9uIERPTVJhbmdlIChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKGlkKV9pbml0V2l0
aFJhbmdlOihSYW5nZSAqKWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIg
X2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGlt
cGwpOwotICAgIGltcGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0g
ICAgcmV0dXJuIHNlbGY7Ci19Ci0KLSsgKERPTVJhbmdlICopX3JhbmdlV2l0aDooUmFuZ2UgKilp
bXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlk
IGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBs
KTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3Rh
bmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9j
XSBfaW5pdFdpdGhSYW5nZTppbXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKFJhbmdlICopX3Jh
bmdlCi17Ci0gICAgcmV0dXJuIERPTV9jYXN0PFJhbmdlICo+KF9pbnRlcm5hbCk7Ci19Ci0KLUBl
bmQKLQotQGltcGxlbWVudGF0aW9uIERPTVJhbmdlIChXZWJQcml2YXRlKQotCi0tIChOU1N0cmlu
ZyAqKV90ZXh0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIHRleHRdOwotfQotCi1AZW5kCi0KLS8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlRmlsdGVyCi0KLS0gKGlkKV9p
bml0V2l0aE5vZGVGaWx0ZXI6KE5vZGVGaWx0ZXIgKilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwp
OwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmpl
Y3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVy
KHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01Ob2RlRmlsdGVyICop
X25vZGVGaWx0ZXJXaXRoOihOb2RlRmlsdGVyICopaW1wbAotewotICAgIGlmICghaW1wbCkKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNo
ZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNl
KQotICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsK
LSAgICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTm9kZUZpbHRlcjppbXBs
XSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKE5vZGVGaWx0ZXIgKilfbm9kZUZpbHRlcgotewotICAg
IHJldHVybiBET01fY2FzdDxOb2RlRmlsdGVyICo+KF9pbnRlcm5hbCk7Ci19Ci0KLS0gKHZvaWQp
ZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIERPTV9jYXN0PE5vZGVGaWx0
ZXIgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0g
KHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAoX2ludGVybmFsKQotICAgICAgICBET01fY2FzdDxO
b2RlRmlsdGVyICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsK
LX0KLQotLSAoc2hvcnQpYWNjZXB0Tm9kZTooRE9NTm9kZSAqKW5vZGUKLXsKLSAgICByZXR1cm4g
W3NlbGYgX25vZGVGaWx0ZXJdLT5hY2NlcHROb2RlKFtub2RlIF9ub2RlXSk7Ci19Ci0KLUBlbmQK
LQotCi1AaW1wbGVtZW50YXRpb24gRE9NTm9kZUl0ZXJhdG9yCi0KLS0gKGlkKV9pbml0V2l0aE5v
ZGVJdGVyYXRvcjooTm9kZUl0ZXJhdG9yICopaW1wbCBmaWx0ZXI6KGlkIDxET01Ob2RlRmlsdGVy
PilmaWx0ZXIKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAg
IF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGlt
cGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgbV9maWx0ZXIg
PSBbZmlsdGVyIHJldGFpbl07Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKE5vZGVJdGVyYXRv
ciAqKV9ub2RlSXRlcmF0b3IKLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8Tm9kZUl0ZXJhdG9yICo+
KF9pbnRlcm5hbCk7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFttX2ZpbHRlciByZWxl
YXNlXTsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIFtzZWxmIGRldGFjaF07Ci0gICAg
ICAgIERPTV9jYXN0PE5vZGVJdGVyYXRvciAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0K
LSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAo
X2ludGVybmFsKSB7Ci0gICAgICAgIFtzZWxmIGRldGFjaF07Ci0gICAgICAgIERPTV9jYXN0PE5v
ZGVJdGVyYXRvciAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmlu
YWxpemVdOwotfQotCi0tIChET01Ob2RlICopcm9vdAotewotICAgIHJldHVybiBbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX25vZGVJdGVyYXRvcl0tPnJvb3QoKV07Ci19Ci0KLS0gKHVuc2lnbmVk
KXdoYXRUb1Nob3cKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVJdGVyYXRvcl0tPndoYXRUb1No
b3coKTsKLX0KLQotLSAoaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgotewotICAgIGlmIChtX2Zp
bHRlcikKLSAgICAgICAgLy8gVGhpcyBub2RlIGl0ZXJhdG9yIHdhcyBjcmVhdGVkIGZyb20gdGhl
IG9iamMgc2lkZQotICAgICAgICByZXR1cm4gW1ttX2ZpbHRlciByZXRhaW5dIGF1dG9yZWxlYXNl
XTsKLQotICAgIC8vIFRoaXMgbm9kZSBpdGVyYXRvciB3YXMgY3JlYXRlZCBmcm9tIHRoZSBjKysg
c2lkZQotICAgIHJldHVybiBbRE9NTm9kZUZpbHRlciBfbm9kZUZpbHRlcldpdGg6W3NlbGYgX25v
ZGVJdGVyYXRvcl0tPmZpbHRlcigpXTsKLX0KLQotLSAoQk9PTClleHBhbmRFbnRpdHlSZWZlcmVu
Y2VzCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlSXRlcmF0b3JdLT5leHBhbmRFbnRpdHlSZWZl
cmVuY2VzKCk7Ci19Ci0KLS0gKERPTU5vZGUgKiluZXh0Tm9kZQotewotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2Vs
ZiBfbm9kZUl0ZXJhdG9yXS0+bmV4dE5vZGUoZWMpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUgKilwcmV2aW91c05vZGUKLXsK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9k
ZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVJdGVyYXRvcl0tPnByZXZpb3VzTm9kZShlYyldOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAodm9pZClk
ZXRhY2gKLXsKLSAgICBbc2VsZiBfbm9kZUl0ZXJhdG9yXS0+ZGV0YWNoKCk7Ci19Ci0KLUBlbmQK
LQotQGltcGxlbWVudGF0aW9uIERPTU5vZGVJdGVyYXRvcihXZWJDb3JlSW50ZXJuYWwpCi0KLSsg
KERPTU5vZGVJdGVyYXRvciAqKV9ub2RlSXRlcmF0b3JXaXRoOihOb2RlSXRlcmF0b3IgKilpbXBs
IGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgotewotICAgIGlmICghaW1wbCkKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNo
ZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNl
KQotICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsK
LSAgICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTm9kZUl0ZXJhdG9yOmlt
cGwgZmlsdGVyOmZpbHRlcl0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRh
dGlvbiBET01UcmVlV2Fsa2VyCi0KLS0gKGlkKV9pbml0V2l0aFRyZWVXYWxrZXI6KFRyZWVXYWxr
ZXIgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgotewotICAgIEFTU0VS
VChpbXBsKTsKLQotICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8
RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9N
V3JhcHBlcihzZWxmLCBpbXBsKTsKLSAgICBtX2ZpbHRlciA9IFtmaWx0ZXIgcmV0YWluXTsKLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLSAoVHJlZVdhbGtlciAqKV90cmVlV2Fsa2VyCi17Ci0gICAg
cmV0dXJuIERPTV9jYXN0PFRyZWVXYWxrZXIgKj4oX2ludGVybmFsKTsKLX0KLQotLSAodm9pZClk
ZWFsbG9jCi17Ci0gICAgaWYgKG1fZmlsdGVyKQotICAgICAgICBbbV9maWx0ZXIgcmVsZWFzZV07
Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxUcmVlV2Fsa2VyICo+KF9p
bnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAo
dm9pZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8
VHJlZVdhbGtlciAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmlu
YWxpemVdOwotfQotCi0tIChET01Ob2RlICopcm9vdAotewotICAgIHJldHVybiBbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5yb290KCldOwotfQotCi0tICh1bnNpZ25lZCl3
aGF0VG9TaG93Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF90cmVlV2Fsa2VyXS0+d2hhdFRvU2hvdygp
OwotfQotCi0tIChpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgaWYgKG1fZmlsdGVy
KQotICAgICAgICAvLyBUaGlzIHRyZWUgd2Fsa2VyIHdhcyBjcmVhdGVkIGZyb20gdGhlIG9iamMg
c2lkZQotICAgICAgICByZXR1cm4gW1ttX2ZpbHRlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLQot
ICAgIC8vIFRoaXMgdHJlZSB3YWxrZXIgd2FzIGNyZWF0ZWQgZnJvbSB0aGUgYysrIHNpZGUKLSAg
ICByZXR1cm4gW0RPTU5vZGVGaWx0ZXIgX25vZGVGaWx0ZXJXaXRoOltzZWxmIF90cmVlV2Fsa2Vy
XS0+ZmlsdGVyKCldOwotfQotCi0tIChCT09MKWV4cGFuZEVudGl0eVJlZmVyZW5jZXMKLXsKLSAg
ICByZXR1cm4gW3NlbGYgX3RyZWVXYWxrZXJdLT5leHBhbmRFbnRpdHlSZWZlcmVuY2VzKCk7Ci19
Ci0KLS0gKERPTU5vZGUgKiljdXJyZW50Tm9kZQotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5jdXJyZW50Tm9kZSgpXTsKLX0KLQotLSAodm9pZClz
ZXRDdXJyZW50Tm9kZTooRE9NTm9kZSAqKWN1cnJlbnROb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3RyZWVXYWxrZXJdLT5zZXRDdXJyZW50Tm9kZShbY3VycmVu
dE5vZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoRE9N
Tm9kZSAqKXBhcmVudE5vZGUKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxm
IF90cmVlV2Fsa2VyXS0+cGFyZW50Tm9kZSgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKWZpcnN0Q2hp
bGQKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90cmVlV2Fsa2VyXS0+
Zmlyc3RDaGlsZCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKWxhc3RDaGlsZAotewotICAgIHJldHVy
biBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5sYXN0Q2hpbGQoKV07Ci19
Ci0KLS0gKERPTU5vZGUgKilwcmV2aW91c1NpYmxpbmcKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUg
X25vZGVXaXRoOltzZWxmIF90cmVlV2Fsa2VyXS0+cHJldmlvdXNTaWJsaW5nKCldOwotfQotCi0t
IChET01Ob2RlICopbmV4dFNpYmxpbmcKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRo
OltzZWxmIF90cmVlV2Fsa2VyXS0+bmV4dFNpYmxpbmcoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilw
cmV2aW91c05vZGUKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90cmVl
V2Fsa2VyXS0+cHJldmlvdXNOb2RlKCldOwotfQotCi0tIChET01Ob2RlICopbmV4dE5vZGUKLXsK
LSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90cmVlV2Fsa2VyXS0+bmV4dE5v
ZGUoKV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTVRyZWVXYWxrZXIgKFdlYkNv
cmVJbnRlcm5hbCkKLQotKyAoRE9NVHJlZVdhbGtlciAqKV90cmVlV2Fsa2VyV2l0aDooVHJlZVdh
bGtlciAqKWltcGwgZmlsdGVyOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgaWYg
KCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNl
OwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2Fj
aGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0
b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhUcmVl
V2Fsa2VyOmltcGwgZmlsdGVyOmZpbHRlcl0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLWNs
YXNzIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uIDogcHVibGljIE5vZGVGaWx0ZXJDb25kaXRpb24g
Ci17Ci1wdWJsaWM6Ci0gICAgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oaWQgPERPTU5vZGVGaWx0
ZXI+KTsKLSAgICB2aXJ0dWFsIH5PYmpDTm9kZUZpbHRlckNvbmRpdGlvbigpOwotICAgIHZpcnR1
YWwgc2hvcnQgYWNjZXB0Tm9kZShOb2RlKikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgT2JqQ05v
ZGVGaWx0ZXJDb25kaXRpb24oY29uc3QgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24gJik7Ci0gICAg
T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24gJm9wZXJhdG9yPShjb25zdCBPYmpDTm9kZUZpbHRlckNv
bmRpdGlvbiAmKTsKLQotICAgIGlkIDxET01Ob2RlRmlsdGVyPiBtX2ZpbHRlcjsKLX07Ci0KLU9i
akNOb2RlRmlsdGVyQ29uZGl0aW9uOjpPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihpZCA8RE9NTm9k
ZUZpbHRlcj4gZmlsdGVyKQotICAgIDogbV9maWx0ZXIoZmlsdGVyKQotewotICAgIEFTU0VSVCht
X2ZpbHRlcik7Ci0gICAgQ0ZSZXRhaW4obV9maWx0ZXIpOwotfQotCi1PYmpDTm9kZUZpbHRlckNv
bmRpdGlvbjo6fk9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKCkKLXsKLSAgICBDRlJlbGVhc2UobV9m
aWx0ZXIpOwotfQotCi1zaG9ydCBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0Tm9kZShO
b2RlKiBub2RlKSBjb25zdAotewotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIE5vZGVG
aWx0ZXI6OkZJTFRFUl9SRUpFQ1Q7Ci0gICAgcmV0dXJuIFttX2ZpbHRlciBhY2NlcHROb2RlOltE
T01Ob2RlIF9ub2RlV2l0aDpub2RlXV07Ci19Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVu
dCAoRE9NRG9jdW1lbnRUcmF2ZXJzYWwpCitAaW1wbGVtZW50YXRpb24gRE9NVGV4dAogCi0tIChE
T01Ob2RlSXRlcmF0b3IgKiljcmVhdGVOb2RlSXRlcmF0b3I6KERPTU5vZGUgKilyb290IDoodW5z
aWduZWQpd2hhdFRvU2hvdyA6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIgOihCT09MKWV4cGFu
ZEVudGl0eVJlZmVyZW5jZXMKKy0gKFdlYkNvcmU6OlRleHQgKilfdGV4dAogewotICAgIFJlZlB0
cjxOb2RlRmlsdGVyPiBjcHBGaWx0ZXI7Ci0gICAgaWYgKGZpbHRlcikKLSAgICAgICAgY3BwRmls
dGVyID0gbmV3IE5vZGVGaWx0ZXIobmV3IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKGZpbHRlcikp
OwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxOb2RlSXRlcmF0b3I+IGlt
cGwgPSBbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVOb2RlSXRlcmF0b3IoW3Jvb3QgX25vZGVdLCB3
aGF0VG9TaG93LCBjcHBGaWx0ZXIsIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMsIGVjKTsKLSAgICBy
YWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBbRE9NTm9kZUl0ZXJhdG9yIF9ub2RlSXRl
cmF0b3JXaXRoOmltcGwuZ2V0KCkgZmlsdGVyOmZpbHRlcl07CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFdlYkNvcmU6OlRleHQgKj4oRE9NX2Nhc3Q8V2ViQ29yZTo6Tm9kZSAqPihfaW50ZXJuYWwp
KTsKIH0KIAotLSAoRE9NVHJlZVdhbGtlciAqKWNyZWF0ZVRyZWVXYWxrZXI6KERPTU5vZGUgKily
b290IDoodW5zaWduZWQpd2hhdFRvU2hvdyA6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIgOihC
T09MKWV4cGFuZEVudGl0eVJlZmVyZW5jZXMKKy0gKERPTVRleHQgKilzcGxpdFRleHQ6KHVuc2ln
bmVkKW9mZnNldAogewotICAgIFJlZlB0cjxOb2RlRmlsdGVyPiBjcHBGaWx0ZXI7Ci0gICAgaWYg
KGZpbHRlcikKLSAgICAgICAgY3BwRmlsdGVyID0gbmV3IE5vZGVGaWx0ZXIobmV3IE9iakNOb2Rl
RmlsdGVyQ29uZGl0aW9uKGZpbHRlcikpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IFJlZlB0cjxUcmVlV2Fsa2VyPiBpbXBsID0gW3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlVHJlZVdh
bGtlcihbcm9vdCBfbm9kZV0sIHdoYXRUb1Nob3csIGNwcEZpbHRlciwgZXhwYW5kRW50aXR5UmVm
ZXJlbmNlcywgZWMpOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERP
TU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfdGV4dF0tPnNwbGl0VGV4
dChvZmZzZXQsIGVjKV07CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gW0RP
TVRyZWVXYWxrZXIgX3RyZWVXYWxrZXJXaXRoOmltcGwuZ2V0KCkgZmlsdGVyOmZpbHRlcl07Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTVRleHQgKj4ocmVzdWx0KTsKIH0KIAogQGVuZAotCi1P
YmpDRXZlbnRMaXN0ZW5lciogT2JqQ0V2ZW50TGlzdGVuZXI6OmZpbmQoaWQgPERPTUV2ZW50TGlz
dGVuZXI+IGxpc3RlbmVyKQotewotICAgIGlmIChMaXN0ZW5lck1hcCogbWFwID0gbGlzdGVuZXJN
YXApCi0gICAgICAgIHJldHVybiBtYXAtPmdldChsaXN0ZW5lcik7Ci0gICAgcmV0dXJuIE5VTEw7
Ci19Ci0KLU9iakNFdmVudExpc3RlbmVyICpPYmpDRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGlkIDxE
T01FdmVudExpc3RlbmVyPiBsaXN0ZW5lcikKLXsKLSAgICBPYmpDRXZlbnRMaXN0ZW5lciAqd3Jh
cHBlciA9IGZpbmQobGlzdGVuZXIpOwotICAgIGlmICghd3JhcHBlcikKLSAgICAgICAgd3JhcHBl
ciA9IG5ldyBPYmpDRXZlbnRMaXN0ZW5lcihsaXN0ZW5lcik7Ci0gICAgd3JhcHBlci0+cmVmKCk7
Ci0gICAgcmV0dXJuIHdyYXBwZXI7Ci19Ci0KLU9iakNFdmVudExpc3RlbmVyOjpPYmpDRXZlbnRM
aXN0ZW5lcihpZCA8RE9NRXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpCi0gICAgOiBtX2xpc3RlbmVy
KFtsaXN0ZW5lciByZXRhaW5dKQotewotICAgIExpc3RlbmVyTWFwKiBtYXAgPSBsaXN0ZW5lck1h
cDsKLSAgICBpZiAoIW1hcCkgewotICAgICAgICBtYXAgPSBuZXcgTGlzdGVuZXJNYXA7Ci0gICAg
ICAgIGxpc3RlbmVyTWFwID0gbWFwOwotICAgIH0KLSAgICBtYXAtPnNldChsaXN0ZW5lciwgdGhp
cyk7Ci19Ci0KLU9iakNFdmVudExpc3RlbmVyOjp+T2JqQ0V2ZW50TGlzdGVuZXIoKQotewotICAg
IGxpc3RlbmVyTWFwLT5yZW1vdmUobV9saXN0ZW5lcik7Ci0gICAgW21fbGlzdGVuZXIgcmVsZWFz
ZV07Ci19Ci0KLXZvaWQgT2JqQ0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KEV2ZW50ICpldmVu
dCwgYm9vbCkKLXsKLSAgICBbbV9saXN0ZW5lciBoYW5kbGVFdmVudDpbRE9NRXZlbnQgX2V2ZW50
V2l0aDpldmVudF1dOwotfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVRyYXZlcnNh
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01UcmF2ZXJzYWwuaAko
cmV2aXNpb24gMTU5NTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVHJhdmVyc2FsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0
IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyNCwxMCBAQAogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CiAgKi8KIAotI2ltcG9ydCA8V2ViQ29yZS9ET01Db3JlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RP
TURvY3VtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgogCitAY2xhc3MgRE9N
Tm9kZTsKIEBjbGFzcyBET01Ob2RlRmlsdGVyOwogCiBlbnVtIHsKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01WaWV3cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01WaWV3cy5oCShyZXZpc2lvbiAxNTk1OSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01WaWV3cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNyArMjQsOCBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCiAgKi8KIAotI2ltcG9ydCA8V2ViQ29yZS9ET01Db3JlLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0RPTURvY3VtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgogCiBA
aW50ZXJmYWNlIERPTUFic3RyYWN0VmlldyA6IERPTU9iamVjdAogLSAoRE9NRG9jdW1lbnQgKilk
b2N1bWVudDsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aC5oCShyZXZpc2lvbiAxNTk1OSkK
KysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vp
bmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjMsNyArMjQsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2ltcG9ydCA8V2Vi
Q29yZS9ET01Db3JlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTURvY3VtZW50Lmg+CisjaW1wb3J0
IDxXZWJDb3JlL0RPTU9iamVjdC5oPgogCiBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBET01YUGF0
aEV4Y2VwdGlvbjsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3IucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3IucG0JKHJldmlzaW9uIDE1OTU5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3IucG0JKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDYgQEAgc3ViIFByb2Nlc3NE
b2N1bWVudAogICAkdXNlRG9jdW1lbnQgPSBzaGlmdDsKICAgCiAgIG15ICRpZmFjZU5hbWUgPSAk
dXNlR2VuZXJhdG9yOwotICAkaWZhY2VOYW1lID1+IHMvXGIoXHcpL1xVJDEvZzsgIyBNYWtlIGZp
cnN0IGxldHRlciBvZiBlYWNoIHdvcmQgdXBwZXJjYXNlCiAgICRpZmFjZU5hbWUgPSAiQ29kZUdl
bmVyYXRvciRpZmFjZU5hbWUiOwogCiAgICMgRHluYW1pY2FsbHkgbG9hZCBleHRlcm5hbCBjb2Rl
IGdlbmVyYXRpb24gcGVybCBtb2R1bGUuLi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0JKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
Njk2IEBACisjIAorIyBLRE9NIElETCBwYXJzZXIKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDA1IE5p
a29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorIyBDb3B5cmlnaHQgKEMpIDIwMDYg
QW5kZXJzIENhcmxzc29uIDxhbmRlcnNjYUBtYWMuY29tPiAKKyMgQ29weXJpZ2h0IChDKSAyMDA2
IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorIyBDb3B5cmlnaHQgKEMpIDIw
MDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtE
RSBwcm9qZWN0CisjIAorIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjIAorIyBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisjIAorIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFpbnQgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g
U3VpdGUgMzMwLAorIyBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyMKKworcGFja2FnZSBD
b2RlR2VuZXJhdG9yT2JqQzsKKwordXNlIEZpbGU6OnN0YXQ7CisKK215ICRtb2R1bGUgPSAiIjsK
K215ICRvdXRwdXREaXIgPSAiIjsKK215ICVpbXBsSW5jbHVkZXMgPSAoKTsKK215ICVoZWFkZXJG
b3J3YXJkRGVjbGFyYXRpb25zID0gKCk7CisKKyMgRGVmYXVsdCB0ZW1wbGF0ZQorbXkgJGhlYWRl
clRlbXBsYXRlID0gPDwgIkVPRiI7CisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBX
ZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJh
dGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg
MzMwLAorICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKi8KK0VPRgorCisjIERlZmF1
bHQgY29uc3RydWN0b3IKK3N1YiBuZXcKK3sKKyAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CisgICAg
bXkgJHJlZmVyZW5jZSA9IHsgfTsKKyAgICAKKyAgICAkY29kZUdlbmVyYXRvciA9IHNoaWZ0Owor
ICAgICRvdXRwdXREaXIgPSBzaGlmdDsKKyAgICAKKyAgICBibGVzcygkcmVmZXJlbmNlLCAkb2Jq
ZWN0KTsKKyAgICByZXR1cm4gJHJlZmVyZW5jZTsKK30KKworc3ViIGZpbmlzaAoreworICAgIG15
ICRvYmplY3QgPSBzaGlmdDsKKyAgICAKKyAgICAjIENvbW1pdCBjaGFuZ2VzIQorICAgICRvYmpl
Y3QtPldyaXRlRGF0YSgpOworfQorCisjIFBhcmFtczogJ2RvbUNsYXNzJyBzdHJ1Y3QKK3N1YiBH
ZW5lcmF0ZUludGVyZmFjZQoreworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBteSAkZGF0
YU5vZGUgPSBzaGlmdDsKKworICAgICMgU3RhcnQgYWN0dWFsIGdlbmVyYXRpb24uLgorICAgICRv
YmplY3QtPkdlbmVyYXRlSGVhZGVyKCRkYXRhTm9kZSk7CisgICAgJG9iamVjdC0+R2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbigkZGF0YU5vZGUpOworCisgICAgbXkgJG5hbWUgPSAkZGF0YU5vZGUtPm5h
bWU7CisKKyAgICAjIE9wZW4gZmlsZXMgZm9yIHdyaXRpbmcuLi4KKyAgICBteSAkaGVhZGVyRmls
ZU5hbWUgPSAiJG91dHB1dERpci9ET00kbmFtZS5oIjsKKyAgICBteSAkaW1wbEZpbGVOYW1lID0g
IiRvdXRwdXREaXIvRE9NJG5hbWUubW0iOworCisgICAgb3BlbigkSU1QTCwgIj4kaW1wbEZpbGVO
YW1lIikgb3IgZGllICJDb3VsZG4ndCBvcGVuIGZpbGUgJGltcGxGaWxlTmFtZSI7CisgICAgb3Bl
bigkSEVBREVSLCAiPiRoZWFkZXJGaWxlTmFtZSIpIG9yIGRpZSAiQ291bGRuJ3Qgb3BlbiBmaWxl
ICRoZWFkZXJGaWxlTmFtZSI7Cit9CisKKyMgUGFyYW1zOiAnaWRsRG9jdW1lbnQnIHN0cnVjdAor
c3ViIEdlbmVyYXRlTW9kdWxlCit7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAgIG15ICRk
YXRhTm9kZSA9IHNoaWZ0OyAgCisgICAgCisgICAgJG1vZHVsZSA9ICRkYXRhTm9kZS0+bW9kdWxl
OyAgICAKK30KKworc3ViIEdldFBhcmVudENsYXNzTmFtZQoreworICAgIG15ICRkYXRhTm9kZSA9
IHNoaWZ0OworCisgICAgaWYgKEB7JGRhdGFOb2RlLT5wYXJlbnRzfSBlcSAwKSB7CisgICAgICAg
IHJldHVybiAiRE9NT2JqZWN0IjsKKyAgICB9CisKKyAgICBteSAkcGFyZW50ID0gJGNvZGVHZW5l
cmF0b3ItPlN0cmlwTW9kdWxlKCRkYXRhTm9kZS0+cGFyZW50cygwKSk7CisgICAgCisgICAgIyBz
cGVjaWFsIGNhc2VzCisgICAgaWYgKCRwYXJlbnQgZXEgIkV2ZW50VGFyZ2V0Tm9kZSIpIHsKKyAg
ICAgICAgJHBhcmVudCA9ICJOb2RlIjsKKyAgICB9CisKKyAgICByZXR1cm4gJHBhcmVudDsKK30K
Kworc3ViIEdldE9iakNUeXBlCit7CisgICAgbXkgJHR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3Ry
aXBNb2R1bGUoc2hpZnQpOworICAgIAorICAgIGlmICgkdHlwZSBlcSAiYm9vbGVhbiIpIHsKKyAg
ICAgICAgcmV0dXJuICJCT09MIjsKKyAgICB9IGVsc2lmICgkdHlwZSBlcSAidW5zaWduZWQgbG9u
ZyIpIHsKKyAgICAgICAgcmV0dXJuICJ1bnNpZ25lZCI7CisgICAgfSBlbHNpZiAoJHR5cGUgZXEg
ImxvbmciKSB7CisgICAgICAgIHJldHVybiAiaW50IjsKKyAgICB9IGVsc2lmICgkdHlwZSBlcSAi
RE9NU3RyaW5nIikgeworICAgICAgICByZXR1cm4gIk5TU3RyaW5nICoiOworICAgIH0gZWxzaWYg
KCR0eXBlIGVxICJ1bnNpZ25lZCBzaG9ydCIgCisgICAgICAgICAgICAgb3IgJHR5cGUgZXEgImZs
b2F0IgorICAgICAgICAgICAgIG9yICR0eXBlIGVxICJ2b2lkIgorICAgICAgICAgICAgIG9yICR0
eXBlIGVxICJBdG9taWNTdHJpbmciKSB7CisgICAgICAgIHJldHVybiAkdHlwZTsKKyAgICB9Cisg
ICAgCisgICAgIyBEZWZhdWx0LCBhc3N1bWUgb2JqZWN0aXZlLWMgdHlwZSBpcyBhIHBvaW50ZXIg
d2l0aCB0aGUgc2FtZSB0eXBlIG5hbWUgYXMKKyAgICAjIGlkbCB0eXBlIHByZWZpeGVkIHdpdGgg
IkRPTSIuCisgICAgcmV0dXJuICJET00kdHlwZSAqIjsKK30KKworc3ViIEFkZEZvcndhcmREZWNs
YXJhdGlvbnNGb3JUeXBlCit7CisgICAgbXkgJHR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBN
b2R1bGUoc2hpZnQpOworICAgIAorICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNQcmltaXRpdmVU
eXBlKCR0eXBlKSBvciAkdHlwZSBlcSAiRE9NU3RyaW5nIikgeworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgJGhlYWRlckZvcndhcmREZWNsYXJhdGlvbnN7IkRPTSR0eXBlIn0gPSAxOwor
fQorCitzdWIgQWRkSW5jbHVkZXNGb3JUeXBlCit7CisgICAgbXkgJHR5cGUgPSAkY29kZUdlbmVy
YXRvci0+U3RyaXBNb2R1bGUoc2hpZnQpOworICAgIAorICAgIGlmICgkY29kZUdlbmVyYXRvci0+
SXNQcmltaXRpdmVUeXBlKCR0eXBlKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKCR0eXBlIGVxICJET01TdHJpbmciKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IlBsYXRm
b3JtU3RyaW5nLmgifSA9IDE7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAjIFRlbXAg
RE9NQ1NTLmgKKyAgICBpZiAoJHR5cGUgZXEgIkNvdW50ZXIiCisgICAgICAgICAgICBvciAkdHlw
ZSBlcSAiTWVkaWFMaXN0IgorICAgICAgICAgICAgb3IgJHR5cGUgZXEgIkNTU1N0eWxlU2hlZXQi
KSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUNTUy5oIn0gPSAxOworICAgICAgICAkaW1w
bEluY2x1ZGVzeyIkdHlwZS5oIn0gPSAxOworICAgICAgICAKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAoJHR5cGUgZXEgIkNTU1N0eWxlRGVjbGFyYXRpb24iKSB7CisgICAgICAgICRp
bXBsSW5jbHVkZXN7IkRPTUNTUy5oIn0gPSAxOworICAgICAgICAkaW1wbEluY2x1ZGVzeyIkdHlw
ZS5oIn0gPSAxOworICAgICAgICAkaW1wbEluY2x1ZGVzeyJDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbi5oIn0gPSAxOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmICgkdHlw
ZSBlcSAiUkdCQ29sb3IiIG9yICR0eXBlIGVxICJSZWN0IikgeworICAgICAgICAkaW1wbEluY2x1
ZGVzeyJET01DU1MuaCJ9ID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIAorCisg
ICAgIyBEZWZhdWx0LCBpbmNsdWRlIHRoZSBzYW1lIG5hbWVkIGZpbGUgKHRoZSBpbXBsZW1lbnRh
dGlvbikgYW5kIHRoZSBzYW1lIG5hbWUgcHJlZml4ZWQgd2l0aCAiRE9NIi4gCisgICAgJGltcGxJ
bmNsdWRlc3siJHR5cGUuaCJ9ID0gMTsKKyAgICAkaW1wbEluY2x1ZGVzeyJET00kdHlwZS5oIn0g
PSAxOworCisgICAgIyBhZGRpdGlvbmFsIGluY2x1ZGVzICh0aGluZ3MgbmVlZGVkIHRvIGNvbXBp
bGUgdGhlIGJpbmRpbmdzIGJ1dCBub3QgdGhlIGhlYWRlcikKKyAgICAjIGlmICgkdHlwZSBlcSAi
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIikgeworICAgICMgICAgICRpbXBsSW5jbHVkZXN7IkNh
bnZhc0dyYWRpZW50LmgifSA9IDE7CisgICAgIyAgICAgJGltcGxJbmNsdWRlc3siQ2FudmFzUGF0
dGVybi5oIn0gPSAxOworICAgICMgICAgICRpbXBsSW5jbHVkZXN7IkNhbnZhc1N0eWxlLmgifSA9
IDE7CisgICAgIyB9CisgICAgIyBpZiAoJHR5cGUgZXEgIkNhbnZhc0dyYWRpZW50IiBvciAkdHlw
ZSBlcSAiWFBhdGhOU1Jlc29sdmVyIikgeworICAgICMgICAgICRpbXBsSW5jbHVkZXN7IlBsYXRm
b3JtU3RyaW5nLmgifSA9IDE7CisgICAgIyB9Cit9CisKK3N1YiBHZW5lcmF0ZUhlYWRlcgorewor
ICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKworICAg
ICMgTWFrZSBzdXJlIHRoYXQgd2UgZG9uJ3QgaGF2ZSBtb3JlIHRoYW4gb25lIHBhcmVudC4KKyAg
ICBpZiAoQHskZGF0YU5vZGUtPnBhcmVudHN9ID4gMSkgeworICAgICAgICBkaWUgIkEgY2xhc3Mg
Y2FuJ3QgaGF2ZSBtb3JlIHRoYW4gb25lIHBhcmVudC4iOworICAgIH0KKworICAgIG15ICRpbnRl
cmZhY2VOYW1lID0gJGRhdGFOb2RlLT5uYW1lOworICAgIG15ICRjbGFzc05hbWUgPSAiRE9NJGlu
dGVyZmFjZU5hbWUiOworICAgIG15ICRwYXJlbnRDbGFzc05hbWUgPSAiRE9NIiAuIEdldFBhcmVu
dENsYXNzTmFtZSgkZGF0YU5vZGUpOworICAgIG15ICRjb25kaXRpb25hbCA9ICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn07CisKKyAgICBteSAkbnVtQ29uc3Rh
bnRzID0gQHskZGF0YU5vZGUtPmNvbnN0YW50c307CisgICAgbXkgJG51bUF0dHJpYnV0ZXMgPSBA
eyRkYXRhTm9kZS0+YXR0cmlidXRlc307CisgICAgbXkgJG51bUZ1bmN0aW9ucyA9IEB7JGRhdGFO
b2RlLT5mdW5jdGlvbnN9OworCisgICAgIyAtIEFkZCBkZWZhdWx0IGhlYWRlciB0ZW1wbGF0ZQor
ICAgIEBoZWFkZXJDb250ZW50SGVhZGVyID0gc3BsaXQoIlxyIiwgJGhlYWRlclRlbXBsYXRlKTsK
KyAgICAKKyAgICAjIC0gQWRkIHByb3RlY3Rpb24gYWdhaW5zdCB1bnN1cHBvcnRlZCBtb2R1bGVz
CisgICAgcHVzaChAaGVhZGVyQ29udGVudEhlYWRlciwgIlxuI2lmICR7Y29uZGl0aW9uYWx9X1NV
UFBPUlRcbiIpIGlmICRjb25kaXRpb25hbDsKKworICAgICMgLSBJTkNMVURFUyAtCisgICAgcHVz
aChAaGVhZGVyQ29udGVudEhlYWRlciwgIlxuI2ltcG9ydCBcIiRwYXJlbnRDbGFzc05hbWUuaFwi
IC8vIHBhcmVudCBjbGFzc1xuXG4iKTsKKworCisgICAgIyAtIEFkZCBjb25zdGFudHMuCisgICAg
aWYgKCRudW1Db25zdGFudHMgPiAwKSB7CisgICAgICAgIG15IEBoZWFkZXJDb25zdGFudHMgPSAo
KTsKKyAgICAgICAgZm9yZWFjaCBteSAkY29uc3RhbnQgKEB7JGRhdGFOb2RlLT5jb25zdGFudHN9
KSB7CisKKyAgICAgICAgICAgIG15ICRjb25zdGFudE5hbWUgPSAkY29uc3RhbnQtPm5hbWU7Cisg
ICAgICAgICAgICBteSAkY29uc3RhbnRWYWx1ZSA9ICRjb25zdGFudC0+dmFsdWU7CisgICAgICAg
ICAgICBteSAkb3V0cHV0ID0gIiAgICBET01fIiAuICRjb25zdGFudE5hbWUgLiAiID0gIiAuICRj
b25zdGFudFZhbHVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb25z
dGFudHMsICRvdXRwdXQpOworICAgICAgICB9CisgICAgICAgIG15ICRjb21iaW5lZENvbnN0YW50
cyA9IGpvaW4oIixcbiIsIEBoZWFkZXJDb25zdGFudHMpOworCisgICAgICAgICMgRklYTUU6IHRo
ZSBmb3JtYXR0aW5nIG9mIHRoZSBlbnVtcyBzaG91bGQgbGluZSB1cCB0aGUgZXF1YWwgc2lnbnMu
CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbi8vIENvbnN0YW50c1xuIik7CisgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJlbnVtIHtcbiIpOworICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAkY29tYmluZWRDb25zdGFudHMpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiXG59O1xuIik7ICAgICAgICAKKyAgICB9CisgICAgCisgICAgIyAtIEJlZ2luIEBpbnRl
cmZhY2UgCisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuXEBpbnRlcmZhY2UgJGNsYXNzTmFt
ZSA6ICRwYXJlbnRDbGFzc05hbWVcbiIpOworCisgICAgIyAtIEFkZCBhdHRyaWJ1dGUgZ2V0dGVy
cy9zZXR0ZXJzLgorICAgIGlmICgkbnVtQXR0cmlidXRlcyA+IDApIHsKKyAgICAgICAgbXkgQGhl
YWRlckF0dHJpYnV0ZXMgPSAoKTsKKworICAgICAgICBmb3JlYWNoIChAeyRkYXRhTm9kZS0+YXR0
cmlidXRlc30pIHsKKyAgICAgICAgICAgIG15ICRhdHRyaWJ1dGUgPSAkXzsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Ik9iakNQcml2YXRlIn0pIHsKKyAgICAgICAgICAgICAgICAjIEZJWE1FOiBmb3Igbm93
LCBqdXN0IHNraXAgbWV0aG9kcyBub3QgYXBwcm92ZWQgZm9yIEFQSSB5ZXQKKyAgICAgICAgICAg
ICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBZGRGb3J3YXJkRGVjbGFy
YXRpb25zRm9yVHlwZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOworCisgICAgICAgICAg
ICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAg
ICAgICAgIG15ICRhdHRyaWJ1dGVUeXBlID0gR2V0T2JqQ1R5cGUoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT50eXBlKTsKKyAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVJc1JlYWRvbmx5ID0gKCRhdHRy
aWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8pOworICAgIAorICAgICAgICAgICAgIyAtIEdFVFRF
UgorICAgICAgICAgICAgbXkgJGdldHRlciA9ICItICgiIC4gJGF0dHJpYnV0ZVR5cGUgLiAiKSIg
LiAkYXR0cmlidXRlTmFtZSAuICI7XG4iOworICAgICAgICAgICAgcHVzaChAaGVhZGVyQXR0cmli
dXRlcywgJGdldHRlcik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICMgLSBTRVRURVIKKyAg
ICAgICAgICAgIGlmICghJGF0dHJpYnV0ZUlzUmVhZG9ubHkpIHsKKyAgICAgICAgICAgICAgICBt
eSAkc2V0dGVyID0gIi0gKHZvaWQpc2V0IiAuIHVjZmlyc3QoJGF0dHJpYnV0ZU5hbWUpIC4gIjoo
IiAuICRhdHRyaWJ1dGVUeXBlIC4gIikiIC4gJGF0dHJpYnV0ZU5hbWUgLiAiO1xuIjsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBoZWFkZXJBdHRyaWJ1dGVzLCAkc2V0dGVyKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChAaGVhZGVyQXR0cmlidXRlcyA+IDApIHsKKyAg
ICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbi8vIEF0dHJpYnV0ZXNcbiIpOworICAg
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgQGhlYWRlckF0dHJpYnV0ZXMpOworICAgICAg
ICB9CisgICAgfQorCisgICAgIyAtIEFkZCBmdW5jdGlvbnMuCisgICAgaWYgKCRudW1GdW5jdGlv
bnMgPiAwKSB7CisgICAgICAgIG15IEBoZWFkZXJGdW5jdGlvbnMgPSAoKTsKKworICAgICAgICBm
b3JlYWNoIChAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSkgeworICAgICAgICAgICAgbXkgJGZ1bmN0
aW9uID0gJF87CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9iakNQcml2YXRlIn0pIHsKKyAgICAgICAgICAg
ICAgICAjIEZJWE1FOiBmb3Igbm93LCBqdXN0IHNraXAgbWV0aG9kcyBub3QgYXBwcm92ZWQgZm9y
IEFQSSB5ZXQKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBBZGRGb3J3YXJkRGVjbGFyYXRpb25zRm9yVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
dHlwZSk7CisKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+bmFtZTsKKyAgICAgICAgICAgIG15ICRyZXR1cm5UeXBlID0gR2V0T2JqQ1R5cGUoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpOworICAgICAgICAgICAgbXkgJG51bWJlck9mUGFyYW1l
dGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKKworICAgICAgICAgICAgbXkgJG91dHB1
dCA9ICItICgkcmV0dXJuVHlwZSkkZnVuY3Rpb25OYW1lIjsKKyAgICAgICAgICAgIGZvcmVhY2gg
bXkgJHBhcmFtIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKKyAgICAgICAgICAgICAgICBt
eSAkcGFyYW1OYW1lID0gJHBhcmFtLT5uYW1lOworICAgICAgICAgICAgICAgIG15ICRwYXJhbVR5
cGUgPSBHZXRPYmpDVHlwZSgkcGFyYW0tPnR5cGUpOworICAgICAgICAgICAgICAgIEFkZEZvcndh
cmREZWNsYXJhdGlvbnNGb3JUeXBlKCRwYXJhbS0+dHlwZSk7CisKKyAgICAgICAgICAgICAgICAk
b3V0cHV0IC49ICI6KCRwYXJhbVR5cGUpJHBhcmFtTmFtZSI7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAkb3V0cHV0IC49ICI7XG4iOworCisgICAgICAgICAgICBwdXNoKEBoZWFkZXJGdW5j
dGlvbnMsICRvdXRwdXQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKEBoZWFkZXJGdW5jdGlv
bnMgPiAwKSB7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4vLyBGdW5jdGlv
bnNcbiIpOworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgQGhlYWRlckZ1bmN0aW9u
cyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAjIC0gRW5kIEBpbnRlcmZhY2UgCisgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIlxuXEBlbmRcbiIpOworCisgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIlxuI2VuZGlmIC8vICR7Y29uZGl0aW9uYWx9X1NVUFBPUlRcbiIpIGlmICRjb25kaXRpb25h
bDsKKworfQorCitzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgoreworICAgIG15ICRvYmplY3Qg
PSBzaGlmdDsKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKworICAgIG15ICRpbnRlcmZhY2VO
YW1lID0gJGRhdGFOb2RlLT5uYW1lOworICAgIG15ICRjbGFzc05hbWUgPSAiRE9NJGludGVyZmFj
ZU5hbWUiOworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gIldlYkNvcmU6OiRpbnRlcmZhY2VOYW1l
IjsKKyAgICBteSAkcGFyZW50SW1wbENsYXNzTmFtZSA9IEdldFBhcmVudENsYXNzTmFtZSgkZGF0
YU5vZGUpOworCisgICAgbXkgJGNvbmRpdGlvbmFsID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ29uZGl0aW9uYWwifTsKKworICAgIG15ICRudW1BdHRyaWJ1dGVzID0gQHskZGF0
YU5vZGUtPmF0dHJpYnV0ZXN9OworICAgIG15ICRudW1GdW5jdGlvbnMgPSBAeyRkYXRhTm9kZS0+
ZnVuY3Rpb25zfTsKKworCisgICAgIyAtIEFkZCBkZWZhdWx0IGhlYWRlciB0ZW1wbGF0ZS4KKyAg
ICBAaW1wbENvbnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkaGVhZGVyVGVtcGxhdGUpOworCisg
ICAgIyAtIEFkZCBwcm90ZWN0aW9uIGFnYWluc3QgdW5zdXBwb3J0ZWQgbW9kdWxlcy4KKyAgICBw
dXNoKEBpbXBsQ29udGVudEhlYWRlciwgIlxuI2lmZGVmICR7Y29uZGl0aW9uYWx9X1NVUFBPUlRc
biIpIGlmICRjb25kaXRpb25hbDsKKworICAgICMgLSBJTkNMVURFUyAtCisgICAgcHVzaChAaW1w
bENvbnRlbnRIZWFkZXIsICJcbiNpbXBvcnQgXCJjb25maWcuaFwiXG4iKTsKKyAgICBwdXNoKEBp
bXBsQ29udGVudEhlYWRlciwgIiNpbXBvcnQgXCIkY2xhc3NOYW1lLmhcIlxuXG4iKTsKKworICAg
IGlmICgkbnVtQXR0cmlidXRlcyArICRudW1GdW5jdGlvbnMgPiAwKSB7CisgICAgICAgICMgTkVF
REVEIGZvciBET01fQ0FTVAorICAgICAgICBwdXNoKEBpbXBsQ29udGVudEhlYWRlciwgIiNpbXBv
cnQgXCJET01JbnRlcm5hbC5oXCIgLy8gbmVlZGVkIGZvciBET01fY2FzdDw+XG4iKTsKKyAgICAg
ICAgCisgICAgICAgICMgaW5jbHVkZSBtb2R1bGUgZGVwZW5kYW50IGludGVybmFsIGludGVyZmFj
ZXMgCisgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSA9fiAvXkhUTUwvKSB7CisgICAgICAgICAg
ICAjIEhUTUwgbW9kdWxlIGludGVybmFsIGludGVyZmFjZXMKKyAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50SGVhZGVyLCAiI2ltcG9ydCBcIkRPTUhUTUxJbnRlcm5hbC5oXCJcbiIpOworICAg
ICAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFtZSA9fiAvXkNTUy8gb3IgJGludGVyZmFjZU5hbWUg
ZXEgIlJlY3QiIG9yICRpbnRlcmZhY2VOYW1lIGVxICJDb3VudGVyIikgeworICAgICAgICAgICAg
IyBDU1MgbW9kdWxlIGludGVybmFsIGludGVyZmFjZXMKKyAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50SGVhZGVyLCAiI2ltcG9ydCBcIkRPTUNTU0ludGVybmFsLmhcIlxuIik7CisgICAgICAg
IH0KKworICAgICAgICAjIGluY2x1ZGUgSW1wbGVtZW50YXRpb24gY2xhc3MKKyAgICAgICAgcHVz
aChAaW1wbENvbnRlbnRIZWFkZXIsICIjaW1wb3J0IFwiJGludGVyZmFjZU5hbWUuaFwiIC8vIGlt
cGxlbWVudGF0aW9uIGNsYXNzXG4iKTsKKyAgICB9CisKKyAgICBAaW1wbENvbnRlbnQgPSAoKTsK
KworICAgICMgU1RBUlQgaW1wbGVtZW50YXRpb24KKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxu
XEBpbXBsZW1lbnRhdGlvbiAkY2xhc3NOYW1lXG5cbiIpOworICAgIAorICAgICMgQUREIElOVEVS
TkFMIENBU1RJTkcgTUVUSE9ECisgICAgbXkgJGludGVybmFsQ2FzdGluZ05hbWUgPSAiXyRpbnRl
cmZhY2VOYW1lIjsKKyAgICBteSAkaW1wbGVtZW50YXRpb24gPSAiW3NlbGYgJGludGVybmFsQ2Fz
dGluZ05hbWVdIjsKKyAgICAKKyAgICBpZiAoJG51bUF0dHJpYnV0ZXMgKyAkbnVtRnVuY3Rpb25z
ID4gMCkgeworICAgICAgICBpZiAoJHBhcmVudEltcGxDbGFzc05hbWUgZXEgIkRPTU9iamVjdCIp
IHsKKyAgICAgICAgICAgICMgR2VuZXJhdGUgJ2RlYWxsb2MnIGFuZCAnZmluYWxpemUnIG1ldGhv
ZHMgaWYgbmVlZGVkLgorCisgICAgICAgICAgICBkaWUgIldlIHNob3VsZCBub3QgaGF2ZSBhbnkg
aW50ZXJmYWNlcyB0aGF0IGFyZSBkaXJlY3QgY2hpbGRyZW4gb2YgRE9NT2JqZWN0IHlldCEiOwor
CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIi0gKHZvaWQpZGVhbGxvY1xuIik7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKF9pbnRlcm5hbClcbiIpOworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIERPTV9jYXN0PCRpbXBsQ2xhc3NOYW1lICo+KF9pbnRlcm5h
bCktPmRlcmVmKCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFtz
dXBlciBkZWFsbG9jXTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5c
biIpOworCisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIi0gKHZvaWQpZmluYWxpemVc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChfaW50ZXJuYWwpXG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBET01fY2FzdDwkaW1wbENsYXNzTmFtZSAqPihf
aW50ZXJuYWwpLT5kZXJlZigpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBbc3VwZXIgZmluYWxpemVdO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIn1cblxuIik7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgbXkgJGludGVybmFsQmFzZVR5
cGU7CisgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiQ1NTUHJpbWl0aXZlVmFsdWUiKSB7
CisgICAgICAgICAgICAjIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBhIHJlZ2V4IG1hdGNoaW5nIENT
Uy4uLlZhbHVlLgorICAgICAgICAgICAgJGludGVybmFsQmFzZVR5cGUgPSAiV2ViQ29yZTo6Q1NT
VmFsdWUiCisgICAgICAgIH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJDU1NJbXBvcnRSdWxl
IiBvciAkaW50ZXJmYWNlTmFtZSBlcSAiQ1NTRm9udEZhY2VSdWxlIikgeworICAgICAgICAgICAg
IyBGSVhNRTogdGhpcyBzaG91bGQgYmUgYSByZWdleCBtYXRjaGluZyBDU1MuLi5SdWxlLgorICAg
ICAgICAgICAgJGludGVybmFsQmFzZVR5cGUgPSAiV2ViQ29yZTo6Q1NTUnVsZSIKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICRpbnRlcm5hbEJhc2VUeXBlID0gIldlYkNvcmU6Ok5vZGUi
CisgICAgICAgIH0KKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICItICgkaW1wbENsYXNzTmFt
ZSAqKSRpbnRlcm5hbENhc3RpbmdOYW1lXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHN0YXRpY19j
YXN0PCRpbXBsQ2xhc3NOYW1lICo+KERPTV9jYXN0PCRpbnRlcm5hbEJhc2VUeXBlICo+KF9pbnRl
cm5hbCkpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICB9
CisKKyAgICAjIC0gQXR0cmlidXRlcworICAgIGlmICgkbnVtQXR0cmlidXRlcyA+IDApIHsKKyAg
ICAgICAgZm9yZWFjaCAoQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9KSB7CisgICAgICAgICAgICBt
eSAkYXR0cmlidXRlID0gJF87CisKKyAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPYmpDUHJpdmF0ZSJ9KSB7CisgICAgICAgICAgICAg
ICAgIyBGSVhNRTogZm9yIG5vdywganVzdCBza2lwIG1ldGhvZHMgbm90IGFwcHJvdmVkIGZvciBB
UEkgeWV0CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgQWRkSW5jbHVkZXNGb3JUeXBlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7CisKKyAg
ICAgICAgICAgIG15ICRhdHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1l
OworICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZVR5cGUgPSBHZXRPYmpDVHlwZSgkYXR0cmlidXRl
LT5zaWduYXR1cmUtPnR5cGUpOworICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZUlzUmVhZG9ubHkg
PSAoJGF0dHJpYnV0ZS0+dHlwZSA9fiAvXnJlYWRvbmx5Lyk7CisKKyAgICAgICAgICAgICMgLSBH
RVRURVIKKyAgICAgICAgICAgIG15ICRnZXR0ZXJTaWcgPSAiLSAoJGF0dHJpYnV0ZVR5cGUpJGF0
dHJpYnV0ZU5hbWVcbiI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICMgRXhjZXB0aW9uIGhh
bmRsaW5nCisgICAgICAgICAgICBteSAkaGFzR2V0dGVyRXhjZXB0aW9uID0gQHskYXR0cmlidXRl
LT5nZXR0ZXJFeGNlcHRpb25zfTsKKyAgICAgICAgICAgIGlmICgkaGFzR2V0dGVyRXhjZXB0aW9u
KSB7CisgICAgICAgICAgICAgICAgZGllICJXZSBzaG91bGQgbm90IGhhdmUgYW55IGdldHRlciBl
eGNlcHRpb25zIHlldCEiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICAjIEZJWE1FOiBtb3ZlIHRoaXMgb3V0IGludG8gaXRzIG93biBmdW5jdGlvbi4KKyAgICAgICAg
ICAgIG15ICRnZXR0ZXJDb250ZW50SGVhZCA9ICIiOworICAgICAgICAgICAgbXkgJGdldHRlckNv
bnRlbnRUYWlsID0gIiI7CisgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZVR5cGUgZXEgIkRPTU5h
bWVkTm9kZU1hcCAqIikgeworICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICJb
RE9NTmFtZWROb2RlTWFwIF9uYW1lZE5vZGVNYXBXaXRoOiRpbXBsZW1lbnRhdGlvbi0+JGF0dHJp
YnV0ZU5hbWUoIjsKKyAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudFRhaWwgPSAiKV0iOwor
ICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZVR5cGUgZXEgIkRPTUhUTUxDb2xsZWN0aW9u
ICoiKSB7CisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIltET01IVE1MQ29s
bGVjdGlvbiBfY29sbGVjdGlvbldpdGg6JGltcGxlbWVudGF0aW9uLT4kYXR0cmlidXRlTmFtZSgi
OworICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50VGFpbCA9ICIpLmdldCgpXSI7CisgICAg
ICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlVHlwZSBlcSAiRE9NSFRNTEZvcm1FbGVtZW50ICoi
KSB7CisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIltET01IVE1MRm9ybUVs
ZW1lbnQgX2Zvcm1FbGVtZW50V2l0aDokaW1wbGVtZW50YXRpb24tPiRhdHRyaWJ1dGVOYW1lKCI7
CisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRUYWlsID0gIildIjsKKyAgICAgICAgICAg
IH0gZWxzaWYgKCRhdHRyaWJ1dGVUeXBlIGVxICJET01FbGVtZW50ICoiKSB7CisgICAgICAgICAg
ICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIltET01FbGVtZW50IF9lbGVtZW50V2l0aDokaW1w
bGVtZW50YXRpb24tPiRhdHRyaWJ1dGVOYW1lKCI7CisgICAgICAgICAgICAgICAgJGdldHRlckNv
bnRlbnRUYWlsID0gIildIjsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGVUeXBlIGVx
ICJET01DU1NTdHlsZURlY2xhcmF0aW9uICoiKSB7CisgICAgICAgICAgICAgICAgJGdldHRlckNv
bnRlbnRIZWFkID0gIltET01DU1NTdHlsZURlY2xhcmF0aW9uIF9zdHlsZURlY2xhcmF0aW9uV2l0
aDokaW1wbGVtZW50YXRpb24tPiRhdHRyaWJ1dGVOYW1lKCI7CisgICAgICAgICAgICAgICAgJGdl
dHRlckNvbnRlbnRUYWlsID0gIildIjsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGVU
eXBlIGVxICJET01NZWRpYUxpc3QgKiIpIHsKKyAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVu
dEhlYWQgPSAiW0RPTU1lZGlhTGlzdCBfbWVkaWFMaXN0V2l0aDokaW1wbGVtZW50YXRpb24tPiRh
dHRyaWJ1dGVOYW1lKCI7CisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRUYWlsID0gIild
IjsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGVUeXBlIGVxICJET01DU1NTdHlsZVNo
ZWV0ICoiKSB7CisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIltET01DU1NT
dHlsZVNoZWV0IF9DU1NTdHlsZVNoZWV0V2l0aDokaW1wbGVtZW50YXRpb24tPiRhdHRyaWJ1dGVO
YW1lKCI7CisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRUYWlsID0gIildIjsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgIyBDT01NT04gQ0FTRQorICAgICAgICAg
ICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICIkaW1wbGVtZW50YXRpb24tPiRhdHRyaWJ1dGVO
YW1lKCI7CisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRUYWlsID0gIikiOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBteSAkZ2V0dGVy
Q29udGVudDsKKyAgICAgICAgICAgIGlmICgkaGFzR2V0dGVyRXhjZXB0aW9uKSB7CisgICAgICAg
ICAgICAgICAgJGdldHRlckNvbnRlbnQgPSAkZ2V0dGVyQ29udGVudEhlYWQgLiAiZWMiIC4gJGdl
dHRlckNvbnRlbnRUYWlsOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAk
Z2V0dGVyQ29udGVudCA9ICRnZXR0ZXJDb250ZW50SGVhZCAuICRnZXR0ZXJDb250ZW50VGFpbDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICRnZXR0ZXJTaWcpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUgZWMgPSAwO1xuIikgaWYgJGhhc0dldHRlckV4Y2VwdGlvbjsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJldHVybiAkZ2V0dGVyQ29udGVudDtcbiIpOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmFpc2VPbkRPTUVycm9yKGVjKTtcbiIpIGlmICRo
YXNHZXR0ZXJFeGNlcHRpb247CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7CisKKyAgICAgICAgICAgICMgLSBTRVRURVIKKyAgICAgICAgICAgIGlmICghJGF0dHJpYnV0
ZUlzUmVhZG9ubHkpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICMgRXhjZXB0aW9u
IGhhbmRsaW5nCisgICAgICAgICAgICAgICAgbXkgJGhhc1NldHRlckV4Y2VwdGlvbiA9IEB7JGF0
dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9uc307CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgbXkgJHNldHRlck5hbWUgPSAic2V0IiAuIHVjZmlyc3QoJGF0dHJpYnV0ZU5hbWUpOwor
ICAgICAgICAgICAgICAgIG15ICRzZXR0ZXJTaWcgPSAiLSAodm9pZCkkc2V0dGVyTmFtZTooJGF0
dHJpYnV0ZVR5cGUpJGF0dHJpYnV0ZU5hbWVcbiI7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRzZXR0ZXJTaWcpOworICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgaWYgKCRoYXNTZXR0ZXJFeGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgIyBG
SVhNRTogYXNzZXJ0cyBleHNpc3QgaW4gdGhlIGV4c2lzdGluZyBiaW5kaW5ncywgYnV0IEkgYW0g
dW5zdXJlIHdoeSB0aGV5IGFyZSAKKyAgICAgICAgICAgICAgICAgICAgIyB0aGVyZSBpbiB0aGUg
Zmlyc3QgcGxhY2U7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEFTU0VSVCgkYXR0cmlidXRlTmFtZSk7XG5cbiIpOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlIGVjID0gMDtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAkaW1wbGVtZW50YXRpb24tPiRzZXR0ZXJOYW1lKCRhdHRyaWJ1dGVOYW1lLCBlYyk7XG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmFpc2VPbkRP
TUVycm9yKGVjKTtcbiIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsZW1lbnRhdGlvbi0+JHNldHRlck5h
bWUoJGF0dHJpYnV0ZU5hbWUpO1xuIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgICMgLSBGdW5jdGlvbnMKKyAgICBpZiAo
JG51bUZ1bmN0aW9ucyA+IDApIHsKKyAgICAgICAgZm9yZWFjaCAoQHskZGF0YU5vZGUtPmZ1bmN0
aW9uc30pIHsKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbiA9ICRfOworCisgICAgICAgICAgICBp
ZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPYmpDUHJpdmF0
ZSJ9KSB7CisgICAgICAgICAgICAgICAgIyBGSVhNRTogZm9yIG5vdywganVzdCBza2lwIG1ldGhv
ZHMgbm90IGFwcHJvdmVkIGZvciBBUEkgeWV0CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCRmdW5jdGlvbi0+c2ln
bmF0dXJlLT50eXBlKTsKKworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICAgICAgbXkgJHJldHVyblR5cGUgPSBHZXRPYmpD
VHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAgICAgICBteSAkaGFzUGFy
YW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKKyAgICAgICAgICAgIG15ICRyYWlz
ZXNFeGNlcHRpb25zID0gQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnN9OworCisgICAgICAg
ICAgICBteSBAcGFyYW1ldGVyTmFtZXMgPSAoKTsKKworICAgICAgICAgICAgbXkgJGZ1bmN0aW9u
U2lnID0gIi0gKCRyZXR1cm5UeXBlKSRmdW5jdGlvbk5hbWUiOworICAgICAgICAgICAgZm9yZWFj
aCAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7CisgICAgICAgICAgICAgICAgbXkgJHBhcmFt
ID0gJF87CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbXkgJHBhcmFtVHlwZSA9
IEdldE9iakNUeXBlKCRwYXJhbS0+dHlwZSk7CisgICAgICAgICAgICAgICAgQWRkSW5jbHVkZXNG
b3JUeXBlKCRwYXJhbS0+dHlwZSk7CisKKyAgICAgICAgICAgICAgICBteSAkcGFyYW1OYW1lID0g
JHBhcmFtLT5uYW1lOworICAgICAgICAgICAgICAgIHB1c2goQHBhcmFtZXRlck5hbWVzLCAkcGFy
YW1OYW1lKTsKKworICAgICAgICAgICAgICAgICRmdW5jdGlvblNpZyAuPSAiOigkcGFyYW1UeXBl
KSRwYXJhbU5hbWUiOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAKKyAgICAgICAgICAg
IG15IEBmdW5jdGlvbkNvbnRlbnQgPSAoKTsKKworICAgICAgICAgICAgaWYgKCRyZXR1cm5UeXBl
IGVxICJ2b2lkIikgeworICAgICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlICd2b2lkJyByZXR1
cm4gdHlwZS4KKworICAgICAgICAgICAgICAgIG15ICRmdW5jdGlvbkNvbnRlbnRIZWFkID0gIiRp
bXBsZW1lbnRhdGlvbi0+JGZ1bmN0aW9uTmFtZSgiOworICAgICAgICAgICAgICAgIG15ICRmdW5j
dGlvbkNvbnRlbnRUYWlsID0gIik7XG4iOworICAgICAgICAgICAgICAgIG15ICRjb250ZW50ID0g
IiI7CisKKyAgICAgICAgICAgICAgICBpZiAoJGhhc1BhcmFtZXRlcnMpIHsKKyAgICAgICAgICAg
ICAgICAgICAgbXkgJHBhcmFtcyA9IGpvaW4oIiwgIiwgQHBhcmFtZXRlck5hbWVzKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCRyYWlzZXNFeGNlcHRpb25zKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAkY29udGVudCA9ICRmdW5jdGlvbkNvbnRlbnRIZWFkIC4gJHBhcmFtcyAuICIsIGVj
IiAuICRmdW5jdGlvbkNvbnRlbnRUYWlsOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkZnVuY3Rpb25Db250ZW50SGVhZCAu
ICRwYXJhbXMgLiAkZnVuY3Rpb25Db250ZW50VGFpbDsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgkcmFpc2Vz
RXhjZXB0aW9ucykgeworICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkZnVuY3Rp
b25Db250ZW50SGVhZCAuICJlYyIgLiAkZnVuY3Rpb25Db250ZW50VGFpbDsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gJGZ1
bmN0aW9uQ29udGVudEhlYWQgLiAkZnVuY3Rpb25Db250ZW50VGFpbDsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBpZiAoJHJhaXNlc0V4Y2VwdGlvbnMpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChA
ZnVuY3Rpb25Db250ZW50LCAiICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7
CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICAkY29udGVu
dCIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgcmFp
c2VPbkRPTUVycm9yKGVjKTtcbiIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICAkY29udGVudCIpOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBteSAkZnVuY3Rpb25Db250ZW50SGVhZDsKKyAgICAgICAgICAgICAg
ICBteSAkZnVuY3Rpb25Db250ZW50VGFpbDsKKworICAgICAgICAgICAgICAgIGlmICgkcmV0dXJu
VHlwZSBlcSAiRE9NQ291bnRlciAqIikgeworICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25D
b250ZW50SGVhZCA9ICJbRE9NQ291bnRlciBfY291bnRlcldpdGg6JHtpbXBsZW1lbnRhdGlvbn0t
PiR7ZnVuY3Rpb25OYW1lfSgiOworICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25Db250ZW50
VGFpbCA9ICIpXTtcbiI7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHJldHVyblR5cGUgZXEg
IkRPTVJlY3QgKiIpIHsKKyAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uQ29udGVudEhlYWQg
PSAiW0RPTVJlY3QgX3JlY3RXaXRoOiR7aW1wbGVtZW50YXRpb259LT4ke2Z1bmN0aW9uTmFtZX0o
IjsKKyAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uQ29udGVudFRhaWwgPSAiKV07XG4iOwor
ICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRyZXR1cm5UeXBlIGVxICJET01SR0JDb2xvciAqIikg
eworICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25Db250ZW50SGVhZCA9ICJbRE9NUkdCQ29s
b3IgX1JHQkNvbG9yV2l0aFJHQjoke2ltcGxlbWVudGF0aW9ufS0+JHtmdW5jdGlvbk5hbWV9KCI7
CisgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvbkNvbnRlbnRUYWlsID0gIildO1xuIjsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25Db250
ZW50SGVhZCA9ICIkaW1wbGVtZW50YXRpb24tPiRmdW5jdGlvbk5hbWUoIjsKKyAgICAgICAgICAg
ICAgICAgICAgJGZ1bmN0aW9uQ29udGVudFRhaWwgPSAiKTtcbiI7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgbXkgJGNvbnRlbnQgPSAiIjsKKworICAgICAgICAgICAgICAg
IGlmICgkaGFzUGFyYW1ldGVycykgeworICAgICAgICAgICAgICAgICAgICBteSAkcGFyYW1zID0g
am9pbigiLCAiICwgQHBhcmFtZXRlck5hbWVzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRy
YWlzZXNFeGNlcHRpb25zKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAjIEEgdGVtcGFyYXJ5
IHZhcmlhYmxlIGlzIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0g
IiRyZXR1cm5UeXBlIHJlc3VsdCA9ICIgLiAkZnVuY3Rpb25Db250ZW50SGVhZCAuICRwYXJhbXMg
LiAiLCBlYyIgLiAkZnVuY3Rpb25Db250ZW50VGFpbDsKKyAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gJGZ1bmN0aW9uQ29udGVu
dEhlYWQgLiAkcGFyYW1zIC4gJGZ1bmN0aW9uQ29udGVudFRhaWw7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAo
JHJhaXNlc0V4Y2VwdGlvbnMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICMgQSB0ZW1wYXJh
cnkgdmFyaWFibGUgaXMgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQg
PSAiJHJldHVyblR5cGUgcmVzdWx0ID0gIiAuICRmdW5jdGlvbkNvbnRlbnRIZWFkIC4gImVjIiAu
ICRmdW5jdGlvbkNvbnRlbnRUYWlsOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkZnVuY3Rpb25Db250ZW50SGVhZCAuICRm
dW5jdGlvbkNvbnRlbnRUYWlsOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICgkcmFpc2VzRXhjZXB0
aW9ucykgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgICRjb250ZW50Iik7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICByYWlzZU9uRE9NRXJyb3IoZWMpO1xuIik7
CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICByZXR1cm4g
cmVzdWx0OyIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICByZXR1cm4gJGNvbnRlbnQiKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIkZnVuY3Rpb25TaWdcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBAZnVuY3Rp
b25Db250ZW50KTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgICMgRU5EIGltcGxlbWVudGF0aW9uCisgICAgcHVzaChAaW1w
bENvbnRlbnQsICJcQGVuZFxuIik7CisgICAgCisgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNl
bmRpZiAvLyAke2NvbmRpdGlvbmFsfV9TVVBQT1JUXG4iKSBpZiAkY29uZGl0aW9uYWw7Cit9CisK
KyMgSW50ZXJuYWwgaGVscGVyCitzdWIgV3JpdGVEYXRhCit7CisgICAgaWYgKGRlZmluZWQoJElN
UEwpKSB7CisgICAgICAgICMgV3JpdGUgY29udGVudCB0byBmaWxlLgorICAgICAgICBwcmludCAk
SU1QTCBAaW1wbENvbnRlbnRIZWFkZXI7CisgICAgICAgIAorICAgICAgICBmb3JlYWNoIG15ICRp
bXBsSW5jbHVkZSAoc29ydCBrZXlzKCVpbXBsSW5jbHVkZXMpKSB7CisgICAgICAgICAgICBwcmlu
dCAkSU1QTCAiI2ltcG9ydCBcIiRpbXBsSW5jbHVkZVwiXG4iOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBwcmludCAkSU1QTCBAaW1wbENvbnRlbnQ7CisgICAgICAgIGNsb3NlKCRJTVBM
KTsKKyAgICAgICAgdW5kZWYoJElNUEwpOworICAgICAgICAKKyAgICAgICAgQGltcGxIZWFkZXJD
b250ZW50ID0gIiI7CisgICAgICAgIEBpbXBsQ29udGVudCA9ICIiOyAgICAKKyAgICAgICAgJWlt
cGxJbmNsdWRlcyA9ICgpOworICAgIH0KKyAgICAgICAgCisgICAgaWYgKGRlZmluZWQoJEhFQURF
UikpIHsKKyAgICAgICAgIyBXcml0ZSBjb250ZW50IHRvIGZpbGUuCisgICAgICAgIHByaW50ICRI
RUFERVIgQGhlYWRlckNvbnRlbnRIZWFkZXI7CisgICAgICAgIAorICAgICAgICBmb3JlYWNoIG15
ICRmb3J3YXJkRGVjbGFyYXRpb24gKHNvcnQga2V5cyglaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9u
cykpIHsKKyAgICAgICAgICAgIHByaW50ICRIRUFERVIgIlxAY2xhc3MgJGZvcndhcmREZWNsYXJh
dGlvbjtcbiI7CisgICAgICAgIH0KKworICAgICAgICBwcmludCAkSEVBREVSIEBoZWFkZXJDb250
ZW50OworICAgICAgICBjbG9zZSgkSEVBREVSKTsKKyAgICAgICAgdW5kZWYoJEhFQURFUik7Cisg
ICAgICAgIAorICAgICAgICBAaGVhZGVyQ29udGVudEhlYWRlciA9ICIiOworICAgICAgICBAaGVh
ZGVyQ29udGVudCA9ICIiOworICAgICAgICAlaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9ucyA9ICgp
OworICAgIH0KK30KKworMTsKSW5kZXg6IFdlYkNvcmUvZG9tL0F0dHIuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL0F0dHIuaWRsCShyZXZpc2lvbiAxNTk1OSkKKysrIFdlYkNvcmUvZG9t
L0F0dHIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNh
bXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0zNCw3ICszNSw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgCiAgICAgICAgIC8vIGV4dGVu
c2lvbnMKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ1NTU3R5bGVEZWNsYXJhdGlvbiBz
dHlsZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtPYmpDUHJpdmF0ZV0gQ1NTU3R5bGVE
ZWNsYXJhdGlvbiBzdHlsZTsKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL2RvbS9DREFUQVNl
Y3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5pZGwJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaWRsCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVy
LCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0Bn
bWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt
cGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisg
Ki8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIENEQVRBU2VjdGlvbiA6IFRleHQg
eworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvZG9tL0NvbW1lbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL0NvbW1lbnQuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20v
Q29tbWVudC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBT
YW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgKiBCb3N0
b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRl
cmZhY2UgQ29tbWVudCA6IENoYXJhY3RlckRhdGEgeworICAgIH07CisKK30KSW5kZXg6IFdlYkNv
cmUvZG9tL0VudGl0eVJlZmVyZW5jZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRW50
aXR5UmVmZXJlbmNlLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0VudGl0eVJlZmVy
ZW5jZS5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11
ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgKiBCb3N0b24s
IE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZh
Y2UgRW50aXR5UmVmZXJlbmNlIDogTm9kZSB7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9k
b20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaWRsCShyZXZpc2lvbiAxNTk1OSkKKysrIFdlYkNvcmUvZG9t
L1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTI5LDcgKzMwLDcgQEAgbW9kdWxlIGNvcmUgewogCiAgICAgICAg
IC8vIGludGVyZmFjZSBMaW5rU3R5bGUgZnJvbSBET00gTGV2ZWwgMiBTdHlsZSBTaGVldHMKIAot
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgU3R5bGVTaGVldCBzaGVldDsKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFtPYmpDUHJpdmF0ZV0gU3R5bGVTaGVldCBzaGVldDsKIAogICAgIH07
CiAKSW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxv
ZwkocmV2aXNpb24gMTU5NTkpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMDYtMDgtMjEgIFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAt
IHBhdGNoIGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lk
PTQ2MjQKKyAgICAgICAgICBXZWJDb3JlIG5lZWRzIGF1dG9nZW5lcmF0ZWQgT2JqLUMgRE9NIGJp
bmRpbmdzCisgICAgICAgICAgCisgICAgICAgICAgRmlyc3Qgcm91bmQgb2YgYXV0by1nZW5lcmF0
ZWQgT2JqZWN0aXZlIEMgRE9NIGJpbmRpbmdzLiAgCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogSW1wb3J0cyBuZXdseSBzcGxpdCBiaW5kaW5nIGZpbGVzLgor
CiAyMDA2LTA4LTIxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBKb2huCkluZGV4OiBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxNTk1OSkKKysrIFdlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODY2LDE5ICs4NjYsMTcgQEAKIAkJOUM3Q0FC
QkIwMTkwQTM3QzBFQ0ExNkVBIC8qIFdlYlZpZXcgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAotCQkJCTY1OEE0MDk1MEExNDg1M0IwMDVFNjk4NyAvKiBXZWJEYXRh
U291cmNlSW50ZXJuYWwuaCAqLywKLQkJCQk2NTBGNzRFMjA5RTQ4OEY3MDAyMDExOEEgLyogV2Vi
VW5hcmNoaXZpbmdTdGF0ZS5oICovLAotCQkJCTY1MEY3NEUzMDlFNDg4RjcwMDIwMTE4QSAvKiBX
ZWJVbmFyY2hpdmluZ1N0YXRlLm0gKi8sCi0JCQkJNjU1MEI3QzUwOTlFRkFFOTAwOTBENzgxIC8q
IFdlYkFyY2hpdmVyLmggKi8sCi0JCQkJNjU1MEI3QzYwOTlFRkFFOTAwOTBENzgxIC8qIFdlYkFy
Y2hpdmVyLm0gKi8sCiAJCQkJRjUyQ0E2QkQwMkRGOUQwRjAxODYzNUNBIC8qIEhUTUwgKi8sCiAJ
CQkJNTFFOTRDMDcwNkMwMkNBMzAwQTlCMDlFIC8qIFBERiAqLywKIAkJCQk4MzczNDM1QTA2MjRF
RTBEMDBGM0IyODkgLyogV2ViQXJjaGl2ZS5oICovLAogCQkJCTgzNzM0MzVCMDYyNEVFMEQwMEYz
QjI4OSAvKiBXZWJBcmNoaXZlLm0gKi8sCisJCQkJNjU1MEI3QzUwOTlFRkFFOTAwOTBENzgxIC8q
IFdlYkFyY2hpdmVyLmggKi8sCisJCQkJNjU1MEI3QzYwOTlFRkFFOTAwOTBENzgxIC8qIFdlYkFy
Y2hpdmVyLm0gKi8sCiAJCQkJOTMzRDY1OTkwMzQxM0ZGMjAwODYzNUNFIC8qIFdlYkNsaXBWaWV3
LmggKi8sCiAJCQkJOTMzRDY1OUEwMzQxM0ZGMjAwODYzNUNFIC8qIFdlYkNsaXBWaWV3Lm0gKi8s
CiAJCQkJMzk0NDYwNzAwMjBGNTBFRDBFQ0ExNzY3IC8qIFdlYkRhdGFTb3VyY2UuaCAqLywKIAkJ
CQkzOTQ0NjA3MTAyMEY1MEVEMEVDQTE3NjcgLyogV2ViRGF0YVNvdXJjZS5tICovLAorCQkJCTY1
OEE0MDk1MEExNDg1M0IwMDVFNjk4NyAvKiBXZWJEYXRhU291cmNlSW50ZXJuYWwuaCAqLywKIAkJ
CQkzOTQ0NjA3MjAyMEY1MEVEMEVDQTE3NjcgLyogV2ViRGF0YVNvdXJjZVByaXZhdGUuaCAqLywK
IAkJCQkzNTA4MURBRTAyQjZENEY1MEFDQTJBQ0EgLyogV2ViRG9jdW1lbnQuaCAqLywKIAkJCQlF
RDIxQjk4MTA1MjhGN0FBMDAzMjk5QUMgLyogV2ViRG9jdW1lbnRJbnRlcm5hbC5oICovLApAQCAt
OTE0LDYgKzkxMiw4IEBACiAJCQkJN0U2RkVGMDcwODk4NUE3MjAwQzQ0QzNGIC8qIFdlYlNjcmlw
dERlYnVnRGVsZWdhdGVQcml2YXRlLmggKi8sCiAJCQkJNTE1RTI3Q0MwNDU4Qzg2NTAwQ0EyRDNB
IC8qIFdlYlVJRGVsZWdhdGUuaCAqLywKIAkJCQk2NUE3RDQ0QTA1NjhBQjI2MDBFNzBFRjYgLyog
V2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCAqLywKKwkJCQk2NTBGNzRFMjA5RTQ4OEY3MDAyMDExOEEg
LyogV2ViVW5hcmNoaXZpbmdTdGF0ZS5oICovLAorCQkJCTY1MEY3NEUzMDlFNDg4RjcwMDIwMTE4
QSAvKiBXZWJVbmFyY2hpdmluZ1N0YXRlLm0gKi8sCiAJCQkJNTFBOEI1NzkwNDI4MzRGNzAwQ0Ey
RDNBIC8qIFdlYlZpZXcuaCAqLywKIAkJCQk1MUE4QjU3QTA0MjgzNEY3MDBDQTJEM0EgLyogV2Vi
Vmlldy5tICovLAogCQkJCTkzMEQwMkJCMDYyNzVGNjQwMDc2NzAxRSAvKiBXZWJWaWV3SW50ZXJu
YWwuaCAqLywKQEAgLTEyMzEsNiArMTIzMSwyNCBAQAogCQkJYnVpbGRQaGFzZXMgPSAoCiAJCQkJ
OTNBRjUyODcwODI1NEIzMzAwNUQwMTU2IC8qIERPTS5oICovLAogCQkJCTkzQUY1MkE3MDgyNTRE
OEIwMDVEMDE1NiAvKiBET01Db3JlLmggKi8sCisJCQkJODUyNkQ3NEQwQThGRUYwMjAwOTIzNEIx
IC8qIERPTUF0dHIuaCAqLywKKwkJCQk4NTMxMUY2OTBBOEY5MDkxMDA1MTI1QzkgLyogRE9NQ0RB
VEFTZWN0aW9uLmggKi8sCisJCQkJODUyNkQ2QkYwQThGRTYwQjAwOTIzNEIxIC8qIERPTUNoYXJh
Y3RlckRhdGEuaCAqLywKKwkJCQk4NTMxMUY3MjBBOEY5MEY2MDA1MTI1QzkgLyogRE9NQ29tbWVu
dC5oICovLAorCQkJCTg1NkM4OURFMEE5MEUzODMwMDVDNjg3QiAvKiBET01Eb2N1bWVudC5oICov
LAorCQkJCTg1QzkwNjZGMEE4RkQxMUMwMEMzN0Q5MSAvKiBET01Eb2N1bWVudEZyYWdtZW50Lmgg
Ki8sCisJCQkJODVDOTA1RjMwQThGQ0NCMjAwQzM3RDkxIC8qIERPTURvY3VtZW50VHlwZS5oICov
LAorCQkJCTg1MzlCNTY1MEE5MDNFQjkwMDM2NkMyRCAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5o
ICovLAorCQkJCTg1QTVDNUUxMEE5MDMyQjMwMEY5MUYyQyAvKiBET01FbGVtZW50LmggKi8sCisJ
CQkJODUzMTFGNzUwQThGOTE2ODAwNTEyNUM5IC8qIERPTUVudGl0eS5oICovLAorCQkJCTg1MzEx
Rjg4MEE4RjkxRkUwMDUxMjVDOSAvKiBET01FbnRpdHlSZWZlcmVuY2UuaCAqLywKKwkJCQk4NTI2
RDdFQTBBOEZGNjRDMDA5MjM0QjEgLyogRE9NTmFtZWROb2RlTWFwLmggKi8sCisJCQkJODU2QzhB
OTMwQTkwRjU0RjAwNUM2ODdCIC8qIERPTU5vZGUuaCAqLywKKwkJCQk4NUE4NUI1OTBBOTAyQzMy
MDBBNUNGM0EgLyogRE9NTm9kZUxpc3QuaCAqLywKKwkJCQk4NTMxMUZFOTBBOEY5OEI5MDA1MTI1
QzkgLyogRE9NTm90YXRpb24uaCAqLywKKwkJCQk4NTZDOEI3QjBBOTEyOUI4MDA1QzY4N0IgLyog
RE9NT2JqZWN0LmggKi8sCisJCQkJODUzMTIwMTMwQThGOUE1MjAwNTEyNUM5IC8qIERPTVByb2Nl
c3NpbmdJbnN0cnVjdGlvbi5oICovLAorCQkJCTg1MjZENjQxMEE4RkRCODQwMDkyMzRCMSAvKiBE
T01UZXh0LmggKi8sCiAJCQkJOTNBRjUyQTkwODI1NEQ4RjAwNUQwMTU2IC8qIERPTUNTUy5oICov
LAogCQkJCTkzQUY1MkE1MDgyNTREODcwMDVEMDE1NiAvKiBET01FdmVudHMuaCAqLywKIAkJCQk5
M0FGNTJBMzA4MjU0RDgxMDA1RDAxNTYgLyogRE9NRXh0ZW5zaW9ucy5oICovLApAQCAtMTMyMiw2
ICsxMzQwLDI5NCBAQAogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJCXNoZWxsU2NyaXB0ID0g
Im1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRI
XCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19E
SVIvRE9NWFBhdGguaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9M
REVSX1BBVEgvRE9NWFBhdGguaFwiIjsKIAkJfTsKKwkJODUyNkQ2NDEwQThGREI4NDAwOTIzNEIx
IC8qIERPTVRleHQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJ
CQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9N
VGV4dC5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NVGV4dC5oOworCQkJb3V0cHV0UGF0aHMgPSAo
CisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkv
RE9NVGV4dC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAt
cCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQg
LWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTVRl
eHQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgv
RE9NVGV4dC5oXCIiOworCQl9OworCQk4NTI2RDZCRjBBOEZFNjBCMDA5MjM0QjEgLyogRE9NQ2hh
cmFjdGVyRGF0YS5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwor
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJ
CWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01D
aGFyYWN0ZXJEYXRhLmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01DaGFyYWN0ZXJEYXRhLmg7CisJ
CQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFE
RVJTX0ZPTERFUl9QQVRIKS9ET01DaGFyYWN0ZXJEYXRhLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsK
KwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19I
RUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JF
X1BSSVZBVEVfSEVBREVSU19ESVIvRE9NQ2hhcmFjdGVyRGF0YS5oXCIgPiBcIiRUQVJHRVRfQlVJ
TERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01DaGFyYWN0ZXJEYXRhLmhcIiI7
CisJCX07CisJCTg1MjZENzREMEE4RkVGMDIwMDkyMzRCMSAvKiBET01BdHRyLmggKi8gPSB7CisJ
CQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQki
JChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTUF0dHIuaCIsCisJCQkpOworCQkJbmFt
ZSA9IERPTUF0dHIuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9E
SVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUF0dHIuaCIsCisJCQkpOworCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAv
YmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8k
UFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwi
JFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01BdHRyLmhcIiA+IFwiJFRBUkdFVF9CVUlM
RF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTUF0dHIuaFwiIjsKKwkJfTsKKwkJ
ODUyNkQ3RUEwQThGRjY0QzAwOTIzNEIxIC8qIERPTU5hbWVkTm9kZU1hcC5oICovID0geworCQkJ
aXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQo
V0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01OYW1lZE5vZGVNYXAuaCIsCisJCQkpOwor
CQkJbmFtZSA9IERPTU5hbWVkTm9kZU1hcC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQo
VEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NTmFtZWRO
b2RlTWFwLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1w
IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAt
ZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NTmFt
ZWROb2RlTWFwLmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERF
Ul9QQVRIL0RPTU5hbWVkTm9kZU1hcC5oXCIiOworCQl9OworCQk4NTMxMUY2OTBBOEY5MDkxMDA1
MTI1QzkgLyogRE9NQ0RBVEFTZWN0aW9uLmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlw
dEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMg
PSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVB
REVSU19ESVIpL0RPTUNEQVRBU2VjdGlvbi5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NQ0RBVEFT
ZWN0aW9uLmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8k
KFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01DREFUQVNlY3Rpb24uaCIsCisJCQkpOwor
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGgg
PSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJ
Ui8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQv
IFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01DREFUQVNlY3Rpb24uaFwiID4gXCIk
VEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NQ0RBVEFTZWN0
aW9uLmhcIiI7CisJCX07CisJCTg1MzExRjcyMEE4RjkwRjYwMDUxMjVDOSAvKiBET01Db21tZW50
LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRo
cyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTUNvbW1lbnQuaCIs
CisJCQkpOworCQkJbmFtZSA9IERPTUNvbW1lbnQuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJ
CSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUNv
bW1lbnQuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAg
XCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1l
IHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01Db21t
ZW50LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRI
L0RPTUNvbW1lbnQuaFwiIjsKKwkJfTsKKwkJODUzMTFGNzUwQThGOTE2ODAwNTEyNUM5IC8qIERP
TUVudGl0eS5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlu
cHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01FbnRp
dHkuaCIsCisJCQkpOworCQkJbmFtZSA9IERPTUVudGl0eS5oOworCQkJb3V0cHV0UGF0aHMgPSAo
CisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkv
RE9NRW50aXR5LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGly
IC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNl
ZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9N
RW50aXR5LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9Q
QVRIL0RPTUVudGl0eS5oXCIiOworCQl9OworCQk4NTMxMUY4ODBBOEY5MUZFMDA1MTI1QzkgLyog
RE9NRW50aXR5UmVmZXJlbmNlLmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxk
UGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJ
CQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19E
SVIpL0RPTUVudGl0eVJlZmVyZW5jZS5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NRW50aXR5UmVm
ZXJlbmNlLmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8k
KFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01FbnRpdHlSZWZlcmVuY2UuaCIsCisJCQkp
OworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBh
dGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxE
X0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJL
aXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01FbnRpdHlSZWZlcmVuY2UuaFwi
ID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NRW50
aXR5UmVmZXJlbmNlLmhcIiI7CisJCX07CisJCTg1MzExRkU5MEE4Rjk4QjkwMDUxMjVDOSAvKiBE
T01Ob3RhdGlvbi5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwor
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJ
CWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01O
b3RhdGlvbi5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NTm90YXRpb24uaDsKKwkJCW91dHB1dFBh
dGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVS
X1BBVEgpL0RPTU5vdGF0aW9uLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0
ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9Q
QVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVS
U19ESVIvRE9NTm90YXRpb24uaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURF
UlNfRk9MREVSX1BBVEgvRE9NTm90YXRpb24uaFwiIjsKKwkJfTsKKwkJODUzMTIwMTMwQThGOUE1
MjAwNTEyNUM5IC8qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oICovID0geworCQkJaXNhID0g
UEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09S
RV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIsCisJCQkp
OworCQkJbmFtZSA9IERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oOworCQkJb3V0cHV0UGF0aHMg
PSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFU
SCkvRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNo
ZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJT
X0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVIvRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmhcIiA+IFwiJFRBUkdFVF9C
VUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTVByb2Nlc3NpbmdJbnN0cnVj
dGlvbi5oXCIiOworCQl9OworCQk4NTM5QjU2NTBBOTAzRUI5MDAzNjZDMkQgLyogRE9NRE9NSW1w
bGVtZW50YXRpb24uaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJ
CQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9N
RE9NSW1wbGVtZW50YXRpb24uaCIsCisJCQkpOworCQkJbmFtZSA9IERPTURPTUltcGxlbWVudGF0
aW9uLmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBV
QkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01ET01JbXBsZW1lbnRhdGlvbi5oIiwKKwkJCSk7
CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0
aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERf
RElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktp
dC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTURPTUltcGxlbWVudGF0aW9uLmhc
IiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTURP
TUltcGxlbWVudGF0aW9uLmhcIiI7CisJCX07CisJCTg1NkM4OURFMEE5MEUzODMwMDVDNjg3QiAv
KiBET01Eb2N1bWVudC5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNl
OworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsK
KwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9E
T01Eb2N1bWVudC5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NRG9jdW1lbnQuaDsKKwkJCW91dHB1
dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9M
REVSX1BBVEgpL0RPTURvY3VtZW50LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2Ny
aXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERF
Ul9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVB
REVSU19ESVIvRE9NRG9jdW1lbnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hF
QURFUlNfRk9MREVSX1BBVEgvRE9NRG9jdW1lbnQuaFwiIjsKKwkJfTsKKwkJODU2QzhBOTMwQTkw
RjU0RjAwNUM2ODdCIC8qIERPTU5vZGUuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9
ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFE
RVJTX0RJUikvRE9NTm9kZS5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NTm9kZS5oOworCQkJb3V0
cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19G
T0xERVJfUEFUSCkvRE9NTm9kZS5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlw
dCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJf
UEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURF
UlNfRElSL0RPTU5vZGUuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNf
Rk9MREVSX1BBVEgvRE9NTm9kZS5oXCIiOworCQl9OworCQk4NTZDOEI3QjBBOTEyOUI4MDA1QzY4
N0IgLyogRE9NT2JqZWN0LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhh
c2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkp
OworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIp
L0RPTU9iamVjdC5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NT2JqZWN0Lmg7CisJCQlvdXRwdXRQ
YXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERF
Ul9QQVRIKS9ET01PYmplY3QuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQg
PSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BB
VEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJT
X0RJUi9ET01PYmplY3QuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNf
Rk9MREVSX1BBVEgvRE9NT2JqZWN0LmhcIiI7CisJCX07CisJCTg1QTVDNUUxMEE5MDMyQjMwMEY5
MUYyQyAvKiBET01FbGVtZW50LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxk
UGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJ
CQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19E
SVIpL0RPTUVsZW1lbnQuaCIsCisJCQkpOworCQkJbmFtZSA9IERPTUVsZW1lbnQuaDsKKwkJCW91
dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNf
Rk9MREVSX1BBVEgpL0RPTUVsZW1lbnQuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxT
Y3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9M
REVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9I
RUFERVJTX0RJUi9ET01FbGVtZW50LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19I
RUFERVJTX0ZPTERFUl9QQVRIL0RPTUVsZW1lbnQuaFwiIjsKKwkJfTsKKwkJODVBODVCNTkwQTkw
MkMzMjAwQTVDRjNBIC8qIERPTU5vZGVMaXN0LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNj
cmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmls
ZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVf
SEVBREVSU19ESVIpL0RPTU5vZGVMaXN0LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01Ob2RlTGlz
dC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJM
SUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NTm9kZUxpc3QuaCIsCisJCQkpOworCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3No
OworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElD
X0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNP
UkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01Ob2RlTGlzdC5oXCIgPiBcIiRUQVJHRVRfQlVJTERf
RElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01Ob2RlTGlzdC5oXCIiOworCQl9Owor
CQk4NUM5MDVGMzBBOEZDQ0IyMDBDMzdEOTEgLyogRE9NRG9jdW1lbnRUeXBlLmggKi8gPSB7CisJ
CQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQki
JChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTURvY3VtZW50VHlwZS5oIiwKKwkJCSk7
CisJCQluYW1lID0gRE9NRG9jdW1lbnRUeXBlLmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQki
JChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01Eb2N1
bWVudFR5cGUuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIg
LXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2Vk
IC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01E
b2N1bWVudFR5cGUuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9M
REVSX1BBVEgvRE9NRG9jdW1lbnRUeXBlLmhcIiI7CisJCX07CisJCTg1QzkwNjZGMEE4RkQxMUMw
MEMzN0Q5MSAvKiBET01Eb2N1bWVudEZyYWdtZW50LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVs
bFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJ
ZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVIpL0RPTURvY3VtZW50RnJhZ21lbnQuaCIsCisJCQkpOworCQkJbmFtZSA9
IERPTURvY3VtZW50RnJhZ21lbnQuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdF
VF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTURvY3VtZW50RnJh
Z21lbnQuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAg
XCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1l
IHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01Eb2N1
bWVudEZyYWdtZW50LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZP
TERFUl9QQVRIL0RPTURvY3VtZW50RnJhZ21lbnQuaFwiIjsKKwkJfTsKIAkJOTMzOTMyM0UwODI1
QTY0MjAwQUFEQTZCIC8qIG5wcnVudGltZS5oICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3Jp
cHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10185</attachid>
            <date>2006-08-23 16:52:20 -0700</date>
            <delta_ts>2006-08-26 09:37:01 -0700</delta_ts>
            <desc>patch with just DOMCore changes (now with more autogeneration and smaller size!!!)</desc>
            <filename>autoCore3.diff</filename>
            <type>text/plain</type>
            <size>298024</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNTk5OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODcgQEAKKzIwMDYtMDgtMjMgIFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAt
IHBhdGNoIGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lk
PTQ2MjQKKyAgICAgICAgICBXZWJDb3JlIG5lZWRzIGF1dG9nZW5lcmF0ZWQgT2JqLUMgRE9NIGJp
bmRpbmdzCisgICAgICAgICAgCisgICAgICAgICAgRmlyc3Qgcm91bmQgb2YgYXV0by1nZW5lcmF0
ZWQgT2JqZWN0aXZlIEMgRE9NIGJpbmRpbmdzLCBzdGFydGluZworICAgICAgICAgIHdpdGggdGhl
IERPTSBDb3JlLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mvb2Jq
Yy9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgYm91bmRpbmdCb3hdKToKKyAgICAgICAgKC1b
RE9NTm9kZSBsaW5lQm94UmVjdHNdKToKKyAgICAgICAgKC1bRE9NTm9kZSBkZXNjcmlwdGlvbl0p
OgorICAgICAgICAoLVtET01Ob2RlIF9pbml0V2l0aE5vZGU6XSk6CisgICAgICAgICgrW0RPTU5v
ZGUgX25vZGVXaXRoOl0pOgorICAgICAgICAoK1tET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOl0p
OgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVIVE1MRG9jdW1lbnQ6XSk6Cisg
ICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGNyZWF0ZUNTU1N0eWxlU2hlZXQ6Ol0pOgorICAg
ICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBfaW5pdFdpdGhET01JbXBsZW1lbnRhdGlvbjpdKToK
KyAgICAgICAgKCtbRE9NSW1wbGVtZW50YXRpb24gX0RPTUltcGxlbWVudGF0aW9uV2l0aDpdKToK
KyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24gX0RPTUltcGxlbWVudGF0aW9uXSk6CisgICAg
ICAgICgrW0RPTURvY3VtZW50RnJhZ21lbnQgX2RvY3VtZW50RnJhZ21lbnRXaXRoOl0pOgorICAg
ICAgICAoLVtET01Eb2N1bWVudEZyYWdtZW50IF9mcmFnbWVudF0pOgorICAgICAgICAoLVtET01E
b2N1bWVudCBjcmVhdGVSYW5nZV0pOgorICAgICAgICAoLVtET01Eb2N1bWVudCBnZXRPdmVycmlk
ZVN0eWxlOjpdKToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgc3R5bGVTaGVldHNdKToKKyAgICAg
ICAgKC1bRE9NRG9jdW1lbnQgY3JlYXRlQ1NTU3R5bGVEZWNsYXJhdGlvbl0pOgorICAgICAgICAo
K1tET01Eb2N1bWVudCBfZG9jdW1lbnRXaXRoOl0pOgorICAgICAgICAoLVtET01Eb2N1bWVudCBf
ZG9jdW1lbnRdKToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgX293bmVyRWxlbWVudF0pOgorICAg
ICAgICAoK1tET01BdHRyIF9hdHRyV2l0aDpdKToKKyAgICAgICAgKC1bRE9NQXR0ciBfYXR0cl0p
OgorICAgICAgICAoLVtET01BdHRyIHN0eWxlXSk6CisgICAgICAgICgrW0RPTURvY3VtZW50VHlw
ZSBfZG9jdW1lbnRUeXBlV2l0aDpXZWJDb3JlOjpdKToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnRU
eXBlIFdlYkNvcmU6Ol0pOgorICAgICAgICAoK1tET01UZXh0IF90ZXh0V2l0aDpXZWJDb3JlOjpd
KToKKyAgICAgICAgKCtbRE9NQ29tbWVudCBfY29tbWVudFdpdGg6V2ViQ29yZTo6XSk6CisgICAg
ICAgICgrW0RPTUNEQVRBU2VjdGlvbiBfQ0RBVEFTZWN0aW9uV2l0aDpXZWJDb3JlOjpdKToKKyAg
ICAgICAgKCtbRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uIF9wcm9jZXNzaW5nSW5zdHJ1Y3Rpb25X
aXRoOldlYkNvcmU6Ol0pOgorICAgICAgICAoK1tET01FbnRpdHlSZWZlcmVuY2UgX2VudGl0eVJl
ZmVyZW5jZVdpdGg6V2ViQ29yZTo6XSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01DU1Mu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUNvcmUuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9vYmpjL0RPTUV2ZW50cy5oOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NRXh0ZW5zaW9u
cy5oOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NSW1wbGVtZW50YXRpb25Gcm9udC5oOgor
ICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9vYmpjL0RPTU5vZGUuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01Ob2Rl
Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bRE9NTm9kZSBkZWFsbG9jXSk6CisgICAgICAgICgtW0RP
TU5vZGUgZmluYWxpemVdKToKKyAgICAgICAgKC1bRE9NTm9kZSBzZXROb2RlVmFsdWU6XSk6Cisg
ICAgICAgICgtW0RPTU5vZGUgYXR0cmlidXRlc10pOgorICAgICAgICAoLVtET01Ob2RlIGluc2Vy
dEJlZm9yZTo6XSk6CisgICAgICAgICgtW0RPTU5vZGUgcmVwbGFjZUNoaWxkOjpdKToKKyAgICAg
ICAgKC1bRE9NTm9kZSByZW1vdmVDaGlsZDpdKToKKyAgICAgICAgKC1bRE9NTm9kZSBhcHBlbmRD
aGlsZDpdKToKKyAgICAgICAgKC1bRE9NTm9kZSBzZXRQcmVmaXg6XSk6CisgICAgICAgICgtW0RP
TU5vZGUgc2V0VGV4dENvbnRlbnQ6XSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01PYmpl
Y3QuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01PYmplY3QubW06IEFkZGVk
LgorICAgICAgICAoLVtET01PYmplY3QgZGVhbGxvY10pOgorICAgICAgICAoLVtET01PYmplY3Qg
ZmluYWxpemVdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVByaXZhdGUuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9vYmpjL0RPTVJhbmdlLmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9E
T01TdHlsZXNoZWV0cy5oOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NVHJhdmVyc2FsLmg6
CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01WaWV3cy5oOgorICAgICAgICAqIGJpbmRpbmdz
L29iamMvRE9NWFBhdGguaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3IucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbTog
QWRkZWQuCisgICAgICAgICogZG9tL0F0dHIuaWRsOgorICAgICAgICAqIGRvbS9DREFUQVNlY3Rp
b24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBkb20vQ29tbWVudC5pZGw6IEFkZGVkLgorICAgICAg
ICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGw6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmlk
bDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5pZGw6CisgICAgICAgICogZG9tL0VudGl0eVJlZmVy
ZW5jZS5pZGw6IEFkZGVkLgorICAgICAgICAqIGRvbS9OYW1lZE5vZGVNYXAuaWRsOiBBZGRlZC4K
KyAgICAgICAgKiBkb20vTm9kZUxpc3QuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBkb20vUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmlkbDoKKwogMjAwNi0wOC0yMyAgRGF2aWQgSHlhdHQgIDxoeWF0dEBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBpZmRlZiBmb3IgcGxhdGZvcm0gc2Nyb2xs
YmFycyB2cy4gZW5naW5lIHNjcm9sbGJhcnMgdW50aWwKSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJl
dmlzaW9uIDE1OTk3KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBX
ZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPiAKICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjcsNiArMjgsNyBAQAogVlBBVEggPSBcCiAgICAgJChXZWJDb3JlKSBcCiAgICAgJChX
ZWJDb3JlKS9iaW5kaW5ncy9qcyBcCisgICAgJChXZWJDb3JlKS9iaW5kaW5ncy9vYmpjIFwKICAg
ICAkKFdlYkNvcmUpL2NzcyBcCiAgICAgJChXZWJDb3JlKS9kb20gXAogICAgICQoV2ViQ29yZSkv
aHRtbCBcCkBAIC00NCw2ICs0NiwyMiBAQCBhbGwgOiBcCiAgICAgQ2hhcnNldERhdGEuY3BwIFwK
ICAgICBDb2xvckRhdGEuYyBcCiAgICAgRG9jVHlwZVN0cmluZ3MuY3BwIFwKKyAgICBET01BdHRy
LmggXAorICAgIERPTUNEQVRBU2VjdGlvbi5oIFwKKyAgICBET01DaGFyYWN0ZXJEYXRhLmggXAor
ICAgIERPTUNvbW1lbnQuaCBcCisgICAgRE9NRE9NSW1wbGVtZW50YXRpb24uaCBcCisgICAgRE9N
RG9jdW1lbnQuaCBcCisgICAgRE9NRG9jdW1lbnRGcmFnbWVudC5oIFwKKyAgICBET01Eb2N1bWVu
dFR5cGUuaCBcCisgICAgRE9NRWxlbWVudC5oIFwKKyAgICBET01FbnRpdHkuaCBcCisgICAgRE9N
RW50aXR5UmVmZXJlbmNlLmggXAorICAgIERPTU5hbWVkTm9kZU1hcC5oIFwKKyAgICBET01Ob2Rl
TGlzdC5oIFwKKyAgICBET01Ob3RhdGlvbi5oIFwKKyAgICBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uaCBcCisgICAgRE9NVGV4dC5oIFwKICAgICBIVE1MRW50aXR5TmFtZXMuYyBcCiAgICAgSlNB
dHRyLmggXAogICAgIEpTQ1NTUHJpbWl0aXZlVmFsdWUuaCBcCkBAIC0yODYsNiArMzA0LDE5IEBA
IGtzdmdjc3N2YWx1ZXMuaCA6CiAKIGVuZGlmCiAKKyMgbmV3LXN0eWxlIE9iamVjdGl2ZS1DIGJp
bmRpbmdzCisKK09CSkNfQklORElOR1NfU0NSSVBUUyA9IFwKKyAgICBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3IucG0gXAorICAgIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9i
akMucG0gXAorICAgIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIFwKKyAgICBiaW5kaW5n
cy9zY3JpcHRzL0lETFN0cnVjdHVyZS5wbSBcCisgICAgYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0
ZS1iaW5kaW5ncy5wbCBcCisjCisKK0RPTSUuaCA6ICUuaWRsICQoT0JKQ19CSU5ESU5HU19TQ1JJ
UFRTKQorCXBlcmwgLUkkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJChXZWJDb3JlKS9iaW5k
aW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIC0tZGVmaW5lcyAiJChGRUFUVVJFX0RF
RklORVMpIiAtLWdlbmVyYXRvciBPYmpDIC0taW5jbHVkZSBkb20gLS1pbmNsdWRlIGh0bWwgLS1p
bmNsdWRlIHhwYXRoIC0taW5jbHVkZSBrc3ZnMi9zdmcgLS1vdXRwdXRkaXIgIC4gJDwKKwogIyBu
ZXctc3R5bGUgSmF2YVNjcmlwdCBiaW5kaW5ncwogCiBKU19CSU5ESU5HU19TQ1JJUFRTID0gXApJ
bmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDE1OTk3KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTM1NSw2ICszNTUsMjEgQEAKIAkJODUwMzFCNEYwQTQ0RUZDNzAwRjk5
MkUwIC8qIFVJRXZlbnRXaXRoS2V5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDMxQjM5MEE0NEVGQzcwMEY5OTJFMCAvKiBVSUV2ZW50V2l0
aEtleVN0YXRlLmggKi87IH07CiAJCTg1MDMxQjUwMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVlbEV2
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1
MDMxQjNBMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVlbEV2ZW50LmNwcCAqLzsgfTsKIAkJODUwMzFC
NTEwQTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVsRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDMxQjNCMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVl
bEV2ZW50LmggKi87IH07CisJCTg1MDg5Q0M4MEE5OEMyMjYwMEEyNzVBQSAvKiBDb21tZW50Lmlk
bCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwODlD
QzcwQTk4QzIyNjAwQTI3NUFBIC8qIENvbW1lbnQuaWRsICovOyB9OworCQk4NTA4OUNDQTBBOThD
MkFCMDBBMjc1QUEgLyogQ0RBVEFTZWN0aW9uLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwODlDQzkwQTk4QzJBQjAwQTI3NUFBIC8qIENEQVRB
U2VjdGlvbi5pZGwgKi87IH07CisJCTg1MDg5Q0NDMEE5OEMzM0EwMEEyNzVBQSAvKiBFbnRpdHlS
ZWZlcmVuY2UuaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NTA4OUNDQjBBOThDMzNBMDBBMjc1QUEgLyogRW50aXR5UmVmZXJlbmNlLmlkbCAqLzsg
fTsKKwkJODUwODlDRDcwQTk4QzQyODAwQTI3NUFBIC8qIERPTUNEQVRBU2VjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwODlDQ0YwQTk4QzQy
NzAwQTI3NUFBIC8qIERPTUNEQVRBU2VjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1MDg5Q0Q4MEE5OEM0MjgwMEEyNzVBQSAvKiBET01D
REFUQVNlY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NTA4OUNEMDBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLm1tICovOyB9
OworCQk4NTA4OUNEOTBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ29tbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwODlDRDEwQTk4QzQyNzAwQTI3
NUFBIC8qIERPTUNvbW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk4NTA4OUNEQTBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ29tbWVudC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDg5Q0QyMEE5
OEM0MjcwMEEyNzVBQSAvKiBET01Db21tZW50Lm1tICovOyB9OworCQk4NTA4OUNEQjBBOThDNDI4
MDBBMjc1QUEgLyogRE9NRG9jdW1lbnRGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwODlDRDMwQTk4QzQyODAwQTI3NUFBIC8qIERPTURv
Y3VtZW50RnJhZ21lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk4NTA4OUNEQzBBOThDNDI4MDBBMjc1QUEgLyogRE9NRG9jdW1lbnRGcmFnbWVu
dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDg5
Q0Q0MEE5OEM0MjgwMEEyNzVBQSAvKiBET01Eb2N1bWVudEZyYWdtZW50Lm1tICovOyB9OworCQk4
NTA4OUNERDBBOThDNDI4MDBBMjc1QUEgLyogRE9NRW50aXR5UmVmZXJlbmNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTA4OUNENTBBOThDNDI4MDBB
Mjc1QUEgLyogRE9NRW50aXR5UmVmZXJlbmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODUwODlDREUwQTk4QzQyODAwQTI3NUFBIC8qIERPTUVu
dGl0eVJlZmVyZW5jZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg1MDg5Q0Q2MEE5OEM0MjgwMEEyNzVBQSAvKiBET01FbnRpdHlSZWZlcmVuY2UubW0g
Ki87IH07CisJCTg1MThEQ0U5MEE5Q0M4MEQwMDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUxOERD
RTcwQTlDQzgwQzAwOTFCN0E2IC8qIERPTURPTUltcGxlbWVudGF0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODUxOERDRUEwQTlDQzgwRDAw
OTFCN0E2IC8qIERPTURPTUltcGxlbWVudGF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUxOERDRTgwQTlDQzgwRDAwOTFCN0E2IC8qIERPTURP
TUltcGxlbWVudGF0aW9uLm1tICovOyB9OworCQk4NTE4REQ3ODBBOUNGMzFCMDA5MUI3QTYgLyog
RE9NTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NTE4REQ3NjBBOUNGMzFCMDA5MUI3QTYgLyogRE9NTmFtZWROb2RlTWFwLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODUxOERENzkw
QTlDRjMxQjAwOTFCN0E2IC8qIERPTU5hbWVkTm9kZU1hcC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MThERDc3MEE5Q0YzMUIwMDkxQjdBNiAvKiBE
T01OYW1lZE5vZGVNYXAubW0gKi87IH07CiAJCTg1MjE3RTAyMEE1RUNENDcwMERCOEQwMCAvKiBY
U0xJbXBvcnRSdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg1MjE3RTAwMEE1RUNENDcwMERCOEQwMCAvKiBYU0xJbXBvcnRSdWxlLmNwcCAqLzsg
fTsKIAkJODUyMTdFMDMwQTVFQ0Q0NzAwREI4RDAwIC8qIFhTTEltcG9ydFJ1bGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MjE3RTAxMEE1RUNENDcw
MERCOEQwMCAvKiBYU0xJbXBvcnRSdWxlLmggKi87IH07CiAJCTg1NEZFNzMwMEEyMjk3QkUwMDU4
RDdBRCAvKiBOb2RlRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg1NEZFNzI2MEEyMjk3QkUwMDU4RDdBRCAvKiBOb2RlRmlsdGVyLmNwcCAq
LzsgfTsKQEAgLTM2Nyw4ICszODIsMzQgQEAKIAkJODU0RkU3MzcwQTIyOTdCRTAwNThEN0FEIC8q
IFRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODU0RkU3MkQwQTIyOTdCRTAwNThEN0FEIC8qIFRyYXZlcnNhbC5oICovOyB9OwogCQk4NTRG
RTczODBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTRGRTcyRTBBMjI5N0JFMDA1OEQ3QUQgLyog
VHJlZVdhbGtlci5jcHAgKi87IH07CiAJCTg1NEZFNzM5MEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVl
V2Fsa2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NTRGRTcyRjBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtlci5oICovOyB9OworCQk4NTZDODlG
QzBBOTBGMDY4MDA1QzY4N0IgLyogRE9NTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODU2Qzg5RkEwQTkwRjA2ODAwNUM2ODdCIC8qIERPTU5vZGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTZD
ODlGRDBBOTBGMDY4MDA1QzY4N0IgLyogRE9NTm9kZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NkM4OUZCMEE5MEYwNjgwMDVDNjg3QiAvKiBET01O
b2RlLm1tICovOyB9OworCQk4NTZDOEFFNDBBOTEyNjQ5MDA1QzY4N0IgLyogRE9NT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTZDOEFFMjBB
OTEyNjQ5MDA1QzY4N0IgLyogRE9NT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODU2QzhBRTUwQTkxMjY0OTAwNUM2ODdCIC8qIERPTU9i
amVjdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1
NkM4QUUzMEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3QubW0gKi87IH07CisJCTg1QUNBOTg2
MEE5QjUyMDMwMDY3MUU5MCAvKiBET01DaGFyYWN0ZXJEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUFDQTk4NDBBOUI1MjAzMDA2NzFFOTAgLyog
RE9NQ2hhcmFjdGVyRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTg1QUNBOTg3MEE5QjUyMDMwMDY3MUU5MCAvKiBET01DaGFyYWN0ZXJEYXRh
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVBQ0E5
ODUwQTlCNTIwMzAwNjcxRTkwIC8qIERPTUNoYXJhY3RlckRhdGEubW0gKi87IH07CisJCTg1QUNB
OTlDMEE5QjU3NTkwMDY3MUU5MCAvKiBET01UZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUFDQTk5QTBBOUI1NzU5MDA2NzFFOTAgLyogRE9NVGV4
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1
QUNBOTlEMEE5QjU3NTkwMDY3MUU5MCAvKiBET01UZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVBQ0E5OUIwQTlCNTc1OTAwNjcxRTkwIC8qIERP
TVRleHQubW0gKi87IH07CisJCTg1QUNBOUMwMEE5QjVGQTUwMDY3MUU5MCAvKiBET01FbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUFDQTlC
RTBBOUI1RkE1MDA2NzFFOTAgLyogRE9NRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1QUNBOUMxMEE5QjVGQTUwMDY3MUU5MCAvKiBE
T01FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODVBQ0E5QkYwQTlCNUZBNTAwNjcxRTkwIC8qIERPTUVsZW1lbnQubW0gKi87IH07CisJCTg1
QUNBOUZCMEE5QjYzMTAwMDY3MUU5MCAvKiBOYW1lZE5vZGVNYXAuaWRsIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUFDQTlGOTBBOUI2MzEwMDA2NzFF
OTAgLyogTmFtZWROb2RlTWFwLmlkbCAqLzsgfTsKKwkJODVBQ0E5RkMwQTlCNjMxMDAwNjcxRTkw
IC8qIE5vZGVMaXN0LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODVBQ0E5RkEwQTlCNjMxMDAwNjcxRTkwIC8qIE5vZGVMaXN0LmlkbCAqLzsgfTsK
KwkJODVBQ0FBOEQwQTlCNzU5QzAwNjcxRTkwIC8qIERPTU5vZGVMaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUFDQUE4OTBBOUI3NTlDMDA2NzFF
OTAgLyogRE9NTm9kZUxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk4NUFDQUE4RTBBOUI3NTlDMDA2NzFFOTAgLyogRE9NTm9kZUxpc3QubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUFDQUE4QTBB
OUI3NTlDMDA2NzFFOTAgLyogRE9NTm9kZUxpc3QubW0gKi87IH07CisJCTg1QUNBQkIwMEE5Q0FG
ODAwMDY3MUU5MCAvKiBET01Eb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODVBQ0FCQUUwQTlDQUY4MDAwNjcxRTkwIC8qIERPTURvY3VtZW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVB
Q0FCQjEwQTlDQUY4MDAwNjcxRTkwIC8qIERPTURvY3VtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVBQ0FCQUYwQTlDQUY4MDAwNjcxRTkwIC8q
IERPTURvY3VtZW50Lm1tICovOyB9OworCQk4NUNBOTZCODBBOTYyMUE2MDA2OTBDQ0YgLyogRE9N
RW50aXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NUNBOTZCNjBBOTYyMUE2MDA2OTBDQ0YgLyogRE9NRW50aXR5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVDQTk2QjkwQTk2MjFBNjAwNjkwQ0NG
IC8qIERPTUVudGl0eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg1Q0E5NkI3MEE5NjIxQTYwMDY5MENDRiAvKiBET01FbnRpdHkubW0gKi87IH07CisJ
CTg1Q0E5NkVBMEE5NjI0RTkwMDY5MENDRiAvKiBET01Ob3RhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVDQTk2RTgwQTk2MjRFOTAwNjkwQ0NG
IC8qIERPTU5vdGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJODVDQTk2RUIwQTk2MjRFOTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9uLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVDQTk2RTkwQTk2
MjRFOTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9uLm1tICovOyB9OworCQk4NUNBOTc1QzBBOTYyRTU0
MDA2OTBDQ0YgLyogRE9NRG9jdW1lbnRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NUNBOTc1QTBBOTYyRTU0MDA2OTBDQ0YgLyogRE9NRG9jdW1l
bnRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJODVDQTk3NUQwQTk2MkU1NDAwNjkwQ0NGIC8qIERPTURvY3VtZW50VHlwZS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1Q0E5NzVCMEE5NjJFNTQw
MDY5MENDRiAvKiBET01Eb2N1bWVudFR5cGUubW0gKi87IH07CisJCTg1RDM4OUIyMEE5OTFBN0Yw
MDI4MjE0NSAvKiBET01BdHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NUQzODlCMDBBOTkxQTdGMDAyODIxNDUgLyogRE9NQXR0ci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1RDM4OUIzMEE5OTFB
N0YwMDI4MjE0NSAvKiBET01BdHRyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODVEMzg5QjEwQTk5MUE3RjAwMjgyMTQ1IC8qIERPTUF0dHIubW0gKi87
IH07CiAJCTg1RUM5QUZBMEE3MUEyQzYwMEVFRUFFRCAvKiBGb250RGF0YS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVFQzlBRjgwQTcxQTJDNjAwRUVF
QUVEIC8qIEZvbnREYXRhLmggKi87IH07CiAJCTg1RUM5QUZCMEE3MUEyQzYwMEVFRUFFRCAvKiBM
YW5ndWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODVFQzlBRjkwQTcxQTJDNjAwRUVFQUVEIC8qIExhbmd1YWdlLmggKi87IH07CisJCTg1RjU2QTdB
MEE5OENFMzcwMEFEQjYwQSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RjU2QTc4MEE5OENFMzcwMEFE
QjYwQSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NUY1NkE3QjBBOThDRTM3MDBBREI2MEEgLyog
RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODVGNTZBNzkwQTk4Q0UzNzAwQURCNjBBIC8qIERPTVByb2Nlc3Np
bmdJbnN0cnVjdGlvbi5tbSAqLzsgfTsKIAkJOTMwMzJDQzgwOUFFQzM0MzAwRjgyQTE4IC8qIFBh
dGhDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzAzMkNDNzA5QUVDMzQzMDBGODJBMTggLyogUGF0aENHLmNwcCAqLzsgfTsKIAkJOTMwMzJDQ0Ew
OUFFQzM0QjAwRjgyQTE4IC8qIFBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzMDMyQ0M5MDlBRUMzNEIwMEY4MkExOCAvKiBQYXRoLmggKi87IH07
CiAJCTkzMDVCMjREMDk4RjFCNkIwMEMyODg1NSAvKiBUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwNUIyNEMwOThGMUI2QjAwQzI4ODU1IC8q
IFRpbWVyLmggKi87IH07CkBAIC0yMDUzLDYgKzIwOTQsMjEgQEAKIAkJODUwMzFCMzkwQTQ0RUZD
NzAwRjk5MkUwIC8qIFVJRXZlbnRXaXRoS2V5U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFVJRXZlbnRXaXRoS2V5U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODUwMzFCM0EwQTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVsRXZlbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdoZWVsRXZlbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NTAzMUIzQjBBNDRFRkM3MDBGOTkyRTAgLyogV2hlZWxF
dmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2hlZWxFdmVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTA4OUNDNzBBOThDMjI2MDBBMjc1QUEgLyog
Q29tbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENvbW1lbnQuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4NTA4OUNDOTBBOThDMkFCMDBBMjc1QUEgLyogQ0RBVEFT
ZWN0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ0RBVEFTZWN0aW9uLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwODlDQ0IwQTk4QzMzQTAwQTI3NUFBIC8qIEVu
dGl0eVJlZmVyZW5jZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVudGl0eVJlZmVyZW5j
ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MDg5Q0NGMEE5OEM0MjcwMEEy
NzVBQSAvKiBET01DREFUQVNlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTUNEQVRBU2VjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTA4
OUNEMDBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUNEQVRBU2VjdGlvbi5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwODlDRDEwQTk4QzQyNzAwQTI3NUFBIC8qIERPTUNvbW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUNvbW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwODlDRDIwQTk4QzQyNzAwQTI3NUFBIC8qIERP
TUNvbW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9N
Q29tbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwODlDRDMwQTk4QzQy
ODAwQTI3NUFBIC8qIERPTURvY3VtZW50RnJhZ21lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTURvY3VtZW50RnJhZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODUwODlDRDQwQTk4QzQyODAwQTI3NUFBIC8qIERPTURvY3VtZW50RnJhZ21lbnQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRG9jdW1lbnRG
cmFnbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwODlDRDUwQTk4QzQy
ODAwQTI3NUFBIC8qIERPTUVudGl0eVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NRW50aXR5UmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg1MDg5Q0Q2MEE5OEM0MjgwMEEyNzVBQSAvKiBET01FbnRpdHlSZWZlcmVuY2UubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRW50aXR5UmVmZXJl
bmNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTE4RENFNzBBOUNDODBDMDA5
MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTURPTUltcGxlbWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg1MThEQ0U4MEE5Q0M4MEQwMDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01ET01JbXBsZW1l
bnRhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUxOERENzYwQTlDRjMx
QjAwOTFCN0E2IC8qIERPTU5hbWVkTm9kZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NTmFtZWROb2RlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg1MThERDc3MEE5Q0YzMUIwMDkxQjdBNiAvKiBET01OYW1lZE5vZGVNYXAubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NTmFtZWROb2RlTWFwLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTIxN0UwMDBBNUVDRDQ3MDBEQjhEMDAgLyogWFNM
SW1wb3J0UnVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWFNM
SW1wb3J0UnVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1MjE3RTAxMEE1
RUNENDcwMERCOEQwMCAvKiBYU0xJbXBvcnRSdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBYU0xJbXBvcnRSdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg1NEZFNzI2MEEyMjk3QkUwMDU4RDdBRCAvKiBOb2RlRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2RlRmlsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIwNjUsOCArMjEyMSwzNSBAQAogCQk4NTRGRTcyRDBBMjI5N0JFMDA1
OEQ3QUQgLyogVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
cmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODU0RkU3MkUwQTIyOTdC
RTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFRyZWVXYWxrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
NTRGRTcyRjBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVHJlZVdhbGtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NTZDODlGQTBBOTBGMDY4MDA1QzY4N0IgLyogRE9NTm9kZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NTZDODlGQjBBOTBGMDY4MDA1QzY4N0IgLyogRE9NTm9kZS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01Ob2RlLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4NTZDOEFFMjBBOTEyNjQ5MDA1QzY4N0IgLyogRE9NT2JqZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01PYmplY3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODU2QzhBRTMwQTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01PYmplY3QubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1OUI3RkI5MEE4RDI4ODgwMEE1RjFFQSAv
KiBDb2RlR2VuZXJhdG9yT2JqQy5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1l
ID0gQ29kZUdlbmVyYXRvck9iakMucG07IHBhdGggPSBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JPYmpDLnBtOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTg1QUNBOTg0MEE5
QjUyMDMwMDY3MUU5MCAvKiBET01DaGFyYWN0ZXJEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01DaGFyYWN0ZXJEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg1QUNBOTg1MEE5QjUyMDMwMDY3MUU5MCAvKiBET01DaGFyYWN0ZXJEYXRhLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUNoYXJhY3RlckRhdGEu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QUNBOTlBMEE5QjU3NTkwMDY3MUU5
MCAvKiBET01UZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01UZXh0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QUNBOTlCMEE5QjU3NTkwMDY3MUU5
MCAvKiBET01UZXh0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IERPTVRleHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QUNBOUJFMEE5QjVG
QTUwMDY3MUU5MCAvKiBET01FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QUNBOUJG
MEE5QjVGQTUwMDY3MUU5MCAvKiBET01FbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IERPTUVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg1QUNBOUY5MEE5QjYzMTAwMDY3MUU5MCAvKiBOYW1lZE5vZGVNYXAuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBOYW1lZE5vZGVNYXAuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4NUFDQTlGQTBBOUI2MzEwMDA2NzFFOTAgLyogTm9kZUxpc3QuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBOb2RlTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg1QUNBQTg5MEE5Qjc1OUMwMDY3MUU5MCAvKiBET01Ob2RlTGlzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODVBQ0FBOEEwQTlCNzU5QzAwNjcxRTkwIC8qIERPTU5vZGVMaXN0Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTU5vZGVMaXN0Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUFDQUJBRTBBOUNBRjgwMDA2NzFFOTAg
LyogRE9NRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTURv
Y3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QUNBQkFGMEE5Q0FGODAw
MDY3MUU5MCAvKiBET01Eb2N1bWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBET01Eb2N1bWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODVDQTk2QjYwQTk2MjFBNjAwNjkwQ0NGIC8qIERPTUVudGl0eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NRW50aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTg1Q0E5NkI3MEE5NjIxQTYwMDY5MENDRiAvKiBET01FbnRpdHkubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRW50aXR5Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NUNBOTZFODBBOTYyNEU5MDA2OTBDQ0YgLyogRE9NTm90YXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU5vdGF0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1Q0E5NkU5MEE5NjI0RTkwMDY5MENDRiAvKiBET01O
b3RhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01O
b3RhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVDQTk3NUEwQTk2MkU1
NDAwNjkwQ0NGIC8qIERPTURvY3VtZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NRG9jdW1lbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg1Q0E5NzVCMEE5NjJFNTQwMDY5MENDRiAvKiBET01Eb2N1bWVudFR5cGUubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRG9jdW1lbnRUeXBlLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUQzODlCMDBBOTkxQTdGMDAyODIxNDUgLyogRE9N
QXR0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQXR0ci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUQzODlCMTBBOTkxQTdGMDAyODIxNDUgLyogRE9N
QXR0ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01BdHRy
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NUVDOUFGODBBNzFBMkM2MDBFRUVB
RUQgLyogRm9udERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRE
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1RUM5QUY5MEE3MUEyQzYwMEVF
RUFFRCAvKiBMYW5ndWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGFu
Z3VhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVGNTZBNzgwQTk4Q0UzNzAw
QURCNjBBIC8qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg1RjU2QTc5MEE5OENFMzcwMEFEQjYwQSAvKiBET01Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5MzAzMkNDNzA5QUVDMzQzMDBGODJBMTggLyogUGF0aENHLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhdGhDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzMDMyQ0M5MDlBRUMzNEIwMEY4MkExOCAvKiBQYXRoLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTMwNUIyNEMwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRpbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zOTgx
LDYgKzQwNjQsNTcgQEAKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwogCQl9OworCQk4NTRGMTJBQzBBOEVCQzE4MDAwOTQwQjUgLyogQ29yZSAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJODU2Qzg5RkEwQTkwRjA2ODAwNUM2
ODdCIC8qIERPTU5vZGUuaCAqLywKKwkJCQk4NTZDODlGQjBBOTBGMDY4MDA1QzY4N0IgLyogRE9N
Tm9kZS5tbSAqLywKKwkJCQk4NTZDOEFFMjBBOTEyNjQ5MDA1QzY4N0IgLyogRE9NT2JqZWN0Lmgg
Ki8sCisJCQkJODU2QzhBRTMwQTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5tbSAqLywKKwkJ
CSk7CisJCQluYW1lID0gQ29yZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJ
CTg1QjIzMjI2MEE4QkYzQTEwMEZERjQ3QiAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTg1RDM4OUIwMEE5OTFBN0YwMDI4
MjE0NSAvKiBET01BdHRyLmggKi8sCisJCQkJODVEMzg5QjEwQTk5MUE3RjAwMjgyMTQ1IC8qIERP
TUF0dHIubW0gKi8sCisJCQkJODUwODlDQ0YwQTk4QzQyNzAwQTI3NUFBIC8qIERPTUNEQVRBU2Vj
dGlvbi5oICovLAorCQkJCTg1MDg5Q0QwMEE5OEM0MjcwMEEyNzVBQSAvKiBET01DREFUQVNlY3Rp
b24ubW0gKi8sCisJCQkJODVBQ0E5ODQwQTlCNTIwMzAwNjcxRTkwIC8qIERPTUNoYXJhY3RlckRh
dGEuaCAqLywKKwkJCQk4NUFDQTk4NTBBOUI1MjAzMDA2NzFFOTAgLyogRE9NQ2hhcmFjdGVyRGF0
YS5tbSAqLywKKwkJCQk4NTA4OUNEMTBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ29tbWVudC5oICov
LAorCQkJCTg1MDg5Q0QyMEE5OEM0MjcwMEEyNzVBQSAvKiBET01Db21tZW50Lm1tICovLAorCQkJ
CTg1MThEQ0U3MEE5Q0M4MEMwMDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5oICovLAor
CQkJCTg1MThEQ0U4MEE5Q0M4MEQwMDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5tbSAq
LywKKwkJCQk4NUFDQUJBRTBBOUNBRjgwMDA2NzFFOTAgLyogRE9NRG9jdW1lbnQuaCAqLywKKwkJ
CQk4NUFDQUJBRjBBOUNBRjgwMDA2NzFFOTAgLyogRE9NRG9jdW1lbnQubW0gKi8sCisJCQkJODUw
ODlDRDMwQTk4QzQyODAwQTI3NUFBIC8qIERPTURvY3VtZW50RnJhZ21lbnQuaCAqLywKKwkJCQk4
NTA4OUNENDBBOThDNDI4MDBBMjc1QUEgLyogRE9NRG9jdW1lbnRGcmFnbWVudC5tbSAqLywKKwkJ
CQk4NUNBOTc1QTBBOTYyRTU0MDA2OTBDQ0YgLyogRE9NRG9jdW1lbnRUeXBlLmggKi8sCisJCQkJ
ODVDQTk3NUIwQTk2MkU1NDAwNjkwQ0NGIC8qIERPTURvY3VtZW50VHlwZS5tbSAqLywKKwkJCQk4
NUFDQTlCRTBBOUI1RkE1MDA2NzFFOTAgLyogRE9NRWxlbWVudC5oICovLAorCQkJCTg1QUNBOUJG
MEE5QjVGQTUwMDY3MUU5MCAvKiBET01FbGVtZW50Lm1tICovLAorCQkJCTg1Q0E5NkI2MEE5NjIx
QTYwMDY5MENDRiAvKiBET01FbnRpdHkuaCAqLywKKwkJCQk4NUNBOTZCNzBBOTYyMUE2MDA2OTBD
Q0YgLyogRE9NRW50aXR5Lm1tICovLAorCQkJCTg1MDg5Q0Q1MEE5OEM0MjgwMEEyNzVBQSAvKiBE
T01FbnRpdHlSZWZlcmVuY2UuaCAqLywKKwkJCQk4NTA4OUNENjBBOThDNDI4MDBBMjc1QUEgLyog
RE9NRW50aXR5UmVmZXJlbmNlLm1tICovLAorCQkJCTg1MThERDc2MEE5Q0YzMUIwMDkxQjdBNiAv
KiBET01OYW1lZE5vZGVNYXAuaCAqLywKKwkJCQk4NTE4REQ3NzBBOUNGMzFCMDA5MUI3QTYgLyog
RE9NTmFtZWROb2RlTWFwLm1tICovLAorCQkJCTg1QUNBQTg5MEE5Qjc1OUMwMDY3MUU5MCAvKiBE
T01Ob2RlTGlzdC5oICovLAorCQkJCTg1QUNBQThBMEE5Qjc1OUMwMDY3MUU5MCAvKiBET01Ob2Rl
TGlzdC5tbSAqLywKKwkJCQk4NUNBOTZFODBBOTYyNEU5MDA2OTBDQ0YgLyogRE9NTm90YXRpb24u
aCAqLywKKwkJCQk4NUNBOTZFOTBBOTYyNEU5MDA2OTBDQ0YgLyogRE9NTm90YXRpb24ubW0gKi8s
CisJCQkJODVGNTZBNzgwQTk4Q0UzNzAwQURCNjBBIC8qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlv
bi5oICovLAorCQkJCTg1RjU2QTc5MEE5OENFMzcwMEFEQjYwQSAvKiBET01Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24ubW0gKi8sCisJCQkJODVBQ0E5OUEwQTlCNTc1OTAwNjcxRTkwIC8qIERPTVRleHQu
aCAqLywKKwkJCQk4NUFDQTk5QjBBOUI1NzU5MDA2NzFFOTAgLyogRE9NVGV4dC5tbSAqLywKKwkJ
CSk7CisJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CisJCQlwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZTsKKwkJCXNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7CisJCX07CiAJ
CTkzMDMyQ0NDMDlBRUMzNjIwMEY4MkExOCAvKiBjZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCkBAIC00OTY2LDkgKzUxMDAsOSBAQAogCQlCQzFBMzc5NDA5N0M2
RkM0MDAxOUYzRDggLyogb2JqYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJMUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5o
ICovLAotCQkJCTFDQUYzNDdGMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0g
Ki8sCi0JCQkJMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdFByaXZh
dGUuaCAqLywKKwkJCQk4NUIyMzIyNjBBOEJGM0ExMDBGREY0N0IgLyogRGVyaXZlZCBTb3VyY2Vz
ICovLAorCQkJCTg1NEYxMkFDMEE4RUJDMTgwMDA5NDBCNSAvKiBDb3JlICovLAorCQkJCTg1OUI3
RkI5MEE4RDI4ODgwMEE1RjFFQSAvKiBDb2RlR2VuZXJhdG9yT2JqQy5wbSAqLywKIAkJCQlCQzFB
Mzc5NzA5N0M3MTVGMDAxOUYzRDggLyogRE9NLmggKi8sCiAJCQkJQkMxQTM3OTgwOTdDNzE1RjAw
MTlGM0Q4IC8qIERPTS5tbSAqLywKIAkJCQlCQzFBMzc5OTA5N0M3MTVGMDAxOUYzRDggLyogRE9N
Q29yZS5oICovLApAQCAtNDk5OCw2ICs1MTMyLDkgQEAKIAkJCQkxQTFEMTM3RTBBNTMyNTUyMDA2
NEJGNUYgLyogRE9NWFBhdGguaCAqLywKIAkJCQkxQTFEMTM3RjBBNTMyNTUyMDA2NEJGNUYgLyog
RE9NWFBhdGgubW0gKi8sCiAJCQkJMUExRDEzQzkwQTUzMjkwOTAwNjRCRjVGIC8qIERPTVhQYXRo
SW50ZXJuYWwuaCAqLywKKwkJCQkxQ0FGMzQ3RTBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0
T2JqZWN0LmggKi8sCisJCQkJMUNBRjM0N0YwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9i
amVjdC5tbSAqLywKKwkJCQkxQ0FGMzQ4MDBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBvYmpjOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKQEAgLTU0NzgsNiArNTYxNSw3IEBACiAJCQkJODUwMzFCMjcwQTQ0RUZDNzAw
Rjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50LmggKi8sCiAJCQkJNjU1MEI2OTMwOTlERjAyNzAw
OTBENzgxIC8qIENEQVRBU2VjdGlvbi5jcHAgKi8sCiAJCQkJNjU1MEI2OTQwOTlERjAyNzAwOTBE
NzgxIC8qIENEQVRBU2VjdGlvbi5oICovLAorCQkJCTg1MDg5Q0M5MEE5OEMyQUIwMEEyNzVBQSAv
KiBDREFUQVNlY3Rpb24uaWRsICovLAogCQkJCTY1NTBCNjk1MDk5REYwMjcwMDkwRDc4MSAvKiBD
aGFyYWN0ZXJEYXRhLmNwcCAqLywKIAkJCQk2NTUwQjY5NjA5OURGMDI3MDA5MEQ3ODEgLyogQ2hh
cmFjdGVyRGF0YS5oICovLAogCQkJCTkzRUVDMUU2MDlDMjg3NzcwMEM1MTVEMSAvKiBDaGFyYWN0
ZXJEYXRhLmlkbCAqLywKQEAgLTU0ODgsNiArNTYyNiw3IEBACiAJCQkJODUwMzFCMkEwQTQ0RUZD
NzAwRjk5MkUwIC8qIENsaXBib2FyZEV2ZW50LmggKi8sCiAJCQkJNjU1MEI2OTcwOTlERjAyNzAw
OTBENzgxIC8qIENvbW1lbnQuY3BwICovLAogCQkJCTY1NTBCNjk4MDk5REYwMjcwMDkwRDc4MSAv
KiBDb21tZW50LmggKi8sCisJCQkJODUwODlDQzcwQTk4QzIyNjAwQTI3NUFBIC8qIENvbW1lbnQu
aWRsICovLAogCQkJCUE4MTg3MjE0MDk3N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmNw
cCAqLywKIAkJCQlBODE4NzIxMTA5NzdEM0MwMDA1ODI2RDkgLyogQ29udGFpbmVyTm9kZS5oICov
LAogCQkJCUE4QzRBN0Y4MDlENTYzMjcwMDAzQUM4RCAvKiBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNs
YXJhdGlvbi5jcHAgKi8sCkBAIC01NTE2LDYgKzU2NTUsNyBAQAogCQkJCTkzRUVDMUVCMDlDMjg3
NzcwMEM1MTVEMSAvKiBFbnRpdHkuaWRsICovLAogCQkJCUE4RUE3RUI5MEExOTQ1RDAwMEE4RUY1
RiAvKiBFbnRpdHlSZWZlcmVuY2UuY3BwICovLAogCQkJCUE4RUE3RUI4MEExOTQ1RDAwMEE4RUY1
RiAvKiBFbnRpdHlSZWZlcmVuY2UuaCAqLywKKwkJCQk4NTA4OUNDQjBBOThDMzNBMDBBMjc1QUEg
LyogRW50aXR5UmVmZXJlbmNlLmlkbCAqLywKIAkJCQk4NTAzMUIyQjBBNDRFRkM3MDBGOTkyRTAg
LyogRXZlbnQuY3BwICovLAogCQkJCTg1MDMxQjJDMEE0NEVGQzcwMEY5OTJFMCAvKiBFdmVudC5o
ICovLAogCQkJCTE0RTgzNkQyMDlGODUxMjAwMEI4NUFFNCAvKiBFdmVudC5pZGwgKi8sCkBAIC01
NTQ0LDYgKzU2ODQsNyBAQAogCQkJCUE4QzRBN0YwMDlENTYzMjcwMDAzQUM4RCAvKiBOYW1lZE1h
cHBlZEF0dHJNYXAuY3BwICovLAogCQkJCUE4QzRBN0VGMDlENTYzMjcwMDAzQUM4RCAvKiBOYW1l
ZE1hcHBlZEF0dHJNYXAuaCAqLywKIAkJCQlBODE4NzIxODA5NzdEM0MwMDA1ODI2RDkgLyogTmFt
ZWROb2RlTWFwLmggKi8sCisJCQkJODVBQ0E5RjkwQTlCNjMxMDAwNjcxRTkwIC8qIE5hbWVkTm9k
ZU1hcC5pZGwgKi8sCiAJCQkJQTgxODcyMTkwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlz
dC5jcHAgKi8sCiAJCQkJQTgxODcyMTMwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlzdC5o
ICovLAogCQkJCUE4QzRBN0VFMDlENTYzMjcwMDAzQUM4RCAvKiBOb2RlLmNwcCAqLywKQEAgLTU1
NTksNiArNTcwMCw3IEBACiAJCQkJMUE3NTBEODcwQTkwRTM5NDAwMEZGMjE1IC8qIE5vZGVJdGVy
YXRvci5pZGwgKi8sCiAJCQkJQTgxODcyMTYwOTc3RDNDMDAwNTgyNkQ5IC8qIE5vZGVMaXN0LmNw
cCAqLywKIAkJCQlBODE4NzIxMDA5NzdEM0MwMDA1ODI2RDkgLyogTm9kZUxpc3QuaCAqLywKKwkJ
CQk4NUFDQTlGQTBBOUI2MzEwMDA2NzFFOTAgLyogTm9kZUxpc3QuaWRsICovLAogCQkJCUE4RUE3
RUI3MEExOTQ1RDAwMEE4RUY1RiAvKiBOb3RhdGlvbi5jcHAgKi8sCiAJCQkJQThFQTdFQjYwQTE5
NDVEMDAwQThFRjVGIC8qIE5vdGF0aW9uLmggKi8sCiAJCQkJOTNFRUMxRjQwOUMyODc3NzAwQzUx
NUQxIC8qIE5vdGF0aW9uLmlkbCAqLywKQEAgLTYzODEsNiArNjUyMywxMSBAQAogCQkJCUJDQUE5
MEEwMEE3RUIwM0EwMDhCMTIyOSAvKiBQbGF0Zm9ybVNjcm9sbEJhci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODVFQzlBRkEwQTcxQTJDNjAwRUVFQUVEIC8qIEZvbnREYXRhLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NUVDOUFGQjBBNzFBMkM2MDBFRUVBRUQgLyogTGFuZ3VhZ2UuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTg1NkM4OUZDMEE5MEYwNjgwMDVDNjg3QiAvKiBET01Ob2RlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk4NTZDOEFFNDBBOTEyNjQ5MDA1QzY4N0IgLyogRE9NT2JqZWN0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk4NUNBOTZCODBBOTYyMUE2MDA2OTBDQ0YgLyogRE9NRW50aXR5LmggaW4g
SGVhZGVycyAqLywKKwkJCQk4NUNBOTZFQTBBOTYyNEU5MDA2OTBDQ0YgLyogRE9NTm90YXRpb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCTg1Q0E5NzVDMEE5NjJFNTQwMDY5MENDRiAvKiBET01Eb2N1
bWVudFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjdGQzY5MEE4QjkyRUMwMEQ5RDM3QiAv
KiBYUGF0aEV2YWx1YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCN0ZDNkMwQThCOTJFQzAw
RDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCN0ZDNkYw
QThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbk5vZGUuaCBpbiBIZWFkZXJzICovLApA
QCAtNjQwMSw2ICs2NTQ4LDE5IEBACiAJCQkJMUFDRTUzRjcwQThEMTk0NzAwMjI5NDdEIC8qIEpT
WE1MU2VyaWFsaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE3NTBENUQwQTkwREVFMTAwMEZG
MjE1IC8qIEpTVHJlZVdhbGtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE3NTBEOEUwQTkwRTUy
MTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTA4OUNE
NzBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4NTA4OUNEOTBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ29tbWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJODUwODlDREIwQTk4QzQyODAwQTI3NUFBIC8qIERPTURvY3VtZW50RnJhZ21lbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTg1MDg5Q0REMEE5OEM0MjgwMEEyNzVBQSAvKiBET01FbnRpdHlS
ZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1RjU2QTdBMEE5OENFMzcwMEFEQjYwQSAv
KiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTg1RDM4OUIy
MEE5OTFBN0YwMDI4MjE0NSAvKiBET01BdHRyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUFDQTk4
NjBBOUI1MjAzMDA2NzFFOTAgLyogRE9NQ2hhcmFjdGVyRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJODVBQ0E5OUMwQTlCNTc1OTAwNjcxRTkwIC8qIERPTVRleHQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTg1QUNBOUMwMEE5QjVGQTUwMDY3MUU5MCAvKiBET01FbGVtZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQk4NUFDQUE4RDBBOUI3NTlDMDA2NzFFOTAgLyogRE9NTm9kZUxpc3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTg1QUNBQkIwMEE5Q0FGODAwMDY3MUU5MCAvKiBET01Eb2N1bWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJODUxOERDRTkwQTlDQzgwRDAwOTFCN0E2IC8qIERPTURPTUltcGxl
bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTE4REQ3ODBBOUNGMzFCMDA5MUI3QTYg
LyogRE9NTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTc0MjkxNzBBOUMyRDBC
MDBDNTJDOTcgLyogSWNvbkRhdGFDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU3NDI5MTgw
QTlDMkQwQjAwQzUyQzk3IC8qIFNRTFN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU3
NDI5MTkwQTlDMkQwQjAwQzUyQzk3IC8qIFNRTFRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywK
QEAgLTY0OTUsNiArNjY1NSwxMSBAQAogCQkJCTFDRDQ0MThGMEE0Q0U3NkYwMEEwMDdBQiAvKiBu
b3J0aFNvdXRoUmVzaXplQ3Vyc29yLnRpZmYgaW4gUmVzb3VyY2VzICovLAogCQkJCTFDRDQ0MTkw
MEE0Q0U3NkYwMEEwMDdBQiAvKiBub3J0aFdlc3RTb3V0aEVhc3RSZXNpemVDdXJzb3IudGlmZiBp
biBSZXNvdXJjZXMgKi8sCiAJCQkJMUE3NTBEODgwQTkwRTM5NDAwMEZGMjE1IC8qIE5vZGVJdGVy
YXRvci5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCTg1MDg5Q0M4MEE5OEMyMjYwMEEyNzVBQSAv
KiBDb21tZW50LmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJODUwODlDQ0EwQTk4QzJBQjAwQTI3
NUFBIC8qIENEQVRBU2VjdGlvbi5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCTg1MDg5Q0NDMEE5
OEMzM0EwMEEyNzVBQSAvKiBFbnRpdHlSZWZlcmVuY2UuaWRsIGluIFJlc291cmNlcyAqLywKKwkJ
CQk4NUFDQTlGQjBBOUI2MzEwMDA2NzFFOTAgLyogTmFtZWROb2RlTWFwLmlkbCBpbiBSZXNvdXJj
ZXMgKi8sCisJCQkJODVBQ0E5RkMwQTlCNjMxMDAwNjcxRTkwIC8qIE5vZGVMaXN0LmlkbCBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkJNTExNTA5NUMwQTlDRTA0NzAwOTAxMDEzIC8qIHVybEljb24udGlm
ZiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CkBAIC03MjUzLDYgKzc0MTgsMTEgQEAKIAkJCQlCQ0FBOTBDMzBBN0VCQTYw
MDA4QjEyMjkgLyogU2Nyb2xsQmFyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzQjBGRDhBMEE3
NTlCRUQwMDgwQUQ0NCAvKiBTdHJpbmdJbXBsTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNC
MEZEOEIwQTc1OUJFRDAwODBBRDQ0IC8qIFN0cmluZ01hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTg1NkM4OUZEMEE5MEYwNjgwMDVDNjg3QiAvKiBET01Ob2RlLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJODU2QzhBRTUwQTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTg1Q0E5NkI5MEE5NjIxQTYwMDY5MENDRiAvKiBET01FbnRpdHkubW0gaW4gU291cmNl
cyAqLywKKwkJCQk4NUNBOTZFQjBBOTYyNEU5MDA2OTBDQ0YgLyogRE9NTm90YXRpb24ubW0gaW4g
U291cmNlcyAqLywKKwkJCQk4NUNBOTc1RDBBOTYyRTU0MDA2OTBDQ0YgLyogRE9NRG9jdW1lbnRU
eXBlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0ZDNjgwQThCOTJFQzAwRDlEMzdCIC8qIFhQ
YXRoRXZhbHVhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdGQzZCMEE4QjkyRUMwMEQ5
RDM3QiAvKiBYUGF0aEV4cHJlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0ZDNkUw
QThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbk5vZGUuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC03Mjc1LDYgKzc0NDUsMTkgQEAKIAkJCQkxQTc1MEQ4RDBBOTBFNTIxMDAwRkYyMTUgLyog
SlNOb2RlSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3NTBERDQwQTkwRTcyOTAw
MEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
NzUwRTM0MEE5MEY4OUYwMDBGRjIxNSAvKiBKU1RyZWVXYWxrZXJDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJODUwODlDRDgwQTk4QzQyODAwQTI3NUFBIC8qIERPTUNEQVRBU2VjdGlvbi5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTg1MDg5Q0RBMEE5OEM0MjgwMEEyNzVBQSAvKiBET01Db21t
ZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODUwODlDREMwQTk4QzQyODAwQTI3NUFBIC8qIERP
TURvY3VtZW50RnJhZ21lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTA4OUNERTBBOThDNDI4
MDBBMjc1QUEgLyogRE9NRW50aXR5UmVmZXJlbmNlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODVG
NTZBN0IwQTk4Q0UzNzAwQURCNjBBIC8qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTg1RDM4OUIzMEE5OTFBN0YwMDI4MjE0NSAvKiBET01BdHRyLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJODVBQ0E5ODcwQTlCNTIwMzAwNjcxRTkwIC8qIERPTUNoYXJhY3Rl
ckRhdGEubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NUFDQTk5RDBBOUI1NzU5MDA2NzFFOTAgLyog
RE9NVGV4dC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1QUNBOUMxMEE5QjVGQTUwMDY3MUU5MCAv
KiBET01FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODVBQ0FBOEUwQTlCNzU5QzAwNjcx
RTkwIC8qIERPTU5vZGVMaXN0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODVBQ0FCQjEwQTlDQUY4
MDAwNjcxRTkwIC8qIERPTURvY3VtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODUxOERDRUEw
QTlDQzgwRDAwOTFCN0E2IC8qIERPTURPTUltcGxlbWVudGF0aW9uLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJODUxOERENzkwQTlDRjMxQjAwOTFCN0E2IC8qIERPTU5hbWVkTm9kZU1hcC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUxODZDMDU2MEE5QzIxNDcwMDM0RkU5NCAvKiBJY29uRGF0YUNhY2hl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCShyZXZpc2lvbiAxNTk5NykKKysr
IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgSmFtZXMgRy4gU3Bl
dGggKHNwZXRoQGVuZC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAo
c2FtLndlaW5pZ0BnbWFpbC5jb20pCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI4LDE3ICsyOSwxNyBAQAogI2ltcG9ydCAiRE9NLmgiCiAKICNpbXBvcnQgIkNEQVRBU2VjdGlv
bi5oIgotI2ltcG9ydCAiY3NzaGVscGVyLmgiCiAjaW1wb3J0ICJDU1NTdHlsZVNoZWV0LmgiCiAj
aW1wb3J0ICJDb21tZW50LmgiCiAjaW1wb3J0ICJET01FdmVudHNJbnRlcm5hbC5oIgorI2ltcG9y
dCAiRE9NSFRNTC5oIgogI2ltcG9ydCAiRE9NSW1wbGVtZW50YXRpb25Gcm9udC5oIgogI2ltcG9y
dCAiRE9NSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVByaXZhdGUuaCIKKyNpbXBvcnQgIkRlcHJl
Y2F0ZWRWYWx1ZUxpc3QuaCIKICNpbXBvcnQgIkRvY3VtZW50LmgiCiAjaW1wb3J0ICJEb2N1bWVu
dEZyYWdtZW50LmgiCiAjaW1wb3J0ICJEb2N1bWVudFR5cGUuaCIKLSNpbXBvcnQgIkVudGl0eS5o
IgogI2ltcG9ydCAiRW50aXR5UmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJFdmVudC5oIgogI2ltcG9y
dCAiRXZlbnRMaXN0ZW5lci5oIgpAQCAtNDcsMzcgKzQ4LDEyMiBAQAogI2ltcG9ydCAiSFRNTERv
Y3VtZW50LmgiCiAjaW1wb3J0ICJIVE1MTmFtZXMuaCIKICNpbXBvcnQgIkhUTUxQbHVnSW5FbGVt
ZW50LmgiCisjaW1wb3J0ICJJbnRSZWN0LmgiCiAjaW1wb3J0ICJOb2RlRmlsdGVyLmgiCiAjaW1w
b3J0ICJOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCiAjaW1wb3J0ICJOb2RlSXRlcmF0b3IuaCIKICNp
bXBvcnQgIk5vZGVMaXN0LmgiCi0jaW1wb3J0ICJOb3RhdGlvbi5oIgogI2ltcG9ydCAiUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmgiCiAjaW1wb3J0ICJRdWFsaWZpZWROYW1lLmgiCiAjaW1wb3J0ICJS
YW5nZS5oIgogI2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKKyNpbXBvcnQgIlRleHQuaCIKICNpbXBv
cnQgIlRyZWVXYWxrZXIuaCIKICNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKKyNp
bXBvcnQgImNzc2hlbHBlci5oIgorCisKKworLy8gRnJvbSBvbGQgRE9NQ29yZS5oCisjaW1wb3J0
ICJET01Ob2RlLmgiCisjaW1wb3J0ICJET01PYmplY3QuaCIKKworLy8gR2VuZXJhdGVkIE9iamVj
dGl2ZS1DIEJpbmRpbmdzCisjaW1wb3J0ICJET01BdHRyLmgiCisjaW1wb3J0ICJET01DREFUQVNl
Y3Rpb24uaCIKKyNpbXBvcnQgIkRPTUNoYXJhY3RlckRhdGEuaCIKKyNpbXBvcnQgIkRPTUNvbW1l
bnQuaCIKKyNpbXBvcnQgIkRPTURPTUltcGxlbWVudGF0aW9uLmgiCisjaW1wb3J0ICJET01Eb2N1
bWVudC5oIgorI2ltcG9ydCAiRE9NRG9jdW1lbnRGcmFnbWVudC5oIgorI2ltcG9ydCAiRE9NRG9j
dW1lbnRUeXBlLmgiCisjaW1wb3J0ICJET01FbGVtZW50LmgiCisjaW1wb3J0ICJET01FbnRpdHku
aCIKKyNpbXBvcnQgIkRPTUVudGl0eVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiRE9NTmFtZWROb2Rl
TWFwLmgiCisjaW1wb3J0ICJET01Ob2RlTGlzdC5oIgorI2ltcG9ydCAiRE9NTm90YXRpb24uaCIK
KyNpbXBvcnQgIkRPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgorI2ltcG9ydCAiRE9NVGV4dC5o
IgorCisKKy8vIEZyb20gb2xkIERPTUhUTUwuaAorLy8jaW1wb3J0ICJET01IVE1MQW5jaG9yRWxl
bWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MQXBwbGV0RWxlbWVudC5oIgorLy8jaW1wb3J0ICJE
T01IVE1MQ29sbGVjdGlvbi5oIgorLy8jaW1wb3J0ICJET01IVE1MRG9jdW1lbnQuaCIKKy8vI2lt
cG9ydCAiRE9NSFRNTEVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTEZyYW1lRWxlbWVudC5o
IgorLy8jaW1wb3J0ICJET01IVE1MRnJhbWVTZXRFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhU
TUxJRnJhbWVFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxPYmplY3RFbGVtZW50LmgiCisv
LyNpbXBvcnQgIkRPTUhUTUxPcHRpb25FbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxPcHRp
b25zQ29sbGVjdGlvbi5oIgorLy8jaW1wb3J0ICJET01IVE1MU2VsZWN0RWxlbWVudC5oIgorLy8j
aW1wb3J0ICJET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1M
VGFibGVDZWxsRWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MVGFibGVDb2xFbGVtZW50Lmgi
CisvLyNpbXBvcnQgIkRPTUhUTUxUYWJsZUVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTFRh
YmxlUm93RWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5o
IgorCisvLyBHZW5lcmF0ZWQgT2JqZWN0aXZlLUMgQmluZGluZ3MKKy8vI2ltcG9ydCAiRE9NSFRN
TEFyZWFFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxCUkVsZW1lbnQuaCIKKy8vI2ltcG9y
dCAiRE9NSFRNTEJhc2VFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxCYXNlRm9udEVsZW1l
bnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTEJvZHlFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhU
TUxCdXR0b25FbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxETGlzdEVsZW1lbnQuaCIKKy8v
I2ltcG9ydCAiRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTERp
dkVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5oIgorLy8jaW1w
b3J0ICJET01IVE1MRm9udEVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTEZvcm1FbGVtZW50
LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxIUkVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTEhl
YWRFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxIZWFkaW5nRWxlbWVudC5oIgorLy8jaW1w
b3J0ICJET01IVE1MSHRtbEVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTEltYWdlRWxlbWVu
dC5oIgorLy8jaW1wb3J0ICJET01IVE1MSW5wdXRFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhU
TUxJc0luZGV4RWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MTElFbGVtZW50LmgiCisvLyNp
bXBvcnQgIkRPTUhUTUxMYWJlbEVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTExlZ2VuZEVs
ZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTExpbmtFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRP
TUhUTUxNYXBFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxNZW51RWxlbWVudC5oIgorLy8j
aW1wb3J0ICJET01IVE1MTWV0YUVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTE1vZEVsZW1l
bnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTE9MaXN0RWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01I
VE1MT2JqZWN0RWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MT3B0R3JvdXBFbGVtZW50Lmgi
CisvLyNpbXBvcnQgIkRPTUhUTUxQYXJhZ3JhcGhFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhU
TUxQYXJhbUVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTFByZUVsZW1lbnQuaCIKKy8vI2lt
cG9ydCAiRE9NSFRNTFF1b3RlRWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MU2NyaXB0RWxl
bWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MU3R5bGVFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRP
TUhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTFRpdGxlRWxlbWVudC5o
IgorLy8jaW1wb3J0ICJET01IVE1MVUxpc3RFbGVtZW50LmgiCisKKwogI2ltcG9ydCA8b2JqYy9v
YmpjLWNsYXNzLmg+CiAKIHVzaW5nIFdlYkNvcmU6OkF0b21pY1N0cmluZzsKIHVzaW5nIFdlYkNv
cmU6OkF0b21pY1N0cmluZ0ltcGw7CiB1c2luZyBXZWJDb3JlOjpBdHRyOwotdXNpbmcgV2ViQ29y
ZTo6Q2hhcmFjdGVyRGF0YTsKLXVzaW5nIFdlYkNvcmU6OkRlcHJlY2F0ZWRWYWx1ZUxpc3Q7CiB1
c2luZyBXZWJDb3JlOjpEb2N1bWVudDsKIHVzaW5nIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ7
Ci11c2luZyBXZWJDb3JlOjpEb2N1bWVudFR5cGU7CiB1c2luZyBXZWJDb3JlOjpET01JbXBsZW1l
bnRhdGlvbkZyb250OwogdXNpbmcgV2ViQ29yZTo6RWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6OkVu
dGl0eTsKIHVzaW5nIFdlYkNvcmU6OkV2ZW50OwogdXNpbmcgV2ViQ29yZTo6RXZlbnRMaXN0ZW5l
cjsKIHVzaW5nIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGU7CiB1c2luZyBXZWJDb3JlOjpIVE1MRG9j
dW1lbnQ7CiB1c2luZyBXZWJDb3JlOjpIVE1MRWxlbWVudDsKIHVzaW5nIFdlYkNvcmU6OkZyYW1l
TWFjOwotdXNpbmcgV2ViQ29yZTo6SW50UmVjdDsKIHVzaW5nIFdlYkNvcmU6OktVUkw7CiB1c2lu
ZyBXZWJDb3JlOjpOYW1lZE5vZGVNYXA7CiB1c2luZyBXZWJDb3JlOjpOb2RlOwpAQCAtODUsMzIg
KzE3MSwxNSBAQCB1c2luZyBXZWJDb3JlOjpOb2RlRmlsdGVyOwogdXNpbmcgV2ViQ29yZTo6Tm9k
ZUZpbHRlckNvbmRpdGlvbjsKIHVzaW5nIFdlYkNvcmU6Ok5vZGVJdGVyYXRvcjsKIHVzaW5nIFdl
YkNvcmU6Ok5vZGVMaXN0OwotdXNpbmcgV2ViQ29yZTo6Tm90YXRpb247Ci11c2luZyBXZWJDb3Jl
OjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb247CiB1c2luZyBXZWJDb3JlOjpRdWFsaWZpZWROYW1lOwog
dXNpbmcgV2ViQ29yZTo6UmFuZ2U7CiB1c2luZyBXZWJDb3JlOjpSZW5kZXJJbWFnZTsKIHVzaW5n
IFdlYkNvcmU6OlJlbmRlck9iamVjdDsKIHVzaW5nIFdlYkNvcmU6OlN0cmluZzsKLXVzaW5nIFdl
YkNvcmU6OlRleHQ7CiB1c2luZyBXZWJDb3JlOjpUcmVlV2Fsa2VyOwogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTo6SFRNTE5hbWVzOwogCi1AaW50ZXJmYWNlIERPTUF0dHIgKFdlYkNvcmVJbnRl
cm5hbCkKLSsgKERPTUF0dHIgKilfYXR0cldpdGg6KEF0dHIgKilpbXBsOwotLSAoQXR0ciAqKV9h
dHRyOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTURvY3VtZW50VHlwZSAoV2ViQ29yZUludGVybmFs
KQotLSAoRG9jdW1lbnRUeXBlICopX2RvY3VtZW50VHlwZTsKLUBlbmQKLQotQGludGVyZmFjZSBE
T01JbXBsZW1lbnRhdGlvbiAoV2ViQ29yZUludGVybmFsKQotKyAoRE9NSW1wbGVtZW50YXRpb24g
KilfRE9NSW1wbGVtZW50YXRpb25XaXRoOihET01JbXBsZW1lbnRhdGlvbkZyb250ICopaW1wbDsK
LS0gKERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilfRE9NSW1wbGVtZW50YXRpb247Ci1AZW5kCi0K
IGNsYXNzIE9iakNFdmVudExpc3RlbmVyIDogcHVibGljIEV2ZW50TGlzdGVuZXIgewogcHVibGlj
OgogICAgIHN0YXRpYyBPYmpDRXZlbnRMaXN0ZW5lciAqZmluZChpZCA8RE9NRXZlbnRMaXN0ZW5l
cj4pOwpAQCAtMTMxLDQyICsyMDAsMTAgQEAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0lt
cGwqLCBDbGFzcwogc3RhdGljIE9iakNDbGFzc01hcCogZWxlbWVudENsYXNzTWFwOwogc3RhdGlj
IExpc3RlbmVyTWFwKiBsaXN0ZW5lck1hcDsKIAorCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogLy8gRE9NT2JqZWN0CiAKLUBpbXBsZW1lbnRhdGlvbiBET01PYmplY3QKLQot
Ly8gUHJldmVudCBjcmVhdGlvbiBvZiBET00gb2JqZWN0cyBieSBjbGllbnRzIHdobyBqdXN0ICJb
W3h4eCBhbGxvY10gaW5pdF0iLgotLSAoaWQpaW5pdAotewotICAgIFtOU0V4Y2VwdGlvbiByYWlz
ZTpOU0dlbmVyaWNFeGNlcHRpb24gZm9ybWF0OkAiK1slQCBpbml0XTogc2hvdWxkIG5ldmVyIGJl
IHVzZWQiLCBOU1N0cmluZ0Zyb21DbGFzcyhbc2VsZiBjbGFzc10pXTsKLSAgICBbc2VsZiByZWxl
YXNlXTsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAo
X2ludGVybmFsKSB7Ci0gICAgICAgIHJlbW92ZURPTVdyYXBwZXIoX2ludGVybmFsKTsKLSAgICB9
Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgaWYg
KF9pbnRlcm5hbCkgewotICAgICAgICByZW1vdmVET01XcmFwcGVyKF9pbnRlcm5hbCk7Ci0gICAg
fQotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19Ci0KLS0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25l
ICopem9uZQotewotICAgIHJldHVybiBbc2VsZiByZXRhaW5dOwotfQotCi1AZW5kCi0KIEBpbXBs
ZW1lbnRhdGlvbiBET01PYmplY3QgKFdlYkNvcmVJbnRlcm5hbCkKIAogLSAoaWQpX2luaXQKQEAg
LTE3NiwyNzEgKzIxMywxMCBAQCBzdGF0aWMgTGlzdGVuZXJNYXAqIGxpc3RlbmVyTWFwOwogCiBA
ZW5kCiAKKwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTU5vZGUK
IAotQGltcGxlbWVudGF0aW9uIERPTU5vZGUKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYg
KF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCktPmRlcmVm
KCk7Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6ZQot
ewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJu
YWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChOU1N0
cmluZyAqKWRlc2NyaXB0aW9uCi17Ci0gICAgaWYgKCFfaW50ZXJuYWwpIHsKLSAgICAgICAgcmV0
dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiBudWxsPiIsCi0gICAgICAgICAg
ICBbW3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9uXSwgc2VsZl07Ci0gICAgfQotICAgIE5TU3RyaW5n
ICp2YWx1ZSA9IFtzZWxmIG5vZGVWYWx1ZV07Ci0gICAgaWYgKHZhbHVlKSB7Ci0gICAgICAgIHJl
dHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQCBbJUBdOiAlcCAnJUAnPiIsCi0g
ICAgICAgICAgICBbW3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9uXSwgW3NlbGYgbm9kZU5hbWVdLCBf
aW50ZXJuYWwsIHZhbHVlXTsKLSAgICB9Ci0gICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiPCVAIFslQF06ICVwPiIsCi0gICAgICAgIFtbc2VsZiBjbGFzc10gZGVzY3JpcHRp
b25dLCBbc2VsZiBub2RlTmFtZV0sIF9pbnRlcm5hbF07Ci19Ci0KLS0gKE5TU3RyaW5nICopbm9k
ZU5hbWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2RlTmFtZSgpOwotfQotCi0tIChO
U1N0cmluZyAqKW5vZGVWYWx1ZQotewotICAgIC8vIERvY3VtZW50YXRpb24gc2F5cyB3ZSBjYW4g
cmFpc2UgYSBET01TVFJJTkdfU0laRV9FUlIuCi0gICAgLy8gSG93ZXZlciwgdGhlIGxvd2VyIGxh
eWVyIGRvZXMgbm90IHJlcG9ydCB0aGF0IGVycm9yIHVwIHRvIHVzLgotICAgIHJldHVybiBbc2Vs
ZiBfbm9kZV0tPm5vZGVWYWx1ZSgpOwotfQotCi0tICh2b2lkKXNldE5vZGVWYWx1ZTooTlNTdHJp
bmcgKilzdHJpbmcKLXsKLSAgICBBU1NFUlQoc3RyaW5nKTsKLSAgICAKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBbc2VsZiBfbm9kZV0tPnNldE5vZGVWYWx1ZShzdHJpbmcsIGVjKTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh1bnNpZ25lZCBzaG9ydClub2RlVHlw
ZQotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPm5vZGVUeXBlKCk7Ci19Ci0KLS0gKERPTU5v
ZGUgKilwYXJlbnROb2RlCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBf
bm9kZV0tPnBhcmVudE5vZGUoKV07Ci19Ci0KLS0gKERPTU5vZGVMaXN0ICopY2hpbGROb2Rlcwot
ewotICAgIHJldHVybiBbRE9NTm9kZUxpc3QgX25vZGVMaXN0V2l0aDpbc2VsZiBfbm9kZV0tPmNo
aWxkTm9kZXMoKS5nZXQoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilmaXJzdENoaWxkCi17Ci0gICAg
cmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPmZpcnN0Q2hpbGQoKV07Ci19
Ci0KLS0gKERPTU5vZGUgKilsYXN0Q2hpbGQKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVX
aXRoOltzZWxmIF9ub2RlXS0+bGFzdENoaWxkKCldOwotfQotCi0tIChET01Ob2RlICopcHJldmlv
dXNTaWJsaW5nCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0t
PnByZXZpb3VzU2libGluZygpXTsKLX0KLQotLSAoRE9NTm9kZSAqKW5leHRTaWJsaW5nCi17Ci0g
ICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPm5leHRTaWJsaW5nKCld
OwotfQotCi0tIChET01OYW1lZE5vZGVNYXAgKilhdHRyaWJ1dGVzCi17Ci0gICAgLy8gRE9NIGxl
dmVsIDIgY29yZSBzcGVjaWZpY2F0aW9uIHNheXM6IAotICAgIC8vIEEgTmFtZWROb2RlTWFwIGNv
bnRhaW5pbmcgdGhlIGF0dHJpYnV0ZXMgb2YgdGhpcyBub2RlIChpZiBpdCBpcyBhbiBFbGVtZW50
KSBvciBudWxsIG90aGVyd2lzZS4KLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChET01Eb2N1bWVu
dCAqKW93bmVyRG9jdW1lbnQKLXsKLSAgICByZXR1cm4gW0RPTURvY3VtZW50IF9kb2N1bWVudFdp
dGg6W3NlbGYgX25vZGVdLT5kb2N1bWVudCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKWluc2VydEJl
Zm9yZTooRE9NTm9kZSAqKW5ld0NoaWxkIDooRE9NTm9kZSAqKXJlZkNoaWxkCi17Ci0gICAgQVNT
RVJUKG5ld0NoaWxkKTsKLSAgICBBU1NFUlQocmVmQ2hpbGQpOwotCi0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgaWYgKFtzZWxmIF9ub2RlXS0+aW5zZXJ0QmVmb3JlKFtuZXdDaGlsZCBf
bm9kZV0sIFtyZWZDaGlsZCBfbm9kZV0sIGVjKSkKLSAgICAgICAgcmV0dXJuIG5ld0NoaWxkOwot
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoRE9NTm9k
ZSAqKXJlcGxhY2VDaGlsZDooRE9NTm9kZSAqKW5ld0NoaWxkIDooRE9NTm9kZSAqKW9sZENoaWxk
Ci17Ci0gICAgQVNTRVJUKG5ld0NoaWxkKTsKLSAgICBBU1NFUlQob2xkQ2hpbGQpOwotCi0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKFtzZWxmIF9ub2RlXS0+cmVwbGFjZUNoaWxk
KFtuZXdDaGlsZCBfbm9kZV0sIFtvbGRDaGlsZCBfbm9kZV0sIGVjKSkKLSAgICAgICAgcmV0dXJu
IG9sZENoaWxkOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIG5pbDsKLX0K
LQotLSAoRE9NTm9kZSAqKXJlbW92ZUNoaWxkOihET01Ob2RlICopb2xkQ2hpbGQKLXsKLSAgICBB
U1NFUlQob2xkQ2hpbGQpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKFtz
ZWxmIF9ub2RlXS0+cmVtb3ZlQ2hpbGQoW29sZENoaWxkIF9ub2RlXSwgZWMpKQotICAgICAgICBy
ZXR1cm4gb2xkQ2hpbGQ7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gbmls
OwotfQotCi0tIChET01Ob2RlICopYXBwZW5kQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGlsZAotewot
ICAgIEFTU0VSVChuZXdDaGlsZCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBp
ZiAoW3NlbGYgX25vZGVdLT5hcHBlbmRDaGlsZChbbmV3Q2hpbGQgX25vZGVdLCBlYykpCi0gICAg
ICAgIHJldHVybiBuZXdDaGlsZDsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVy
biBuaWw7Ci19Ci0KLS0gKEJPT0wpaGFzQ2hpbGROb2RlcwotewotICAgIHJldHVybiBbc2VsZiBf
bm9kZV0tPmhhc0NoaWxkTm9kZXMoKTsKLX0KLQotLSAoRE9NTm9kZSAqKWNsb25lTm9kZTooQk9P
TClkZWVwCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPmNs
b25lTm9kZShkZWVwKS5nZXQoKV07Ci19Ci0KLS0gKHZvaWQpbm9ybWFsaXplCi17Ci0gICAgW3Nl
bGYgX25vZGVdLT5ub3JtYWxpemUoKTsKLX0KLQotLSAoQk9PTClpc1N1cHBvcnRlZDooTlNTdHJp
bmcgKilmZWF0dXJlIDooTlNTdHJpbmcgKil2ZXJzaW9uCi17Ci0gICAgQVNTRVJUKGZlYXR1cmUp
OwotICAgIEFTU0VSVCh2ZXJzaW9uKTsKLQotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmlzU3Vw
cG9ydGVkKGZlYXR1cmUsIHZlcnNpb24pOwotfQotCi0tIChOU1N0cmluZyAqKW5hbWVzcGFjZVVS
SQotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPm5hbWVzcGFjZVVSSSgpOwotfQotCi0tIChO
U1N0cmluZyAqKXByZWZpeAotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPnByZWZpeCgpOwot
fQotCi0tICh2b2lkKXNldFByZWZpeDooTlNTdHJpbmcgKilwcmVmaXgKLXsKLSAgICBBU1NFUlQo
cHJlZml4KTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFN0cmluZyBwcmVmaXhT
dHIocHJlZml4KTsKLSAgICBbc2VsZiBfbm9kZV0tPnNldFByZWZpeChwcmVmaXhTdHIuaW1wbCgp
LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoTlNTdHJpbmcgKilsb2Nh
bE5hbWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5sb2NhbE5hbWUoKTsKLX0KLQotLSAo
Qk9PTCloYXNBdHRyaWJ1dGVzCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aGFzQXR0cmli
dXRlcygpOwotfQotCi0tIChCT09MKWlzU2FtZU5vZGU6KERPTU5vZGUgKilvdGhlcgotewotICAg
IHJldHVybiBbc2VsZiBfbm9kZV0tPmlzU2FtZU5vZGUoW290aGVyIF9ub2RlXSk7Ci19Ci0KLS0g
KEJPT0wpaXNFcXVhbE5vZGU6KERPTU5vZGUgKilvdGhlcgotewotICAgIHJldHVybiBbc2VsZiBf
bm9kZV0tPmlzRXF1YWxOb2RlKFtvdGhlciBfbm9kZV0pOwotfQotCi0tIChCT09MKWlzRGVmYXVs
dE5hbWVzcGFjZTooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkKLXsKLSAgICByZXR1cm4gW3NlbGYg
X25vZGVdLT5pc0RlZmF1bHROYW1lc3BhY2UobmFtZXNwYWNlVVJJKTsKLX0KLQotLSAoTlNTdHJp
bmcgKilsb29rdXBQcmVmaXg6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJCi17Ci0gICAgcmV0dXJu
IFtzZWxmIF9ub2RlXS0+bG9va3VwUHJlZml4KG5hbWVzcGFjZVVSSSk7Ci19Ci0KLS0gKE5TU3Ry
aW5nICopbG9va3VwTmFtZXNwYWNlVVJJOihOU1N0cmluZyAqKXByZWZpeAotewotICAgIHJldHVy
biBbc2VsZiBfbm9kZV0tPmxvb2t1cE5hbWVzcGFjZVVSSShwcmVmaXgpOwotfQotCi0tIChOU1N0
cmluZyAqKXRleHRDb250ZW50Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+dGV4dENvbnRl
bnQoKTsKLX0KLQotLSAodm9pZClzZXRUZXh0Q29udGVudDooTlNTdHJpbmcgKil0ZXh0Ci17Ci0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX25vZGVdLT5zZXRUZXh0Q29udGVu
dCh0ZXh0LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoTlNSZWN0KWJv
dW5kaW5nQm94Ci17Ci0gICAgV2ViQ29yZTo6UmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxm
IF9ub2RlXS0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBy
ZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKLSAgICByZXR1cm4gTlNaZXJvUmVj
dDsKLX0KLQotLSAoTlNBcnJheSAqKWxpbmVCb3hSZWN0cwotewotICAgIFdlYkNvcmU6OlJlbmRl
ck9iamVjdCAqcmVuZGVyZXIgPSBbc2VsZiBfbm9kZV0tPnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJl
bmRlcmVyKSB7Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5ICpyZXN1bHRzID0gW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdF07Ci0gICAgICAgIERlcHJlY2F0ZWRWYWx1ZUxpc3Q8SW50UmVjdD4g
cmVjdHMgPSByZW5kZXJlci0+bGluZUJveFJlY3RzKCk7Ci0gICAgICAgIGlmICghcmVjdHMuaXNF
bXB0eSgpKSB7Ci0gICAgICAgICAgICBmb3IgKERlcHJlY2F0ZWRWYWx1ZUxpc3Q8SW50UmVjdD46
OkNvbnN0SXRlcmF0b3IgaXQgPSByZWN0cy5iZWdpbigpOyBpdCAhPSByZWN0cy5lbmQoKTsgKytp
dCkKLSAgICAgICAgICAgICAgICBbcmVzdWx0cyBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRo
UmVjdDoqaXRdXTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gW3Jlc3VsdHMgYXV0b3JlbGVh
c2VdOwotICAgIH0KLSAgICByZXR1cm4gbmlsOwotfQotCi1AZW5kCi0KIHN0YXRpYyB2b2lkIGFk
ZEVsZW1lbnRDbGFzcyhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWcsIENsYXNzIG9iakNDbGFzcykK
IHsKICAgICBlbGVtZW50Q2xhc3NNYXAtPnNldCh0YWcubG9jYWxOYW1lKCkuaW1wbCgpLCBvYmpD
Q2xhc3MpOwpAQCAtNTI3LDI3ICszMDMsNzAgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhj
b25zdCBBdG9taWNTdAogICAgIHJldHVybiBvYmpjQ2xhc3M7CiB9CiAKLUBpbXBsZW1lbnRhdGlv
biBET01Ob2RlIChXZWJDb3JlSW50ZXJuYWwpCitAaW1wbGVtZW50YXRpb24gRE9NTm9kZSAoRE9N
Tm9kZUV4dGVuc2lvbnMpCiAKLS0gKGlkKV9pbml0V2l0aE5vZGU6KE5vZGUgKilpbXBsCistIChO
U1JlY3QpYm91bmRpbmdCb3gKIHsKLSAgICBBU1NFUlQoaW1wbCk7CisgICAgV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9ub2RlXS0+cmVuZGVyZXIoKTsKKyAgICBpZiAo
cmVuZGVyZXIpCisgICAgICAgIHJldHVybiByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QoKTsKKyAgICByZXR1cm4gTlNaZXJvUmVjdDsKK30KIAotICAgIFtzdXBlciBfaW5pdF07Ci0g
ICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7Ci0gICAg
aW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsKLSAgICByZXR1cm4g
c2VsZjsKKy0gKE5TQXJyYXkgKilsaW5lQm94UmVjdHMKK3sKKyAgICBXZWJDb3JlOjpSZW5kZXJP
YmplY3QgKnJlbmRlcmVyID0gW3NlbGYgX25vZGVdLT5yZW5kZXJlcigpOworICAgIGlmIChyZW5k
ZXJlcikgeworICAgICAgICBOU011dGFibGVBcnJheSAqcmVzdWx0cyA9IFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRdOworICAgICAgICBXZWJDb3JlOjpEZXByZWNhdGVkVmFsdWVMaXN0PFdl
YkNvcmU6OkludFJlY3Q+IHJlY3RzID0gcmVuZGVyZXItPmxpbmVCb3hSZWN0cygpOworICAgICAg
ICBpZiAoIXJlY3RzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgZm9yIChXZWJDb3JlOjpEZXBy
ZWNhdGVkVmFsdWVMaXN0PFdlYkNvcmU6OkludFJlY3Q+OjpDb25zdEl0ZXJhdG9yIGl0ID0gcmVj
dHMuYmVnaW4oKTsgaXQgIT0gcmVjdHMuZW5kKCk7ICsraXQpCisgICAgICAgICAgICAgICAgW3Jl
c3VsdHMgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6Kml0XV07CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIFtyZXN1bHRzIGF1dG9yZWxlYXNlXTsKKyAgICB9CisgICAgcmV0dXJu
IG5pbDsKIH0KIAotKyAoRE9NTm9kZSAqKV9ub2RlV2l0aDooTm9kZSAqKWltcGwKK0BlbmQKKwor
QGltcGxlbWVudGF0aW9uIERPTU5vZGUgKFdlYkNvcmVJbnRlcm5hbCkKKworLy8gRklYTUU6IHNo
b3VsZCB0aGlzIGdvIGluIHRoZSBtYWluIGltcGxlbWVudGF0aW9uPworLSAoTlNTdHJpbmcgKilk
ZXNjcmlwdGlvbgogewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAK
LSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERPTVdyYXBw
ZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQorICAgIGlmICghX2ludGVybmFsKSB7
CisgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQDogbnVsbD4i
LAorICAgICAgICAgICAgW1tzZWxmIGNsYXNzXSBkZXNjcmlwdGlvbl0sIHNlbGZdOworICAgIH0K
KyAgICBOU1N0cmluZyAqdmFsdWUgPSBbc2VsZiBub2RlVmFsdWVdOworICAgIGlmICh2YWx1ZSkg
eworICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUAgWyVAXTog
JXAgJyVAJz4iLAorICAgICAgICAgICAgW1tzZWxmIGNsYXNzXSBkZXNjcmlwdGlvbl0sIFtzZWxm
IG5vZGVOYW1lXSwgX2ludGVybmFsLCB2YWx1ZV07CisgICAgfQorICAgIHJldHVybiBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQCBbJUBdOiAlcD4iLAorICAgICAgICBbW3NlbGYgY2xh
c3NdIGRlc2NyaXB0aW9uXSwgW3NlbGYgbm9kZU5hbWVdLCBfaW50ZXJuYWxdOworfQorCistIChp
ZClfaW5pdFdpdGhOb2RlOihOb2RlICopaW1wbAoreworICAgIEFTU0VSVChpbXBsKTsKKworICAg
IFtzdXBlciBfaW5pdF07CisgICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJu
YWwgKj4oaW1wbCk7CisgICAgaW1wbC0+cmVmKCk7CisgICAgYWRkRE9NV3JhcHBlcihzZWxmLCBp
bXBsKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworKyAoRE9NTm9kZSAqKV9ub2RlV2l0aDooTm9k
ZSAqKWltcGwKK3sKKyAgICBpZiAoIWltcGwpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisg
ICAgaWQgY2FjaGVkSW5zdGFuY2U7CisgICAgY2FjaGVkSW5zdGFuY2UgPSBnZXRET01XcmFwcGVy
KGltcGwpOworICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKICAgICAgICAgcmV0dXJuIFtbY2FjaGVk
SW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07CiAgICAgCiAgICAgQ2xhc3Mgd3JhcHBlckNs
YXNzID0gbmlsOwpAQCAtNjYxLDEwMSArNDgwLDEwIEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xh
c3MoY29uc3QgQXRvbWljU3QKIAogQGVuZAogCisKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAvLyBET01OYW1lZE5vZGVNYXAKIAotQGltcGxlbWVudGF0aW9uIERPTU5hbWVk
Tm9kZU1hcAotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAg
ICAgIERPTV9jYXN0PE5hbWVkTm9kZU1hcCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0K
LSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAo
X2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5hbWVkTm9kZU1hcCAqPihfaW50ZXJuYWwp
LT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChOYW1lZE5v
ZGVNYXAgKilfbmFtZWROb2RlTWFwCi17Ci0gICAgcmV0dXJuIERPTV9jYXN0PE5hbWVkTm9kZU1h
cCAqPihfaW50ZXJuYWwpOwotfQotCi0tIChET01Ob2RlICopZ2V0TmFtZWRJdGVtOihOU1N0cmlu
ZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0KLSAgICByZXR1cm4gW0RPTU5vZGUgX25v
ZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5nZXROYW1lZEl0ZW0obmFtZSkuZ2V0KCldOwot
fQotCi0tIChET01Ob2RlICopc2V0TmFtZWRJdGVtOihET01Ob2RlICopYXJnCi17Ci0gICAgQVNT
RVJUKGFyZyk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQg
PSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPnNldE5hbWVkSXRlbShb
YXJnIF9ub2RlXSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2Vw
dGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVk
SXRlbTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0gICAgaW50IGV4
Y2VwdGlvbiA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltz
ZWxmIF9uYW1lZE5vZGVNYXBdLT5yZW1vdmVOYW1lZEl0ZW0obmFtZSwgZXhjZXB0aW9uKS5nZXQo
KV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotLSAoRE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4Ci17Ci0gICAgcmV0dXJuIFtE
T01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+aXRlbShpbmRleCkuZ2V0KCld
OwotfQotCi0tICh1bnNpZ25lZClsZW5ndGgKLXsKLSAgICByZXR1cm4gW3NlbGYgX25hbWVkTm9k
ZU1hcF0tPmxlbmd0aCgpOwotfQotCi0tIChET01Ob2RlICopZ2V0TmFtZWRJdGVtTlM6KE5TU3Ry
aW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICBpZiAoIW5h
bWVzcGFjZVVSSSB8fCAhbG9jYWxOYW1lKSB7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+Z2V0
TmFtZWRJdGVtTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpLmdldCgpXTsKLX0KLQotLSAoRE9N
Tm9kZSAqKXNldE5hbWVkSXRlbU5TOihET01Ob2RlICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7
Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9k
ZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPnNldE5hbWVkSXRlbU5TKFthcmcgX25v
ZGVdLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVtTlM6
KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICBB
U1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQobG9jYWxOYW1lKTsKLQotICAgIGludCBl
eGNlcHRpb24gPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpb
c2VsZiBfbmFtZWROb2RlTWFwXS0+cmVtb3ZlTmFtZWRJdGVtTlMobmFtZXNwYWNlVVJJLCBsb2Nh
bE5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUBlbmQKLQogQGltcGxlbWVudGF0aW9uIERPTU5h
bWVkTm9kZU1hcCAoV2ViQ29yZUludGVybmFsKQogCiAtIChpZClfaW5pdFdpdGhOYW1lZE5vZGVN
YXA6KE5hbWVkTm9kZU1hcCAqKWltcGwKQEAgLTc4NCw0NCArNTEyLDEwIEBAIHN0YXRpYyBDbGFz
cyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogQGVuZAogCisKIC8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBET01Ob2RlTGlzdAogCi1AaW1wbGVtZW50YXRpb24g
RE9NTm9kZUxpc3QKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewot
ICAgICAgICBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0K
LSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAo
X2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5vZGVMaXN0ICo+KF9pbnRlcm5hbCktPmRl
cmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19Ci0KLS0gKE5vZGVMaXN0ICop
X25vZGVMaXN0Ci17Ci0gICAgcmV0dXJuIERPTV9jYXN0PE5vZGVMaXN0ICo+KF9pbnRlcm5hbCk7
Ci19Ci0KLS0gKERPTU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleAotewotICAgIHJldHVybiBb
RE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVMaXN0XS0+aXRlbShpbmRleCldOwotfQotCi0t
ICh1bnNpZ25lZClsZW5ndGgKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVMaXN0XS0+bGVuZ3Ro
KCk7Ci19Ci0KLUBlbmQKLQogQGltcGxlbWVudGF0aW9uIERPTU5vZGVMaXN0IChXZWJDb3JlSW50
ZXJuYWwpCiAKIC0gKGlkKV9pbml0V2l0aE5vZGVMaXN0OihOb2RlTGlzdCAqKWltcGwKQEAgLTg0
NCw2MjYgKzUzOCwyMDEgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNT
dAogICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKICAgICBpZiAoY2Fj
aGVkSW5zdGFuY2UpCiAgICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0
b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhOb2Rl
TGlzdDppbXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUltcGxlbWVudGF0aW9uCi0KLUBpbXBsZW1lbnRhdGlv
biBET01JbXBsZW1lbnRhdGlvbgotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAoX2ludGVy
bmFsKQotICAgICAgICBET01fY2FzdDxET01JbXBsZW1lbnRhdGlvbkZyb250ICo+KF9pbnRlcm5h
bCktPmRlcmVmKCk7Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXpl
Ci17Ci0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAgICAgRE9NX2Nhc3Q8RE9NSW1wbGVtZW50YXRp
b25Gcm9udCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19
Ci0KLS0gKEJPT0wpaGFzRmVhdHVyZTooTlNTdHJpbmcgKilmZWF0dXJlIDooTlNTdHJpbmcgKil2
ZXJzaW9uCi17Ci0gICAgQVNTRVJUKGZlYXR1cmUpOwotICAgIEFTU0VSVCh2ZXJzaW9uKTsKLQot
ICAgIHJldHVybiBbc2VsZiBfRE9NSW1wbGVtZW50YXRpb25dLT5oYXNGZWF0dXJlKGZlYXR1cmUs
IHZlcnNpb24pOwotfQotCi0tIChET01Eb2N1bWVudFR5cGUgKiljcmVhdGVEb2N1bWVudFR5cGU6
KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICopcHVibGljSWQgOihOU1N0cmlu
ZyAqKXN5c3RlbUlkCi17Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotICAgIEFTU0VSVChw
dWJsaWNJZCk7Ci0gICAgQVNTRVJUKHN5c3RlbUlkKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIFJlZlB0cjxEb2N1bWVudFR5cGU+IGltcGwgPSBbc2VsZiBfRE9NSW1wbGVtZW50
YXRpb25dLT5jcmVhdGVEb2N1bWVudFR5cGUocXVhbGlmaWVkTmFtZSwgcHVibGljSWQsIHN5c3Rl
bUlkLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RE9NRG9jdW1lbnRUeXBlICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsLmdldCgpXSk7Ci19
Ci0KLS0gKERPTURvY3VtZW50ICopY3JlYXRlRG9jdW1lbnQ6KE5TU3RyaW5nICopbmFtZXNwYWNl
VVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooRE9NRG9jdW1lbnRUeXBlICopZG9jdHlw
ZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChxdWFsaWZpZWROYW1l
KTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxEb2N1bWVudD4gaW1w
bCA9IFtzZWxmIF9ET01JbXBsZW1lbnRhdGlvbl0tPmNyZWF0ZURvY3VtZW50KG5hbWVzcGFjZVVS
SSwgcXVhbGlmaWVkTmFtZSwgW2RvY3R5cGUgX2RvY3VtZW50VHlwZV0sIGVjKTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudCAqPihb
RE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQoKV0pOwotfQotCi0tIChET01IVE1MRG9jdW1lbnQg
KiljcmVhdGVIVE1MRG9jdW1lbnQ6KE5TU3RyaW5nICopdGl0bGUKLXsKLSAgICBSZWZQdHI8SFRN
TERvY3VtZW50PiBpbXBsID0gW3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+Y3JlYXRlSFRNTERv
Y3VtZW50KHRpdGxlKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NSFRNTERvY3VtZW50ICo+
KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsLmdldCgpXSk7Ci19Ci1AZW5kCi0KLUBpbXBsZW1lbnRh
dGlvbiBET01JbXBsZW1lbnRhdGlvbiAoRE9NSW1wbGVtZW50YXRpb25DU1MpCi0KLS0gKERPTUNT
U1N0eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNoZWV0OihOU1N0cmluZyAqKXRpdGxlIDooTlNT
dHJpbmcgKiltZWRpYQotewotICAgIEFTU0VSVCh0aXRsZSk7Ci0gICAgQVNTRVJUKG1lZGlhKTsK
LQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTUNTU1N0eWxlU2hlZXQgKnJlc3Vs
dCA9IFtET01DU1NTdHlsZVNoZWV0IF9DU1NTdHlsZVNoZWV0V2l0aDpbc2VsZiBfRE9NSW1wbGVt
ZW50YXRpb25dLT5jcmVhdGVDU1NTdHlsZVNoZWV0KHRpdGxlLCBtZWRpYSwgZWMpLmdldCgpXTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUBlbmQK
LSAKLUBpbXBsZW1lbnRhdGlvbiBET01JbXBsZW1lbnRhdGlvbiAoV2ViQ29yZUludGVybmFsKQot
Ci0tIChpZClfaW5pdFdpdGhET01JbXBsZW1lbnRhdGlvbjooRE9NSW1wbGVtZW50YXRpb25Gcm9u
dCAqKWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAg
IF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGlt
cGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNl
bGY7Ci19Ci0KLSsgKERPTUltcGxlbWVudGF0aW9uICopX0RPTUltcGxlbWVudGF0aW9uV2l0aDoo
RE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKWltcGwKLXsKLSAgICBpZiAoIWltcGwpCi0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAgY2FjaGVkSW5z
dGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKLSAg
ICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAg
Ci0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aERPTUltcGxlbWVudGF0aW9uOmlt
cGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoRE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKV9ET01J
bXBsZW1lbnRhdGlvbgotewotICAgIHJldHVybiBET01fY2FzdDxET01JbXBsZW1lbnRhdGlvbkZy
b250ICo+KF9pbnRlcm5hbCk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS8vIERPTURvY3VtZW50RnJhZ21lbnQKLQotQGltcGxlbWVudGF0aW9uIERP
TURvY3VtZW50RnJhZ21lbnQKLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnRG
cmFnbWVudCAoV2ViQ29yZUludGVybmFsKQotCi0rIChET01Eb2N1bWVudEZyYWdtZW50ICopX2Rv
Y3VtZW50RnJhZ21lbnRXaXRoOihEb2N1bWVudEZyYWdtZW50ICopaW1wbAotewotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxET01Eb2N1bWVudEZyYWdtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpp
bXBsXSk7Ci19Ci0KLS0gKERvY3VtZW50RnJhZ21lbnQgKilfZnJhZ21lbnQKLXsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnRGcmFnbWVudCAqPihET01fY2FzdDxOb2RlICo+KF9pbnRl
cm5hbCkpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyBET01Eb2N1bWVudAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQKLQotLSAoRE9N
Tm9kZSAqKWFkb3B0Tm9kZTooRE9NTm9kZSAqKXNvdXJjZQotewotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBf
ZG9jdW1lbnRdLT5hZG9wdE5vZGUoW3NvdXJjZSBfbm9kZV0sIGVjKS5nZXQoKV07Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Eb2N1bWVu
dFR5cGUgKilkb2N0eXBlCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURvY3VtZW50VHlw
ZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+ZG9jdHlwZSgpXSk7Ci19
Ci0KLS0gKERPTUltcGxlbWVudGF0aW9uICopaW1wbGVtZW50YXRpb24KLXsKLSAgICByZXR1cm4g
W0RPTUltcGxlbWVudGF0aW9uIF9ET01JbXBsZW1lbnRhdGlvbldpdGg6aW1wbGVtZW50YXRpb25G
cm9udChbc2VsZiBfZG9jdW1lbnRdKV07Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilkb2N1bWVudEVs
ZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+ZG9jdW1lbnRFbGVtZW50KCldKTsKLX0KLQotLSAo
RE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnQ6KE5TU3RyaW5nICopdGFnTmFtZQotewotICAgIEFT
U0VSVCh0YWdOYW1lKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTUVsZW1l
bnQgKnJlc3VsdCA9IHN0YXRpY19jYXN0PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRo
OltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUVsZW1lbnQodGFnTmFtZSwgZWMpLmdldCgpXSk7Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01E
b2N1bWVudEZyYWdtZW50ICopY3JlYXRlRG9jdW1lbnRGcmFnbWVudAotewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxET01Eb2N1bWVudEZyYWdtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2Vs
ZiBfZG9jdW1lbnRdLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuZ2V0KCldKTsKLX0KLQotLSAo
RE9NVGV4dCAqKWNyZWF0ZVRleHROb2RlOihOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQo
ZGF0YSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTVRleHQgKj4oW0RPTU5vZGUgX25vZGVX
aXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVRleHROb2RlKGRhdGEpLmdldCgpXSk7Ci19Ci0K
LS0gKERPTUNvbW1lbnQgKiljcmVhdGVDb21tZW50OihOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBB
U1NFUlQoZGF0YSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUNvbW1lbnQgKj4oW0RPTU5v
ZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNvbW1lbnQoZGF0YSkuZ2V0KCld
KTsKLX0KLQotLSAoRE9NQ0RBVEFTZWN0aW9uICopY3JlYXRlQ0RBVEFTZWN0aW9uOihOU1N0cmlu
ZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0g
ICAgRE9NQ0RBVEFTZWN0aW9uICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxET01DREFUQVNlY3Rpb24g
Kj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNEQVRBU2VjdGlv
bihkYXRhLCBleGNlcHRpb24pLmdldCgpXSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlv
bik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9u
ICopY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uOihOU1N0cmluZyAqKXRhcmdldCA6KE5TU3Ry
aW5nICopZGF0YQotewotICAgIEFTU0VSVCh0YXJnZXQpOwotICAgIEFTU0VSVChkYXRhKTsKLSAg
ICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKnJlc3Vs
dCA9IHN0YXRpY19jYXN0PERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqPihbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKHRhcmdl
dCwgZGF0YSwgZXhjZXB0aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRp
b24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTUF0dHIgKiljcmVhdGVBdHRyaWJ1
dGU6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBpbnQgZXhjZXB0
aW9uID0gMDsKLSAgICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYg
X2RvY3VtZW50XS0+Y3JlYXRlQXR0cmlidXRlKG5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldOwotICAg
IHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0g
KERPTUVudGl0eVJlZmVyZW5jZSAqKWNyZWF0ZUVudGl0eVJlZmVyZW5jZTooTlNTdHJpbmcgKilu
YW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERP
TUVudGl0eVJlZmVyZW5jZSAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RE9NRW50aXR5UmVmZXJlbmNl
ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVFbnRpdHlSZWZl
cmVuY2UobmFtZSwgZXhjZXB0aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNl
cHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxl
bWVudHNCeVRhZ05hbWU6KE5TU3RyaW5nICopdGFnbmFtZQotewotICAgIEFTU0VSVCh0YWduYW1l
KTsKLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX2RvY3VtZW50
XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWUodGFnbmFtZSkuZ2V0KCldOwotfQotCi0tIChET01Ob2Rl
ICopaW1wb3J0Tm9kZTooRE9NTm9kZSAqKWltcG9ydGVkTm9kZSA6KEJPT0wpZGVlcAotewotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9u
b2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5pbXBvcnROb2RlKFtpbXBvcnRlZE5vZGUgX25vZGVd
LCBkZWVwLCBlYykuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotLSAoRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnROUzooTlNTdHJpbmcg
KiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUKLXsKLSAgICBBU1NFUlQo
bmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7Ci0KLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6
W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVk
TmFtZSwgZWMpLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxET01FbGVtZW50ICo+KHJlc3VsdCk7Ci19Ci0KLS0gKERPTUF0dHIgKiljcmVh
dGVBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxp
ZmllZE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQocXVhbGlm
aWVkTmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01BdHRyICpyZXN1bHQg
PSBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlQXR0cmlidXRlTlMo
bmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01O
b2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJ
IDooTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAg
ICBBU1NFUlQobG9jYWxOYW1lKTsKLQotICAgIHJldHVybiBbRE9NTm9kZUxpc3QgX25vZGVMaXN0
V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKG5hbWVzcGFjZVVS
SSwgbG9jYWxOYW1lKS5nZXQoKV07Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilnZXRFbGVtZW50QnlJ
ZDooTlNTdHJpbmcgKillbGVtZW50SWQKLXsKLSAgICBBU1NFUlQoZWxlbWVudElkKTsKLQotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2Vs
ZiBfZG9jdW1lbnRdLT5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpXSk7Ci19Ci0KLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChET01Eb2N1bWVudFJhbmdlKQotCi0tIChET01S
YW5nZSAqKWNyZWF0ZVJhbmdlCi17Ci0gICAgcmV0dXJuIFtET01SYW5nZSBfcmFuZ2VXaXRoOltz
ZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVJhbmdlKCkuZ2V0KCldOwotfQotCi1AZW5kCi0KLUBpbXBs
ZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRDU1MpCi0KLS0gKERPTUNTU1N0eWxl
RGVjbGFyYXRpb24gKilnZXRPdmVycmlkZVN0eWxlOihET01FbGVtZW50ICopZWx0IDooTlNTdHJp
bmcgKilwc2V1ZG9FbHQKLXsKLSAgICBFbGVtZW50ICplbGVtZW50ID0gW2VsdCBfZWxlbWVudF07
Ci0gICAgU3RyaW5nIHBzZXVkb0VsdFN0cmluZyhwc2V1ZG9FbHQpOwotICAgIHJldHVybiBbRE9N
Q1NTU3R5bGVEZWNsYXJhdGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6W3NlbGYgX2RvY3VtZW50
XS0+Z2V0T3ZlcnJpZGVTdHlsZShlbGVtZW50LCBwc2V1ZG9FbHRTdHJpbmcuaW1wbCgpKV07Ci19
Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChET01Eb2N1bWVudFN0eWxl
KQotCi0tIChET01TdHlsZVNoZWV0TGlzdCAqKXN0eWxlU2hlZXRzCi17Ci0gICAgcmV0dXJuIFtE
T01TdHlsZVNoZWV0TGlzdCBfc3R5bGVTaGVldExpc3RXaXRoOltzZWxmIF9kb2N1bWVudF0tPnN0
eWxlU2hlZXRzKCldOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAo
RE9NRG9jdW1lbnRFeHRlbnNpb25zKQotCi0tIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopY3Jl
YXRlQ1NTU3R5bGVEZWNsYXJhdGlvbgotewotICAgIHJldHVybiBbRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlQ1NTU3R5
bGVEZWNsYXJhdGlvbigpLmdldCgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9N
RG9jdW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NRG9jdW1lbnQgKilfZG9jdW1lbnRX
aXRoOihEb2N1bWVudCAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1l
bnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTsKLX0KLQotLSAoRG9jdW1lbnQgKilfZG9j
dW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQgKj4oRE9NX2Nhc3Q8Tm9k
ZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoRE9NRWxlbWVudCAqKV9vd25lckVsZW1lbnQKLXsK
LSAgICByZXR1cm4gW0RPTUVsZW1lbnQgX2VsZW1lbnRXaXRoOltzZWxmIF9kb2N1bWVudF0tPm93
bmVyRWxlbWVudCgpXTsKKyAgICAKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRo
Tm9kZUxpc3Q6aW1wbF0gYXV0b3JlbGVhc2VdOwogfQogCiBAZW5kCiAKKwogLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUNoYXJhY3RlckRhdGEKKy8vIERPTUltcGxl
bWVudGF0aW9uCiAKLUBpbXBsZW1lbnRhdGlvbiBET01DaGFyYWN0ZXJEYXRhCitAaW1wbGVtZW50
YXRpb24gRE9NSW1wbGVtZW50YXRpb24gKERPTUltcGxlbWVudGF0aW9uRXh0ZW5zaW9ucykKIAot
LSAoQ2hhcmFjdGVyRGF0YSAqKV9jaGFyYWN0ZXJEYXRhCistIChET01IVE1MRG9jdW1lbnQgKilj
cmVhdGVIVE1MRG9jdW1lbnQ6KE5TU3RyaW5nICopdGl0bGUKIHsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q2hhcmFjdGVyRGF0YSAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOworICAg
IFJlZlB0cjxXZWJDb3JlOjpIVE1MRG9jdW1lbnQ+IGltcGwgPSBbc2VsZiBfRE9NSW1wbGVtZW50
YXRpb25dLT5jcmVhdGVIVE1MRG9jdW1lbnQodGl0bGUpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxET01IVE1MRG9jdW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGwuZ2V0KCldKTsKIH0K
IAotLSAoTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgLy8gRG9jdW1lbnRhdGlvbiBzYXlzIHdlIGNh
biByYWlzZSBhIERPTVNUUklOR19TSVpFX0VSUi4KLSAgICAvLyBIb3dldmVyLCB0aGUgbG93ZXIg
bGF5ZXIgZG9lcyBub3QgcmVwb3J0IHRoYXQgZXJyb3IgdXAgdG8gdXMuCi0gICAgcmV0dXJuIFtz
ZWxmIF9jaGFyYWN0ZXJEYXRhXS0+ZGF0YSgpOwotfQorQGVuZAogCi0tICh2b2lkKXNldERhdGE6
KE5TU3RyaW5nICopZGF0YQotewotICAgIEFTU0VSVChkYXRhKTsKLSAgICAKLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPnNldERhdGEoZGF0YSwg
ZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19CitAaW1wbGVtZW50YXRpb24gRE9NSW1w
bGVtZW50YXRpb24gKERPTUltcGxlbWVudGF0aW9uQ1NTKQogCi0tICh1bnNpZ25lZClsZW5ndGgK
Ky0gKERPTUNTU1N0eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNoZWV0OihOU1N0cmluZyAqKXRp
dGxlIDooTlNTdHJpbmcgKiltZWRpYQogewotICAgIHJldHVybiBbc2VsZiBfY2hhcmFjdGVyRGF0
YV0tPmxlbmd0aCgpOwotfQorICAgIEFTU0VSVCh0aXRsZSk7CisgICAgQVNTRVJUKG1lZGlhKTsK
IAotLSAoTlNTdHJpbmcgKilzdWJzdHJpbmdEYXRhOih1bnNpZ25lZClvZmZzZXQgOih1bnNpZ25l
ZCljb3VudAotewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIE5TU3RyaW5nICpyZXN1
bHQgPSBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPnN1YnN0cmluZ0RhdGEob2Zmc2V0LCBjb3VudCwg
ZWMpOworICAgIERPTUNTU1N0eWxlU2hlZXQgKnJlc3VsdCA9IFtET01DU1NTdHlsZVNoZWV0IF9D
U1NTdHlsZVNoZWV0V2l0aDpbc2VsZiBfRE9NSW1wbGVtZW50YXRpb25dLT5jcmVhdGVDU1NTdHls
ZVNoZWV0KHRpdGxlLCBtZWRpYSwgZWMpLmdldCgpXTsKICAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS0gKHZvaWQpYXBwZW5kRGF0YTooTlNTdHJpbmcg
KilhcmcKLXsKLSAgICBBU1NFUlQoYXJnKTsKLSAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPmFwcGVuZERhdGEoYXJnLCBlYyk7Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KK0BlbmQKKyAKK0BpbXBsZW1lbnRhdGlvbiBET01JbXBs
ZW1lbnRhdGlvbiAoV2ViQ29yZUludGVybmFsKQogCi0tICh2b2lkKWluc2VydERhdGE6KHVuc2ln
bmVkKW9mZnNldCA6KE5TU3RyaW5nICopYXJnCistIChpZClfaW5pdFdpdGhET01JbXBsZW1lbnRh
dGlvbjooRE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKWltcGwKIHsKLSAgICBBU1NFUlQoYXJnKTsK
LSAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0
YV0tPmluc2VydERhdGEob2Zmc2V0LCBhcmcsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OworICAgIEFTU0VSVChpbXBsKTsKKworICAgIFtzdXBlciBfaW5pdF07CisgICAgX2ludGVybmFs
ID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7CisgICAgaW1wbC0+cmVmKCk7
CisgICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsKKyAgICByZXR1cm4gc2VsZjsKIH0KIAot
LSAodm9pZClkZWxldGVEYXRhOih1bnNpZ25lZClvZmZzZXQgOih1bnNpZ25lZCkgY291bnQKKysg
KERPTUltcGxlbWVudGF0aW9uICopX0RPTUltcGxlbWVudGF0aW9uV2l0aDooRE9NSW1wbGVtZW50
YXRpb25Gcm9udCAqKWltcGwKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2Vs
ZiBfY2hhcmFjdGVyRGF0YV0tPmRlbGV0ZURhdGEob2Zmc2V0LCBjb3VudCwgZWMpOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7CisgICAgaWYgKCFpbXBsKQorICAgICAgICByZXR1cm4gbmlsOwor
ICAgIAorICAgIGlkIGNhY2hlZEluc3RhbmNlOworICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9N
V3JhcHBlcihpbXBsKTsKKyAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCisgICAgICAgIHJldHVybiBb
W2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIAorICAgIHJldHVybiBb
W1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhET01JbXBsZW1lbnRhdGlvbjppbXBsXSBhdXRvcmVsZWFz
ZV07CiB9CiAKLS0gKHZvaWQpcmVwbGFjZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVk
KWNvdW50IDooTlNTdHJpbmcgKilhcmcKKy0gKERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilfRE9N
SW1wbGVtZW50YXRpb24KIHsKLSAgICBBU1NFUlQoYXJnKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+cmVwbGFjZURhdGEob2Zmc2V0LCBj
b3VudCwgYXJnLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gRE9N
X2Nhc3Q8RE9NSW1wbGVtZW50YXRpb25Gcm9udCAqPihfaW50ZXJuYWwpOwogfQogCiBAZW5kCiAK
KwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUF0dHIKKy8vIERP
TURvY3VtZW50RnJhZ21lbnQKIAotQGltcGxlbWVudGF0aW9uIERPTUF0dHIKK0BpbXBsZW1lbnRh
dGlvbiBET01Eb2N1bWVudEZyYWdtZW50IChXZWJDb3JlSW50ZXJuYWwpCiAKLS0gKE5TU3RyaW5n
ICopbmFtZQorKyAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50V2l0aDoo
RG9jdW1lbnRGcmFnbWVudCAqKWltcGwKIHsKLSAgICByZXR1cm4gW3NlbGYgX2F0dHJdLT5ub2Rl
TmFtZSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudEZyYWdtZW50ICo+KFtE
T01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7CiB9CiAKLS0gKEJPT0wpc3BlY2lmaWVkCistIChEb2N1
bWVudEZyYWdtZW50ICopX2ZyYWdtZW50CiB7Ci0gICAgcmV0dXJuIFtzZWxmIF9hdHRyXS0+c3Bl
Y2lmaWVkKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQgKj4oRE9N
X2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKIH0KIAotLSAoTlNTdHJpbmcgKil2YWx1ZQotewot
ICAgIHJldHVybiBbc2VsZiBfYXR0cl0tPm5vZGVWYWx1ZSgpOwotfQorQGVuZAogCi0tICh2b2lk
KXNldFZhbHVlOihOU1N0cmluZyAqKXZhbHVlCi17Ci0gICAgQVNTRVJUKHZhbHVlKTsKIAotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9hdHRyXS0+c2V0VmFsdWUodmFsdWUs
IGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQorLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vIERPTURvY3VtZW50CiAKLS0gKERPTUVsZW1lbnQgKilvd25lckVs
ZW1lbnQKLXsKLSAgICByZXR1cm4gW0RPTUVsZW1lbnQgX2VsZW1lbnRXaXRoOltzZWxmIF9hdHRy
XS0+b3duZXJFbGVtZW50KCldOwotfQorQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChET01E
b2N1bWVudFJhbmdlKQogCi0tIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGUKKy0gKERP
TVJhbmdlICopY3JlYXRlUmFuZ2UKIHsKLSAgICByZXR1cm4gW0RPTUNTU1N0eWxlRGVjbGFyYXRp
b24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOiBbc2VsZiBfYXR0cl0tPnN0eWxlKCldOworICAgIHJl
dHVybiBbRE9NUmFuZ2UgX3JhbmdlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVSYW5nZSgp
LmdldCgpXTsKIH0KIAogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gRE9NQXR0ciAoV2ViQ29yZUlu
dGVybmFsKQotCi0rIChET01BdHRyICopX2F0dHJXaXRoOihBdHRyICopaW1wbAotewotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxET01BdHRyICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19
CitAaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50Q1NTKQogCi0tIChBdHRy
ICopX2F0dHIKKy0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilnZXRPdmVycmlkZVN0eWxlOihE
T01FbGVtZW50ICopZWx0IDooTlNTdHJpbmcgKilwc2V1ZG9FbHQKIHsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8QXR0ciAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOworICAgIEVsZW1l
bnQgKmVsZW1lbnQgPSBbZWx0IF9lbGVtZW50XTsKKyAgICBTdHJpbmcgcHNldWRvRWx0U3RyaW5n
KHBzZXVkb0VsdCk7CisgICAgcmV0dXJuIFtET01DU1NTdHlsZURlY2xhcmF0aW9uIF9zdHlsZURl
Y2xhcmF0aW9uV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5nZXRPdmVycmlkZVN0eWxlKGVsZW1lbnQs
IHBzZXVkb0VsdFN0cmluZy5pbXBsKCkpXTsKIH0KIAogQGVuZAogCi0vLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NRWxlbWVudAotCi1AaW1wbGVtZW50YXRpb24gRE9N
RWxlbWVudAotCi0tIChOU1N0cmluZyAqKXRhZ05hbWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2Vs
ZW1lbnRdLT5ub2RlTmFtZSgpOwotfQotCi0tIChET01OYW1lZE5vZGVNYXAgKilhdHRyaWJ1dGVz
Ci17Ci0gICAgcmV0dXJuIFtET01OYW1lZE5vZGVNYXAgX25hbWVkTm9kZU1hcFdpdGg6W3NlbGYg
X2VsZW1lbnRdLT5hdHRyaWJ1dGVzKCldOwotfQorQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50
IChET01Eb2N1bWVudFN0eWxlKQogCi0tIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZTooTlNTdHJp
bmcgKiluYW1lCistIChET01TdHlsZVNoZWV0TGlzdCAqKXN0eWxlU2hlZXRzCiB7Ci0gICAgQVNT
RVJUKG5hbWUpOwotICAgIHJldHVybiBbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0ZShuYW1l
KTsKKyAgICByZXR1cm4gW0RPTVN0eWxlU2hlZXRMaXN0IF9zdHlsZVNoZWV0TGlzdFdpdGg6W3Nl
bGYgX2RvY3VtZW50XS0+c3R5bGVTaGVldHMoKV07CiB9CiAKLS0gKHZvaWQpc2V0QXR0cmlidXRl
OihOU1N0cmluZyAqKW5hbWUgOihOU1N0cmluZyAqKXZhbHVlCi17Ci0gICAgQVNTRVJUKG5hbWUp
OwotICAgIEFTU0VSVCh2YWx1ZSk7CitAZW5kCiAKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAg
ICBbc2VsZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgZXhjZXB0aW9uKTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLX0KK0BpbXBsZW1lbnRhdGlvbiBET01E
b2N1bWVudCAoRE9NRG9jdW1lbnRFeHRlbnNpb25zKQogCi0tICh2b2lkKXJlbW92ZUF0dHJpYnV0
ZTooTlNTdHJpbmcgKiluYW1lCistIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopY3JlYXRlQ1NT
U3R5bGVEZWNsYXJhdGlvbgogewotICAgIEFTU0VSVChuYW1lKTsKLQotICAgIGludCBleGNlcHRp
b24gPSAwOwotICAgIFtzZWxmIF9lbGVtZW50XS0+cmVtb3ZlQXR0cmlidXRlKG5hbWUsIGV4Y2Vw
dGlvbik7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIFtET01D
U1NTdHlsZURlY2xhcmF0aW9uIF9zdHlsZURlY2xhcmF0aW9uV2l0aDpbc2VsZiBfZG9jdW1lbnRd
LT5jcmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKCkuZ2V0KCldOwogfQogCi0tIChET01BdHRyICop
Z2V0QXR0cmlidXRlTm9kZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwor
QGVuZAogCi0gICAgcmV0dXJuIFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPmdl
dEF0dHJpYnV0ZU5vZGUobmFtZSkuZ2V0KCldOwotfQorQGltcGxlbWVudGF0aW9uIERPTURvY3Vt
ZW50IChXZWJDb3JlSW50ZXJuYWwpCiAKLS0gKERPTUF0dHIgKilzZXRBdHRyaWJ1dGVOb2RlOihE
T01BdHRyICopbmV3QXR0cgorKyAoRE9NRG9jdW1lbnQgKilfZG9jdW1lbnRXaXRoOihEb2N1bWVu
dCAqKWltcGwKIHsKLSAgICBBU1NFUlQobmV3QXR0cik7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0g
MDsKLSAgICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2VsZW1l
bnRdLT5zZXRBdHRyaWJ1dGVOb2RlKFtuZXdBdHRyIF9hdHRyXSwgZXhjZXB0aW9uKS5nZXQoKV07
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmlt
cGxdKTsKIH0KIAotLSAoRE9NQXR0ciAqKXJlbW92ZUF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKilv
bGRBdHRyCistIChEb2N1bWVudCAqKV9kb2N1bWVudAogewotICAgIEFTU0VSVChvbGRBdHRyKTsK
LQotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRy
IF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPnJlbW92ZUF0dHJpYnV0ZU5vZGUoW29sZEF0dHIg
X2F0dHJdLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9u
KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudCAq
PihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwogfQogCi0tIChET01Ob2RlTGlzdCAqKWdl
dEVsZW1lbnRzQnlUYWdOYW1lOihOU1N0cmluZyAqKW5hbWUKKy0gKERPTUVsZW1lbnQgKilfb3du
ZXJFbGVtZW50CiB7Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0gICAgcmV0dXJuIFtET01Ob2RlTGlz
dCBfbm9kZUxpc3RXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWUobmFt
ZSkuZ2V0KCldOworICAgIHJldHVybiBbRE9NRWxlbWVudCBfZWxlbWVudFdpdGg6W3NlbGYgX2Rv
Y3VtZW50XS0+b3duZXJFbGVtZW50KCldOwogfQogCi0tIChOU1N0cmluZyAqKWdldEF0dHJpYnV0
ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0g
ICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7CitAZW5kCiAK
LSAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5nZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkks
IGxvY2FsTmFtZSk7Ci19CiAKLS0gKHZvaWQpc2V0QXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFt
ZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKil2YWx1ZQot
ewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsK
LSAgICBBU1NFUlQodmFsdWUpOworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vIERPTUF0dHIKIAotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIFtzZWxmIF9lbGVtZW50
XS0+c2V0QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCB2YWx1ZSwgZXhj
ZXB0aW9uKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLX0KK0BpbXBsZW1lbnRh
dGlvbiBET01BdHRyIChXZWJDb3JlSW50ZXJuYWwpCiAKLS0gKHZvaWQpcmVtb3ZlQXR0cmlidXRl
TlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKKysgKERP
TUF0dHIgKilfYXR0cldpdGg6KEF0dHIgKilpbXBsCiB7Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVS
SSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAg
ICBbc2VsZiBfZWxlbWVudF0tPnJlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxO
YW1lLCBleGNlcHRpb24pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxET01BdHRyICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7CiB9
CiAKLS0gKERPTUF0dHIgKilnZXRBdHRyaWJ1dGVOb2RlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNl
VVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKKy0gKEF0dHIgKilfYXR0cgogewotICAgIEFTU0VS
VChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtE
T01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0ZU5vZGVOUyhuYW1l
c3BhY2VVUkksIGxvY2FsTmFtZSkuZ2V0KCldOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdHRy
ICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7CiB9CiAKLS0gKERPTUF0dHIgKilzZXRB
dHRyaWJ1dGVOb2RlTlM6KERPTUF0dHIgKiluZXdBdHRyCi17Ci0gICAgQVNTRVJUKG5ld0F0dHIp
OworQGVuZAogCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0g
W0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+c2V0QXR0cmlidXRlTm9kZU5TKFtu
ZXdBdHRyIF9hdHRyXSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4
Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KK0BpbXBsZW1lbnRhdGlvbiBET01BdHRy
IChET01BdHRyRXh0ZW5zaW9ucykKIAotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFn
TmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCist
IChET01DU1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGUKIHsKLSAgICBBU1NFUlQobmFtZXNwYWNl
VVJJKTsKLSAgICBBU1NFUlQobG9jYWxOYW1lKTsKLQotICAgIHJldHVybiBbRE9NTm9kZUxpc3Qg
X25vZGVMaXN0V2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEVsZW1lbnRzQnlUYWdOYW1lTlMobmFt
ZXNwYWNlVVJJLCBsb2NhbE5hbWUpLmdldCgpXTsKKyAgICByZXR1cm4gW0RPTUNTU1N0eWxlRGVj
bGFyYXRpb24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOiBbc2VsZiBfYXR0cl0tPnN0eWxlKCldOwog
fQogCi0tIChCT09MKWhhc0F0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJU
KG5hbWUpOworQGVuZAogCi0gICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50XS0+aGFzQXR0cmlidXRl
KG5hbWUpOwotfQogCi0tIChCT09MKWhhc0F0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFj
ZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7
Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8gRE9NRG9jdW1lbnRUeXBlCiAKLSAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5o
YXNBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7Ci19CitAaW1wbGVtZW50YXRp
b24gRE9NRG9jdW1lbnRUeXBlIChXZWJDb3JlSW50ZXJuYWwpCiAKLS0gKHZvaWQpZm9jdXMKKysg
KERPTURvY3VtZW50VHlwZSAqKV9kb2N1bWVudFR5cGVXaXRoOihXZWJDb3JlOjpEb2N1bWVudFR5
cGUgKilpbXBsOwogewotICAgIFtzZWxmIF9lbGVtZW50XS0+Zm9jdXMoKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnRUeXBlICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7
CiB9CiAKLS0gKHZvaWQpYmx1cgorLSAoV2ViQ29yZTo6RG9jdW1lbnRUeXBlICopX2RvY3VtZW50
VHlwZTsKIHsKLSAgICBbc2VsZiBfZWxlbWVudF0tPmJsdXIoKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6RG9jdW1lbnRUeXBlICo+KERPTV9jYXN0PFdlYkNvcmU6Ok5vZGUgKj4o
X2ludGVybmFsKSk7CiB9CiAKIEBlbmQKIAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vIERPTUVsZW1lbnQKKwogQGltcGxlbWVudGF0aW9uIERPTUVsZW1lbnQgKERPTUVs
ZW1lbnRDU1NJbmxpbmVTdHlsZSkKIAogLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKXN0eWxl
CkBAIC0xNTYxLDE3MyArODMwLDcyIEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3Qg
QXRvbWljU3QKIAogQGVuZAogCisKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAvLyBET01UZXh0CiAKLUBpbXBsZW1lbnRhdGlvbiBET01UZXh0Ci0KLS0gKFRleHQgKilfdGV4
dAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0ICo+KERPTV9jYXN0PE5vZGUgKj4oX2lu
dGVybmFsKSk7Ci19CitAaW1wbGVtZW50YXRpb24gRE9NVGV4dCAoV2ViQ29yZUludGVybmFsKQog
Ci0tIChET01UZXh0ICopc3BsaXRUZXh0Oih1bnNpZ25lZClvZmZzZXQKKysgKERPTVRleHQgKilf
dGV4dFdpdGg6KFdlYkNvcmU6OlRleHQgKilpbXBsCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90ZXh0
XS0+c3BsaXRUZXh0KG9mZnNldCwgZWMpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxET01UZXh0ICo+KHJlc3VsdCk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PERPTVRleHQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTsKIH0KIAogQGVuZAog
Ci0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NQ29tbWVudAotCi1A
aW1wbGVtZW50YXRpb24gRE9NQ29tbWVudAotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0vLyBET01DREFUQVNlY3Rpb24KLQotQGltcGxlbWVudGF0aW9uIERP
TUNEQVRBU2VjdGlvbgotCi1AZW5kCiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0vLyBET01Eb2N1bWVudFR5cGUKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50VHlw
ZQotCi0tIChOU1N0cmluZyAqKW5hbWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2RvY3VtZW50VHlw
ZV0tPnB1YmxpY0lkKCk7Ci19Ci0KLS0gKERPTU5hbWVkTm9kZU1hcCAqKWVudGl0aWVzCi17Ci0g
ICAgcmV0dXJuIFtET01OYW1lZE5vZGVNYXAgX25hbWVkTm9kZU1hcFdpdGg6W3NlbGYgX2RvY3Vt
ZW50VHlwZV0tPmVudGl0aWVzKCldOwotfQotCi0tIChET01OYW1lZE5vZGVNYXAgKilub3RhdGlv
bnMKLXsKLSAgICByZXR1cm4gW0RPTU5hbWVkTm9kZU1hcCBfbmFtZWROb2RlTWFwV2l0aDpbc2Vs
ZiBfZG9jdW1lbnRUeXBlXS0+bm90YXRpb25zKCldOwotfQotCi0tIChOU1N0cmluZyAqKXB1Ymxp
Y0lkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9kb2N1bWVudFR5cGVdLT5wdWJsaWNJZCgpOwotfQor
Ly8gRE9NQ29tbWVudAogCi0tIChOU1N0cmluZyAqKXN5c3RlbUlkCi17Ci0gICAgcmV0dXJuIFtz
ZWxmIF9kb2N1bWVudFR5cGVdLT5zeXN0ZW1JZCgpOwotfQorQGltcGxlbWVudGF0aW9uIERPTUNv
bW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKIAotLSAoTlNTdHJpbmcgKilpbnRlcm5hbFN1YnNldAor
KyAoRE9NQ29tbWVudCAqKV9jb21tZW50V2l0aDooV2ViQ29yZTo6Q29tbWVudCAqKWltcGwKIHsK
LSAgICByZXR1cm4gW3NlbGYgX2RvY3VtZW50VHlwZV0tPmludGVybmFsU3Vic2V0KCk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PERPTUNvbW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGxd
KTsKIH0KIAogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnRUeXBlIChXZWJDb3Jl
SW50ZXJuYWwpCi0KLS0gKERvY3VtZW50VHlwZSAqKV9kb2N1bWVudFR5cGUKLXsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnRUeXBlICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFs
KSk7Ci19Ci0KLUBlbmQKIAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8v
IERPTU5vdGF0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob3RhdGlvbgotCi0tIChOb3RhdGlv
biAqKV9ub3RhdGlvbgotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxOb3RhdGlvbiAqPihET01f
Y2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQorLy8gRE9NQ0RBVEFTZWN0aW9uCiAKLS0gKE5T
U3RyaW5nICopcHVibGljSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vdGF0aW9uXS0+cHVibGlj
SWQoKTsKLX0KK0BpbXBsZW1lbnRhdGlvbiBET01DREFUQVNlY3Rpb24gKFdlYkNvcmVJbnRlcm5h
bCkKIAotLSAoTlNTdHJpbmcgKilzeXN0ZW1JZAorKyAoRE9NQ0RBVEFTZWN0aW9uICopX0NEQVRB
U2VjdGlvbldpdGg6KFdlYkNvcmU6OkNEQVRBU2VjdGlvbiAqKWltcGw7CiB7Ci0gICAgcmV0dXJu
IFtzZWxmIF9ub3RhdGlvbl0tPnN5c3RlbUlkKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERP
TUNEQVRBU2VjdGlvbiAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwogfQogCiBAZW5kCiAK
LS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01FbnRpdHkKLQotQGlt
cGxlbWVudGF0aW9uIERPTUVudGl0eQotCi0tIChFbnRpdHkgKilfZW50aXR5Ci17Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PEVudGl0eSAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwot
fQogCi0tIChOU1N0cmluZyAqKXB1YmxpY0lkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9lbnRpdHld
LT5wdWJsaWNJZCgpOwotfQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
IERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbgogCi0tIChOU1N0cmluZyAqKXN5c3RlbUlkCi17Ci0g
ICAgcmV0dXJuIFtzZWxmIF9lbnRpdHldLT5zeXN0ZW1JZCgpOwotfQorQGltcGxlbWVudGF0aW9u
IERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAoV2ViQ29yZUludGVybmFsKQogCi0tIChOU1N0cmlu
ZyAqKW5vdGF0aW9uTmFtZQorKyAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICopX3Byb2Nlc3Np
bmdJbnN0cnVjdGlvbldpdGg6KFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKWltcGw7
CiB7Ci0gICAgcmV0dXJuIFtzZWxmIF9lbnRpdHldLT5ub3RhdGlvbk5hbWUoKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICo+KFtET01Ob2RlIF9ub2Rl
V2l0aDppbXBsXSk7CiB9CiAKIEBlbmQKIAotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLS8vIERPTUVudGl0eVJlZmVyZW5jZQotCi1AaW1wbGVtZW50YXRpb24gRE9NRW50aXR5
UmVmZXJlbmNlCi0KLUBlbmQKIAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IC8vIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbgogCi1AaW1wbGVtZW50YXRpb24gRE9NUHJvY2Vz
c2luZ0luc3RydWN0aW9uCi0KLS0gKFByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKV9wcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24KLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJvY2Vzc2luZ0luc3RydWN0
aW9uICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3RyaW5nICop
dGFyZ2V0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9wcm9jZXNzaW5nSW5zdHJ1Y3Rpb25dLT50YXJn
ZXQoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9wcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb25dLT5kYXRhKCk7Ci19CitAaW1wbGVtZW50YXRpb24gRE9NRW50aXR5
UmVmZXJlbmNlIChXZWJDb3JlSW50ZXJuYWwpCiAKLS0gKHZvaWQpc2V0RGF0YTooTlNTdHJpbmcg
KilkYXRhCisrIChET01FbnRpdHlSZWZlcmVuY2UgKilfZW50aXR5UmVmZXJlbmNlV2l0aDooV2Vi
Q29yZTo6RW50aXR5UmVmZXJlbmNlICopaW1wbDsKIHsKLSAgICBBU1NFUlQoZGF0YSk7Ci0KLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcHJvY2Vzc2luZ0luc3RydWN0aW9u
XS0+c2V0RGF0YShkYXRhLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RE9NRW50aXR5UmVmZXJlbmNlICo+KFtET01Ob2RlIF9ub2RlV2l0aDpp
bXBsXSk7CiB9CiAKIEBlbmQKIAorCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogLy8gRE9NUmFuZ2UKIApAQCAtMTk4Niw5ICsxMTU0LDkgQEAgc3RhdGljIENsYXNzIGVsZW1l
bnRDbGFzcyhjb25zdCBBdG9taWNTdAogCiBAZW5kCiAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBE
T01Ob2RlRmlsdGVyCiAKIEBpbXBsZW1lbnRhdGlvbiBET01Ob2RlRmlsdGVyCiAKQEAgLTIwNDMs
NiArMTIxMSw5IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIEBl
bmQKIAogCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRE9NTm9kZUl0
ZXJhdG9yCisKIEBpbXBsZW1lbnRhdGlvbiBET01Ob2RlSXRlcmF0b3IKIAogLSAoaWQpX2luaXRX
aXRoTm9kZUl0ZXJhdG9yOihOb2RlSXRlcmF0b3IgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVG
aWx0ZXI+KWZpbHRlcgpAQCAtMjE0Niw2ICsxMzE3LDEwIEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50
Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogQGVuZAogCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLyBET01UcmVlV2Fsa2VyCisKIEBpbXBsZW1lbnRhdGlvbiBET01UcmVl
V2Fsa2VyCiAKIC0gKGlkKV9pbml0V2l0aFRyZWVXYWxrZXI6KFRyZWVXYWxrZXIgKilpbXBsIGZp
bHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgpAQCAtMjI3NCw3ICsxNDQ5LDExIEBAIHN0
YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogQGVuZAogCi1jbGFzcyBP
YmpDTm9kZUZpbHRlckNvbmRpdGlvbiA6IHB1YmxpYyBOb2RlRmlsdGVyQ29uZGl0aW9uIAorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gT2JqQ05vZGVGaWx0ZXJDb25k
aXRpb24KKworY2xhc3MgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24gOiBwdWJsaWMgTm9kZUZpbHRl
ckNvbmRpdGlvbgogewogcHVibGljOgogICAgIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKGlkIDxE
T01Ob2RlRmlsdGVyPik7CkBAIC0yMzA3LDYgKzE0ODYsMTAgQEAgc2hvcnQgT2JqQ05vZGVGaWx0
ZXJDb25kaXRpb246OmFjY2VwdE5vZAogICAgIHJldHVybiBbbV9maWx0ZXIgYWNjZXB0Tm9kZTpb
RE9NTm9kZSBfbm9kZVdpdGg6bm9kZV1dOwogfQogCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLyBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRUcmF2ZXJzYWwpCisKIEBp
bXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRUcmF2ZXJzYWwpCiAKIC0gKERP
TU5vZGVJdGVyYXRvciAqKWNyZWF0ZU5vZGVJdGVyYXRvcjooRE9NTm9kZSAqKXJvb3QgOih1bnNp
Z25lZCl3aGF0VG9TaG93IDooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlciA6KEJPT0wpZXhwYW5k
RW50aXR5UmVmZXJlbmNlcwpAQCAtMjMzMyw2ICsxNTE2LDEwIEBAIHNob3J0IE9iakNOb2RlRmls
dGVyQ29uZGl0aW9uOjphY2NlcHROb2QKIAogQGVuZAogCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLyBPYmpDRXZlbnRMaXN0ZW5lcgorCiBPYmpDRXZlbnRMaXN0ZW5l
ciogT2JqQ0V2ZW50TGlzdGVuZXI6OmZpbmQoaWQgPERPTUV2ZW50TGlzdGVuZXI+IGxpc3RlbmVy
KQogewogICAgIGlmIChMaXN0ZW5lck1hcCogbWFwID0gbGlzdGVuZXJNYXApCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTUNTUy5oCShyZXZpc2lvbiAxNTk5NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01DU1MuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCiAgKi8KIAorI2ltcG9ydCA8V2ViQ29yZS9ET01Db3JlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0RPTVN0eWxlc2hlZXRzLmg+CiAKIEBjbGFzcyBET01Db3VudGVyOwpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTUNvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NQ29yZS5oCShyZXZpc2lvbiAxNTk5NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01Db3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwu
Y29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyMTggKzI0LDIxIEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dC5oPgotCi1AY2xhc3MgRE9NRG9jdW1lbnQ7IAotQGNsYXNzIERPTURvY3VtZW50VHlwZTsKLUBj
bGFzcyBET01FbGVtZW50OwotQGNsYXNzIERPTU5hbWVkTm9kZU1hcDsKLUBjbGFzcyBET01Ob2Rl
TGlzdDsKLQotdHlwZWRlZiBzdHJ1Y3QgRE9NT2JqZWN0SW50ZXJuYWwgRE9NT2JqZWN0SW50ZXJu
YWw7Ci0KLUBpbnRlcmZhY2UgRE9NT2JqZWN0IDogV2ViU2NyaXB0T2JqZWN0IDxOU0NvcHlpbmc+
Ci17Ci0gICAgRE9NT2JqZWN0SW50ZXJuYWwgKl9pbnRlcm5hbDsKLX0KLUBlbmQKLQotdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIGxvbmcgRE9NVGltZVN0YW1wOwotCi1leHRlcm4gTlNTdHJpbmcgKiBj
b25zdCBET01FeGNlcHRpb247Ci0KLWVudW0gewotICAgIC8vCi0gICAgLy8gRE9NIGV4Y2VwdGlv
biBjb2RlcwotICAgIC8vCi0gICAgRE9NX0lOREVYX1NJWkVfRVJSICAgICAgICAgICAgICAgID0g
MSwKLSAgICBET01fRE9NU1RSSU5HX1NJWkVfRVJSICAgICAgICAgICAgPSAyLAotICAgIERPTV9I
SUVSQVJDSFlfUkVRVUVTVF9FUlIgICAgICAgICA9IDMsCi0gICAgRE9NX1dST05HX0RPQ1VNRU5U
X0VSUiAgICAgICAgICAgID0gNCwKLSAgICBET01fSU5WQUxJRF9DSEFSQUNURVJfRVJSICAgICAg
ICAgPSA1LAotICAgIERPTV9OT19EQVRBX0FMTE9XRURfRVJSICAgICAgICAgICA9IDYsCi0gICAg
RE9NX05PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiAgID0gNywKLSAgICBET01fTk9UX0ZPVU5E
X0VSUiAgICAgICAgICAgICAgICAgPSA4LAotICAgIERPTV9OT1RfU1VQUE9SVEVEX0VSUiAgICAg
ICAgICAgICA9IDksCi0gICAgRE9NX0lOVVNFX0FUVFJJQlVURV9FUlIgICAgICAgICAgID0gMTAs
Ci0gICAgRE9NX0lOVkFMSURfU1RBVEVfRVJSICAgICAgICAgICAgID0gMTEsCi0gICAgRE9NX1NZ
TlRBWF9FUlIgICAgICAgICAgICAgICAgICAgID0gMTIsCi0gICAgRE9NX0lOVkFMSURfTU9ESUZJ
Q0FUSU9OX0VSUiAgICAgID0gMTMsCi0gICAgRE9NX05BTUVTUEFDRV9FUlIgICAgICAgICAgICAg
ICAgID0gMTQsCi0gICAgRE9NX0lOVkFMSURfQUNDRVNTX0VSUiAgICAgICAgICAgID0gMTUKLX07
Ci0KLUBpbnRlcmZhY2UgRE9NSW1wbGVtZW50YXRpb24gOiBET01PYmplY3QKLS0gKEJPT0wpaGFz
RmVhdHVyZTooTlNTdHJpbmcgKilmZWF0dXJlIDooTlNTdHJpbmcgKil2ZXJzaW9uOwotLSAoRE9N
RG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBlOihOU1N0cmluZyAqKXF1YWxpZmllZE5h
bWUgOihOU1N0cmluZyAqKXB1YmxpY0lkIDooTlNTdHJpbmcgKilzeXN0ZW1JZDsKLS0gKERPTURv
Y3VtZW50ICopY3JlYXRlRG9jdW1lbnQ6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJp
bmcgKilxdWFsaWZpZWROYW1lIDooRE9NRG9jdW1lbnRUeXBlICopZG9jdHlwZTsKLUBlbmQKLQot
ZW51bSB7Ci0gICAgLy8KLSAgICAvLyBET00gbm9kZSB0eXBlcwotICAgIC8vCi0gICAgRE9NX0VM
RU1FTlRfTk9ERSAgICAgICAgICAgICAgICAgID0gMSwKLSAgICBET01fQVRUUklCVVRFX05PREUg
ICAgICAgICAgICAgICAgPSAyLAotICAgIERPTV9URVhUX05PREUgICAgICAgICAgICAgICAgICAg
ICA9IDMsCi0gICAgRE9NX0NEQVRBX1NFQ1RJT05fTk9ERSAgICAgICAgICAgID0gNCwKLSAgICBE
T01fRU5USVRZX1JFRkVSRU5DRV9OT0RFICAgICAgICAgPSA1LAotICAgIERPTV9FTlRJVFlfTk9E
RSAgICAgICAgICAgICAgICAgICA9IDYsCi0gICAgRE9NX1BST0NFU1NJTkdfSU5TVFJVQ1RJT05f
Tk9ERSAgID0gNywKLSAgICBET01fQ09NTUVOVF9OT0RFICAgICAgICAgICAgICAgICAgPSA4LAot
ICAgIERPTV9ET0NVTUVOVF9OT0RFICAgICAgICAgICAgICAgICA9IDksCi0gICAgRE9NX0RPQ1VN
RU5UX1RZUEVfTk9ERSAgICAgICAgICAgID0gMTAsCi0gICAgRE9NX0RPQ1VNRU5UX0ZSQUdNRU5U
X05PREUgICAgICAgID0gMTEsCi0gICAgRE9NX05PVEFUSU9OX05PREUgICAgICAgICAgICAgICAg
ID0gMTIKLX07Ci0KLUBpbnRlcmZhY2UgRE9NTm9kZSA6IERPTU9iamVjdAotLSAoTlNTdHJpbmcg
Kilub2RlTmFtZTsKLS0gKE5TU3RyaW5nICopbm9kZVZhbHVlOwotLSAodm9pZClzZXROb2RlVmFs
dWU6KE5TU3RyaW5nICopc3RyaW5nOwotLSAodW5zaWduZWQgc2hvcnQpbm9kZVR5cGU7Ci0tIChE
T01Ob2RlICopcGFyZW50Tm9kZTsKLS0gKERPTU5vZGVMaXN0ICopY2hpbGROb2RlczsKLS0gKERP
TU5vZGUgKilmaXJzdENoaWxkOwotLSAoRE9NTm9kZSAqKWxhc3RDaGlsZDsKLS0gKERPTU5vZGUg
KilwcmV2aW91c1NpYmxpbmc7Ci0tIChET01Ob2RlICopbmV4dFNpYmxpbmc7Ci0tIChET01OYW1l
ZE5vZGVNYXAgKilhdHRyaWJ1dGVzOwotLSAoRE9NRG9jdW1lbnQgKilvd25lckRvY3VtZW50Owot
LSAoRE9NTm9kZSAqKWluc2VydEJlZm9yZTooRE9NTm9kZSAqKW5ld0NoaWxkIDooRE9NTm9kZSAq
KXJlZkNoaWxkOwotLSAoRE9NTm9kZSAqKXJlcGxhY2VDaGlsZDooRE9NTm9kZSAqKW5ld0NoaWxk
IDooRE9NTm9kZSAqKW9sZENoaWxkOwotLSAoRE9NTm9kZSAqKXJlbW92ZUNoaWxkOihET01Ob2Rl
ICopb2xkQ2hpbGQ7Ci0tIChET01Ob2RlICopYXBwZW5kQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGls
ZDsKLS0gKEJPT0wpaGFzQ2hpbGROb2RlczsKLS0gKERPTU5vZGUgKiljbG9uZU5vZGU6KEJPT0wp
ZGVlcDsKLS0gKHZvaWQpbm9ybWFsaXplOwotLSAoQk9PTClpc1N1cHBvcnRlZDooTlNTdHJpbmcg
KilmZWF0dXJlIDooTlNTdHJpbmcgKil2ZXJzaW9uOwotLSAoTlNTdHJpbmcgKiluYW1lc3BhY2VV
Ukk7Ci0tIChOU1N0cmluZyAqKXByZWZpeDsKLS0gKHZvaWQpc2V0UHJlZml4OihOU1N0cmluZyAq
KXByZWZpeDsKLS0gKE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAoQk9PTCloYXNBdHRyaWJ1dGVz
OwotLSAoQk9PTClpc1NhbWVOb2RlOihET01Ob2RlICopb3RoZXI7Ci0tIChCT09MKWlzRXF1YWxO
b2RlOihET01Ob2RlICopb3RoZXI7Ci0tIChOU1N0cmluZyAqKXRleHRDb250ZW50OwotLSAodm9p
ZClzZXRUZXh0Q29udGVudDooTlNTdHJpbmcgKil0ZXh0OwotQGVuZAotCi1AaW50ZXJmYWNlIERP
TU5vZGVMaXN0IDogRE9NT2JqZWN0Ci0tIChET01Ob2RlICopaXRlbToodW5zaWduZWQpaW5kZXg7
Ci0tICh1bnNpZ25lZClsZW5ndGg7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NTmFtZWROb2RlTWFw
IDogRE9NT2JqZWN0Ci0tIChET01Ob2RlICopZ2V0TmFtZWRJdGVtOihOU1N0cmluZyAqKW5hbWU7
Ci0tIChET01Ob2RlICopc2V0TmFtZWRJdGVtOihET01Ob2RlICopYXJnOwotLSAoRE9NTm9kZSAq
KXJlbW92ZU5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1lOwotLSAoRE9NTm9kZSAqKWl0ZW06KHVu
c2lnbmVkKWluZGV4OwotLSAodW5zaWduZWQpbGVuZ3RoOwotLSAoRE9NTm9kZSAqKWdldE5hbWVk
SXRlbU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwot
LSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbU5TOihET01Ob2RlICopYXJnOwotLSAoRE9NTm9kZSAq
KXJlbW92ZU5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICop
bG9jYWxOYW1lOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUNoYXJhY3RlckRhdGEgOiBET01Ob2Rl
Ci0tIChOU1N0cmluZyAqKWRhdGE7Ci0tICh2b2lkKXNldERhdGE6KE5TU3RyaW5nICopZGF0YTsK
LS0gKHVuc2lnbmVkKWxlbmd0aDsKLS0gKE5TU3RyaW5nICopc3Vic3RyaW5nRGF0YToodW5zaWdu
ZWQpb2Zmc2V0IDoodW5zaWduZWQpY291bnQ7Ci0tICh2b2lkKWFwcGVuZERhdGE6KE5TU3RyaW5n
ICopYXJnOwotLSAodm9pZClpbnNlcnREYXRhOih1bnNpZ25lZClvZmZzZXQgOihOU1N0cmluZyAq
KWFyZzsKLS0gKHZvaWQpZGVsZXRlRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpIGNv
dW50OwotLSAodm9pZClyZXBsYWNlRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpY291
bnQgOihOU1N0cmluZyAqKWFyZzsKLUBlbmQKLQotQGludGVyZmFjZSBET01BdHRyIDogRE9NTm9k
ZQotLSAoTlNTdHJpbmcgKiluYW1lOwotLSAoQk9PTClzcGVjaWZpZWQ7Ci0tIChOU1N0cmluZyAq
KXZhbHVlOwotLSAodm9pZClzZXRWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZTsKLS0gKERPTUVsZW1l
bnQgKilvd25lckVsZW1lbnQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRWxlbWVudCA6IERPTU5v
ZGUKLS0gKE5TU3RyaW5nICopdGFnTmFtZTsKLS0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRlOihO
U1N0cmluZyAqKW5hbWU7Ci0tICh2b2lkKXNldEF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lIDoo
TlNTdHJpbmcgKil2YWx1ZTsKLS0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlOihOU1N0cmluZyAqKW5h
bWU7Ci0tIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9kZTooTlNTdHJpbmcgKiluYW1lOwotLSAo
RE9NQXR0ciAqKXNldEF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKiluZXdBdHRyOwotLSAoRE9NQXR0
ciAqKXJlbW92ZUF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKilvbGRBdHRyOwotLSAoRE9NTm9kZUxp
c3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZTooTlNTdHJpbmcgKiluYW1lOwotLSAoTlNTdHJpbmcg
KilnZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxv
Y2FsTmFtZTsKLS0gKHZvaWQpc2V0QXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJ
IDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKil2YWx1ZTsKLS0gKHZvaWQp
cmVtb3ZlQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKils
b2NhbE5hbWU7Ci0tIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9kZU5TOihOU1N0cmluZyAqKW5h
bWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAoRE9NQXR0ciAqKXNldEF0dHJp
YnV0ZU5vZGVOUzooRE9NQXR0ciAqKW5ld0F0dHI7Ci0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1l
bnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2Nh
bE5hbWU7Ci0tIChCT09MKWhhc0F0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lOwotLSAoQk9PTClo
YXNBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2Fs
TmFtZTsKLS0gKHZvaWQpZm9jdXM7Ci0tICh2b2lkKWJsdXI7Ci1AZW5kCi0KLUBpbnRlcmZhY2Ug
RE9NVGV4dCA6IERPTUNoYXJhY3RlckRhdGEKLS0gKERPTVRleHQgKilzcGxpdFRleHQ6KHVuc2ln
bmVkKW9mZnNldDsKLUBlbmQKLQotQGludGVyZmFjZSBET01Db21tZW50IDogRE9NQ2hhcmFjdGVy
RGF0YQotQGVuZAotCi1AaW50ZXJmYWNlIERPTUNEQVRBU2VjdGlvbiA6IERPTVRleHQKLUBlbmQK
LQotQGludGVyZmFjZSBET01Eb2N1bWVudFR5cGUgOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKW5h
bWU7Ci0tIChET01OYW1lZE5vZGVNYXAgKillbnRpdGllczsKLS0gKERPTU5hbWVkTm9kZU1hcCAq
KW5vdGF0aW9uczsKLS0gKE5TU3RyaW5nICopcHVibGljSWQ7Ci0tIChOU1N0cmluZyAqKXN5c3Rl
bUlkOwotLSAoTlNTdHJpbmcgKilpbnRlcm5hbFN1YnNldDsKLUBlbmQKLQotQGludGVyZmFjZSBE
T01Ob3RhdGlvbiA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopcHVibGljSWQ7Ci0tIChOU1N0cmlu
ZyAqKXN5c3RlbUlkOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUVudGl0eSA6IERPTU5vZGUKLS0g
KE5TU3RyaW5nICopcHVibGljSWQ7Ci0tIChOU1N0cmluZyAqKXN5c3RlbUlkOwotLSAoTlNTdHJp
bmcgKilub3RhdGlvbk5hbWU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRW50aXR5UmVmZXJlbmNl
IDogRE9NTm9kZQotQGVuZAotCi1AaW50ZXJmYWNlIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiA6
IERPTU5vZGUKLS0gKE5TU3RyaW5nICopdGFyZ2V0OwotLSAoTlNTdHJpbmcgKilkYXRhOwotLSAo
dm9pZClzZXREYXRhOihOU1N0cmluZyAqKWRhdGE7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRG9j
dW1lbnRGcmFnbWVudCA6IERPTU5vZGUKLUBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudCA6
IERPTU5vZGUKLS0gKERPTURvY3VtZW50VHlwZSAqKWRvY3R5cGU7Ci0tIChET01JbXBsZW1lbnRh
dGlvbiAqKWltcGxlbWVudGF0aW9uOwotLSAoRE9NRWxlbWVudCAqKWRvY3VtZW50RWxlbWVudDsK
LS0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWU7Ci0tIChE
T01Eb2N1bWVudEZyYWdtZW50ICopY3JlYXRlRG9jdW1lbnRGcmFnbWVudDsKLS0gKERPTVRleHQg
KiljcmVhdGVUZXh0Tm9kZTooTlNTdHJpbmcgKilkYXRhOwotLSAoRE9NQ29tbWVudCAqKWNyZWF0
ZUNvbW1lbnQ6KE5TU3RyaW5nICopZGF0YTsKLS0gKERPTUNEQVRBU2VjdGlvbiAqKWNyZWF0ZUNE
QVRBU2VjdGlvbjooTlNTdHJpbmcgKilkYXRhOwotLSAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9u
ICopY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uOihOU1N0cmluZyAqKXRhcmdldCA6KE5TU3Ry
aW5nICopZGF0YTsKLS0gKERPTUF0dHIgKiljcmVhdGVBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFt
ZTsKLS0gKERPTUVudGl0eVJlZmVyZW5jZSAqKWNyZWF0ZUVudGl0eVJlZmVyZW5jZTooTlNTdHJp
bmcgKiluYW1lOwotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZTooTlNTdHJp
bmcgKil0YWduYW1lOwotLSAoRE9NTm9kZSAqKWltcG9ydE5vZGU6KERPTU5vZGUgKilpbXBvcnRl
ZE5vZGUgOihCT09MKWRlZXA7Ci0tIChET01FbGVtZW50ICopY3JlYXRlRWxlbWVudE5TOihOU1N0
cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZTsKLS0gKERPTUF0
dHIgKiljcmVhdGVBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmlu
ZyAqKXF1YWxpZmllZE5hbWU7Ci0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1l
TlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tIChE
T01FbGVtZW50ICopZ2V0RWxlbWVudEJ5SWQ6KE5TU3RyaW5nICopZWxlbWVudElkOwotLSAoRE9N
Tm9kZSAqKWFkb3B0Tm9kZTooRE9NTm9kZSAqKXNvdXJjZTsKLUBlbmQKKyNpbXBvcnQgPFdlYkNv
cmUvRE9NQXR0ci5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01DREFUQVNlY3Rpb24uaD4KKyNpbXBv
cnQgPFdlYkNvcmUvRE9NQ2hhcmFjdGVyRGF0YS5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Db21t
ZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTURPTUltcGxlbWVudGF0aW9uLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0RPTURvY3VtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTURvY3VtZW50RnJh
Z21lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnRUeXBlLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0RPTUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRW50aXR5Lmg+CisjaW1w
b3J0IDxXZWJDb3JlL0RPTUVudGl0eVJlZmVyZW5jZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01O
YW1lZE5vZGVNYXAuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NTm9kZS5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9ET01Ob2RlTGlzdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Ob3RhdGlvbi5oPgorI2lt
cG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTVRleHQuaD4KSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01FdmVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NRXZlbnRzLmgJKHJldmlzaW9uIDE1OTk3KQorKysgV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTUV2ZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2Vp
bmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNiAr
MjQsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2ltcG9ydCA8V2ViQ29yZS9ET01Ob2Rl
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01W
aWV3cy5oPgogCiBAY2xhc3MgRE9NRXZlbnQ7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NRXh0ZW5zaW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01F
eHRlbnNpb25zLmgJKHJldmlzaW9uIDE1OTk3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TUV4dGVuc2lvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0Bn
bWFpbC5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEyICsyNCwx
OCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2ltcG9ydCA8V2ViQ29yZS9ET01BdHRyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUNTUy5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01ET01JbXBs
ZW1lbnRhdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Eb2N1bWVudC5oPgorI2ltcG9ydCA8
V2ViQ29yZS9ET01FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUwuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvRE9NTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01SYW5nZS5oPgogCiBA
Y2xhc3MgTlNDb2xvcjsKIEBjbGFzcyBOU0ltYWdlOworQGNsYXNzIERPTUhUTUxDb2xsZWN0aW9u
OwogCiBAaW50ZXJmYWNlIERPTUltcGxlbWVudGF0aW9uIChET01JbXBsZW1lbnRhdGlvbkV4dGVu
c2lvbnMpCiAtIChET01IVE1MRG9jdW1lbnQgKiljcmVhdGVIVE1MRG9jdW1lbnQ6KE5TU3RyaW5n
ICopdGl0bGU7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW1wbGVtZW50YXRpb25G
cm9udC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbXBsZW1lbnRh
dGlvbkZyb250LmgJKHJldmlzaW9uIDE1OTk3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TUltcGxlbWVudGF0aW9uRnJvbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtNTMsNiArNTQsNiBAQCBwdWJsaWM6CiAKIERPTUltcGxlbWVudGF0aW9u
RnJvbnQqIGltcGxlbWVudGF0aW9uRnJvbnQoRG9jdW1lbnQqKTsKIAotfSAvL25hbWVzcGFjZQor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBET01JbXBsZW1lbnRh
dGlvbkZyb250X2gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oCShyZXZpc2lv
biAxNTk5NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA2IEphbWVzIEcuIFNwZXRoIChzcGV0aEBlbmQuY29tKQorICogQ29weXJpZ2h0IChDKSAy
MDA2IFNhbXVlbCBXZWluaWcgKHNhbS53ZWluaWdAZ21haWwuY29tKQogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNiwyNSArMjcsNTIgQEAKIAogI2ltcG9ydCAiRE9NLmgiCiAK
KyNpbXBvcnQgIkRPTUF0dHIuaCIKKyNpbXBvcnQgIkRPTUNEQVRBU2VjdGlvbi5oIgorI2ltcG9y
dCAiRE9NQ29tbWVudC5oIgorI2ltcG9ydCAiRE9NRE9NSW1wbGVtZW50YXRpb24uaCIKKyNpbXBv
cnQgIkRPTURvY3VtZW50LmgiCisjaW1wb3J0ICJET01Eb2N1bWVudEZyYWdtZW50LmgiCisjaW1w
b3J0ICJET01Eb2N1bWVudFR5cGUuaCIKKyNpbXBvcnQgIkRPTUVsZW1lbnQuaCIKKyNpbXBvcnQg
IkRPTUVudGl0eVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiRE9NTmFtZWROb2RlTWFwLmgiCisjaW1w
b3J0ICJET01Ob2RlLmgiCisjaW1wb3J0ICJET01Ob2RlTGlzdC5oIgorI2ltcG9ydCAiRE9NT2Jq
ZWN0LmgiCisjaW1wb3J0ICJET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKKyNpbXBvcnQgIkRP
TVRleHQuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIEF0dHI7CisgICAgY2xh
c3MgQ0RBVEFTZWN0aW9uOwogICAgIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CiAgICAgY2xh
c3MgQ1NTU3R5bGVTaGVldDsKLSAgICBjbGFzcyBEb2N1bWVudEZyYWdtZW50OworICAgIGNsYXNz
IENvbW1lbnQ7CisgICAgY2xhc3MgRE9NSW1wbGVtZW50YXRpb25Gcm9udDsKICAgICBjbGFzcyBE
b2N1bWVudDsKKyAgICBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogICAgIGNsYXNzIERvY3VtZW50
VHlwZTsKICAgICBjbGFzcyBFbGVtZW50OwotICAgIGNsYXNzIE5vZGVGaWx0ZXI7CisgICAgY2xh
c3MgRW50aXR5UmVmZXJlbmNlOworICAgIGNsYXNzIE5hbWVkTm9kZU1hcDsKICAgICBjbGFzcyBO
b2RlOworICAgIGNsYXNzIE5vZGVGaWx0ZXI7CiAgICAgY2xhc3MgTm9kZUl0ZXJhdG9yOwotICAg
IGNsYXNzIE5hbWVkTm9kZU1hcDsKICAgICBjbGFzcyBOb2RlTGlzdDsKKyAgICBjbGFzcyBQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb247CiAgICAgY2xhc3MgUmFuZ2U7CiAgICAgY2xhc3MgU3R5bGVTaGVl
dExpc3Q7CisgICAgY2xhc3MgVGV4dDsKICAgICBjbGFzcyBUcmVlV2Fsa2VyOwotCisgICAgCiAg
ICAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIH0KIAorQGludGVyZmFjZSBET01PYmplY3Qg
KFdlYkNvcmVJbnRlcm5hbCkKKy0gKGlkKV9pbml0OworQGVuZAorCiBAaW50ZXJmYWNlIERPTU5v
ZGUgKFdlYkNvcmVJbnRlcm5hbCkKICsgKERPTU5vZGUgKilfbm9kZVdpdGg6KFdlYkNvcmU6Ok5v
ZGUgKilpbXBsOwogLSAoV2ViQ29yZTo6Tm9kZSAqKV9ub2RlOwpAQCAtNTgsMTEgKzg2LDQ2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICsgKERPTU5vZGVMaXN0ICopX25vZGVMaXN0V2l0aDooV2Vi
Q29yZTo6Tm9kZUxpc3QgKilpbXBsOwogQGVuZAogCitAaW50ZXJmYWNlIERPTVRleHQgKFdlYkNv
cmVJbnRlcm5hbCkKKysgKERPTVRleHQgKilfdGV4dFdpdGg6KFdlYkNvcmU6OlRleHQgKilpbXBs
OworQGVuZAorCitAaW50ZXJmYWNlIERPTUNvbW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKKysgKERP
TUNvbW1lbnQgKilfY29tbWVudFdpdGg6KFdlYkNvcmU6OkNvbW1lbnQgKilpbXBsOworQGVuZAor
CitAaW50ZXJmYWNlIERPTUNEQVRBU2VjdGlvbiAoV2ViQ29yZUludGVybmFsKQorKyAoRE9NQ0RB
VEFTZWN0aW9uICopX0NEQVRBU2VjdGlvbldpdGg6KFdlYkNvcmU6OkNEQVRBU2VjdGlvbiAqKWlt
cGw7CitAZW5kCisKK0BpbnRlcmZhY2UgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uIChXZWJDb3Jl
SW50ZXJuYWwpCisrIChET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKilfcHJvY2Vzc2luZ0luc3Ry
dWN0aW9uV2l0aDooV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uICopaW1wbDsKK0BlbmQK
KworQGludGVyZmFjZSBET01FbnRpdHlSZWZlcmVuY2UgKFdlYkNvcmVJbnRlcm5hbCkKKysgKERP
TUVudGl0eVJlZmVyZW5jZSAqKV9lbnRpdHlSZWZlcmVuY2VXaXRoOihXZWJDb3JlOjpFbnRpdHlS
ZWZlcmVuY2UgKilpbXBsOworQGVuZAorCiBAaW50ZXJmYWNlIERPTUVsZW1lbnQgKFdlYkNvcmVJ
bnRlcm5hbCkKICsgKERPTUVsZW1lbnQgKilfZWxlbWVudFdpdGg6KFdlYkNvcmU6OkVsZW1lbnQg
KilpbXBsOwogLSAoV2ViQ29yZTo6RWxlbWVudCAqKV9lbGVtZW50OwogQGVuZAogCitAaW50ZXJm
YWNlIERPTUF0dHIgKFdlYkNvcmVJbnRlcm5hbCkKKysgKERPTUF0dHIgKilfYXR0cldpdGg6KFdl
YkNvcmU6OkF0dHIgKilpbXBsOworLSAoV2ViQ29yZTo6QXR0ciAqKV9hdHRyOworQGVuZAorCitA
aW50ZXJmYWNlIERPTURvY3VtZW50VHlwZSAoV2ViQ29yZUludGVybmFsKQorKyAoRE9NRG9jdW1l
bnRUeXBlICopX2RvY3VtZW50VHlwZVdpdGg6KFdlYkNvcmU6OkRvY3VtZW50VHlwZSAqKWltcGw7
CistIChXZWJDb3JlOjpEb2N1bWVudFR5cGUgKilfZG9jdW1lbnRUeXBlOworQGVuZAorCitAaW50
ZXJmYWNlIERPTUltcGxlbWVudGF0aW9uIChXZWJDb3JlSW50ZXJuYWwpCisrIChET01JbXBsZW1l
bnRhdGlvbiAqKV9ET01JbXBsZW1lbnRhdGlvbldpdGg6KFdlYkNvcmU6OkRPTUltcGxlbWVudGF0
aW9uRnJvbnQgKilpbXBsOworLSAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKV9E
T01JbXBsZW1lbnRhdGlvbjsKK0BlbmQKKwogQGludGVyZmFjZSBET01Eb2N1bWVudCAoV2ViQ29y
ZUludGVybmFsKQogKyAoRE9NRG9jdW1lbnQgKilfZG9jdW1lbnRXaXRoOihXZWJDb3JlOjpEb2N1
bWVudCAqKWltcGw7CiAtIChXZWJDb3JlOjpEb2N1bWVudCAqKV9kb2N1bWVudDsKQEAgLTg3LDEw
ICsxNTAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiArIChET01UcmVlV2Fsa2VyICopX3RyZWVX
YWxrZXJXaXRoOihXZWJDb3JlOjpUcmVlV2Fsa2VyICopaW1wbCBmaWx0ZXI6KGlkIDxET01Ob2Rl
RmlsdGVyPilmaWx0ZXI7CiBAZW5kCiAKLUBpbnRlcmZhY2UgRE9NT2JqZWN0IChXZWJDb3JlSW50
ZXJuYWwpCi0tIChpZClfaW5pdDsKLUBlbmQKLQogQGludGVyZmFjZSBET01DU1NTdHlsZURlY2xh
cmF0aW9uIChXZWJDb3JlSW50ZXJuYWwpCiArIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopX3N0
eWxlRGVjbGFyYXRpb25XaXRoOihXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uICopaW1wbDsK
IC0gKFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb24gKilfc3R5bGVEZWNsYXJhdGlvbjsKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTU5vZGUuaAkocmV2aXNpb24gMTU5NTkpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0u
d2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMs
NTcgKzI0LDE0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW1wb3J0IDxXZWJDb3JlL1dl
YlNjcmlwdE9iamVjdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KIAogQGNsYXNz
IERPTURvY3VtZW50OyAKLUBjbGFzcyBET01Eb2N1bWVudFR5cGU7Ci1AY2xhc3MgRE9NRWxlbWVu
dDsKIEBjbGFzcyBET01OYW1lZE5vZGVNYXA7CiBAY2xhc3MgRE9NTm9kZUxpc3Q7CiAKLXR5cGVk
ZWYgc3RydWN0IERPTU9iamVjdEludGVybmFsIERPTU9iamVjdEludGVybmFsOwotCi1AaW50ZXJm
YWNlIERPTU9iamVjdCA6IFdlYlNjcmlwdE9iamVjdCA8TlNDb3B5aW5nPgotewotICAgIERPTU9i
amVjdEludGVybmFsICpfaW50ZXJuYWw7Ci19Ci1AZW5kCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBsb25nIERPTVRpbWVTdGFtcDsKLQotZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgRE9NRXhjZXB0
aW9uOwotCi1lbnVtIHsKLSAgICAvLwotICAgIC8vIERPTSBleGNlcHRpb24gY29kZXMKLSAgICAv
LwotICAgIERPTV9JTkRFWF9TSVpFX0VSUiAgICAgICAgICAgICAgICA9IDEsCi0gICAgRE9NX0RP
TVNUUklOR19TSVpFX0VSUiAgICAgICAgICAgID0gMiwKLSAgICBET01fSElFUkFSQ0hZX1JFUVVF
U1RfRVJSICAgICAgICAgPSAzLAotICAgIERPTV9XUk9OR19ET0NVTUVOVF9FUlIgICAgICAgICAg
ICA9IDQsCi0gICAgRE9NX0lOVkFMSURfQ0hBUkFDVEVSX0VSUiAgICAgICAgID0gNSwKLSAgICBE
T01fTk9fREFUQV9BTExPV0VEX0VSUiAgICAgICAgICAgPSA2LAotICAgIERPTV9OT19NT0RJRklD
QVRJT05fQUxMT1dFRF9FUlIgICA9IDcsCi0gICAgRE9NX05PVF9GT1VORF9FUlIgICAgICAgICAg
ICAgICAgID0gOCwKLSAgICBET01fTk9UX1NVUFBPUlRFRF9FUlIgICAgICAgICAgICAgPSA5LAot
ICAgIERPTV9JTlVTRV9BVFRSSUJVVEVfRVJSICAgICAgICAgICA9IDEwLAotICAgIERPTV9JTlZB
TElEX1NUQVRFX0VSUiAgICAgICAgICAgICA9IDExLAotICAgIERPTV9TWU5UQVhfRVJSICAgICAg
ICAgICAgICAgICAgICA9IDEyLAotICAgIERPTV9JTlZBTElEX01PRElGSUNBVElPTl9FUlIgICAg
ICA9IDEzLAotICAgIERPTV9OQU1FU1BBQ0VfRVJSICAgICAgICAgICAgICAgICA9IDE0LAotICAg
IERPTV9JTlZBTElEX0FDQ0VTU19FUlIgICAgICAgICAgICA9IDE1Ci19OwotCi1AaW50ZXJmYWNl
IERPTUltcGxlbWVudGF0aW9uIDogRE9NT2JqZWN0Ci0tIChCT09MKWhhc0ZlYXR1cmU6KE5TU3Ry
aW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbjsKLS0gKERPTURvY3VtZW50VHlwZSAq
KWNyZWF0ZURvY3VtZW50VHlwZTooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcg
KilwdWJsaWNJZCA6KE5TU3RyaW5nICopc3lzdGVtSWQ7Ci0tIChET01Eb2N1bWVudCAqKWNyZWF0
ZURvY3VtZW50OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVk
TmFtZSA6KERPTURvY3VtZW50VHlwZSAqKWRvY3R5cGU7Ci1AZW5kCi0KKy8vIERPTSBub2RlIHR5
cGVzCiBlbnVtIHsKLSAgICAvLwotICAgIC8vIERPTSBub2RlIHR5cGVzCi0gICAgLy8KICAgICBE
T01fRUxFTUVOVF9OT0RFICAgICAgICAgICAgICAgICAgPSAxLAogICAgIERPTV9BVFRSSUJVVEVf
Tk9ERSAgICAgICAgICAgICAgICA9IDIsCiAgICAgRE9NX1RFWFRfTk9ERSAgICAgICAgICAgICAg
ICAgICAgID0gMywKQEAgLTExOSwxMjIgKzc3LDMgQEAgZW51bSB7CiAtIChOU1N0cmluZyAqKXRl
eHRDb250ZW50OwogLSAodm9pZClzZXRUZXh0Q29udGVudDooTlNTdHJpbmcgKil0ZXh0OwogQGVu
ZAotCi1AaW50ZXJmYWNlIERPTU5vZGVMaXN0IDogRE9NT2JqZWN0Ci0tIChET01Ob2RlICopaXRl
bToodW5zaWduZWQpaW5kZXg7Ci0tICh1bnNpZ25lZClsZW5ndGg7Ci1AZW5kCi0KLUBpbnRlcmZh
Y2UgRE9NTmFtZWROb2RlTWFwIDogRE9NT2JqZWN0Ci0tIChET01Ob2RlICopZ2V0TmFtZWRJdGVt
OihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01Ob2RlICopc2V0TmFtZWRJdGVtOihET01Ob2RlICop
YXJnOwotLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1lOwotLSAo
RE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4OwotLSAodW5zaWduZWQpbGVuZ3RoOwotLSAo
RE9NTm9kZSAqKWdldE5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3Ry
aW5nICopbG9jYWxOYW1lOwotLSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbU5TOihET01Ob2RlICop
YXJnOwotLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVzcGFj
ZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUNoYXJh
Y3RlckRhdGEgOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKWRhdGE7Ci0tICh2b2lkKXNldERhdGE6
KE5TU3RyaW5nICopZGF0YTsKLS0gKHVuc2lnbmVkKWxlbmd0aDsKLS0gKE5TU3RyaW5nICopc3Vi
c3RyaW5nRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpY291bnQ7Ci0tICh2b2lkKWFw
cGVuZERhdGE6KE5TU3RyaW5nICopYXJnOwotLSAodm9pZClpbnNlcnREYXRhOih1bnNpZ25lZClv
ZmZzZXQgOihOU1N0cmluZyAqKWFyZzsKLS0gKHZvaWQpZGVsZXRlRGF0YToodW5zaWduZWQpb2Zm
c2V0IDoodW5zaWduZWQpIGNvdW50OwotLSAodm9pZClyZXBsYWNlRGF0YToodW5zaWduZWQpb2Zm
c2V0IDoodW5zaWduZWQpY291bnQgOihOU1N0cmluZyAqKWFyZzsKLUBlbmQKLQotQGludGVyZmFj
ZSBET01BdHRyIDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKiluYW1lOwotLSAoQk9PTClzcGVjaWZp
ZWQ7Ci0tIChOU1N0cmluZyAqKXZhbHVlOwotLSAodm9pZClzZXRWYWx1ZTooTlNTdHJpbmcgKil2
YWx1ZTsKLS0gKERPTUVsZW1lbnQgKilvd25lckVsZW1lbnQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2Ug
RE9NRWxlbWVudCA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopdGFnTmFtZTsKLS0gKE5TU3RyaW5n
ICopZ2V0QXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWU7Ci0tICh2b2lkKXNldEF0dHJpYnV0ZToo
TlNTdHJpbmcgKiluYW1lIDooTlNTdHJpbmcgKil2YWx1ZTsKLS0gKHZvaWQpcmVtb3ZlQXR0cmli
dXRlOihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9kZTooTlNT
dHJpbmcgKiluYW1lOwotLSAoRE9NQXR0ciAqKXNldEF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKilu
ZXdBdHRyOwotLSAoRE9NQXR0ciAqKXJlbW92ZUF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKilvbGRB
dHRyOwotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZTooTlNTdHJpbmcgKilu
YW1lOwotLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VV
UkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKHZvaWQpc2V0QXR0cmlidXRlTlM6KE5TU3Ry
aW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcg
Kil2YWx1ZTsKLS0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNl
VVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9k
ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAo
RE9NQXR0ciAqKXNldEF0dHJpYnV0ZU5vZGVOUzooRE9NQXR0ciAqKW5ld0F0dHI7Ci0tIChET01O
b2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJ
IDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tIChCT09MKWhhc0F0dHJpYnV0ZTooTlNTdHJpbmcg
KiluYW1lOwotLSAoQk9PTCloYXNBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkg
OihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKHZvaWQpZm9jdXM7Ci0tICh2b2lkKWJsdXI7Ci1A
ZW5kCi0KLUBpbnRlcmZhY2UgRE9NVGV4dCA6IERPTUNoYXJhY3RlckRhdGEKLS0gKERPTVRleHQg
KilzcGxpdFRleHQ6KHVuc2lnbmVkKW9mZnNldDsKLUBlbmQKLQotQGludGVyZmFjZSBET01Db21t
ZW50IDogRE9NQ2hhcmFjdGVyRGF0YQotQGVuZAotCi1AaW50ZXJmYWNlIERPTUNEQVRBU2VjdGlv
biA6IERPTVRleHQKLUBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudFR5cGUgOiBET01Ob2Rl
Ci0tIChOU1N0cmluZyAqKW5hbWU7Ci0tIChET01OYW1lZE5vZGVNYXAgKillbnRpdGllczsKLS0g
KERPTU5hbWVkTm9kZU1hcCAqKW5vdGF0aW9uczsKLS0gKE5TU3RyaW5nICopcHVibGljSWQ7Ci0t
IChOU1N0cmluZyAqKXN5c3RlbUlkOwotLSAoTlNTdHJpbmcgKilpbnRlcm5hbFN1YnNldDsKLUBl
bmQKLQotQGludGVyZmFjZSBET01Ob3RhdGlvbiA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopcHVi
bGljSWQ7Ci0tIChOU1N0cmluZyAqKXN5c3RlbUlkOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUVu
dGl0eSA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopcHVibGljSWQ7Ci0tIChOU1N0cmluZyAqKXN5
c3RlbUlkOwotLSAoTlNTdHJpbmcgKilub3RhdGlvbk5hbWU7Ci1AZW5kCi0KLUBpbnRlcmZhY2Ug
RE9NRW50aXR5UmVmZXJlbmNlIDogRE9NTm9kZQotQGVuZAotCi1AaW50ZXJmYWNlIERPTVByb2Nl
c3NpbmdJbnN0cnVjdGlvbiA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopdGFyZ2V0OwotLSAoTlNT
dHJpbmcgKilkYXRhOwotLSAodm9pZClzZXREYXRhOihOU1N0cmluZyAqKWRhdGE7Ci1AZW5kCi0K
LUBpbnRlcmZhY2UgRE9NRG9jdW1lbnRGcmFnbWVudCA6IERPTU5vZGUKLUBlbmQKLQotQGludGVy
ZmFjZSBET01Eb2N1bWVudCA6IERPTU5vZGUKLS0gKERPTURvY3VtZW50VHlwZSAqKWRvY3R5cGU7
Ci0tIChET01JbXBsZW1lbnRhdGlvbiAqKWltcGxlbWVudGF0aW9uOwotLSAoRE9NRWxlbWVudCAq
KWRvY3VtZW50RWxlbWVudDsKLS0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50OihOU1N0cmlu
ZyAqKXRhZ05hbWU7Ci0tIChET01Eb2N1bWVudEZyYWdtZW50ICopY3JlYXRlRG9jdW1lbnRGcmFn
bWVudDsKLS0gKERPTVRleHQgKiljcmVhdGVUZXh0Tm9kZTooTlNTdHJpbmcgKilkYXRhOwotLSAo
RE9NQ29tbWVudCAqKWNyZWF0ZUNvbW1lbnQ6KE5TU3RyaW5nICopZGF0YTsKLS0gKERPTUNEQVRB
U2VjdGlvbiAqKWNyZWF0ZUNEQVRBU2VjdGlvbjooTlNTdHJpbmcgKilkYXRhOwotLSAoRE9NUHJv
Y2Vzc2luZ0luc3RydWN0aW9uICopY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uOihOU1N0cmlu
ZyAqKXRhcmdldCA6KE5TU3RyaW5nICopZGF0YTsKLS0gKERPTUF0dHIgKiljcmVhdGVBdHRyaWJ1
dGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTUVudGl0eVJlZmVyZW5jZSAqKWNyZWF0ZUVudGl0
eVJlZmVyZW5jZTooTlNTdHJpbmcgKiluYW1lOwotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50
c0J5VGFnTmFtZTooTlNTdHJpbmcgKil0YWduYW1lOwotLSAoRE9NTm9kZSAqKWltcG9ydE5vZGU6
KERPTU5vZGUgKilpbXBvcnRlZE5vZGUgOihCT09MKWRlZXA7Ci0tIChET01FbGVtZW50ICopY3Jl
YXRlRWxlbWVudE5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlm
aWVkTmFtZTsKLS0gKERPTUF0dHIgKiljcmVhdGVBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1l
c3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWU7Ci0tIChET01Ob2RlTGlzdCAqKWdl
dEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcg
Kilsb2NhbE5hbWU7Ci0tIChET01FbGVtZW50ICopZ2V0RWxlbWVudEJ5SWQ6KE5TU3RyaW5nICop
ZWxlbWVudElkOwotLSAoRE9NTm9kZSAqKWFkb3B0Tm9kZTooRE9NTm9kZSAqKXNvdXJjZTsKLUBl
bmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlLm1tCShyZXZpc2lvbiAxNTk1OSkKKysrIFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2IEphbWVzIEcuIFNw
ZXRoIChzcGV0aEBlbmQuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA2IEphbWVzIEcuIFNwZXRo
IDxzcGV0aEBlbmQuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNh
bS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
NSwxOTMgKzI2LDM3IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJET00u
aCIKKyNpbXBvcnQgIkRPTU5vZGUuaCIKIAotI2ltcG9ydCAiQ0RBVEFTZWN0aW9uLmgiCi0jaW1w
b3J0ICJjc3NoZWxwZXIuaCIKLSNpbXBvcnQgIkNTU1N0eWxlU2hlZXQuaCIKLSNpbXBvcnQgIkNv
bW1lbnQuaCIKLSNpbXBvcnQgIkRPTUV2ZW50c0ludGVybmFsLmgiCi0jaW1wb3J0ICJET01JbXBs
ZW1lbnRhdGlvbkZyb250LmgiCiAjaW1wb3J0ICJET01JbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9N
UHJpdmF0ZS5oIgotI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkRvY3VtZW50RnJhZ21l
bnQuaCIKLSNpbXBvcnQgIkRvY3VtZW50VHlwZS5oIgotI2ltcG9ydCAiRW50aXR5LmgiCi0jaW1w
b3J0ICJFbnRpdHlSZWZlcmVuY2UuaCIKLSNpbXBvcnQgIkV2ZW50LmgiCi0jaW1wb3J0ICJFdmVu
dExpc3RlbmVyLmgiCi0jaW1wb3J0ICJGb3VuZGF0aW9uRXh0cmFzLmgiCi0jaW1wb3J0ICJGcmFt
ZU1hYy5oIgotI2ltcG9ydCAiSFRNTERvY3VtZW50LmgiCi0jaW1wb3J0ICJIVE1MTmFtZXMuaCIK
LSNpbXBvcnQgIkhUTUxQbHVnSW5FbGVtZW50LmgiCi0jaW1wb3J0ICJOb2RlRmlsdGVyLmgiCi0j
aW1wb3J0ICJOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCi0jaW1wb3J0ICJOb2RlSXRlcmF0b3IuaCIK
LSNpbXBvcnQgIk5vZGVMaXN0LmgiCi0jaW1wb3J0ICJOb3RhdGlvbi5oIgotI2ltcG9ydCAiUHJv
Y2Vzc2luZ0luc3RydWN0aW9uLmgiCi0jaW1wb3J0ICJRdWFsaWZpZWROYW1lLmgiCi0jaW1wb3J0
ICJSYW5nZS5oIgotI2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKLSNpbXBvcnQgIlRyZWVXYWxrZXIu
aCIKLSNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKLSNpbXBvcnQgPG9iamMvb2Jq
Yy1jbGFzcy5oPgotCi11c2luZyBXZWJDb3JlOjpBdG9taWNTdHJpbmc7Ci11c2luZyBXZWJDb3Jl
OjpBdG9taWNTdHJpbmdJbXBsOwotdXNpbmcgV2ViQ29yZTo6QXR0cjsKLXVzaW5nIFdlYkNvcmU6
OkNoYXJhY3RlckRhdGE7Ci11c2luZyBXZWJDb3JlOjpEZXByZWNhdGVkVmFsdWVMaXN0OwotdXNp
bmcgV2ViQ29yZTo6RG9jdW1lbnQ7Ci11c2luZyBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50Owot
dXNpbmcgV2ViQ29yZTo6RG9jdW1lbnRUeXBlOwotdXNpbmcgV2ViQ29yZTo6RE9NSW1wbGVtZW50
YXRpb25Gcm9udDsKLXVzaW5nIFdlYkNvcmU6OkVsZW1lbnQ7Ci11c2luZyBXZWJDb3JlOjpFbnRp
dHk7Ci11c2luZyBXZWJDb3JlOjpFdmVudDsKLXVzaW5nIFdlYkNvcmU6OkV2ZW50TGlzdGVuZXI7
Ci11c2luZyBXZWJDb3JlOjpFeGNlcHRpb25Db2RlOwotdXNpbmcgV2ViQ29yZTo6SFRNTERvY3Vt
ZW50OwotdXNpbmcgV2ViQ29yZTo6SFRNTEVsZW1lbnQ7Ci11c2luZyBXZWJDb3JlOjpGcmFtZU1h
YzsKLXVzaW5nIFdlYkNvcmU6OkludFJlY3Q7Ci11c2luZyBXZWJDb3JlOjpLVVJMOwotdXNpbmcg
V2ViQ29yZTo6TmFtZWROb2RlTWFwOwotdXNpbmcgV2ViQ29yZTo6Tm9kZTsKLXVzaW5nIFdlYkNv
cmU6Ok5vZGVGaWx0ZXI7Ci11c2luZyBXZWJDb3JlOjpOb2RlRmlsdGVyQ29uZGl0aW9uOwotdXNp
bmcgV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yOwotdXNpbmcgV2ViQ29yZTo6Tm9kZUxpc3Q7Ci11c2lu
ZyBXZWJDb3JlOjpOb3RhdGlvbjsKLXVzaW5nIFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlv
bjsKLXVzaW5nIFdlYkNvcmU6OlF1YWxpZmllZE5hbWU7Ci11c2luZyBXZWJDb3JlOjpSYW5nZTsK
LXVzaW5nIFdlYkNvcmU6OlJlbmRlckltYWdlOwotdXNpbmcgV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OwotdXNpbmcgV2ViQ29yZTo6U3RyaW5nOwotdXNpbmcgV2ViQ29yZTo6VGV4dDsKLXVzaW5nIFdl
YkNvcmU6OlRyZWVXYWxrZXI7Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpIVE1MTmFtZXM7
Ci0KLUBpbnRlcmZhY2UgRE9NQXR0ciAoV2ViQ29yZUludGVybmFsKQotKyAoRE9NQXR0ciAqKV9h
dHRyV2l0aDooQXR0ciAqKWltcGw7Ci0tIChBdHRyICopX2F0dHI7Ci1AZW5kCi0KLUBpbnRlcmZh
Y2UgRE9NRG9jdW1lbnRUeXBlIChXZWJDb3JlSW50ZXJuYWwpCi0tIChEb2N1bWVudFR5cGUgKilf
ZG9jdW1lbnRUeXBlOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUltcGxlbWVudGF0aW9uIChXZWJD
b3JlSW50ZXJuYWwpCi0rIChET01JbXBsZW1lbnRhdGlvbiAqKV9ET01JbXBsZW1lbnRhdGlvbldp
dGg6KERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilpbXBsOwotLSAoRE9NSW1wbGVtZW50YXRpb25G
cm9udCAqKV9ET01JbXBsZW1lbnRhdGlvbjsKLUBlbmQKLQotY2xhc3MgT2JqQ0V2ZW50TGlzdGVu
ZXIgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIE9iakNFdmVu
dExpc3RlbmVyICpmaW5kKGlkIDxET01FdmVudExpc3RlbmVyPik7Ci0gICAgc3RhdGljIE9iakNF
dmVudExpc3RlbmVyICpjcmVhdGUoaWQgPERPTUV2ZW50TGlzdGVuZXI+KTsKLQotcHJpdmF0ZToK
LSAgICBPYmpDRXZlbnRMaXN0ZW5lcihpZCA8RE9NRXZlbnRMaXN0ZW5lcj4pOwotICAgIHZpcnR1
YWwgfk9iakNFdmVudExpc3RlbmVyKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQo
RXZlbnQgKiwgYm9vbCBpc1dpbmRvd0V2ZW50KTsKLQotICAgIGlkIDxET01FdmVudExpc3RlbmVy
PiBtX2xpc3RlbmVyOwotfTsKLQotdHlwZWRlZiBIYXNoTWFwPGlkLCBPYmpDRXZlbnRMaXN0ZW5l
cio+IExpc3RlbmVyTWFwOwotdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDbGFz
cz4gT2JqQ0NsYXNzTWFwOwotCi1zdGF0aWMgT2JqQ0NsYXNzTWFwKiBlbGVtZW50Q2xhc3NNYXA7
Ci1zdGF0aWMgTGlzdGVuZXJNYXAqIGxpc3RlbmVyTWFwOwotCi0vLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NT2JqZWN0Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01PYmpl
Y3QKLQotLy8gUHJldmVudCBjcmVhdGlvbiBvZiBET00gb2JqZWN0cyBieSBjbGllbnRzIHdobyBq
dXN0ICJbW3h4eCBhbGxvY10gaW5pdF0iLgotLSAoaWQpaW5pdAotewotICAgIFtOU0V4Y2VwdGlv
biByYWlzZTpOU0dlbmVyaWNFeGNlcHRpb24gZm9ybWF0OkAiK1slQCBpbml0XTogc2hvdWxkIG5l
dmVyIGJlIHVzZWQiLCBOU1N0cmluZ0Zyb21DbGFzcyhbc2VsZiBjbGFzc10pXTsKLSAgICBbc2Vs
ZiByZWxlYXNlXTsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAg
ICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIHJlbW92ZURPTVdyYXBwZXIoX2ludGVybmFsKTsK
LSAgICB9Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0g
ICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICByZW1vdmVET01XcmFwcGVyKF9pbnRlcm5hbCk7
Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19Ci0KLS0gKGlkKWNvcHlXaXRoWm9uZToo
TlNab25lICopem9uZQotewotICAgIHJldHVybiBbc2VsZiByZXRhaW5dOwotfQotCi1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBET01PYmplY3QgKFdlYkNvcmVJbnRlcm5hbCkKLQotLSAoaWQpX2lu
aXQKLXsKLSAgICByZXR1cm4gW3N1cGVyIF9pbml0XTsKLX0KLQotQGVuZAorI2ltcG9ydCAiTm9k
ZS5oIgogCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NTm9kZQor
I2ltcG9ydCAiQXRvbWljU3RyaW5nLmgiCisjaW1wb3J0ICJET01Eb2N1bWVudC5oIgorI2ltcG9y
dCAiRE9NTmFtZWROb2RlTWFwLmgiCisjaW1wb3J0ICJET01Ob2RlTGlzdC5oIgorI2ltcG9ydCAi
TmFtZWRBdHRyTWFwLmgiCisjaW1wb3J0ICJOYW1lZE5vZGVNYXAuaCIKKyNpbXBvcnQgIk5vZGVM
aXN0LmgiCisjaW1wb3J0ICJQbGF0Zm9ybVN0cmluZy5oIgorI2ltcG9ydCA8d3RmL0Fzc2VydGlv
bnMuaD4KIAogQGltcGxlbWVudGF0aW9uIERPTU5vZGUKIAogLSAodm9pZClkZWFsbG9jCiB7Ci0g
ICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkt
PmRlcmVmKCk7Ci0gICAgfQorICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIERPTV9jYXN0PFdl
YkNvcmU6Ok5vZGUgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKICAgICBbc3VwZXIgZGVhbGxvY107
CiB9CiAKIC0gKHZvaWQpZmluYWxpemUKIHsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAg
IERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9CisgICAgaWYgKF9p
bnRlcm5hbCkKKyAgICAgICAgRE9NX2Nhc3Q8V2ViQ29yZTo6Tm9kZSAqPihfaW50ZXJuYWwpLT5k
ZXJlZigpOwogICAgIFtzdXBlciBmaW5hbGl6ZV07CiB9CiAKLS0gKE5TU3RyaW5nICopZGVzY3Jp
cHRpb24KLXsKLSAgICBpZiAoIV9pbnRlcm5hbCkgewotICAgICAgICByZXR1cm4gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUA6IG51bGw+IiwKLSAgICAgICAgICAgIFtbc2VsZiBjbGFz
c10gZGVzY3JpcHRpb25dLCBzZWxmXTsKLSAgICB9Ci0gICAgTlNTdHJpbmcgKnZhbHVlID0gW3Nl
bGYgbm9kZVZhbHVlXTsKLSAgICBpZiAodmFsdWUpIHsKLSAgICAgICAgcmV0dXJuIFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAIFslQF06ICVwICclQCc+IiwKLSAgICAgICAgICAgIFtb
c2VsZiBjbGFzc10gZGVzY3JpcHRpb25dLCBbc2VsZiBub2RlTmFtZV0sIF9pbnRlcm5hbCwgdmFs
dWVdOwotICAgIH0KLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUAg
WyVAXTogJXA+IiwKLSAgICAgICAgW1tzZWxmIGNsYXNzXSBkZXNjcmlwdGlvbl0sIFtzZWxmIG5v
ZGVOYW1lXSwgX2ludGVybmFsXTsKLX0KLQogLSAoTlNTdHJpbmcgKilub2RlTmFtZQogewogICAg
IHJldHVybiBbc2VsZiBfbm9kZV0tPm5vZGVOYW1lKCk7CkBAIC0yMjgsNyArNzMsNyBAQCBzdGF0
aWMgTGlzdGVuZXJNYXAqIGxpc3RlbmVyTWFwOwogewogICAgIEFTU0VSVChzdHJpbmcpOwogICAg
IAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIFtzZWxmIF9ub2RlXS0+c2V0Tm9kZVZhbHVlKHN0cmluZywgZWMpOwogICAg
IHJhaXNlT25ET01FcnJvcihlYyk7CiB9CkBAIC0yNzIsNyArMTE3LDExIEBAIHN0YXRpYyBMaXN0
ZW5lck1hcCogbGlzdGVuZXJNYXA7CiB7CiAgICAgLy8gRE9NIGxldmVsIDIgY29yZSBzcGVjaWZp
Y2F0aW9uIHNheXM6IAogICAgIC8vIEEgTmFtZWROb2RlTWFwIGNvbnRhaW5pbmcgdGhlIGF0dHJp
YnV0ZXMgb2YgdGhpcyBub2RlIChpZiBpdCBpcyBhbiBFbGVtZW50KSBvciBudWxsIG90aGVyd2lz
ZS4KLSAgICByZXR1cm4gbmlsOworICAgIC8vcmV0dXJuIG5pbDsKKyAgICAKKyAgICAvLyBGSVhN
RTogSSB0aGluayB0aGlzIHNob3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbi4g
IFBsdXMsIGl0IGFsbG93cyB1cyB0byBhdXRvLWdlbmVyYXRlCisgICAgLy8gRE9NRWxlbWVudCBt
b3JlIGVhc2lseS4KKyAgICByZXR1cm4gW0RPTU5hbWVkTm9kZU1hcCBfbmFtZWROb2RlTWFwV2l0
aDpbc2VsZiBfbm9kZV0tPmF0dHJpYnV0ZXMoKV07CiB9CiAKIC0gKERPTURvY3VtZW50ICopb3du
ZXJEb2N1bWVudApAQCAtMjg1LDcgKzEzNCw4IEBAIHN0YXRpYyBMaXN0ZW5lck1hcCogbGlzdGVu
ZXJNYXA7CiAgICAgQVNTRVJUKG5ld0NoaWxkKTsKICAgICBBU1NFUlQocmVmQ2hpbGQpOwogCi0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgLy8gRklYTUU6IHRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgZm9sbG93IHRoZSBk
b20gc3BlYy4gCiAgICAgaWYgKFtzZWxmIF9ub2RlXS0+aW5zZXJ0QmVmb3JlKFtuZXdDaGlsZCBf
bm9kZV0sIFtyZWZDaGlsZCBfbm9kZV0sIGVjKSkKICAgICAgICAgcmV0dXJuIG5ld0NoaWxkOwog
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7CkBAIC0yOTcsNyArMTQ3LDkgQEAgc3RhdGljIExpc3Rl
bmVyTWFwKiBsaXN0ZW5lck1hcDsKICAgICBBU1NFUlQobmV3Q2hpbGQpOwogICAgIEFTU0VSVChv
bGRDaGlsZCk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICAKKyAgICAvLyBGSVhNRTogdGhlIGltcGxlbWVudGF0aW9u
IHNob3VsZCBmb2xsb3cgdGhlIGRvbSBzcGVjLiAKICAgICBpZiAoW3NlbGYgX25vZGVdLT5yZXBs
YWNlQ2hpbGQoW25ld0NoaWxkIF9ub2RlXSwgW29sZENoaWxkIF9ub2RlXSwgZWMpKQogICAgICAg
ICByZXR1cm4gb2xkQ2hpbGQ7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKQEAgLTMwOCw3ICsx
NjAsOCBAQCBzdGF0aWMgTGlzdGVuZXJNYXAqIGxpc3RlbmVyTWFwOwogewogICAgIEFTU0VSVChv
bGRDaGlsZCk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICAvLyBGSVhNRTogdGhlIGltcGxlbWVudGF0aW9uIHNob3Vs
ZCBmb2xsb3cgdGhlIGRvbSBzcGVjLiAKICAgICBpZiAoW3NlbGYgX25vZGVdLT5yZW1vdmVDaGls
ZChbb2xkQ2hpbGQgX25vZGVdLCBlYykpCiAgICAgICAgIHJldHVybiBvbGRDaGlsZDsKICAgICBy
YWlzZU9uRE9NRXJyb3IoZWMpOwpAQCAtMzE5LDcgKzE3Miw4IEBAIHN0YXRpYyBMaXN0ZW5lck1h
cCogbGlzdGVuZXJNYXA7CiB7CiAgICAgQVNTRVJUKG5ld0NoaWxkKTsKIAotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIC8v
IEZJWE1FOiB0aGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGZvbGxvdyB0aGUgZG9tIHNwZWMuIAog
ICAgIGlmIChbc2VsZiBfbm9kZV0tPmFwcGVuZENoaWxkKFtuZXdDaGlsZCBfbm9kZV0sIGVjKSkK
ICAgICAgICAgcmV0dXJuIG5ld0NoaWxkOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7CkBAIC0z
NjMsOCArMjE3LDggQEAgc3RhdGljIExpc3RlbmVyTWFwKiBsaXN0ZW5lck1hcDsKIHsKICAgICBB
U1NFUlQocHJlZml4KTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFN0cmluZyBw
cmVmaXhTdHIocHJlZml4KTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBXZWJDb3JlOjpTdHJpbmcgcHJlZml4U3RyKHByZWZpeCk7CiAgICAgW3NlbGYgX25vZGVdLT5z
ZXRQcmVmaXgocHJlZml4U3RyLmltcGwoKSwgZWMpOwogICAgIHJhaXNlT25ET01FcnJvcihlYyk7
CiB9CkBAIC00MTEsMTk2MiArMjY1LDkgQEAgc3RhdGljIExpc3RlbmVyTWFwKiBsaXN0ZW5lck1h
cDsKIAogLSAodm9pZClzZXRUZXh0Q29udGVudDooTlNTdHJpbmcgKil0ZXh0CiB7Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgW3NlbGYgX25vZGVdLT5zZXRUZXh0Q29udGVudCh0ZXh0LCBlYyk7CiAgICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKIH0KIAotLSAoTlNSZWN0KWJvdW5kaW5nQm94Ci17Ci0gICAgV2ViQ29yZTo6
UmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9ub2RlXS0+cmVuZGVyZXIoKTsKLSAgICBp
ZiAocmVuZGVyZXIpCi0gICAgICAgIHJldHVybiByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoKTsKLSAgICByZXR1cm4gTlNaZXJvUmVjdDsKLX0KLQotLSAoTlNBcnJheSAqKWxpbmVC
b3hSZWN0cwotewotICAgIFdlYkNvcmU6OlJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBbc2VsZiBf
bm9kZV0tPnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyKSB7Ci0gICAgICAgIE5TTXV0YWJs
ZUFycmF5ICpyZXN1bHRzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07Ci0gICAgICAg
IERlcHJlY2F0ZWRWYWx1ZUxpc3Q8SW50UmVjdD4gcmVjdHMgPSByZW5kZXJlci0+bGluZUJveFJl
Y3RzKCk7Ci0gICAgICAgIGlmICghcmVjdHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBmb3Ig
KERlcHJlY2F0ZWRWYWx1ZUxpc3Q8SW50UmVjdD46OkNvbnN0SXRlcmF0b3IgaXQgPSByZWN0cy5i
ZWdpbigpOyBpdCAhPSByZWN0cy5lbmQoKTsgKytpdCkKLSAgICAgICAgICAgICAgICBbcmVzdWx0
cyBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDoqaXRdXTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gW3Jlc3VsdHMgYXV0b3JlbGVhc2VdOwotICAgIH0KLSAgICByZXR1cm4gbmls
OwotfQotCi1AZW5kCi0KLXN0YXRpYyB2b2lkIGFkZEVsZW1lbnRDbGFzcyhjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWcsIENsYXNzIG9iakNDbGFzcykKLXsKLSAgICBlbGVtZW50Q2xhc3NNYXAtPnNl
dCh0YWcubG9jYWxOYW1lKCkuaW1wbCgpLCBvYmpDQ2xhc3MpOwotfQotCi1zdGF0aWMgdm9pZCBj
cmVhdGVIVE1MRWxlbWVudENsYXNzTWFwKCkKLXsKLSAgICAvLyBDcmVhdGUgdGhlIHRhYmxlLgot
ICAgIGVsZW1lbnRDbGFzc01hcCA9IG5ldyBPYmpDQ2xhc3NNYXA7Ci0gICAgCi0gICAgLy8gUG9w
dWxhdGUgaXQgd2l0aCBIVE1MIGVsZW1lbnQgY2xhc3Nlcy4KLSAgICBhZGRFbGVtZW50Q2xhc3Mo
YVRhZywgW0RPTUhUTUxBbmNob3JFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KGFwcGxldFRhZywgW0RPTUhUTUxBcHBsZXRFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVu
dENsYXNzKGFyZWFUYWcsIFtET01IVE1MQXJlYUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVt
ZW50Q2xhc3MoYmFzZVRhZywgW0RPTUhUTUxCYXNlRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVs
ZW1lbnRDbGFzcyhiYXNlZm9udFRhZywgW0RPTUhUTUxCYXNlRm9udEVsZW1lbnQgY2xhc3NdKTsK
LSAgICBhZGRFbGVtZW50Q2xhc3MoYm9keVRhZywgW0RPTUhUTUxCb2R5RWxlbWVudCBjbGFzc10p
OwotICAgIGFkZEVsZW1lbnRDbGFzcyhiclRhZywgW0RPTUhUTUxCUkVsZW1lbnQgY2xhc3NdKTsK
LSAgICBhZGRFbGVtZW50Q2xhc3MoYnV0dG9uVGFnLCBbRE9NSFRNTEJ1dHRvbkVsZW1lbnQgY2xh
c3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoY2FudmFzVGFnLCBbRE9NSFRNTEltYWdlRWxlbWVu
dCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhjYXB0aW9uVGFnLCBbRE9NSFRNTFRhYmxl
Q2FwdGlvbkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoY29sVGFnLCBbRE9N
SFRNTFRhYmxlQ29sRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhjb2xncm91
cFRhZywgW0RPTUhUTUxUYWJsZUNvbEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xh
c3MoZGlyVGFnLCBbRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVt
ZW50Q2xhc3MoZGl2VGFnLCBbRE9NSFRNTERpdkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVt
ZW50Q2xhc3MoZGxUYWcsIFtET01IVE1MRExpc3RFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxl
bWVudENsYXNzKGZpZWxkc2V0VGFnLCBbRE9NSFRNTEZpZWxkU2V0RWxlbWVudCBjbGFzc10pOwot
ICAgIGFkZEVsZW1lbnRDbGFzcyhmb250VGFnLCBbRE9NSFRNTEZvbnRFbGVtZW50IGNsYXNzXSk7
Ci0gICAgYWRkRWxlbWVudENsYXNzKGZvcm1UYWcsIFtET01IVE1MRm9ybUVsZW1lbnQgY2xhc3Nd
KTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoZnJhbWVUYWcsIFtET01IVE1MRnJhbWVFbGVtZW50IGNs
YXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGZyYW1lc2V0VGFnLCBbRE9NSFRNTEZyYW1lU2V0
RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoMVRhZywgW0RPTUhUTUxIZWFk
aW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoMlRhZywgW0RPTUhUTUxI
ZWFkaW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoM1RhZywgW0RPTUhU
TUxIZWFkaW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoNFRhZywgW0RP
TUhUTUxIZWFkaW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoNVRhZywg
W0RPTUhUTUxIZWFkaW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhoNlRh
ZywgW0RPTUhUTUxIZWFkaW5nRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyho
ZWFkVGFnLCBbRE9NSFRNTEhlYWRFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KGhyVGFnLCBbRE9NSFRNTEhSRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyho
dG1sVGFnLCBbRE9NSFRNTEh0bWxFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KGlmcmFtZVRhZywgW0RPTUhUTUxJRnJhbWVFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVu
dENsYXNzKGltZ1RhZywgW0RPTUhUTUxJbWFnZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVt
ZW50Q2xhc3MoaW5wdXRUYWcsIFtET01IVE1MSW5wdXRFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRk
RWxlbWVudENsYXNzKGlzaW5kZXhUYWcsIFtET01IVE1MSXNJbmRleEVsZW1lbnQgY2xhc3NdKTsK
LSAgICBhZGRFbGVtZW50Q2xhc3MobGFiZWxUYWcsIFtET01IVE1MTGFiZWxFbGVtZW50IGNsYXNz
XSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGxlZ2VuZFRhZywgW0RPTUhUTUxMZWdlbmRFbGVtZW50
IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGxpVGFnLCBbRE9NSFRNTExJRWxlbWVudCBj
bGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhsaW5rVGFnLCBbRE9NSFRNTExpbmtFbGVtZW50
IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGxpc3RpbmdUYWcsIFtET01IVE1MUHJlRWxl
bWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhtYXBUYWcsIFtET01IVE1MTWFwRWxl
bWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhtZW51VGFnLCBbRE9NSFRNTE1lbnVF
bGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKG1ldGFUYWcsIFtET01IVE1MTWV0
YUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mob2JqZWN0VGFnLCBbRE9NSFRN
TE9iamVjdEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mob2xUYWcsIFtET01I
VE1MT0xpc3RFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKG9wdGdyb3VwVGFn
LCBbRE9NSFRNTE9wdEdyb3VwRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhv
cHRpb25UYWcsIFtET01IVE1MT3B0aW9uRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyhwVGFnLCBbRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVt
ZW50Q2xhc3MocGFyYW1UYWcsIFtET01IVE1MUGFyYW1FbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRk
RWxlbWVudENsYXNzKHByZVRhZywgW0RPTUhUTUxQcmVFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRk
RWxlbWVudENsYXNzKHFUYWcsIFtET01IVE1MUXVvdGVFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRk
RWxlbWVudENsYXNzKHNjcmlwdFRhZywgW0RPTUhUTUxTY3JpcHRFbGVtZW50IGNsYXNzXSk7Ci0g
ICAgYWRkRWxlbWVudENsYXNzKHNlbGVjdFRhZywgW0RPTUhUTUxTZWxlY3RFbGVtZW50IGNsYXNz
XSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHN0eWxlVGFnLCBbRE9NSFRNTFN0eWxlRWxlbWVudCBj
bGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh0YWJsZVRhZywgW0RPTUhUTUxUYWJsZUVsZW1l
bnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModGJvZHlUYWcsIFtET01IVE1MVGFibGVT
ZWN0aW9uRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh0ZFRhZywgW0RPTUhU
TUxUYWJsZUNlbGxFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHRleHRhcmVh
VGFnLCBbRE9NSFRNTFRleHRBcmVhRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFz
cyh0Zm9vdFRhZywgW0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRk
RWxlbWVudENsYXNzKHRoZWFkVGFnLCBbRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgY2xhc3Nd
KTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModGl0bGVUYWcsIFtET01IVE1MVGl0bGVFbGVtZW50IGNs
YXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHRyVGFnLCBbRE9NSFRNTFRhYmxlUm93RWxlbWVu
dCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh1bFRhZywgW0RPTUhUTUxVTGlzdEVsZW1l
bnQgY2xhc3NdKTsKLQotICAgIC8vIEZJWE1FOiBSZWZsZWN0IG1hcnF1ZWUgb25jZSB0aGUgQVBJ
IGhhcyBiZWVuIGRldGVybWluZWQuCi19Ci0KLXN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29u
c3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQotewotICAgIGlmICghZWxlbWVudENsYXNzTWFwKQot
ICAgICAgICBjcmVhdGVIVE1MRWxlbWVudENsYXNzTWFwKCk7Ci0gICAgQ2xhc3Mgb2JqY0NsYXNz
ID0gZWxlbWVudENsYXNzTWFwLT5nZXQodGFnTmFtZS5pbXBsKCkpOwotICAgIGlmICghb2JqY0Ns
YXNzKQotICAgICAgICBvYmpjQ2xhc3MgPSBbRE9NSFRNTEVsZW1lbnQgY2xhc3NdOwotICAgIHJl
dHVybiBvYmpjQ2xhc3M7Ci19Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChXZWJDb3JlSW50
ZXJuYWwpCi0KLS0gKGlkKV9pbml0V2l0aE5vZGU6KE5vZGUgKilpbXBsCi17Ci0gICAgQVNTRVJU
KGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxE
T01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01X
cmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01Ob2RlICop
X25vZGVXaXRoOihOb2RlICopaW1wbAotewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9
IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQotICAgICAgICBy
ZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICBD
bGFzcyB3cmFwcGVyQ2xhc3MgPSBuaWw7Ci0gICAgc3dpdGNoIChpbXBsLT5ub2RlVHlwZSgpKSB7
Ci0gICAgICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOgotICAgICAgICAgICAgaWYgKGltcGwt
PmlzSFRNTEVsZW1lbnQoKSkKLSAgICAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBlbGVtZW50
Q2xhc3Moc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihpbXBsKS0+bG9jYWxOYW1lKCkpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01FbGVtZW50
IGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkFUVFJJQlVU
RV9OT0RFOgotICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTUF0dHIgY2xhc3NdOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOgotICAgICAgICAg
ICAgd3JhcHBlckNsYXNzID0gW0RPTVRleHQgY2xhc3NdOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOgotICAgICAgICAgICAgd3JhcHBl
ckNsYXNzID0gW0RPTUNEQVRBU2VjdGlvbiBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6Ci0gICAgICAgICAgICB3cmFw
cGVyQ2xhc3MgPSBbRE9NRW50aXR5UmVmZXJlbmNlIGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgotICAgICAgICAgICAgd3JhcHBlckNs
YXNzID0gW0RPTUVudGl0eSBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6Ci0gICAgICAgICAgICB3cmFwcGVy
Q2xhc3MgPSBbRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uIGNsYXNzXTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKLSAgICAgICAgICAgIHdyYXBw
ZXJDbGFzcyA9IFtET01Db21tZW50IGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6Ci0gICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihpbXBsKS0+aXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICB3cmFw
cGVyQ2xhc3MgPSBbRE9NSFRNTERvY3VtZW50IGNsYXNzXTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NRG9jdW1lbnQgY2xhc3NdOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgotICAg
ICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTURvY3VtZW50VHlwZSBjbGFzc107Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgot
ICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTURvY3VtZW50RnJhZ21lbnQgY2xhc3NdOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKLSAg
ICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01Ob3RhdGlvbiBjbGFzc107Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBDcmVhdGUgYW4gWFBhdGggb2JqZWN0aXZlIEMgd3JhcHBlcgotICAg
ICAgICAgICAgLy8gU2VlIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODc1NQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0gICAgcmV0dXJuIFtb
W3dyYXBwZXJDbGFzcyBhbGxvY10gX2luaXRXaXRoTm9kZTppbXBsXSBhdXRvcmVsZWFzZV07Ci19
Ci0KLS0gKE5vZGUgKilfbm9kZQotewotICAgIHJldHVybiBET01fY2FzdDxOb2RlICo+KF9pbnRl
cm5hbCk7Ci19Ci0KLS0gKGNvbnN0IEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKilfZXhlY3V0
aW9uQ29udGV4dAotewotICAgIGlmIChOb2RlICpuID0gW3NlbGYgX25vZGVdKQotICAgICAgICBp
ZiAoRnJhbWVNYWMgKmYgPSBNYWMobi0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpCi0gICAgICAgICAg
ICByZXR1cm4gZi0+ZXhlY3V0aW9uQ29udGV4dEZvckRPTSgpOwotCi0gICAgcmV0dXJuIDA7Ci19
Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGUgKFdlYlByaXZhdGUpCi0KLS0gKEJP
T0wpaXNDb250ZW50RWRpdGFibGUKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc0NvbnRl
bnRFZGl0YWJsZSgpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChET01F
dmVudFRhcmdldCkKLQotLSAodm9pZClhZGRFdmVudExpc3RlbmVyOihOU1N0cmluZyAqKXR5cGUg
OihpZCA8RE9NRXZlbnRMaXN0ZW5lcj4pbGlzdGVuZXIgOihCT09MKXVzZUNhcHR1cmUKLXsKLSAg
ICBpZiAoIVtzZWxmIF9ub2RlXS0+aXNFdmVudFRhcmdldE5vZGUoKSkKLSAgICAgICAgcmFpc2VE
T01FeGNlcHRpb24oRE9NX05PVF9TVVBQT1JURURfRVJSKTsKLSAgICAKLSAgICBFdmVudExpc3Rl
bmVyICp3cmFwcGVyID0gT2JqQ0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7Ci0gICAg
RXZlbnRUYXJnZXROb2RlQ2FzdChbc2VsZiBfbm9kZV0pLT5hZGRFdmVudExpc3RlbmVyKHR5cGUs
IHdyYXBwZXIsIHVzZUNhcHR1cmUpOwotICAgIHdyYXBwZXItPmRlcmVmKCk7Ci19Ci0KLS0gKHZv
aWQpcmVtb3ZlRXZlbnRMaXN0ZW5lcjooTlNTdHJpbmcgKil0eXBlIDooaWQgPERPTUV2ZW50TGlz
dGVuZXI+KWxpc3RlbmVyIDooQk9PTCl1c2VDYXB0dXJlCi17Ci0gICAgaWYgKCFbc2VsZiBfbm9k
ZV0tPmlzRXZlbnRUYXJnZXROb2RlKCkpCi0gICAgICAgIHJhaXNlRE9NRXhjZXB0aW9uKERPTV9O
T1RfU1VQUE9SVEVEX0VSUik7Ci0KLSAgICBpZiAoRXZlbnRMaXN0ZW5lciAqd3JhcHBlciA9IE9i
akNFdmVudExpc3RlbmVyOjpmaW5kKGxpc3RlbmVyKSkKLSAgICAgICAgRXZlbnRUYXJnZXROb2Rl
Q2FzdChbc2VsZiBfbm9kZV0pLT5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIHdyYXBwZXIsIHVz
ZUNhcHR1cmUpOwotfQotCi0tIChCT09MKWRpc3BhdGNoRXZlbnQ6KERPTUV2ZW50ICopZXZlbnQK
LXsKLSAgICBpZiAoIVtzZWxmIF9ub2RlXS0+aXNFdmVudFRhcmdldE5vZGUoKSkKLSAgICAgICAg
cmFpc2VET01FeGNlcHRpb24oRE9NX05PVF9TVVBQT1JURURfRVJSKTsKLQotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIEJPT0wgcmVzdWx0ID0gRXZlbnRUYXJnZXROb2RlQ2FzdChbc2Vs
ZiBfbm9kZV0pLT5kaXNwYXRjaEV2ZW50KFtldmVudCBfZXZlbnRdLCBlYyk7Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1AZW5kCi0KLS8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01OYW1lZE5vZGVNYXAKLQotQGltcGxl
bWVudGF0aW9uIERPTU5hbWVkTm9kZU1hcAotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAo
X2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5hbWVkTm9kZU1hcCAqPihfaW50ZXJuYWwp
LT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmlu
YWxpemUKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5hbWVkTm9k
ZU1hcCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVd
OwotfQotCi0tIChOYW1lZE5vZGVNYXAgKilfbmFtZWROb2RlTWFwCi17Ci0gICAgcmV0dXJuIERP
TV9jYXN0PE5hbWVkTm9kZU1hcCAqPihfaW50ZXJuYWwpOwotfQotCi0tIChET01Ob2RlICopZ2V0
TmFtZWRJdGVtOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0KLSAgICBy
ZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5nZXROYW1lZEl0
ZW0obmFtZSkuZ2V0KCldOwotfQotCi0tIChET01Ob2RlICopc2V0TmFtZWRJdGVtOihET01Ob2Rl
ICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAg
ICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1h
cF0tPnNldE5hbWVkSXRlbShbYXJnIF9ub2RlXSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9N
Tm9kZSAqKXJlbW92ZU5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5h
bWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RP
TU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5yZW1vdmVOYW1lZEl0ZW0obmFt
ZSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4
Ci17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+
aXRlbShpbmRleCkuZ2V0KCldOwotfQotCi0tICh1bnNpZ25lZClsZW5ndGgKLXsKLSAgICByZXR1
cm4gW3NlbGYgX25hbWVkTm9kZU1hcF0tPmxlbmd0aCgpOwotfQotCi0tIChET01Ob2RlICopZ2V0
TmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5h
bWUKLXsKLSAgICBpZiAoIW5hbWVzcGFjZVVSSSB8fCAhbG9jYWxOYW1lKSB7Ci0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgfQotCi0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBf
bmFtZWROb2RlTWFwXS0+Z2V0TmFtZWRJdGVtTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpLmdl
dCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbU5TOihET01Ob2RlICopYXJnCi17
Ci0gICAgQVNTRVJUKGFyZyk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01Ob2Rl
ICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPnNldE5h
bWVkSXRlbU5TKFthcmcgX25vZGVdLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlICop
cmVtb3ZlTmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKils
b2NhbE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQobG9jYWxO
YW1lKTsKLQotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtE
T01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+cmVtb3ZlTmFtZWRJdGVtTlMo
bmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25E
T01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUBlbmQKLQotQGlt
cGxlbWVudGF0aW9uIERPTU5hbWVkTm9kZU1hcCAoV2ViQ29yZUludGVybmFsKQotCi0tIChpZClf
aW5pdFdpdGhOYW1lZE5vZGVNYXA6KE5hbWVkTm9kZU1hcCAqKWltcGwKLXsKLSAgICBBU1NFUlQo
aW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERP
TU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGltcGwtPnJlZigpOwotICAgIGFkZERPTVdy
YXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLSsgKERPTU5hbWVkTm9k
ZU1hcCAqKV9uYW1lZE5vZGVNYXBXaXRoOihOYW1lZE5vZGVNYXAgKilpbXBsCi17Ci0gICAgaWYg
KCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNl
OwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2Fj
aGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0
b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhOYW1l
ZE5vZGVNYXA6aW1wbF0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Ob2RlTGlzdAotCi1AaW1wbGVtZW50YXRpb24g
RE9NTm9kZUxpc3QKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewot
ICAgICAgICBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0K
LSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAo
X2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5vZGVMaXN0ICo+KF9pbnRlcm5hbCktPmRl
cmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19Ci0KLS0gKE5vZGVMaXN0ICop
X25vZGVMaXN0Ci17Ci0gICAgcmV0dXJuIERPTV9jYXN0PE5vZGVMaXN0ICo+KF9pbnRlcm5hbCk7
Ci19Ci0KLS0gKERPTU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleAotewotICAgIHJldHVybiBb
RE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVMaXN0XS0+aXRlbShpbmRleCldOwotfQotCi0t
ICh1bnNpZ25lZClsZW5ndGgKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVMaXN0XS0+bGVuZ3Ro
KCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGVMaXN0IChXZWJDb3JlSW50
ZXJuYWwpCi0KLS0gKGlkKV9pbml0V2l0aE5vZGVMaXN0OihOb2RlTGlzdCAqKWltcGwKLXsKLSAg
ICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERP
TV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGltcGwtPnJlZigpOwotICAg
IGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLSsgKERP
TU5vZGVMaXN0ICopX25vZGVMaXN0V2l0aDooTm9kZUxpc3QgKilpbXBsCi17Ci0gICAgaWYgKCFp
bXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwot
ICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVk
SW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3Jl
bGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhOb2RlTGlz
dDppbXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS8vIERPTUltcGxlbWVudGF0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBE
T01JbXBsZW1lbnRhdGlvbgotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAoX2ludGVybmFs
KQotICAgICAgICBET01fY2FzdDxET01JbXBsZW1lbnRhdGlvbkZyb250ICo+KF9pbnRlcm5hbCkt
PmRlcmVmKCk7Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17
Ci0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAgICAgRE9NX2Nhc3Q8RE9NSW1wbGVtZW50YXRpb25G
cm9udCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19Ci0K
LS0gKEJPT0wpaGFzRmVhdHVyZTooTlNTdHJpbmcgKilmZWF0dXJlIDooTlNTdHJpbmcgKil2ZXJz
aW9uCi17Ci0gICAgQVNTRVJUKGZlYXR1cmUpOwotICAgIEFTU0VSVCh2ZXJzaW9uKTsKLQotICAg
IHJldHVybiBbc2VsZiBfRE9NSW1wbGVtZW50YXRpb25dLT5oYXNGZWF0dXJlKGZlYXR1cmUsIHZl
cnNpb24pOwotfQotCi0tIChET01Eb2N1bWVudFR5cGUgKiljcmVhdGVEb2N1bWVudFR5cGU6KE5T
U3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICopcHVibGljSWQgOihOU1N0cmluZyAq
KXN5c3RlbUlkCi17Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotICAgIEFTU0VSVChwdWJs
aWNJZCk7Ci0gICAgQVNTRVJUKHN5c3RlbUlkKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIFJlZlB0cjxEb2N1bWVudFR5cGU+IGltcGwgPSBbc2VsZiBfRE9NSW1wbGVtZW50YXRp
b25dLT5jcmVhdGVEb2N1bWVudFR5cGUocXVhbGlmaWVkTmFtZSwgcHVibGljSWQsIHN5c3RlbUlk
LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RE9NRG9jdW1lbnRUeXBlICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsLmdldCgpXSk7Ci19Ci0K
LS0gKERPTURvY3VtZW50ICopY3JlYXRlRG9jdW1lbnQ6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJ
IDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooRE9NRG9jdW1lbnRUeXBlICopZG9jdHlwZQot
ewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsK
LQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxEb2N1bWVudD4gaW1wbCA9
IFtzZWxmIF9ET01JbXBsZW1lbnRhdGlvbl0tPmNyZWF0ZURvY3VtZW50KG5hbWVzcGFjZVVSSSwg
cXVhbGlmaWVkTmFtZSwgW2RvY3R5cGUgX2RvY3VtZW50VHlwZV0sIGVjKTsKLSAgICByYWlzZU9u
RE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudCAqPihbRE9N
Tm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQoKV0pOwotfQotCi0tIChET01IVE1MRG9jdW1lbnQgKilj
cmVhdGVIVE1MRG9jdW1lbnQ6KE5TU3RyaW5nICopdGl0bGUKLXsKLSAgICBSZWZQdHI8SFRNTERv
Y3VtZW50PiBpbXBsID0gW3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+Y3JlYXRlSFRNTERvY3Vt
ZW50KHRpdGxlKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NSFRNTERvY3VtZW50ICo+KFtE
T01Ob2RlIF9ub2RlV2l0aDppbXBsLmdldCgpXSk7Ci19Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlv
biBET01JbXBsZW1lbnRhdGlvbiAoRE9NSW1wbGVtZW50YXRpb25DU1MpCi0KLS0gKERPTUNTU1N0
eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNoZWV0OihOU1N0cmluZyAqKXRpdGxlIDooTlNTdHJp
bmcgKiltZWRpYQotewotICAgIEFTU0VSVCh0aXRsZSk7Ci0gICAgQVNTRVJUKG1lZGlhKTsKLQot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTUNTU1N0eWxlU2hlZXQgKnJlc3VsdCA9
IFtET01DU1NTdHlsZVNoZWV0IF9DU1NTdHlsZVNoZWV0V2l0aDpbc2VsZiBfRE9NSW1wbGVtZW50
YXRpb25dLT5jcmVhdGVDU1NTdHlsZVNoZWV0KHRpdGxlLCBtZWRpYSwgZWMpLmdldCgpXTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUBlbmQKLSAK
LUBpbXBsZW1lbnRhdGlvbiBET01JbXBsZW1lbnRhdGlvbiAoV2ViQ29yZUludGVybmFsKQotCi0t
IChpZClfaW5pdFdpdGhET01JbXBsZW1lbnRhdGlvbjooRE9NSW1wbGVtZW50YXRpb25Gcm9udCAq
KWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9p
bnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGltcGwt
PnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7
Ci19Ci0KLSsgKERPTUltcGxlbWVudGF0aW9uICopX0RPTUltcGxlbWVudGF0aW9uV2l0aDooRE9N
SW1wbGVtZW50YXRpb25Gcm9udCAqKWltcGwKLXsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAgY2FjaGVkSW5zdGFu
Y2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKLSAgICAg
ICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgCi0g
ICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aERPTUltcGxlbWVudGF0aW9uOmltcGxd
IGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoRE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKV9ET01JbXBs
ZW1lbnRhdGlvbgotewotICAgIHJldHVybiBET01fY2FzdDxET01JbXBsZW1lbnRhdGlvbkZyb250
ICo+KF9pbnRlcm5hbCk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS8vIERPTURvY3VtZW50RnJhZ21lbnQKLQotQGltcGxlbWVudGF0aW9uIERPTURv
Y3VtZW50RnJhZ21lbnQKLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnRGcmFn
bWVudCAoV2ViQ29yZUludGVybmFsKQotCi0rIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3Vt
ZW50RnJhZ21lbnRXaXRoOihEb2N1bWVudEZyYWdtZW50ICopaW1wbAotewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxET01Eb2N1bWVudEZyYWdtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBs
XSk7Ci19Ci0KLS0gKERvY3VtZW50RnJhZ21lbnQgKilfZnJhZ21lbnQKLXsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RG9jdW1lbnRGcmFnbWVudCAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5h
bCkpOwotfQotCiBAZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0v
LyBET01Eb2N1bWVudAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQKLQotLSAoRE9NTm9k
ZSAqKWFkb3B0Tm9kZTooRE9NTm9kZSAqKXNvdXJjZQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9j
dW1lbnRdLT5hZG9wdE5vZGUoW3NvdXJjZSBfbm9kZV0sIGVjKS5nZXQoKV07Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Eb2N1bWVudFR5
cGUgKilkb2N0eXBlCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURvY3VtZW50VHlwZSAq
PihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+ZG9jdHlwZSgpXSk7Ci19Ci0K
LS0gKERPTUltcGxlbWVudGF0aW9uICopaW1wbGVtZW50YXRpb24KLXsKLSAgICByZXR1cm4gW0RP
TUltcGxlbWVudGF0aW9uIF9ET01JbXBsZW1lbnRhdGlvbldpdGg6aW1wbGVtZW50YXRpb25Gcm9u
dChbc2VsZiBfZG9jdW1lbnRdKV07Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilkb2N1bWVudEVsZW1l
bnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+ZG9jdW1lbnRFbGVtZW50KCldKTsKLX0KLQotLSAoRE9N
RWxlbWVudCAqKWNyZWF0ZUVsZW1lbnQ6KE5TU3RyaW5nICopdGFnTmFtZQotewotICAgIEFTU0VS
VCh0YWdOYW1lKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTUVsZW1lbnQg
KnJlc3VsdCA9IHN0YXRpY19jYXN0PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOltz
ZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUVsZW1lbnQodGFnTmFtZSwgZWMpLmdldCgpXSk7Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Eb2N1
bWVudEZyYWdtZW50ICopY3JlYXRlRG9jdW1lbnRGcmFnbWVudAotewotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxET01Eb2N1bWVudEZyYWdtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBf
ZG9jdW1lbnRdLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuZ2V0KCldKTsKLX0KLQotLSAoRE9N
VGV4dCAqKWNyZWF0ZVRleHROb2RlOihOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQoZGF0
YSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTVRleHQgKj4oW0RPTU5vZGUgX25vZGVXaXRo
OltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVRleHROb2RlKGRhdGEpLmdldCgpXSk7Ci19Ci0KLS0g
KERPTUNvbW1lbnQgKiljcmVhdGVDb21tZW50OihOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBBU1NF
UlQoZGF0YSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUNvbW1lbnQgKj4oW0RPTU5vZGUg
X25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNvbW1lbnQoZGF0YSkuZ2V0KCldKTsK
LX0KLQotLSAoRE9NQ0RBVEFTZWN0aW9uICopY3JlYXRlQ0RBVEFTZWN0aW9uOihOU1N0cmluZyAq
KWRhdGEKLXsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAg
RE9NQ0RBVEFTZWN0aW9uICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxET01DREFUQVNlY3Rpb24gKj4o
W0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNEQVRBU2VjdGlvbihk
YXRhLCBleGNlcHRpb24pLmdldCgpXSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICop
Y3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uOihOU1N0cmluZyAqKXRhcmdldCA6KE5TU3RyaW5n
ICopZGF0YQotewotICAgIEFTU0VSVCh0YXJnZXQpOwotICAgIEFTU0VSVChkYXRhKTsKLSAgICBp
bnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKnJlc3VsdCA9
IHN0YXRpY19jYXN0PERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqPihbRE9NTm9kZSBfbm9kZVdp
dGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKHRhcmdldCwg
ZGF0YSwgZXhjZXB0aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24p
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTUF0dHIgKiljcmVhdGVBdHRyaWJ1dGU6
KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBpbnQgZXhjZXB0aW9u
ID0gMDsKLSAgICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2Rv
Y3VtZW50XS0+Y3JlYXRlQXR0cmlidXRlKG5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJh
aXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERP
TUVudGl0eVJlZmVyZW5jZSAqKWNyZWF0ZUVudGl0eVJlZmVyZW5jZTooTlNTdHJpbmcgKiluYW1l
Ci17Ci0gICAgQVNTRVJUKG5hbWUpOwotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTUVu
dGl0eVJlZmVyZW5jZSAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RE9NRW50aXR5UmVmZXJlbmNlICo+
KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVFbnRpdHlSZWZlcmVu
Y2UobmFtZSwgZXhjZXB0aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRp
b24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVu
dHNCeVRhZ05hbWU6KE5TU3RyaW5nICopdGFnbmFtZQotewotICAgIEFTU0VSVCh0YWduYW1lKTsK
LSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX2RvY3VtZW50XS0+
Z2V0RWxlbWVudHNCeVRhZ05hbWUodGFnbmFtZSkuZ2V0KCldOwotfQotCi0tIChET01Ob2RlICop
aW1wb3J0Tm9kZTooRE9NTm9kZSAqKWltcG9ydGVkTm9kZSA6KEJPT0wpZGVlcAotewotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2Rl
V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5pbXBvcnROb2RlKFtpbXBvcnRlZE5vZGUgX25vZGVdLCBk
ZWVwLCBlYykuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotLSAoRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnROUzooTlNTdHJpbmcgKilu
YW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUKLXsKLSAgICBBU1NFUlQobmFt
ZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7Ci0KLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX2RvY3VtZW50XS0+Y3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFt
ZSwgZWMpLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxET01FbGVtZW50ICo+KHJlc3VsdCk7Ci19Ci0KLS0gKERPTUF0dHIgKiljcmVhdGVB
dHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmll
ZE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQocXVhbGlmaWVk
TmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01BdHRyICpyZXN1bHQgPSBb
RE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlQXR0cmlidXRlTlMobmFt
ZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9u
RE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2Rl
TGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDoo
TlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBB
U1NFUlQobG9jYWxOYW1lKTsKLQotICAgIHJldHVybiBbRE9NTm9kZUxpc3QgX25vZGVMaXN0V2l0
aDpbc2VsZiBfZG9jdW1lbnRdLT5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKG5hbWVzcGFjZVVSSSwg
bG9jYWxOYW1lKS5nZXQoKV07Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilnZXRFbGVtZW50QnlJZDoo
TlNTdHJpbmcgKillbGVtZW50SWQKLXsKLSAgICBBU1NFUlQoZWxlbWVudElkKTsKLQotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBf
ZG9jdW1lbnRdLT5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpXSk7Ci19Ci0KLUBlbmQKLQotQGlt
cGxlbWVudGF0aW9uIERPTURvY3VtZW50IChET01Eb2N1bWVudFJhbmdlKQotCi0tIChET01SYW5n
ZSAqKWNyZWF0ZVJhbmdlCi17Ci0gICAgcmV0dXJuIFtET01SYW5nZSBfcmFuZ2VXaXRoOltzZWxm
IF9kb2N1bWVudF0tPmNyZWF0ZVJhbmdlKCkuZ2V0KCldOwotfQotCi1AZW5kCi0KLUBpbXBsZW1l
bnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRDU1MpCi0KLS0gKERPTUNTU1N0eWxlRGVj
bGFyYXRpb24gKilnZXRPdmVycmlkZVN0eWxlOihET01FbGVtZW50ICopZWx0IDooTlNTdHJpbmcg
Kilwc2V1ZG9FbHQKLXsKLSAgICBFbGVtZW50ICplbGVtZW50ID0gW2VsdCBfZWxlbWVudF07Ci0g
ICAgU3RyaW5nIHBzZXVkb0VsdFN0cmluZyhwc2V1ZG9FbHQpOwotICAgIHJldHVybiBbRE9NQ1NT
U3R5bGVEZWNsYXJhdGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6W3NlbGYgX2RvY3VtZW50XS0+
Z2V0T3ZlcnJpZGVTdHlsZShlbGVtZW50LCBwc2V1ZG9FbHRTdHJpbmcuaW1wbCgpKV07Ci19Ci0K
LUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChET01Eb2N1bWVudFN0eWxlKQot
Ci0tIChET01TdHlsZVNoZWV0TGlzdCAqKXN0eWxlU2hlZXRzCi17Ci0gICAgcmV0dXJuIFtET01T
dHlsZVNoZWV0TGlzdCBfc3R5bGVTaGVldExpc3RXaXRoOltzZWxmIF9kb2N1bWVudF0tPnN0eWxl
U2hlZXRzKCldOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9N
RG9jdW1lbnRFeHRlbnNpb25zKQotCi0tIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopY3JlYXRl
Q1NTU3R5bGVEZWNsYXJhdGlvbgotewotICAgIHJldHVybiBbRE9NQ1NTU3R5bGVEZWNsYXJhdGlv
biBfc3R5bGVEZWNsYXJhdGlvbldpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlQ1NTU3R5bGVE
ZWNsYXJhdGlvbigpLmdldCgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9j
dW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NRG9jdW1lbnQgKilfZG9jdW1lbnRXaXRo
OihEb2N1bWVudCAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnQg
Kj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTsKLX0KLQotLSAoRG9jdW1lbnQgKilfZG9jdW1l
bnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQgKj4oRE9NX2Nhc3Q8Tm9kZSAq
PihfaW50ZXJuYWwpKTsKLX0KLQotLSAoRE9NRWxlbWVudCAqKV9vd25lckVsZW1lbnQKLXsKLSAg
ICByZXR1cm4gW0RPTUVsZW1lbnQgX2VsZW1lbnRXaXRoOltzZWxmIF9kb2N1bWVudF0tPm93bmVy
RWxlbWVudCgpXTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotLy8gRE9NQ2hhcmFjdGVyRGF0YQotCi1AaW1wbGVtZW50YXRpb24gRE9NQ2hhcmFjdGVy
RGF0YQotCi0tIChDaGFyYWN0ZXJEYXRhICopX2NoYXJhY3RlckRhdGEKLXsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Q2hhcmFjdGVyRGF0YSAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkp
OwotfQotCi0tIChOU1N0cmluZyAqKWRhdGEKLXsKLSAgICAvLyBEb2N1bWVudGF0aW9uIHNheXMg
d2UgY2FuIHJhaXNlIGEgRE9NU1RSSU5HX1NJWkVfRVJSLgotICAgIC8vIEhvd2V2ZXIsIHRoZSBs
b3dlciBsYXllciBkb2VzIG5vdCByZXBvcnQgdGhhdCBlcnJvciB1cCB0byB1cy4KLSAgICByZXR1
cm4gW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5kYXRhKCk7Ci19Ci0KLS0gKHZvaWQpc2V0RGF0YToo
TlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIAotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+c2V0RGF0YShkYXRhLCBl
Yyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodW5zaWduZWQpbGVuZ3RoCi17
Ci0gICAgcmV0dXJuIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+bGVuZ3RoKCk7Ci19Ci0KLS0gKE5T
U3RyaW5nICopc3Vic3RyaW5nRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpY291bnQK
LXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBOU1N0cmluZyAqcmVzdWx0ID0gW3Nl
bGYgX2NoYXJhY3RlckRhdGFdLT5zdWJzdHJpbmdEYXRhKG9mZnNldCwgY291bnQsIGVjKTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKHZvaWQp
YXBwZW5kRGF0YTooTlNTdHJpbmcgKilhcmcKLXsKLSAgICBBU1NFUlQoYXJnKTsKLSAgICAKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPmFwcGVu
ZERhdGEoYXJnLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClp
bnNlcnREYXRhOih1bnNpZ25lZClvZmZzZXQgOihOU1N0cmluZyAqKWFyZwotewotICAgIEFTU0VS
VChhcmcpOwotICAgIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9jaGFy
YWN0ZXJEYXRhXS0+aW5zZXJ0RGF0YShvZmZzZXQsIGFyZywgZWMpOwotICAgIHJhaXNlT25ET01F
cnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpZGVsZXRlRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5z
aWduZWQpIGNvdW50Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2No
YXJhY3RlckRhdGFdLT5kZWxldGVEYXRhKG9mZnNldCwgY291bnQsIGVjKTsKLSAgICByYWlzZU9u
RE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKXJlcGxhY2VEYXRhOih1bnNpZ25lZClvZmZzZXQg
Oih1bnNpZ25lZCljb3VudCA6KE5TU3RyaW5nICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7Ci0K
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPnJl
cGxhY2VEYXRhKG9mZnNldCwgY291bnQsIGFyZywgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8v
IERPTUF0dHIKLQotQGltcGxlbWVudGF0aW9uIERPTUF0dHIKLQotLSAoTlNTdHJpbmcgKiluYW1l
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9hdHRyXS0+bm9kZU5hbWUoKTsKLX0KLQotLSAoQk9PTClz
cGVjaWZpZWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2F0dHJdLT5zcGVjaWZpZWQoKTsKLX0KLQot
LSAoTlNTdHJpbmcgKil2YWx1ZQotewotICAgIHJldHVybiBbc2VsZiBfYXR0cl0tPm5vZGVWYWx1
ZSgpOwotfQotCi0tICh2b2lkKXNldFZhbHVlOihOU1N0cmluZyAqKXZhbHVlCi17Ci0gICAgQVNT
RVJUKHZhbHVlKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9hdHRy
XS0+c2V0VmFsdWUodmFsdWUsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0t
IChET01FbGVtZW50ICopb3duZXJFbGVtZW50Ci17Ci0gICAgcmV0dXJuIFtET01FbGVtZW50IF9l
bGVtZW50V2l0aDpbc2VsZiBfYXR0cl0tPm93bmVyRWxlbWVudCgpXTsKLX0KLQotLSAoRE9NQ1NT
U3R5bGVEZWNsYXJhdGlvbiAqKXN0eWxlCi17Ci0gICAgcmV0dXJuIFtET01DU1NTdHlsZURlY2xh
cmF0aW9uIF9zdHlsZURlY2xhcmF0aW9uV2l0aDogW3NlbGYgX2F0dHJdLT5zdHlsZSgpXTsKLX0K
LQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NQXR0ciAoV2ViQ29yZUludGVybmFsKQotCi0r
IChET01BdHRyICopX2F0dHJXaXRoOihBdHRyICopaW1wbAotewotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxET01BdHRyICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19Ci0KLS0gKEF0dHIg
KilfYXR0cgotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdHRyICo+KERPTV9jYXN0PE5vZGUg
Kj4oX2ludGVybmFsKSk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS8vIERPTUVsZW1lbnQKLQotQGltcGxlbWVudGF0aW9uIERPTUVsZW1lbnQKLQot
LSAoTlNTdHJpbmcgKil0YWdOYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50XS0+bm9k
ZU5hbWUoKTsKLX0KLQotLSAoRE9NTmFtZWROb2RlTWFwICopYXR0cmlidXRlcwotewotICAgIHJl
dHVybiBbRE9NTmFtZWROb2RlTWFwIF9uYW1lZE5vZGVNYXBXaXRoOltzZWxmIF9lbGVtZW50XS0+
YXR0cmlidXRlcygpXTsKLX0KLQotLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1dGU6KE5TU3RyaW5n
ICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRd
LT5nZXRBdHRyaWJ1dGUobmFtZSk7Ci19Ci0KLS0gKHZvaWQpc2V0QXR0cmlidXRlOihOU1N0cmlu
ZyAqKW5hbWUgOihOU1N0cmluZyAqKXZhbHVlCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotICAgIEFT
U0VSVCh2YWx1ZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBbc2VsZiBfZWxlbWVu
dF0tPnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgZXhjZXB0aW9uKTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZXhjZXB0aW9uKTsKLX0KLQotLSAodm9pZClyZW1vdmVBdHRyaWJ1dGU6KE5TU3RyaW5n
ICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLQotICAgIGludCBleGNlcHRpb24gPSAwOwot
ICAgIFtzZWxmIF9lbGVtZW50XS0+cmVtb3ZlQXR0cmlidXRlKG5hbWUsIGV4Y2VwdGlvbik7Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci19Ci0KLS0gKERPTUF0dHIgKilnZXRBdHRy
aWJ1dGVOb2RlOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0KLSAgICBy
ZXR1cm4gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0QXR0cmlidXRlTm9k
ZShuYW1lKS5nZXQoKV07Ci19Ci0KLS0gKERPTUF0dHIgKilzZXRBdHRyaWJ1dGVOb2RlOihET01B
dHRyICopbmV3QXR0cgotewotICAgIEFTU0VSVChuZXdBdHRyKTsKLQotICAgIGludCBleGNlcHRp
b24gPSAwOwotICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBf
ZWxlbWVudF0tPnNldEF0dHJpYnV0ZU5vZGUoW25ld0F0dHIgX2F0dHJdLCBleGNlcHRpb24pLmdl
dCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi0tIChET01BdHRyICopcmVtb3ZlQXR0cmlidXRlTm9kZTooRE9NQXR0ciAqKW9sZEF0
dHIKLXsKLSAgICBBU1NFUlQob2xkQXR0cik7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAg
ICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2VsZW1lbnRdLT5y
ZW1vdmVBdHRyaWJ1dGVOb2RlKFtvbGRBdHRyIF9hdHRyXSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
LSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZTooTlNTdHJpbmcgKiluYW1lCi17
Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0gICAgcmV0dXJuIFtET01Ob2RlTGlzdCBfbm9kZUxpc3RX
aXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWUobmFtZSkuZ2V0KCldOwot
fQotCi0tIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVS
SSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0g
ICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5nZXRB
dHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7Ci19Ci0KLS0gKHZvaWQpc2V0QXR0
cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWRO
YW1lIDooTlNTdHJpbmcgKil2YWx1ZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAg
IEFTU0VSVChxdWFsaWZpZWROYW1lKTsKLSAgICBBU1NFUlQodmFsdWUpOwotCi0gICAgaW50IGV4
Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5zZXRBdHRyaWJ1dGVOUyhuYW1lc3Bh
Y2VVUkksIHF1YWxpZmllZE5hbWUsIHZhbHVlLCBleGNlcHRpb24pOwotICAgIHJhaXNlT25ET01F
cnJvcihleGNlcHRpb24pOwotfQotCi0tICh2b2lkKXJlbW92ZUF0dHJpYnV0ZU5TOihOU1N0cmlu
ZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5h
bWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9u
ID0gMDsKLSAgICBbc2VsZiBfZWxlbWVudF0tPnJlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVS
SSwgbG9jYWxOYW1lLCBleGNlcHRpb24pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24p
OwotfQotCi0tIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9kZU5TOihOU1N0cmluZyAqKW5hbWVz
cGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVS
SSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICByZXR1cm4gW0RPTUF0dHIgX2F0dHJX
aXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0QXR0cmlidXRlTm9kZU5TKG5hbWVzcGFjZVVSSSwgbG9j
YWxOYW1lKS5nZXQoKV07Ci19Ci0KLS0gKERPTUF0dHIgKilzZXRBdHRyaWJ1dGVOb2RlTlM6KERP
TUF0dHIgKiluZXdBdHRyCi17Ci0gICAgQVNTRVJUKG5ld0F0dHIpOwotCi0gICAgaW50IGV4Y2Vw
dGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxm
IF9lbGVtZW50XS0+c2V0QXR0cmlidXRlTm9kZU5TKFtuZXdBdHRyIF9hdHRyXSwgZXhjZXB0aW9u
KS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZU5TOihOU1N0
cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJU
KG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICByZXR1cm4gW0RP
TU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX2VsZW1lbnRdLT5nZXRFbGVtZW50c0J5VGFn
TmFtZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKS5nZXQoKV07Ci19Ci0KLS0gKEJPT0wpaGFz
QXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0KLSAgICBy
ZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5oYXNBdHRyaWJ1dGUobmFtZSk7Ci19Ci0KLS0gKEJPT0wp
aGFzQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2Nh
bE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQobG9jYWxOYW1l
KTsKLQotICAgIHJldHVybiBbc2VsZiBfZWxlbWVudF0tPmhhc0F0dHJpYnV0ZU5TKG5hbWVzcGFj
ZVVSSSwgbG9jYWxOYW1lKTsKLX0KLQotLSAodm9pZClmb2N1cwotewotICAgIFtzZWxmIF9lbGVt
ZW50XS0+Zm9jdXMoKTsKLX0KLQotLSAodm9pZClibHVyCi17Ci0gICAgW3NlbGYgX2VsZW1lbnRd
LT5ibHVyKCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUVsZW1lbnQgKERPTUVs
ZW1lbnRDU1NJbmxpbmVTdHlsZSkKLQotLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKXN0eWxl
Ci17Ci0gICAgcmV0dXJuIFtET01DU1NTdHlsZURlY2xhcmF0aW9uIF9zdHlsZURlY2xhcmF0aW9u
V2l0aDpbc2VsZiBfZWxlbWVudF0tPnN0eWxlKCldOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRh
dGlvbiBET01FbGVtZW50IChET01FbGVtZW50RXh0ZW5zaW9ucykKLQotLSAoTlNJbWFnZSopaW1h
Z2UKLXsKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gW3NlbGYgX2VsZW1lbnRdLT5yZW5k
ZXJlcigpOwotICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNJbWFnZSgpKSB7Ci0gICAg
ICAgIFJlbmRlckltYWdlKiBpbWcgPSBzdGF0aWNfY2FzdDxSZW5kZXJJbWFnZSo+KHJlbmRlcmVy
KTsKLSAgICAgICAgaWYgKGltZy0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1nLT5jYWNoZWRJbWFnZSgp
LT5pc0Vycm9ySW1hZ2UoKSkKLSAgICAgICAgICAgIHJldHVybiBpbWctPmNhY2hlZEltYWdlKCkt
PmltYWdlKCktPmdldE5TSW1hZ2UoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAo
dm9pZClzY3JvbGxJbnRvVmlldzooQk9PTClhbGlnblRvcAotewotICAgIFtzZWxmIF9lbGVtZW50
XS0+c2Nyb2xsSW50b1ZpZXcoYWxpZ25Ub3ApOwotfQotCi0tICh2b2lkKXNjcm9sbEludG9WaWV3
SWZOZWVkZWQ6KEJPT0wpY2VudGVySWZOZWVkZWQKLXsKLSAgICBbc2VsZiBfZWxlbWVudF0tPnNj
cm9sbEludG9WaWV3SWZOZWVkZWQoY2VudGVySWZOZWVkZWQpOwotfQotCi1AZW5kCi0KLUBpbXBs
ZW1lbnRhdGlvbiBET01FbGVtZW50IChXZWJDb3JlSW50ZXJuYWwpCi0KLSsgKERPTUVsZW1lbnQg
KilfZWxlbWVudFdpdGg6KEVsZW1lbnQgKilpbXBsCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTsKLX0KLQotLSAoRWxlbWVu
dCAqKV9lbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQgKj4oRE9NX2Nh
c3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9N
RWxlbWVudCAoV2ViUHJpdmF0ZSkKLQotLSAoTlNGb250ICopX2ZvbnQKLXsKLSAgICBSZW5kZXJP
YmplY3QgKnJlbmRlcmVyID0gW3NlbGYgX2VsZW1lbnRdLT5yZW5kZXJlcigpOwotICAgIGlmIChy
ZW5kZXJlcikgewotICAgICAgICByZXR1cm4gcmVuZGVyZXItPnN0eWxlKCktPmZvbnQoKS5nZXRO
U0ZvbnQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoTlNEYXRhKilfaW1hZ2VU
SUZGUmVwcmVzZW50YXRpb24KLXsKLSAgICBSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gW3NlbGYg
X2VsZW1lbnRdLT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNJ
bWFnZSgpKSB7Ci0gICAgICAgIFJlbmRlckltYWdlKiBpbWcgPSBzdGF0aWNfY2FzdDxSZW5kZXJJ
bWFnZSo+KHJlbmRlcmVyKTsKLSAgICAgICAgaWYgKGltZy0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1n
LT5jYWNoZWRJbWFnZSgpLT5pc0Vycm9ySW1hZ2UoKSkKLSAgICAgICAgICAgIHJldHVybiAoTlNE
YXRhKikoaW1nLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpLT5nZXRUSUZGUmVwcmVzZW50YXRpb24o
KSk7Ci0gICAgfQotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKE5TVVJMICopX2dldFVSTEF0dHJp
YnV0ZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotICAgIEVsZW1lbnQg
KmUgPSBbc2VsZiBfZWxlbWVudF07Ci0gICAgQVNTRVJUKGUpOwotICAgIHJldHVybiBLVVJMKGUt
PmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHBhcnNlVVJMKGUtPmdldEF0dHJpYnV0ZShuYW1lKSku
ZGVwcmVjYXRlZFN0cmluZygpKSkuZ2V0TlNVUkwoKTsKLX0KLQotLSAodm9pZCAqKV9OUE9iamVj
dAotewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBbc2VsZiBfZWxlbWVudF07Ci0gICAgaWYgKGVs
ZW1lbnQtPmhhc1RhZ05hbWUoYXBwbGV0VGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKGVtYmVk
VGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKG9iamVjdFRhZykpCi0gICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCo+KGVsZW1lbnQpLT5nZXROUE9i
amVjdCgpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIDA7Ci19Ci0KLS0gKEJPT0wpaXNGb2N1
c2VkCi17Ci0gICAgRWxlbWVudCogaW1wbCA9IFtzZWxmIF9lbGVtZW50XTsKLSAgICBpZiAoaW1w
bC0+ZG9jdW1lbnQoKS0+Zm9jdXNOb2RlKCkgPT0gaW1wbCkKLSAgICAgICAgcmV0dXJuIFlFUzsK
LSAgICByZXR1cm4gTk87Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS8vIERPTVRleHQKLQotQGltcGxlbWVudGF0aW9uIERPTVRleHQKLQotLSAoVGV4
dCAqKV90ZXh0Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHQgKj4oRE9NX2Nhc3Q8Tm9k
ZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoRE9NVGV4dCAqKXNwbGl0VGV4dDoodW5zaWduZWQp
b2Zmc2V0Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0
ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90ZXh0XS0+c3BsaXRUZXh0KG9mZnNldCwgZWMp
XTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01U
ZXh0ICo+KHJlc3VsdCk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS8vIERPTUNvbW1lbnQKLQotQGltcGxlbWVudGF0aW9uIERPTUNvbW1lbnQKLQot
QGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NQ0RBVEFT
ZWN0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBET01DREFUQVNlY3Rpb24KLQotQGVuZAotCi0vLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NRG9jdW1lbnRUeXBlCi0KLUBp
bXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudFR5cGUKLQotLSAoTlNTdHJpbmcgKiluYW1lCi17Ci0g
ICAgcmV0dXJuIFtzZWxmIF9kb2N1bWVudFR5cGVdLT5wdWJsaWNJZCgpOwotfQotCi0tIChET01O
YW1lZE5vZGVNYXAgKillbnRpdGllcwotewotICAgIHJldHVybiBbRE9NTmFtZWROb2RlTWFwIF9u
YW1lZE5vZGVNYXBXaXRoOltzZWxmIF9kb2N1bWVudFR5cGVdLT5lbnRpdGllcygpXTsKLX0KLQot
LSAoRE9NTmFtZWROb2RlTWFwICopbm90YXRpb25zCi17Ci0gICAgcmV0dXJuIFtET01OYW1lZE5v
ZGVNYXAgX25hbWVkTm9kZU1hcFdpdGg6W3NlbGYgX2RvY3VtZW50VHlwZV0tPm5vdGF0aW9ucygp
XTsKLX0KLQotLSAoTlNTdHJpbmcgKilwdWJsaWNJZAotewotICAgIHJldHVybiBbc2VsZiBfZG9j
dW1lbnRUeXBlXS0+cHVibGljSWQoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilzeXN0ZW1JZAotewot
ICAgIHJldHVybiBbc2VsZiBfZG9jdW1lbnRUeXBlXS0+c3lzdGVtSWQoKTsKLX0KLQotLSAoTlNT
dHJpbmcgKilpbnRlcm5hbFN1YnNldAotewotICAgIHJldHVybiBbc2VsZiBfZG9jdW1lbnRUeXBl
XS0+aW50ZXJuYWxTdWJzZXQoKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9j
dW1lbnRUeXBlIChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKERvY3VtZW50VHlwZSAqKV9kb2N1bWVu
dFR5cGUKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnRUeXBlICo+KERPTV9jYXN0
PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS8vIERPTU5vdGF0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob3Rh
dGlvbgotCi0tIChOb3RhdGlvbiAqKV9ub3RhdGlvbgotewotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxOb3RhdGlvbiAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChOU1N0
cmluZyAqKXB1YmxpY0lkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub3RhdGlvbl0tPnB1YmxpY0lk
KCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopc3lzdGVtSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX25v
dGF0aW9uXS0+c3lzdGVtSWQoKTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotLy8gRE9NRW50aXR5Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01FbnRpdHkK
LQotLSAoRW50aXR5ICopX2VudGl0eQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbnRpdHkg
Kj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKilwdWJs
aWNJZAotewotICAgIHJldHVybiBbc2VsZiBfZW50aXR5XS0+cHVibGljSWQoKTsKLX0KLQotLSAo
TlNTdHJpbmcgKilzeXN0ZW1JZAotewotICAgIHJldHVybiBbc2VsZiBfZW50aXR5XS0+c3lzdGVt
SWQoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilub3RhdGlvbk5hbWUKLXsKLSAgICByZXR1cm4gW3Nl
bGYgX2VudGl0eV0tPm5vdGF0aW9uTmFtZSgpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01FbnRpdHlSZWZlcmVuY2UKLQotQGltcGxlbWVu
dGF0aW9uIERPTUVudGl0eVJlZmVyZW5jZQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0vLyBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KLQotQGltcGxlbWVu
dGF0aW9uIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbgotCi0tIChQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24gKilfcHJvY2Vzc2luZ0luc3RydWN0aW9uCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbiAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQot
Ci0tIChOU1N0cmluZyAqKXRhcmdldAotewotICAgIHJldHVybiBbc2VsZiBfcHJvY2Vzc2luZ0lu
c3RydWN0aW9uXS0+dGFyZ2V0KCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopZGF0YQotewotICAgIHJl
dHVybiBbc2VsZiBfcHJvY2Vzc2luZ0luc3RydWN0aW9uXS0+ZGF0YSgpOwotfQotCi0tICh2b2lk
KXNldERhdGE6KE5TU3RyaW5nICopZGF0YQotewotICAgIEFTU0VSVChkYXRhKTsKLQotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9wcm9jZXNzaW5nSW5zdHJ1Y3Rpb25dLT5z
ZXREYXRhKGRhdGEsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi1AZW5kCi0K
LS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01SYW5nZQotCi1AaW1w
bGVtZW50YXRpb24gRE9NUmFuZ2UKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRl
cm5hbCkgewotICAgICAgICBET01fY2FzdDxSYW5nZSAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwot
ICAgIH0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAg
ICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PFJhbmdlICo+KF9pbnRlcm5hbCkt
PmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19Ci0KLS0gKE5TU3RyaW5n
ICopZGVzY3JpcHRpb24KLXsKLSAgICBpZiAoIV9pbnRlcm5hbCkKLSAgICAgICAgcmV0dXJuIEAi
PERPTVJhbmdlOiBudWxsPiI7Ci0gICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiPERPTVJhbmdlOiAlQCAlZCAlQCAlZD4iLAotICAgICAgICBbc2VsZiBzdGFydENvbnRhaW5l
cl0sIFtzZWxmIHN0YXJ0T2Zmc2V0XSwKLSAgICAgICAgW3NlbGYgZW5kQ29udGFpbmVyXSwgW3Nl
bGYgZW5kT2Zmc2V0XV07Ci19Ci0KLS0gKERPTU5vZGUgKilzdGFydENvbnRhaW5lcgotewotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9u
b2RlV2l0aDpbc2VsZiBfcmFuZ2VdLT5zdGFydENvbnRhaW5lcihlYyldOwotICAgIHJhaXNlT25E
T01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoaW50KXN0YXJ0T2Zmc2V0
Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW50IHJlc3VsdCA9IFtzZWxmIF9y
YW5nZV0tPnN0YXJ0T2Zmc2V0KGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUgKillbmRDb250YWluZXIKLXsKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdp
dGg6W3NlbGYgX3JhbmdlXS0+ZW5kQ29udGFpbmVyKGVjKV07Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChpbnQpZW5kT2Zmc2V0Ci17Ci0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW50IHJlc3VsdCA9IFtzZWxmIF9yYW5nZV0tPmVu
ZE9mZnNldChlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi0tIChCT09MKWNvbGxhcHNlZAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIEJPT0wgcmVzdWx0ID0gW3NlbGYgX3JhbmdlXS0+Y29sbGFwc2VkKGVjKTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUgKilj
b21tb25BbmNlc3RvckNvbnRhaW5lcgotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfcmFuZ2VdLT5jb21t
b25BbmNlc3RvckNvbnRhaW5lcihlYyldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLSAodm9pZClzZXRTdGFydDooRE9NTm9kZSAqKXJlZk5vZGUg
OihpbnQpb2Zmc2V0Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3Jh
bmdlXS0+c2V0U3RhcnQoW3JlZk5vZGUgX25vZGVdLCBvZmZzZXQsIGVjKTsKLSAgICByYWlzZU9u
RE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKXNldEVuZDooRE9NTm9kZSAqKXJlZk5vZGUgOihp
bnQpb2Zmc2V0Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3Jhbmdl
XS0+c2V0RW5kKFtyZWZOb2RlIF9ub2RlXSwgb2Zmc2V0LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVy
cm9yKGVjKTsKLX0KLQotLSAodm9pZClzZXRTdGFydEJlZm9yZTooRE9NTm9kZSAqKXJlZk5vZGUK
LXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5zZXRTdGFy
dEJlZm9yZShbcmVmTm9kZSBfbm9kZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwot
fQotCi0tICh2b2lkKXNldFN0YXJ0QWZ0ZXI6KERPTU5vZGUgKilyZWZOb2RlCi17Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+c2V0U3RhcnRBZnRlcihbcmVm
Tm9kZSBfbm9kZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lk
KXNldEVuZEJlZm9yZTooRE9NTm9kZSAqKXJlZk5vZGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5zZXRFbmRCZWZvcmUoW3JlZk5vZGUgX25vZGVdLCBl
Yyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClzZXRFbmRBZnRlcjoo
RE9NTm9kZSAqKXJlZk5vZGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2Vs
ZiBfcmFuZ2VdLT5zZXRFbmRBZnRlcihbcmVmTm9kZSBfbm9kZV0sIGVjKTsKLSAgICByYWlzZU9u
RE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKWNvbGxhcHNlOihCT09MKXRvU3RhcnQKLXsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5jb2xsYXBzZSh0b1N0
YXJ0LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClzZWxlY3RO
b2RlOihET01Ob2RlICopcmVmTm9kZQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IFtzZWxmIF9yYW5nZV0tPnNlbGVjdE5vZGUoW3JlZk5vZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClzZWxlY3ROb2RlQ29udGVudHM6KERPTU5v
ZGUgKilyZWZOb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3Jh
bmdlXS0+c2VsZWN0Tm9kZUNvbnRlbnRzKFtyZWZOb2RlIF9ub2RlXSwgZWMpOwotICAgIHJhaXNl
T25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHNob3J0KWNvbXBhcmVCb3VuZGFyeVBvaW50czoodW5z
aWduZWQgc2hvcnQpaG93IDooRE9NUmFuZ2UgKilzb3VyY2VSYW5nZQotewotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIHNob3J0IHJlc3VsdCA9IFtzZWxmIF9yYW5nZV0tPmNvbXBhcmVC
b3VuZGFyeVBvaW50cyhzdGF0aWNfY2FzdDxSYW5nZTo6Q29tcGFyZUhvdz4oaG93KSwgW3NvdXJj
ZVJhbmdlIF9yYW5nZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLS0gKHZvaWQpZGVsZXRlQ29udGVudHMKLXsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5kZWxldGVDb250ZW50cyhlYyk7Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWV4dHJh
Y3RDb250ZW50cwotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTURvY3VtZW50
RnJhZ21lbnQgKnJlc3VsdCA9IFtET01Eb2N1bWVudEZyYWdtZW50IF9kb2N1bWVudEZyYWdtZW50
V2l0aDpbc2VsZiBfcmFuZ2VdLT5leHRyYWN0Q29udGVudHMoZWMpLmdldCgpXTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTURvY3VtZW50
RnJhZ21lbnQgKiljbG9uZUNvbnRlbnRzCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqcmVzdWx0ID0gW0RPTURvY3VtZW50RnJhZ21lbnQgX2Rv
Y3VtZW50RnJhZ21lbnRXaXRoOltzZWxmIF9yYW5nZV0tPmNsb25lQ29udGVudHMoZWMpLmdldCgp
XTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0g
KHZvaWQpaW5zZXJ0Tm9kZTooRE9NTm9kZSAqKW5ld05vZGUKLXsKLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5pbnNlcnROb2RlKFtuZXdOb2RlIF9ub2RlXSwg
ZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc3Vycm91bmRDb250
ZW50czooRE9NTm9kZSAqKW5ld1BhcmVudAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIFtzZWxmIF9yYW5nZV0tPnN1cnJvdW5kQ29udGVudHMoW25ld1BhcmVudCBfbm9kZV0sIGVj
KTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tIChET01SYW5nZSAqKWNsb25lUmFu
Z2UKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01SYW5nZSAqcmVzdWx0ID0g
W0RPTVJhbmdlIF9yYW5nZVdpdGg6W3NlbGYgX3JhbmdlXS0+Y2xvbmVSYW5nZShlYykuZ2V0KCld
OwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAo
TlNTdHJpbmcgKil0b1N0cmluZwotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIE5T
U3RyaW5nICpyZXN1bHQgPSBbc2VsZiBfcmFuZ2VdLT50b1N0cmluZyhlYyk7Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChOU1N0cmluZyAqKXRl
eHQKLXsKLSAgICByZXR1cm4gW3NlbGYgX3JhbmdlXS0+dGV4dCgpOwotfQotCi0tICh2b2lkKWRl
dGFjaAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9yYW5nZV0tPmRl
dGFjaChlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotQGVuZAotCi1AaW1wbGVt
ZW50YXRpb24gRE9NUmFuZ2UgKFdlYkNvcmVJbnRlcm5hbCkKLQotLSAoaWQpX2luaXRXaXRoUmFu
Z2U6KFJhbmdlICopaW1wbAotewotICAgIEFTU0VSVChpbXBsKTsKLQotICAgIFtzdXBlciBfaW5p
dF07Ci0gICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7
Ci0gICAgaW1wbC0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsKLSAgICBy
ZXR1cm4gc2VsZjsKLX0KLQotKyAoRE9NUmFuZ2UgKilfcmFuZ2VXaXRoOihSYW5nZSAqKWltcGwK
LXsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2Fj
aGVkSW5zdGFuY2U7Ci0gICAgY2FjaGVkSW5zdGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwot
ICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2Ug
cmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgCi0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9p
bml0V2l0aFJhbmdlOmltcGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoUmFuZ2UgKilfcmFuZ2UK
LXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8UmFuZ2UgKj4oX2ludGVybmFsKTsKLX0KLQotQGVuZAot
Ci1AaW1wbGVtZW50YXRpb24gRE9NUmFuZ2UgKFdlYlByaXZhdGUpCi0KLS0gKE5TU3RyaW5nICop
X3RleHQKLXsKLSAgICByZXR1cm4gW3NlbGYgdGV4dF07Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGVGaWx0ZXIKLQotLSAoaWQpX2luaXRX
aXRoTm9kZUZpbHRlcjooTm9kZUZpbHRlciAqKWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0K
LSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdElu
dGVybmFsICo+KGltcGwpOwotICAgIGltcGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2Vs
ZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLSsgKERPTU5vZGVGaWx0ZXIgKilfbm9k
ZUZpbHRlcldpdGg6KE5vZGVGaWx0ZXIgKilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAg
ICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZElu
c3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0g
ICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAg
IAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhOb2RlRmlsdGVyOmltcGxdIGF1
dG9yZWxlYXNlXTsKLX0KLQotLSAoTm9kZUZpbHRlciAqKV9ub2RlRmlsdGVyCi17Ci0gICAgcmV0
dXJuIERPTV9jYXN0PE5vZGVGaWx0ZXIgKj4oX2ludGVybmFsKTsKLX0KLQotLSAodm9pZClkZWFs
bG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZUZpbHRlciAq
PihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9p
ZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIERPTV9jYXN0PE5vZGVG
aWx0ZXIgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQot
Ci0tIChzaG9ydClhY2NlcHROb2RlOihET01Ob2RlICopbm9kZQotewotICAgIHJldHVybiBbc2Vs
ZiBfbm9kZUZpbHRlcl0tPmFjY2VwdE5vZGUoW25vZGUgX25vZGVdKTsKLX0KLQotQGVuZAotCi0K
LUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlSXRlcmF0b3IKLQotLSAoaWQpX2luaXRXaXRoTm9kZUl0
ZXJhdG9yOihOb2RlSXRlcmF0b3IgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZp
bHRlcgotewotICAgIEFTU0VSVChpbXBsKTsKLQotICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2lu
dGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7Ci0gICAgaW1wbC0+
cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsKLSAgICBtX2ZpbHRlciA9IFtm
aWx0ZXIgcmV0YWluXTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAoTm9kZUl0ZXJhdG9yICop
X25vZGVJdGVyYXRvcgotewotICAgIHJldHVybiBET01fY2FzdDxOb2RlSXRlcmF0b3IgKj4oX2lu
dGVybmFsKTsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW21fZmlsdGVyIHJlbGVhc2Vd
OwotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgW3NlbGYgZGV0YWNoXTsKLSAgICAgICAg
RE9NX2Nhc3Q8Tm9kZUl0ZXJhdG9yICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAg
IFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50
ZXJuYWwpIHsKLSAgICAgICAgW3NlbGYgZGV0YWNoXTsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZUl0
ZXJhdG9yICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6
ZV07Ci19Ci0KLS0gKERPTU5vZGUgKilyb290Ci17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2Rl
V2l0aDpbc2VsZiBfbm9kZUl0ZXJhdG9yXS0+cm9vdCgpXTsKLX0KLQotLSAodW5zaWduZWQpd2hh
dFRvU2hvdwotewotICAgIHJldHVybiBbc2VsZiBfbm9kZUl0ZXJhdG9yXS0+d2hhdFRvU2hvdygp
OwotfQotCi0tIChpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgaWYgKG1fZmlsdGVy
KQotICAgICAgICAvLyBUaGlzIG5vZGUgaXRlcmF0b3Igd2FzIGNyZWF0ZWQgZnJvbSB0aGUgb2Jq
YyBzaWRlCi0gICAgICAgIHJldHVybiBbW21fZmlsdGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwot
Ci0gICAgLy8gVGhpcyBub2RlIGl0ZXJhdG9yIHdhcyBjcmVhdGVkIGZyb20gdGhlIGMrKyBzaWRl
Ci0gICAgcmV0dXJuIFtET01Ob2RlRmlsdGVyIF9ub2RlRmlsdGVyV2l0aDpbc2VsZiBfbm9kZUl0
ZXJhdG9yXS0+ZmlsdGVyKCldOwotfQotCi0tIChCT09MKWV4cGFuZEVudGl0eVJlZmVyZW5jZXMK
LXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVJdGVyYXRvcl0tPmV4cGFuZEVudGl0eVJlZmVyZW5j
ZXMoKTsKLX0KLQotLSAoRE9NTm9kZSAqKW5leHROb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9u
b2RlSXRlcmF0b3JdLT5uZXh0Tm9kZShlYyldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZSAqKXByZXZpb3VzTm9kZQotewotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9u
b2RlV2l0aDpbc2VsZiBfbm9kZUl0ZXJhdG9yXS0+cHJldmlvdXNOb2RlKGVjKV07Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKWRldGFj
aAotewotICAgIFtzZWxmIF9ub2RlSXRlcmF0b3JdLT5kZXRhY2goKTsKLX0KLQotQGVuZAotCi1A
aW1wbGVtZW50YXRpb24gRE9NTm9kZUl0ZXJhdG9yKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9N
Tm9kZUl0ZXJhdG9yICopX25vZGVJdGVyYXRvcldpdGg6KE5vZGVJdGVyYXRvciAqKWltcGwgZmls
dGVyOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAg
ICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZElu
c3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0g
ICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAg
IAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhOb2RlSXRlcmF0b3I6aW1wbCBm
aWx0ZXI6ZmlsdGVyXSBhdXRvcmVsZWFzZV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9u
IERPTVRyZWVXYWxrZXIKLQotLSAoaWQpX2luaXRXaXRoVHJlZVdhbGtlcjooVHJlZVdhbGtlciAq
KWltcGwgZmlsdGVyOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgQVNTRVJUKGlt
cGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01P
YmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFw
cGVyKHNlbGYsIGltcGwpOwotICAgIG1fZmlsdGVyID0gW2ZpbHRlciByZXRhaW5dOwotICAgIHJl
dHVybiBzZWxmOwotfQotCi0tIChUcmVlV2Fsa2VyICopX3RyZWVXYWxrZXIKLXsKLSAgICByZXR1
cm4gRE9NX2Nhc3Q8VHJlZVdhbGtlciAqPihfaW50ZXJuYWwpOwotfQotCi0tICh2b2lkKWRlYWxs
b2MKLXsKLSAgICBpZiAobV9maWx0ZXIpCi0gICAgICAgIFttX2ZpbHRlciByZWxlYXNlXTsKLSAg
ICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PFRyZWVXYWxrZXIgKj4oX2ludGVy
bmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lk
KWZpbmFsaXplCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxUcmVl
V2Fsa2VyICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6
ZV07Ci19Ci0KLS0gKERPTU5vZGUgKilyb290Ci17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2Rl
V2l0aDpbc2VsZiBfdHJlZVdhbGtlcl0tPnJvb3QoKV07Ci19Ci0KLS0gKHVuc2lnbmVkKXdoYXRU
b1Nob3cKLXsKLSAgICByZXR1cm4gW3NlbGYgX3RyZWVXYWxrZXJdLT53aGF0VG9TaG93KCk7Ci19
Ci0KLS0gKGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIKLXsKLSAgICBpZiAobV9maWx0ZXIpCi0g
ICAgICAgIC8vIFRoaXMgdHJlZSB3YWxrZXIgd2FzIGNyZWF0ZWQgZnJvbSB0aGUgb2JqYyBzaWRl
Ci0gICAgICAgIHJldHVybiBbW21fZmlsdGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotCi0gICAg
Ly8gVGhpcyB0cmVlIHdhbGtlciB3YXMgY3JlYXRlZCBmcm9tIHRoZSBjKysgc2lkZQotICAgIHJl
dHVybiBbRE9NTm9kZUZpbHRlciBfbm9kZUZpbHRlcldpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5m
aWx0ZXIoKV07Ci19Ci0KLS0gKEJPT0wpZXhwYW5kRW50aXR5UmVmZXJlbmNlcwotewotICAgIHJl
dHVybiBbc2VsZiBfdHJlZVdhbGtlcl0tPmV4cGFuZEVudGl0eVJlZmVyZW5jZXMoKTsKLX0KLQot
LSAoRE9NTm9kZSAqKWN1cnJlbnROb2RlCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0
aDpbc2VsZiBfdHJlZVdhbGtlcl0tPmN1cnJlbnROb2RlKCldOwotfQotCi0tICh2b2lkKXNldEN1
cnJlbnROb2RlOihET01Ob2RlICopY3VycmVudE5vZGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBbc2VsZiBfdHJlZVdhbGtlcl0tPnNldEN1cnJlbnROb2RlKFtjdXJyZW50Tm9k
ZSBfbm9kZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tIChET01Ob2Rl
ICopcGFyZW50Tm9kZQotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3Ry
ZWVXYWxrZXJdLT5wYXJlbnROb2RlKCldOwotfQotCi0tIChET01Ob2RlICopZmlyc3RDaGlsZAot
ewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5maXJz
dENoaWxkKCldOwotfQotCi0tIChET01Ob2RlICopbGFzdENoaWxkCi17Ci0gICAgcmV0dXJuIFtE
T01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfdHJlZVdhbGtlcl0tPmxhc3RDaGlsZCgpXTsKLX0KLQot
LSAoRE9NTm9kZSAqKXByZXZpb3VzU2libGluZwotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5wcmV2aW91c1NpYmxpbmcoKV07Ci19Ci0KLS0gKERP
TU5vZGUgKiluZXh0U2libGluZwotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX3RyZWVXYWxrZXJdLT5uZXh0U2libGluZygpXTsKLX0KLQotLSAoRE9NTm9kZSAqKXByZXZp
b3VzTm9kZQotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxr
ZXJdLT5wcmV2aW91c05vZGUoKV07Ci19Ci0KLS0gKERPTU5vZGUgKiluZXh0Tm9kZQotewotICAg
IHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5uZXh0Tm9kZSgp
XTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NVHJlZVdhbGtlciAoV2ViQ29yZUlu
dGVybmFsKQotCi0rIChET01UcmVlV2Fsa2VyICopX3RyZWVXYWxrZXJXaXRoOihUcmVlV2Fsa2Vy
ICopaW1wbCBmaWx0ZXI6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIKLXsKLSAgICBpZiAoIWlt
cGwpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0g
ICAgY2FjaGVkSW5zdGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJ
bnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVs
ZWFzZV07Ci0gICAgCi0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aFRyZWVXYWxr
ZXI6aW1wbCBmaWx0ZXI6ZmlsdGVyXSBhdXRvcmVsZWFzZV07Ci19Ci0KLUBlbmQKLQotY2xhc3Mg
T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24gOiBwdWJsaWMgTm9kZUZpbHRlckNvbmRpdGlvbiAKLXsK
LXB1YmxpYzoKLSAgICBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihpZCA8RE9NTm9kZUZpbHRlcj4p
OwotICAgIHZpcnR1YWwgfk9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKCk7Ci0gICAgdmlydHVhbCBz
aG9ydCBhY2NlcHROb2RlKE5vZGUqKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBPYmpDTm9kZUZp
bHRlckNvbmRpdGlvbihjb25zdCBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbiAmKTsKLSAgICBPYmpD
Tm9kZUZpbHRlckNvbmRpdGlvbiAmb3BlcmF0b3I9KGNvbnN0IE9iakNOb2RlRmlsdGVyQ29uZGl0
aW9uICYpOwotCi0gICAgaWQgPERPTU5vZGVGaWx0ZXI+IG1fZmlsdGVyOwotfTsKLQotT2JqQ05v
ZGVGaWx0ZXJDb25kaXRpb246Ok9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKGlkIDxET01Ob2RlRmls
dGVyPiBmaWx0ZXIpCi0gICAgOiBtX2ZpbHRlcihmaWx0ZXIpCi17Ci0gICAgQVNTRVJUKG1fZmls
dGVyKTsKLSAgICBDRlJldGFpbihtX2ZpbHRlcik7Ci19Ci0KLU9iakNOb2RlRmlsdGVyQ29uZGl0
aW9uOjp+T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oKQotewotICAgIENGUmVsZWFzZShtX2ZpbHRl
cik7Ci19Ci0KLXNob3J0IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2RlKE5vZGUq
IG5vZGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gTm9kZUZpbHRl
cjo6RklMVEVSX1JFSkVDVDsKLSAgICByZXR1cm4gW21fZmlsdGVyIGFjY2VwdE5vZGU6W0RPTU5v
ZGUgX25vZGVXaXRoOm5vZGVdXTsKLX0KLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChE
T01Eb2N1bWVudFRyYXZlcnNhbCkKLQotLSAoRE9NTm9kZUl0ZXJhdG9yICopY3JlYXRlTm9kZUl0
ZXJhdG9yOihET01Ob2RlICopcm9vdCA6KHVuc2lnbmVkKXdoYXRUb1Nob3cgOihpZCA8RE9NTm9k
ZUZpbHRlcj4pZmlsdGVyIDooQk9PTClleHBhbmRFbnRpdHlSZWZlcmVuY2VzCi17Ci0gICAgUmVm
UHRyPE5vZGVGaWx0ZXI+IGNwcEZpbHRlcjsKLSAgICBpZiAoZmlsdGVyKQotICAgICAgICBjcHBG
aWx0ZXIgPSBuZXcgTm9kZUZpbHRlcihuZXcgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oZmlsdGVy
KSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPE5vZGVJdGVyYXRvcj4g
aW1wbCA9IFtzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZU5vZGVJdGVyYXRvcihbcm9vdCBfbm9kZV0s
IHdoYXRUb1Nob3csIGNwcEZpbHRlciwgZXhwYW5kRW50aXR5UmVmZXJlbmNlcywgZWMpOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIFtET01Ob2RlSXRlcmF0b3IgX25vZGVJ
dGVyYXRvcldpdGg6aW1wbC5nZXQoKSBmaWx0ZXI6ZmlsdGVyXTsKLX0KLQotLSAoRE9NVHJlZVdh
bGtlciAqKWNyZWF0ZVRyZWVXYWxrZXI6KERPTU5vZGUgKilyb290IDoodW5zaWduZWQpd2hhdFRv
U2hvdyA6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIgOihCT09MKWV4cGFuZEVudGl0eVJlZmVy
ZW5jZXMKLXsKLSAgICBSZWZQdHI8Tm9kZUZpbHRlcj4gY3BwRmlsdGVyOwotICAgIGlmIChmaWx0
ZXIpCi0gICAgICAgIGNwcEZpbHRlciA9IG5ldyBOb2RlRmlsdGVyKG5ldyBPYmpDTm9kZUZpbHRl
ckNvbmRpdGlvbihmaWx0ZXIpKTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQ
dHI8VHJlZVdhbGtlcj4gaW1wbCA9IFtzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVRyZWVXYWxrZXIo
W3Jvb3QgX25vZGVdLCB3aGF0VG9TaG93LCBjcHBGaWx0ZXIsIGV4cGFuZEVudGl0eVJlZmVyZW5j
ZXMsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBbRE9NVHJlZVdh
bGtlciBfdHJlZVdhbGtlcldpdGg6aW1wbC5nZXQoKSBmaWx0ZXI6ZmlsdGVyXTsKLX0KLQotQGVu
ZAotCi1PYmpDRXZlbnRMaXN0ZW5lciogT2JqQ0V2ZW50TGlzdGVuZXI6OmZpbmQoaWQgPERPTUV2
ZW50TGlzdGVuZXI+IGxpc3RlbmVyKQotewotICAgIGlmIChMaXN0ZW5lck1hcCogbWFwID0gbGlz
dGVuZXJNYXApCi0gICAgICAgIHJldHVybiBtYXAtPmdldChsaXN0ZW5lcik7Ci0gICAgcmV0dXJu
IE5VTEw7Ci19Ci0KLU9iakNFdmVudExpc3RlbmVyICpPYmpDRXZlbnRMaXN0ZW5lcjo6Y3JlYXRl
KGlkIDxET01FdmVudExpc3RlbmVyPiBsaXN0ZW5lcikKLXsKLSAgICBPYmpDRXZlbnRMaXN0ZW5l
ciAqd3JhcHBlciA9IGZpbmQobGlzdGVuZXIpOwotICAgIGlmICghd3JhcHBlcikKLSAgICAgICAg
d3JhcHBlciA9IG5ldyBPYmpDRXZlbnRMaXN0ZW5lcihsaXN0ZW5lcik7Ci0gICAgd3JhcHBlci0+
cmVmKCk7Ci0gICAgcmV0dXJuIHdyYXBwZXI7Ci19Ci0KLU9iakNFdmVudExpc3RlbmVyOjpPYmpD
RXZlbnRMaXN0ZW5lcihpZCA8RE9NRXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpCi0gICAgOiBtX2xp
c3RlbmVyKFtsaXN0ZW5lciByZXRhaW5dKQotewotICAgIExpc3RlbmVyTWFwKiBtYXAgPSBsaXN0
ZW5lck1hcDsKLSAgICBpZiAoIW1hcCkgewotICAgICAgICBtYXAgPSBuZXcgTGlzdGVuZXJNYXA7
Ci0gICAgICAgIGxpc3RlbmVyTWFwID0gbWFwOwotICAgIH0KLSAgICBtYXAtPnNldChsaXN0ZW5l
ciwgdGhpcyk7Ci19Ci0KLU9iakNFdmVudExpc3RlbmVyOjp+T2JqQ0V2ZW50TGlzdGVuZXIoKQot
ewotICAgIGxpc3RlbmVyTWFwLT5yZW1vdmUobV9saXN0ZW5lcik7Ci0gICAgW21fbGlzdGVuZXIg
cmVsZWFzZV07Ci19Ci0KLXZvaWQgT2JqQ0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KEV2ZW50
ICpldmVudCwgYm9vbCkKLXsKLSAgICBbbV9saXN0ZW5lciBoYW5kbGVFdmVudDpbRE9NRXZlbnQg
X2V2ZW50V2l0aDpldmVudF1dOwotfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01PYmplY3QuaAko
cmV2aXNpb24gMTU5NTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwyOCArMjYsMTIgQEAKIAogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3QuaD4KIAotQGNsYXNzIERPTURvY3VtZW50OyAKLUBjbGFz
cyBET01Eb2N1bWVudFR5cGU7Ci1AY2xhc3MgRE9NRWxlbWVudDsKLUBjbGFzcyBET01OYW1lZE5v
ZGVNYXA7Ci1AY2xhc3MgRE9NTm9kZUxpc3Q7Ci0KLXR5cGVkZWYgc3RydWN0IERPTU9iamVjdElu
dGVybmFsIERPTU9iamVjdEludGVybmFsOwotCi1AaW50ZXJmYWNlIERPTU9iamVjdCA6IFdlYlNj
cmlwdE9iamVjdCA8TlNDb3B5aW5nPgotewotICAgIERPTU9iamVjdEludGVybmFsICpfaW50ZXJu
YWw7Ci19Ci1AZW5kCi0KIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIERPTVRpbWVTdGFtcDsK
IAogZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgRE9NRXhjZXB0aW9uOwogCisvLyBET00gZXhjZXB0
aW9uIGNvZGVzCiBlbnVtIHsKLSAgICAvLwotICAgIC8vIERPTSBleGNlcHRpb24gY29kZXMKLSAg
ICAvLwogICAgIERPTV9JTkRFWF9TSVpFX0VSUiAgICAgICAgICAgICAgICA9IDEsCiAgICAgRE9N
X0RPTVNUUklOR19TSVpFX0VSUiAgICAgICAgICAgID0gMiwKICAgICBET01fSElFUkFSQ0hZX1JF
UVVFU1RfRVJSICAgICAgICAgPSAzLApAQCAtNjQsMTc3ICs0OSwxMSBAQCBlbnVtIHsKICAgICBE
T01fSU5WQUxJRF9BQ0NFU1NfRVJSICAgICAgICAgICAgPSAxNQogfTsKIAotQGludGVyZmFjZSBE
T01JbXBsZW1lbnRhdGlvbiA6IERPTU9iamVjdAotLSAoQk9PTCloYXNGZWF0dXJlOihOU1N0cmlu
ZyAqKWZlYXR1cmUgOihOU1N0cmluZyAqKXZlcnNpb247Ci0tIChET01Eb2N1bWVudFR5cGUgKilj
cmVhdGVEb2N1bWVudFR5cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICop
cHVibGljSWQgOihOU1N0cmluZyAqKXN5c3RlbUlkOwotLSAoRE9NRG9jdW1lbnQgKiljcmVhdGVE
b2N1bWVudDooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5h
bWUgOihET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlOwotQGVuZAotCi1lbnVtIHsKLSAgICAvLwot
ICAgIC8vIERPTSBub2RlIHR5cGVzCi0gICAgLy8KLSAgICBET01fRUxFTUVOVF9OT0RFICAgICAg
ICAgICAgICAgICAgPSAxLAotICAgIERPTV9BVFRSSUJVVEVfTk9ERSAgICAgICAgICAgICAgICA9
IDIsCi0gICAgRE9NX1RFWFRfTk9ERSAgICAgICAgICAgICAgICAgICAgID0gMywKLSAgICBET01f
Q0RBVEFfU0VDVElPTl9OT0RFICAgICAgICAgICAgPSA0LAotICAgIERPTV9FTlRJVFlfUkVGRVJF
TkNFX05PREUgICAgICAgICA9IDUsCi0gICAgRE9NX0VOVElUWV9OT0RFICAgICAgICAgICAgICAg
ICAgID0gNiwKLSAgICBET01fUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFICAgPSA3LAotICAg
IERPTV9DT01NRU5UX05PREUgICAgICAgICAgICAgICAgICA9IDgsCi0gICAgRE9NX0RPQ1VNRU5U
X05PREUgICAgICAgICAgICAgICAgID0gOSwKLSAgICBET01fRE9DVU1FTlRfVFlQRV9OT0RFICAg
ICAgICAgICAgPSAxMCwKLSAgICBET01fRE9DVU1FTlRfRlJBR01FTlRfTk9ERSAgICAgICAgPSAx
MSwKLSAgICBET01fTk9UQVRJT05fTk9ERSAgICAgICAgICAgICAgICAgPSAxMgotfTsKLQotQGlu
dGVyZmFjZSBET01Ob2RlIDogRE9NT2JqZWN0Ci0tIChOU1N0cmluZyAqKW5vZGVOYW1lOwotLSAo
TlNTdHJpbmcgKilub2RlVmFsdWU7Ci0tICh2b2lkKXNldE5vZGVWYWx1ZTooTlNTdHJpbmcgKilz
dHJpbmc7Ci0tICh1bnNpZ25lZCBzaG9ydClub2RlVHlwZTsKLS0gKERPTU5vZGUgKilwYXJlbnRO
b2RlOwotLSAoRE9NTm9kZUxpc3QgKiljaGlsZE5vZGVzOwotLSAoRE9NTm9kZSAqKWZpcnN0Q2hp
bGQ7Ci0tIChET01Ob2RlICopbGFzdENoaWxkOwotLSAoRE9NTm9kZSAqKXByZXZpb3VzU2libGlu
ZzsKLS0gKERPTU5vZGUgKiluZXh0U2libGluZzsKLS0gKERPTU5hbWVkTm9kZU1hcCAqKWF0dHJp
YnV0ZXM7Ci0tIChET01Eb2N1bWVudCAqKW93bmVyRG9jdW1lbnQ7Ci0tIChET01Ob2RlICopaW5z
ZXJ0QmVmb3JlOihET01Ob2RlICopbmV3Q2hpbGQgOihET01Ob2RlICopcmVmQ2hpbGQ7Ci0tIChE
T01Ob2RlICopcmVwbGFjZUNoaWxkOihET01Ob2RlICopbmV3Q2hpbGQgOihET01Ob2RlICopb2xk
Q2hpbGQ7Ci0tIChET01Ob2RlICopcmVtb3ZlQ2hpbGQ6KERPTU5vZGUgKilvbGRDaGlsZDsKLS0g
KERPTU5vZGUgKilhcHBlbmRDaGlsZDooRE9NTm9kZSAqKW5ld0NoaWxkOwotLSAoQk9PTCloYXND
aGlsZE5vZGVzOwotLSAoRE9NTm9kZSAqKWNsb25lTm9kZTooQk9PTClkZWVwOwotLSAodm9pZClu
b3JtYWxpemU7Ci0tIChCT09MKWlzU3VwcG9ydGVkOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0
cmluZyAqKXZlcnNpb247Ci0tIChOU1N0cmluZyAqKW5hbWVzcGFjZVVSSTsKLS0gKE5TU3RyaW5n
ICopcHJlZml4OwotLSAodm9pZClzZXRQcmVmaXg6KE5TU3RyaW5nICopcHJlZml4OwotLSAoTlNT
dHJpbmcgKilsb2NhbE5hbWU7Ci0tIChCT09MKWhhc0F0dHJpYnV0ZXM7Ci0tIChCT09MKWlzU2Ft
ZU5vZGU6KERPTU5vZGUgKilvdGhlcjsKLS0gKEJPT0wpaXNFcXVhbE5vZGU6KERPTU5vZGUgKilv
dGhlcjsKLS0gKE5TU3RyaW5nICopdGV4dENvbnRlbnQ7Ci0tICh2b2lkKXNldFRleHRDb250ZW50
OihOU1N0cmluZyAqKXRleHQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NTm9kZUxpc3QgOiBET01P
YmplY3QKLS0gKERPTU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleDsKLS0gKHVuc2lnbmVkKWxl
bmd0aDsKLUBlbmQKLQotQGludGVyZmFjZSBET01OYW1lZE5vZGVNYXAgOiBET01PYmplY3QKLS0g
KERPTU5vZGUgKilnZXROYW1lZEl0ZW06KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTU5vZGUgKilz
ZXROYW1lZEl0ZW06KERPTU5vZGUgKilhcmc7Ci0tIChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVt
OihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01Ob2RlICopaXRlbToodW5zaWduZWQpaW5kZXg7Ci0t
ICh1bnNpZ25lZClsZW5ndGg7Ci0tIChET01Ob2RlICopZ2V0TmFtZWRJdGVtTlM6KE5TU3RyaW5n
ICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tIChET01Ob2RlICopc2V0
TmFtZWRJdGVtTlM6KERPTU5vZGUgKilhcmc7Ci0tIChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVt
TlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci1AZW5k
Ci0KLUBpbnRlcmZhY2UgRE9NQ2hhcmFjdGVyRGF0YSA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICop
ZGF0YTsKLS0gKHZvaWQpc2V0RGF0YTooTlNTdHJpbmcgKilkYXRhOwotLSAodW5zaWduZWQpbGVu
Z3RoOwotLSAoTlNTdHJpbmcgKilzdWJzdHJpbmdEYXRhOih1bnNpZ25lZClvZmZzZXQgOih1bnNp
Z25lZCljb3VudDsKLS0gKHZvaWQpYXBwZW5kRGF0YTooTlNTdHJpbmcgKilhcmc7Ci0tICh2b2lk
KWluc2VydERhdGE6KHVuc2lnbmVkKW9mZnNldCA6KE5TU3RyaW5nICopYXJnOwotLSAodm9pZClk
ZWxldGVEYXRhOih1bnNpZ25lZClvZmZzZXQgOih1bnNpZ25lZCkgY291bnQ7Ci0tICh2b2lkKXJl
cGxhY2VEYXRhOih1bnNpZ25lZClvZmZzZXQgOih1bnNpZ25lZCljb3VudCA6KE5TU3RyaW5nICop
YXJnOwotQGVuZAogCi1AaW50ZXJmYWNlIERPTUF0dHIgOiBET01Ob2RlCi0tIChOU1N0cmluZyAq
KW5hbWU7Ci0tIChCT09MKXNwZWNpZmllZDsKLS0gKE5TU3RyaW5nICopdmFsdWU7Ci0tICh2b2lk
KXNldFZhbHVlOihOU1N0cmluZyAqKXZhbHVlOwotLSAoRE9NRWxlbWVudCAqKW93bmVyRWxlbWVu
dDsKLUBlbmQKLQotQGludGVyZmFjZSBET01FbGVtZW50IDogRE9NTm9kZQotLSAoTlNTdHJpbmcg
Kil0YWdOYW1lOwotLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsK
LS0gKHZvaWQpc2V0QXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUgOihOU1N0cmluZyAqKXZhbHVl
OwotLSAodm9pZClyZW1vdmVBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTUF0dHIg
KilnZXRBdHRyaWJ1dGVOb2RlOihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01BdHRyICopc2V0QXR0
cmlidXRlTm9kZTooRE9NQXR0ciAqKW5ld0F0dHI7Ci0tIChET01BdHRyICopcmVtb3ZlQXR0cmli
dXRlTm9kZTooRE9NQXR0ciAqKW9sZEF0dHI7Ci0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRz
QnlUYWdOYW1lOihOU1N0cmluZyAqKW5hbWU7Ci0tIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZU5T
OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAodm9p
ZClzZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1
YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXZhbHVlOwotLSAodm9pZClyZW1vdmVBdHRyaWJ1dGVO
UzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKERP
TUF0dHIgKilnZXRBdHRyaWJ1dGVOb2RlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNT
dHJpbmcgKilsb2NhbE5hbWU7Ci0tIChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZU5TOihET01B
dHRyICopbmV3QXR0cjsKLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWVOUzoo
TlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKEJPT0wp
aGFzQXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWU7Ci0tIChCT09MKWhhc0F0dHJpYnV0ZU5TOihO
U1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAodm9pZClm
b2N1czsKLS0gKHZvaWQpYmx1cjsKLUBlbmQKLQotQGludGVyZmFjZSBET01UZXh0IDogRE9NQ2hh
cmFjdGVyRGF0YQotLSAoRE9NVGV4dCAqKXNwbGl0VGV4dDoodW5zaWduZWQpb2Zmc2V0OwotQGVu
ZAotCi1AaW50ZXJmYWNlIERPTUNvbW1lbnQgOiBET01DaGFyYWN0ZXJEYXRhCi1AZW5kCi0KLUBp
bnRlcmZhY2UgRE9NQ0RBVEFTZWN0aW9uIDogRE9NVGV4dAotQGVuZAotCi1AaW50ZXJmYWNlIERP
TURvY3VtZW50VHlwZSA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopbmFtZTsKLS0gKERPTU5hbWVk
Tm9kZU1hcCAqKWVudGl0aWVzOwotLSAoRE9NTmFtZWROb2RlTWFwICopbm90YXRpb25zOwotLSAo
TlNTdHJpbmcgKilwdWJsaWNJZDsKLS0gKE5TU3RyaW5nICopc3lzdGVtSWQ7Ci0tIChOU1N0cmlu
ZyAqKWludGVybmFsU3Vic2V0OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTU5vdGF0aW9uIDogRE9N
Tm9kZQotLSAoTlNTdHJpbmcgKilwdWJsaWNJZDsKLS0gKE5TU3RyaW5nICopc3lzdGVtSWQ7Ci1A
ZW5kCi0KLUBpbnRlcmZhY2UgRE9NRW50aXR5IDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKilwdWJs
aWNJZDsKLS0gKE5TU3RyaW5nICopc3lzdGVtSWQ7Ci0tIChOU1N0cmluZyAqKW5vdGF0aW9uTmFt
ZTsKLUBlbmQKLQotQGludGVyZmFjZSBET01FbnRpdHlSZWZlcmVuY2UgOiBET01Ob2RlCi1AZW5k
Ci0KLUBpbnRlcmZhY2UgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uIDogRE9NTm9kZQotLSAoTlNT
dHJpbmcgKil0YXJnZXQ7Ci0tIChOU1N0cmluZyAqKWRhdGE7Ci0tICh2b2lkKXNldERhdGE6KE5T
U3RyaW5nICopZGF0YTsKLUBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudEZyYWdtZW50IDog
RE9NTm9kZQotQGVuZAordHlwZWRlZiBzdHJ1Y3QgRE9NT2JqZWN0SW50ZXJuYWwgRE9NT2JqZWN0
SW50ZXJuYWw7CiAKLUBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgOiBET01Ob2RlCi0tIChET01Eb2N1
bWVudFR5cGUgKilkb2N0eXBlOwotLSAoRE9NSW1wbGVtZW50YXRpb24gKilpbXBsZW1lbnRhdGlv
bjsKLS0gKERPTUVsZW1lbnQgKilkb2N1bWVudEVsZW1lbnQ7Ci0tIChET01FbGVtZW50ICopY3Jl
YXRlRWxlbWVudDooTlNTdHJpbmcgKil0YWdOYW1lOwotLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAq
KWNyZWF0ZURvY3VtZW50RnJhZ21lbnQ7Ci0tIChET01UZXh0ICopY3JlYXRlVGV4dE5vZGU6KE5T
U3RyaW5nICopZGF0YTsKLS0gKERPTUNvbW1lbnQgKiljcmVhdGVDb21tZW50OihOU1N0cmluZyAq
KWRhdGE7Ci0tIChET01DREFUQVNlY3Rpb24gKiljcmVhdGVDREFUQVNlY3Rpb246KE5TU3RyaW5n
ICopZGF0YTsKLS0gKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKWNyZWF0ZVByb2Nlc3NpbmdJ
bnN0cnVjdGlvbjooTlNTdHJpbmcgKil0YXJnZXQgOihOU1N0cmluZyAqKWRhdGE7Ci0tIChET01B
dHRyICopY3JlYXRlQXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01FbnRpdHlSZWZl
cmVuY2UgKiljcmVhdGVFbnRpdHlSZWZlcmVuY2U6KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTU5v
ZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWU6KE5TU3RyaW5nICopdGFnbmFtZTsKLS0gKERP
TU5vZGUgKilpbXBvcnROb2RlOihET01Ob2RlICopaW1wb3J0ZWROb2RlIDooQk9PTClkZWVwOwot
LSAoRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnROUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkg
OihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWU7Ci0tIChET01BdHRyICopY3JlYXRlQXR0cmlidXRl
TlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lOwot
LSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVz
cGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAoRE9NRWxlbWVudCAqKWdldEVsZW1l
bnRCeUlkOihOU1N0cmluZyAqKWVsZW1lbnRJZDsKLS0gKERPTU5vZGUgKilhZG9wdE5vZGU6KERP
TU5vZGUgKilzb3VyY2U7CitAaW50ZXJmYWNlIERPTU9iamVjdCA6IFdlYlNjcmlwdE9iamVjdCA8
TlNDb3B5aW5nPgoreworICAgIERPTU9iamVjdEludGVybmFsICpfaW50ZXJuYWw7Cit9CiBAZW5k
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NT2JqZWN0Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01PYmplY3QubW0JKHJldmlzaW9uIDE1OTU5KQorKysg
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiBBcHBsZSBDb21wdXRlciwg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBKYW1lcyBH
LiBTcGV0aCAoc3BldGhAZW5kLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNiBKYW1lcyBHLiBT
cGV0aCA8c3BldGhAZW5kLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vpbmln
IDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjUsMTE0ICsyNiw5IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJE
T00uaCIKKyNpbXBvcnQgIkRPTU9iamVjdC5oIgogCi0jaW1wb3J0ICJDREFUQVNlY3Rpb24uaCIK
LSNpbXBvcnQgImNzc2hlbHBlci5oIgotI2ltcG9ydCAiQ1NTU3R5bGVTaGVldC5oIgotI2ltcG9y
dCAiQ29tbWVudC5oIgotI2ltcG9ydCAiRE9NRXZlbnRzSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRP
TUltcGxlbWVudGF0aW9uRnJvbnQuaCIKICNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0jaW1wb3J0
ICJET01Qcml2YXRlLmgiCi0jaW1wb3J0ICJEb2N1bWVudC5oIgotI2ltcG9ydCAiRG9jdW1lbnRG
cmFnbWVudC5oIgotI2ltcG9ydCAiRG9jdW1lbnRUeXBlLmgiCi0jaW1wb3J0ICJFbnRpdHkuaCIK
LSNpbXBvcnQgIkVudGl0eVJlZmVyZW5jZS5oIgotI2ltcG9ydCAiRXZlbnQuaCIKLSNpbXBvcnQg
IkV2ZW50TGlzdGVuZXIuaCIKLSNpbXBvcnQgIkZvdW5kYXRpb25FeHRyYXMuaCIKLSNpbXBvcnQg
IkZyYW1lTWFjLmgiCi0jaW1wb3J0ICJIVE1MRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxOYW1l
cy5oIgotI2ltcG9ydCAiSFRNTFBsdWdJbkVsZW1lbnQuaCIKLSNpbXBvcnQgIk5vZGVGaWx0ZXIu
aCIKLSNpbXBvcnQgIk5vZGVGaWx0ZXJDb25kaXRpb24uaCIKLSNpbXBvcnQgIk5vZGVJdGVyYXRv
ci5oIgotI2ltcG9ydCAiTm9kZUxpc3QuaCIKLSNpbXBvcnQgIk5vdGF0aW9uLmgiCi0jaW1wb3J0
ICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKLSNpbXBvcnQgIlF1YWxpZmllZE5hbWUuaCIKLSNp
bXBvcnQgIlJhbmdlLmgiCi0jaW1wb3J0ICJSZW5kZXJJbWFnZS5oIgotI2ltcG9ydCAiVHJlZVdh
bGtlci5oIgotI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgotI2ltcG9ydCA8b2Jq
Yy9vYmpjLWNsYXNzLmg+Ci0KLXVzaW5nIFdlYkNvcmU6OkF0b21pY1N0cmluZzsKLXVzaW5nIFdl
YkNvcmU6OkF0b21pY1N0cmluZ0ltcGw7Ci11c2luZyBXZWJDb3JlOjpBdHRyOwotdXNpbmcgV2Vi
Q29yZTo6Q2hhcmFjdGVyRGF0YTsKLXVzaW5nIFdlYkNvcmU6OkRlcHJlY2F0ZWRWYWx1ZUxpc3Q7
Ci11c2luZyBXZWJDb3JlOjpEb2N1bWVudDsKLXVzaW5nIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21l
bnQ7Ci11c2luZyBXZWJDb3JlOjpEb2N1bWVudFR5cGU7Ci11c2luZyBXZWJDb3JlOjpET01JbXBs
ZW1lbnRhdGlvbkZyb250OwotdXNpbmcgV2ViQ29yZTo6RWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6
OkVudGl0eTsKLXVzaW5nIFdlYkNvcmU6OkV2ZW50OwotdXNpbmcgV2ViQ29yZTo6RXZlbnRMaXN0
ZW5lcjsKLXVzaW5nIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGU7Ci11c2luZyBXZWJDb3JlOjpIVE1M
RG9jdW1lbnQ7Ci11c2luZyBXZWJDb3JlOjpIVE1MRWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6OkZy
YW1lTWFjOwotdXNpbmcgV2ViQ29yZTo6SW50UmVjdDsKLXVzaW5nIFdlYkNvcmU6OktVUkw7Ci11
c2luZyBXZWJDb3JlOjpOYW1lZE5vZGVNYXA7Ci11c2luZyBXZWJDb3JlOjpOb2RlOwotdXNpbmcg
V2ViQ29yZTo6Tm9kZUZpbHRlcjsKLXVzaW5nIFdlYkNvcmU6Ok5vZGVGaWx0ZXJDb25kaXRpb247
Ci11c2luZyBXZWJDb3JlOjpOb2RlSXRlcmF0b3I7Ci11c2luZyBXZWJDb3JlOjpOb2RlTGlzdDsK
LXVzaW5nIFdlYkNvcmU6Ok5vdGF0aW9uOwotdXNpbmcgV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3Ry
dWN0aW9uOwotdXNpbmcgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTsKLXVzaW5nIFdlYkNvcmU6OlJh
bmdlOwotdXNpbmcgV2ViQ29yZTo6UmVuZGVySW1hZ2U7Ci11c2luZyBXZWJDb3JlOjpSZW5kZXJP
YmplY3Q7Ci11c2luZyBXZWJDb3JlOjpTdHJpbmc7Ci11c2luZyBXZWJDb3JlOjpUZXh0OwotdXNp
bmcgV2ViQ29yZTo6VHJlZVdhbGtlcjsKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkhUTUxO
YW1lczsKLQotQGludGVyZmFjZSBET01BdHRyIChXZWJDb3JlSW50ZXJuYWwpCi0rIChET01BdHRy
ICopX2F0dHJXaXRoOihBdHRyICopaW1wbDsKLS0gKEF0dHIgKilfYXR0cjsKLUBlbmQKLQotQGlu
dGVyZmFjZSBET01Eb2N1bWVudFR5cGUgKFdlYkNvcmVJbnRlcm5hbCkKLS0gKERvY3VtZW50VHlw
ZSAqKV9kb2N1bWVudFR5cGU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSW1wbGVtZW50YXRpb24g
KFdlYkNvcmVJbnRlcm5hbCkKLSsgKERPTUltcGxlbWVudGF0aW9uICopX0RPTUltcGxlbWVudGF0
aW9uV2l0aDooRE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKWltcGw7Ci0tIChET01JbXBsZW1lbnRh
dGlvbkZyb250ICopX0RPTUltcGxlbWVudGF0aW9uOwotQGVuZAotCi1jbGFzcyBPYmpDRXZlbnRM
aXN0ZW5lciA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgT2Jq
Q0V2ZW50TGlzdGVuZXIgKmZpbmQoaWQgPERPTUV2ZW50TGlzdGVuZXI+KTsKLSAgICBzdGF0aWMg
T2JqQ0V2ZW50TGlzdGVuZXIgKmNyZWF0ZShpZCA8RE9NRXZlbnRMaXN0ZW5lcj4pOwotCi1wcml2
YXRlOgotICAgIE9iakNFdmVudExpc3RlbmVyKGlkIDxET01FdmVudExpc3RlbmVyPik7Ci0gICAg
dmlydHVhbCB+T2JqQ0V2ZW50TGlzdGVuZXIoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVF
dmVudChFdmVudCAqLCBib29sIGlzV2luZG93RXZlbnQpOwotCi0gICAgaWQgPERPTUV2ZW50TGlz
dGVuZXI+IG1fbGlzdGVuZXI7Ci19OwotCi10eXBlZGVmIEhhc2hNYXA8aWQsIE9iakNFdmVudExp
c3RlbmVyKj4gTGlzdGVuZXJNYXA7Ci10eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCos
IENsYXNzPiBPYmpDQ2xhc3NNYXA7Ci0KLXN0YXRpYyBPYmpDQ2xhc3NNYXAqIGVsZW1lbnRDbGFz
c01hcDsKLXN0YXRpYyBMaXN0ZW5lck1hcCogbGlzdGVuZXJNYXA7Ci0KLS8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01PYmplY3QKIAogQGltcGxlbWVudGF0aW9uIERP
TU9iamVjdAogCkBAIC0xNDYsMTcgKzQyLDE1IEBAIHN0YXRpYyBMaXN0ZW5lck1hcCogbGlzdGVu
ZXJNYXA7CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIGlmIChfaW50ZXJuYWwpIHsKKyAgICBp
ZiAoX2ludGVybmFsKQogICAgICAgICByZW1vdmVET01XcmFwcGVyKF9pbnRlcm5hbCk7Ci0gICAg
fQogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAodm9pZClmaW5hbGl6ZQogewotICAgIGlm
IChfaW50ZXJuYWwpIHsKKyAgICBpZiAoX2ludGVybmFsKQogICAgICAgICByZW1vdmVET01XcmFw
cGVyKF9pbnRlcm5hbCk7Ci0gICAgfQogICAgIFtzdXBlciBmaW5hbGl6ZV07CiB9CiAKQEAgLTE2
NiwyMjA3ICs2MCwzIEBAIHN0YXRpYyBMaXN0ZW5lck1hcCogbGlzdGVuZXJNYXA7CiB9CiAKIEBl
bmQKLQotQGltcGxlbWVudGF0aW9uIERPTU9iamVjdCAoV2ViQ29yZUludGVybmFsKQotCi0tIChp
ZClfaW5pdAotewotICAgIHJldHVybiBbc3VwZXIgX2luaXRdOwotfQotCi1AZW5kCi0KLS8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Ob2RlCi0KLUBpbXBsZW1lbnRh
dGlvbiBET01Ob2RlCi0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpIHsK
LSAgICAgICAgRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAg
ICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAoX2lu
dGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsK
LSAgICB9Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQotLSAoTlNTdHJpbmcgKilkZXNjcmlw
dGlvbgotewotICAgIGlmICghX2ludGVybmFsKSB7Ci0gICAgICAgIHJldHVybiBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIjwlQDogbnVsbD4iLAotICAgICAgICAgICAgW1tzZWxmIGNsYXNz
XSBkZXNjcmlwdGlvbl0sIHNlbGZdOwotICAgIH0KLSAgICBOU1N0cmluZyAqdmFsdWUgPSBbc2Vs
ZiBub2RlVmFsdWVdOwotICAgIGlmICh2YWx1ZSkgewotICAgICAgICByZXR1cm4gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUAgWyVAXTogJXAgJyVAJz4iLAotICAgICAgICAgICAgW1tz
ZWxmIGNsYXNzXSBkZXNjcmlwdGlvbl0sIFtzZWxmIG5vZGVOYW1lXSwgX2ludGVybmFsLCB2YWx1
ZV07Ci0gICAgfQotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQCBb
JUBdOiAlcD4iLAotICAgICAgICBbW3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9uXSwgW3NlbGYgbm9k
ZU5hbWVdLCBfaW50ZXJuYWxdOwotfQotCi0tIChOU1N0cmluZyAqKW5vZGVOYW1lCi17Ci0gICAg
cmV0dXJuIFtzZWxmIF9ub2RlXS0+bm9kZU5hbWUoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilub2Rl
VmFsdWUKLXsKLSAgICAvLyBEb2N1bWVudGF0aW9uIHNheXMgd2UgY2FuIHJhaXNlIGEgRE9NU1RS
SU5HX1NJWkVfRVJSLgotICAgIC8vIEhvd2V2ZXIsIHRoZSBsb3dlciBsYXllciBkb2VzIG5vdCBy
ZXBvcnQgdGhhdCBlcnJvciB1cCB0byB1cy4KLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2Rl
VmFsdWUoKTsKLX0KLQotLSAodm9pZClzZXROb2RlVmFsdWU6KE5TU3RyaW5nICopc3RyaW5nCi17
Ci0gICAgQVNTRVJUKHN0cmluZyk7Ci0gICAgCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgW3NlbGYgX25vZGVdLT5zZXROb2RlVmFsdWUoc3RyaW5nLCBlYyk7Ci0gICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKLX0KLQotLSAodW5zaWduZWQgc2hvcnQpbm9kZVR5cGUKLXsKLSAgICByZXR1
cm4gW3NlbGYgX25vZGVdLT5ub2RlVHlwZSgpOwotfQotCi0tIChET01Ob2RlICopcGFyZW50Tm9k
ZQotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5wYXJlbnRO
b2RlKCldOwotfQotCi0tIChET01Ob2RlTGlzdCAqKWNoaWxkTm9kZXMKLXsKLSAgICByZXR1cm4g
W0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX25vZGVdLT5jaGlsZE5vZGVzKCkuZ2V0
KCldOwotfQotCi0tIChET01Ob2RlICopZmlyc3RDaGlsZAotewotICAgIHJldHVybiBbRE9NTm9k
ZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5maXJzdENoaWxkKCldOwotfQotCi0tIChET01Ob2Rl
ICopbGFzdENoaWxkCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9k
ZV0tPmxhc3RDaGlsZCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKXByZXZpb3VzU2libGluZwotewot
ICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5wcmV2aW91c1NpYmxp
bmcoKV07Ci19Ci0KLS0gKERPTU5vZGUgKiluZXh0U2libGluZwotewotICAgIHJldHVybiBbRE9N
Tm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5uZXh0U2libGluZygpXTsKLX0KLQotLSAoRE9N
TmFtZWROb2RlTWFwICopYXR0cmlidXRlcwotewotICAgIC8vIERPTSBsZXZlbCAyIGNvcmUgc3Bl
Y2lmaWNhdGlvbiBzYXlzOiAKLSAgICAvLyBBIE5hbWVkTm9kZU1hcCBjb250YWluaW5nIHRoZSBh
dHRyaWJ1dGVzIG9mIHRoaXMgbm9kZSAoaWYgaXQgaXMgYW4gRWxlbWVudCkgb3IgbnVsbCBvdGhl
cndpc2UuCi0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoRE9NRG9jdW1lbnQgKilvd25lckRvY3Vt
ZW50Ci17Ci0gICAgcmV0dXJuIFtET01Eb2N1bWVudCBfZG9jdW1lbnRXaXRoOltzZWxmIF9ub2Rl
XS0+ZG9jdW1lbnQoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilpbnNlcnRCZWZvcmU6KERPTU5vZGUg
KiluZXdDaGlsZCA6KERPTU5vZGUgKilyZWZDaGlsZAotewotICAgIEFTU0VSVChuZXdDaGlsZCk7
Ci0gICAgQVNTRVJUKHJlZkNoaWxkKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IGlmIChbc2VsZiBfbm9kZV0tPmluc2VydEJlZm9yZShbbmV3Q2hpbGQgX25vZGVdLCBbcmVmQ2hp
bGQgX25vZGVdLCBlYykpCi0gICAgICAgIHJldHVybiBuZXdDaGlsZDsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKERPTU5vZGUgKilyZXBsYWNlQ2hp
bGQ6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilvbGRDaGlsZAotewotICAgIEFTU0VS
VChuZXdDaGlsZCk7Ci0gICAgQVNTRVJUKG9sZENoaWxkKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIGlmIChbc2VsZiBfbm9kZV0tPnJlcGxhY2VDaGlsZChbbmV3Q2hpbGQgX25v
ZGVdLCBbb2xkQ2hpbGQgX25vZGVdLCBlYykpCi0gICAgICAgIHJldHVybiBvbGRDaGlsZDsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKERPTU5vZGUg
KilyZW1vdmVDaGlsZDooRE9NTm9kZSAqKW9sZENoaWxkCi17Ci0gICAgQVNTRVJUKG9sZENoaWxk
KTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChbc2VsZiBfbm9kZV0tPnJl
bW92ZUNoaWxkKFtvbGRDaGlsZCBfbm9kZV0sIGVjKSkKLSAgICAgICAgcmV0dXJuIG9sZENoaWxk
OwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoRE9N
Tm9kZSAqKWFwcGVuZENoaWxkOihET01Ob2RlICopbmV3Q2hpbGQKLXsKLSAgICBBU1NFUlQobmV3
Q2hpbGQpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKFtzZWxmIF9ub2Rl
XS0+YXBwZW5kQ2hpbGQoW25ld0NoaWxkIF9ub2RlXSwgZWMpKQotICAgICAgICByZXR1cm4gbmV3
Q2hpbGQ7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gbmlsOwotfQotCi0t
IChCT09MKWhhc0NoaWxkTm9kZXMKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5oYXNDaGls
ZE5vZGVzKCk7Ci19Ci0KLS0gKERPTU5vZGUgKiljbG9uZU5vZGU6KEJPT0wpZGVlcAotewotICAg
IHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5jbG9uZU5vZGUoZGVlcCku
Z2V0KCldOwotfQotCi0tICh2b2lkKW5vcm1hbGl6ZQotewotICAgIFtzZWxmIF9ub2RlXS0+bm9y
bWFsaXplKCk7Ci19Ci0KLS0gKEJPT0wpaXNTdXBwb3J0ZWQ6KE5TU3RyaW5nICopZmVhdHVyZSA6
KE5TU3RyaW5nICopdmVyc2lvbgotewotICAgIEFTU0VSVChmZWF0dXJlKTsKLSAgICBBU1NFUlQo
dmVyc2lvbik7Ci0KLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc1N1cHBvcnRlZChmZWF0dXJl
LCB2ZXJzaW9uKTsKLX0KLQotLSAoTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkKLXsKLSAgICByZXR1
cm4gW3NlbGYgX25vZGVdLT5uYW1lc3BhY2VVUkkoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilwcmVm
aXgKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5wcmVmaXgoKTsKLX0KLQotLSAodm9pZClz
ZXRQcmVmaXg6KE5TU3RyaW5nICopcHJlZml4Ci17Ci0gICAgQVNTRVJUKHByZWZpeCk7Ci0KLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTdHJpbmcgcHJlZml4U3RyKHByZWZpeCk7Ci0g
ICAgW3NlbGYgX25vZGVdLT5zZXRQcmVmaXgocHJlZml4U3RyLmltcGwoKSwgZWMpOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAg
cmV0dXJuIFtzZWxmIF9ub2RlXS0+bG9jYWxOYW1lKCk7Ci19Ci0KLS0gKEJPT0wpaGFzQXR0cmli
dXRlcwotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmhhc0F0dHJpYnV0ZXMoKTsKLX0KLQot
LSAoQk9PTClpc1NhbWVOb2RlOihET01Ob2RlICopb3RoZXIKLXsKLSAgICByZXR1cm4gW3NlbGYg
X25vZGVdLT5pc1NhbWVOb2RlKFtvdGhlciBfbm9kZV0pOwotfQotCi0tIChCT09MKWlzRXF1YWxO
b2RlOihET01Ob2RlICopb3RoZXIKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc0VxdWFs
Tm9kZShbb3RoZXIgX25vZGVdKTsKLX0KLQotLSAoQk9PTClpc0RlZmF1bHROYW1lc3BhY2U6KE5T
U3RyaW5nICopbmFtZXNwYWNlVVJJCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aXNEZWZh
dWx0TmFtZXNwYWNlKG5hbWVzcGFjZVVSSSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbG9va3VwUHJl
Zml4OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSQotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0t
Pmxvb2t1cFByZWZpeChuYW1lc3BhY2VVUkkpOwotfQotCi0tIChOU1N0cmluZyAqKWxvb2t1cE5h
bWVzcGFjZVVSSTooTlNTdHJpbmcgKilwcmVmaXgKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVd
LT5sb29rdXBOYW1lc3BhY2VVUkkocHJlZml4KTsKLX0KLQotLSAoTlNTdHJpbmcgKil0ZXh0Q29u
dGVudAotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPnRleHRDb250ZW50KCk7Ci19Ci0KLS0g
KHZvaWQpc2V0VGV4dENvbnRlbnQ6KE5TU3RyaW5nICopdGV4dAotewotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIFtzZWxmIF9ub2RlXS0+c2V0VGV4dENvbnRlbnQodGV4dCwgZWMpOwot
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKE5TUmVjdClib3VuZGluZ0JveAotewot
ICAgIFdlYkNvcmU6OlJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBbc2VsZiBfbm9kZV0tPnJlbmRl
cmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyKQotICAgICAgICByZXR1cm4gcmVuZGVyZXItPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0KCk7Ci0gICAgcmV0dXJuIE5TWmVyb1JlY3Q7Ci19Ci0KLS0gKE5T
QXJyYXkgKilsaW5lQm94UmVjdHMKLXsKLSAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QgKnJlbmRl
cmVyID0gW3NlbGYgX25vZGVdLT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlcikgewotICAg
ICAgICBOU011dGFibGVBcnJheSAqcmVzdWx0cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRdOwotICAgICAgICBEZXByZWNhdGVkVmFsdWVMaXN0PEludFJlY3Q+IHJlY3RzID0gcmVuZGVy
ZXItPmxpbmVCb3hSZWN0cygpOwotICAgICAgICBpZiAoIXJlY3RzLmlzRW1wdHkoKSkgewotICAg
ICAgICAgICAgZm9yIChEZXByZWNhdGVkVmFsdWVMaXN0PEludFJlY3Q+OjpDb25zdEl0ZXJhdG9y
IGl0ID0gcmVjdHMuYmVnaW4oKTsgaXQgIT0gcmVjdHMuZW5kKCk7ICsraXQpCi0gICAgICAgICAg
ICAgICAgW3Jlc3VsdHMgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6Kml0XV07Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFtyZXN1bHRzIGF1dG9yZWxlYXNlXTsKLSAgICB9Ci0g
ICAgcmV0dXJuIG5pbDsKLX0KLQotQGVuZAotCi1zdGF0aWMgdm9pZCBhZGRFbGVtZW50Q2xhc3Mo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnLCBDbGFzcyBvYmpDQ2xhc3MpCi17Ci0gICAgZWxlbWVu
dENsYXNzTWFwLT5zZXQodGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgb2JqQ0NsYXNzKTsKLX0KLQot
c3RhdGljIHZvaWQgY3JlYXRlSFRNTEVsZW1lbnRDbGFzc01hcCgpCi17Ci0gICAgLy8gQ3JlYXRl
IHRoZSB0YWJsZS4KLSAgICBlbGVtZW50Q2xhc3NNYXAgPSBuZXcgT2JqQ0NsYXNzTWFwOwotICAg
IAotICAgIC8vIFBvcHVsYXRlIGl0IHdpdGggSFRNTCBlbGVtZW50IGNsYXNzZXMuCi0gICAgYWRk
RWxlbWVudENsYXNzKGFUYWcsIFtET01IVE1MQW5jaG9yRWxlbWVudCBjbGFzc10pOwotICAgIGFk
ZEVsZW1lbnRDbGFzcyhhcHBsZXRUYWcsIFtET01IVE1MQXBwbGV0RWxlbWVudCBjbGFzc10pOwot
ICAgIGFkZEVsZW1lbnRDbGFzcyhhcmVhVGFnLCBbRE9NSFRNTEFyZWFFbGVtZW50IGNsYXNzXSk7
Ci0gICAgYWRkRWxlbWVudENsYXNzKGJhc2VUYWcsIFtET01IVE1MQmFzZUVsZW1lbnQgY2xhc3Nd
KTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoYmFzZWZvbnRUYWcsIFtET01IVE1MQmFzZUZvbnRFbGVt
ZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGJvZHlUYWcsIFtET01IVE1MQm9keUVs
ZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoYnJUYWcsIFtET01IVE1MQlJFbGVt
ZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGJ1dHRvblRhZywgW0RPTUhUTUxCdXR0
b25FbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGNhbnZhc1RhZywgW0RPTUhU
TUxJbWFnZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoY2FwdGlvblRhZywg
W0RPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KGNvbFRhZywgW0RPTUhUTUxUYWJsZUNvbEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50
Q2xhc3MoY29sZ3JvdXBUYWcsIFtET01IVE1MVGFibGVDb2xFbGVtZW50IGNsYXNzXSk7Ci0gICAg
YWRkRWxlbWVudENsYXNzKGRpclRhZywgW0RPTUhUTUxEaXJlY3RvcnlFbGVtZW50IGNsYXNzXSk7
Ci0gICAgYWRkRWxlbWVudENsYXNzKGRpdlRhZywgW0RPTUhUTUxEaXZFbGVtZW50IGNsYXNzXSk7
Ci0gICAgYWRkRWxlbWVudENsYXNzKGRsVGFnLCBbRE9NSFRNTERMaXN0RWxlbWVudCBjbGFzc10p
OwotICAgIGFkZEVsZW1lbnRDbGFzcyhmaWVsZHNldFRhZywgW0RPTUhUTUxGaWVsZFNldEVsZW1l
bnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoZm9udFRhZywgW0RPTUhUTUxGb250RWxl
bWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhmb3JtVGFnLCBbRE9NSFRNTEZvcm1F
bGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGZyYW1lVGFnLCBbRE9NSFRNTEZy
YW1lRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhmcmFtZXNldFRhZywgW0RP
TUhUTUxGcmFtZVNldEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDFUYWcs
IFtET01IVE1MSGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MoaDJU
YWcsIFtET01IVE1MSGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mo
aDNUYWcsIFtET01IVE1MSGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xh
c3MoaDRUYWcsIFtET01IVE1MSGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50
Q2xhc3MoaDVUYWcsIFtET01IVE1MSGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVt
ZW50Q2xhc3MoaDZUYWcsIFtET01IVE1MSGVhZGluZ0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRF
bGVtZW50Q2xhc3MoaGVhZFRhZywgW0RPTUhUTUxIZWFkRWxlbWVudCBjbGFzc10pOwotICAgIGFk
ZEVsZW1lbnRDbGFzcyhoclRhZywgW0RPTUhUTUxIUkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRF
bGVtZW50Q2xhc3MoaHRtbFRhZywgW0RPTUhUTUxIdG1sRWxlbWVudCBjbGFzc10pOwotICAgIGFk
ZEVsZW1lbnRDbGFzcyhpZnJhbWVUYWcsIFtET01IVE1MSUZyYW1lRWxlbWVudCBjbGFzc10pOwot
ICAgIGFkZEVsZW1lbnRDbGFzcyhpbWdUYWcsIFtET01IVE1MSW1hZ2VFbGVtZW50IGNsYXNzXSk7
Ci0gICAgYWRkRWxlbWVudENsYXNzKGlucHV0VGFnLCBbRE9NSFRNTElucHV0RWxlbWVudCBjbGFz
c10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhpc2luZGV4VGFnLCBbRE9NSFRNTElzSW5kZXhFbGVt
ZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKGxhYmVsVGFnLCBbRE9NSFRNTExhYmVs
RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhsZWdlbmRUYWcsIFtET01IVE1M
TGVnZW5kRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhsaVRhZywgW0RPTUhU
TUxMSUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MobGlua1RhZywgW0RPTUhU
TUxMaW5rRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhsaXN0aW5nVGFnLCBb
RE9NSFRNTFByZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MobWFwVGFnLCBb
RE9NSFRNTE1hcEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3MobWVudVRhZywg
W0RPTUhUTUxNZW51RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhtZXRhVGFn
LCBbRE9NSFRNTE1ldGFFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKG9iamVj
dFRhZywgW0RPTUhUTUxPYmplY3RFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNz
KG9sVGFnLCBbRE9NSFRNTE9MaXN0RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFz
cyhvcHRncm91cFRhZywgW0RPTUhUTUxPcHRHcm91cEVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRF
bGVtZW50Q2xhc3Mob3B0aW9uVGFnLCBbRE9NSFRNTE9wdGlvbkVsZW1lbnQgY2xhc3NdKTsKLSAg
ICBhZGRFbGVtZW50Q2xhc3MocFRhZywgW0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50IGNsYXNzXSk7
Ci0gICAgYWRkRWxlbWVudENsYXNzKHBhcmFtVGFnLCBbRE9NSFRNTFBhcmFtRWxlbWVudCBjbGFz
c10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhwcmVUYWcsIFtET01IVE1MUHJlRWxlbWVudCBjbGFz
c10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhxVGFnLCBbRE9NSFRNTFF1b3RlRWxlbWVudCBjbGFz
c10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhzY3JpcHRUYWcsIFtET01IVE1MU2NyaXB0RWxlbWVu
dCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhzZWxlY3RUYWcsIFtET01IVE1MU2VsZWN0
RWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyhzdHlsZVRhZywgW0RPTUhUTUxT
dHlsZUVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModGFibGVUYWcsIFtET01I
VE1MVGFibGVFbGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHRib2R5VGFnLCBb
RE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3Mo
dGRUYWcsIFtET01IVE1MVGFibGVDZWxsRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRD
bGFzcyh0ZXh0YXJlYVRhZywgW0RPTUhUTUxUZXh0QXJlYUVsZW1lbnQgY2xhc3NdKTsKLSAgICBh
ZGRFbGVtZW50Q2xhc3ModGZvb3RUYWcsIFtET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCBjbGFz
c10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh0aGVhZFRhZywgW0RPTUhUTUxUYWJsZVNlY3Rpb25F
bGVtZW50IGNsYXNzXSk7Ci0gICAgYWRkRWxlbWVudENsYXNzKHRpdGxlVGFnLCBbRE9NSFRNTFRp
dGxlRWxlbWVudCBjbGFzc10pOwotICAgIGFkZEVsZW1lbnRDbGFzcyh0clRhZywgW0RPTUhUTUxU
YWJsZVJvd0VsZW1lbnQgY2xhc3NdKTsKLSAgICBhZGRFbGVtZW50Q2xhc3ModWxUYWcsIFtET01I
VE1MVUxpc3RFbGVtZW50IGNsYXNzXSk7Ci0KLSAgICAvLyBGSVhNRTogUmVmbGVjdCBtYXJxdWVl
IG9uY2UgdGhlIEFQSSBoYXMgYmVlbiBkZXRlcm1pbmVkLgotfQotCi1zdGF0aWMgQ2xhc3MgZWxl
bWVudENsYXNzKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKLXsKLSAgICBpZiAoIWVsZW1l
bnRDbGFzc01hcCkKLSAgICAgICAgY3JlYXRlSFRNTEVsZW1lbnRDbGFzc01hcCgpOwotICAgIENs
YXNzIG9iamNDbGFzcyA9IGVsZW1lbnRDbGFzc01hcC0+Z2V0KHRhZ05hbWUuaW1wbCgpKTsKLSAg
ICBpZiAoIW9iamNDbGFzcykKLSAgICAgICAgb2JqY0NsYXNzID0gW0RPTUhUTUxFbGVtZW50IGNs
YXNzXTsKLSAgICByZXR1cm4gb2JqY0NsYXNzOwotfQotCi1AaW1wbGVtZW50YXRpb24gRE9NTm9k
ZSAoV2ViQ29yZUludGVybmFsKQotCi0tIChpZClfaW5pdFdpdGhOb2RlOihOb2RlICopaW1wbAot
ewotICAgIEFTU0VSVChpbXBsKTsKLQotICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2ludGVybmFs
ID0gRE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7
Ci0gICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQot
KyAoRE9NTm9kZSAqKV9ub2RlV2l0aDooTm9kZSAqKWltcGwKLXsKLSAgICBpZiAoIWltcGwpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAgY2Fj
aGVkSW5zdGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0YW5j
ZSkKLSAgICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07
Ci0gICAgCi0gICAgQ2xhc3Mgd3JhcHBlckNsYXNzID0gbmlsOwotICAgIHN3aXRjaCAoaW1wbC0+
bm9kZVR5cGUoKSkgewotICAgICAgICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERToKLSAgICAgICAg
ICAgIGlmIChpbXBsLT5pc0hUTUxFbGVtZW50KCkpCi0gICAgICAgICAgICAgICAgd3JhcHBlckNs
YXNzID0gZWxlbWVudENsYXNzKHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oaW1wbCktPmxvY2Fs
TmFtZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB3cmFwcGVyQ2xhc3Mg
PSBbRE9NRWxlbWVudCBjbGFzc107Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBO
b2RlOjpBVFRSSUJVVEVfTk9ERToKLSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01BdHRy
IGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OlRFWFRfTk9E
RToKLSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01UZXh0IGNsYXNzXTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKLSAgICAg
ICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01DREFUQVNlY3Rpb24gY2xhc3NdOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgotICAg
ICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTUVudGl0eVJlZmVyZW5jZSBjbGFzc107Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKLSAgICAgICAg
ICAgIHdyYXBwZXJDbGFzcyA9IFtET01FbnRpdHkgY2xhc3NdOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgotICAgICAg
ICAgICAgd3JhcHBlckNsYXNzID0gW0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiBjbGFzc107Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpDT01NRU5UX05PREU6Ci0gICAg
ICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NQ29tbWVudCBjbGFzc107Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgotICAgICAgICAgICAgaWYg
KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oaW1wbCktPmlzSFRNTERvY3VtZW50KCkpCi0gICAgICAg
ICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTUhUTUxEb2N1bWVudCBjbGFzc107Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gW0RPTURvY3VtZW50IGNs
YXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZ
UEVfTk9ERToKLSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01Eb2N1bWVudFR5cGUgY2xh
c3NdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJB
R01FTlRfTk9ERToKLSAgICAgICAgICAgIHdyYXBwZXJDbGFzcyA9IFtET01Eb2N1bWVudEZyYWdt
ZW50IGNsYXNzXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vZGU6Ok5PVEFU
SU9OX05PREU6Ci0gICAgICAgICAgICB3cmFwcGVyQ2xhc3MgPSBbRE9NTm90YXRpb24gY2xhc3Nd
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNF
X05PREU6Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ3JlYXRlIGFuIFhQYXRoIG9iamVjdGl2ZSBD
IHdyYXBwZXIKLSAgICAgICAgICAgIC8vIFNlZSBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5v
cmcvc2hvd19idWcuY2dpP2lkPTg3NTUKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQot
ICAgIHJldHVybiBbW1t3cmFwcGVyQ2xhc3MgYWxsb2NdIF9pbml0V2l0aE5vZGU6aW1wbF0gYXV0
b3JlbGVhc2VdOwotfQotCi0tIChOb2RlICopX25vZGUKLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8
Tm9kZSAqPihfaW50ZXJuYWwpOwotfQotCi0tIChjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2Jq
ZWN0ICopX2V4ZWN1dGlvbkNvbnRleHQKLXsKLSAgICBpZiAoTm9kZSAqbiA9IFtzZWxmIF9ub2Rl
XSkKLSAgICAgICAgaWYgKEZyYW1lTWFjICpmID0gTWFjKG4tPmRvY3VtZW50KCktPmZyYW1lKCkp
KQotICAgICAgICAgICAgcmV0dXJuIGYtPmV4ZWN1dGlvbkNvbnRleHRGb3JET00oKTsKLQotICAg
IHJldHVybiAwOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChXZWJQcml2
YXRlKQotCi0tIChCT09MKWlzQ29udGVudEVkaXRhYmxlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9u
b2RlXS0+aXNDb250ZW50RWRpdGFibGUoKTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24g
RE9NTm9kZSAoRE9NRXZlbnRUYXJnZXQpCi0KLS0gKHZvaWQpYWRkRXZlbnRMaXN0ZW5lcjooTlNT
dHJpbmcgKil0eXBlIDooaWQgPERPTUV2ZW50TGlzdGVuZXI+KWxpc3RlbmVyIDooQk9PTCl1c2VD
YXB0dXJlCi17Ci0gICAgaWYgKCFbc2VsZiBfbm9kZV0tPmlzRXZlbnRUYXJnZXROb2RlKCkpCi0g
ICAgICAgIHJhaXNlRE9NRXhjZXB0aW9uKERPTV9OT1RfU1VQUE9SVEVEX0VSUik7Ci0gICAgCi0g
ICAgRXZlbnRMaXN0ZW5lciAqd3JhcHBlciA9IE9iakNFdmVudExpc3RlbmVyOjpjcmVhdGUobGlz
dGVuZXIpOwotICAgIEV2ZW50VGFyZ2V0Tm9kZUNhc3QoW3NlbGYgX25vZGVdKS0+YWRkRXZlbnRM
aXN0ZW5lcih0eXBlLCB3cmFwcGVyLCB1c2VDYXB0dXJlKTsKLSAgICB3cmFwcGVyLT5kZXJlZigp
OwotfQotCi0tICh2b2lkKXJlbW92ZUV2ZW50TGlzdGVuZXI6KE5TU3RyaW5nICopdHlwZSA6KGlk
IDxET01FdmVudExpc3RlbmVyPilsaXN0ZW5lciA6KEJPT0wpdXNlQ2FwdHVyZQotewotICAgIGlm
ICghW3NlbGYgX25vZGVdLT5pc0V2ZW50VGFyZ2V0Tm9kZSgpKQotICAgICAgICByYWlzZURPTUV4
Y2VwdGlvbihET01fTk9UX1NVUFBPUlRFRF9FUlIpOwotCi0gICAgaWYgKEV2ZW50TGlzdGVuZXIg
KndyYXBwZXIgPSBPYmpDRXZlbnRMaXN0ZW5lcjo6ZmluZChsaXN0ZW5lcikpCi0gICAgICAgIEV2
ZW50VGFyZ2V0Tm9kZUNhc3QoW3NlbGYgX25vZGVdKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBl
LCB3cmFwcGVyLCB1c2VDYXB0dXJlKTsKLX0KLQotLSAoQk9PTClkaXNwYXRjaEV2ZW50OihET01F
dmVudCAqKWV2ZW50Ci17Ci0gICAgaWYgKCFbc2VsZiBfbm9kZV0tPmlzRXZlbnRUYXJnZXROb2Rl
KCkpCi0gICAgICAgIHJhaXNlRE9NRXhjZXB0aW9uKERPTV9OT1RfU1VQUE9SVEVEX0VSUik7Ci0K
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBCT09MIHJlc3VsdCA9IEV2ZW50VGFyZ2V0
Tm9kZUNhc3QoW3NlbGYgX25vZGVdKS0+ZGlzcGF0Y2hFdmVudChbZXZlbnQgX2V2ZW50XSwgZWMp
OwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotQGVu
ZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NTmFtZWROb2Rl
TWFwCi0KLUBpbXBsZW1lbnRhdGlvbiBET01OYW1lZE5vZGVNYXAKLQotLSAodm9pZClkZWFsbG9j
Ci17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxOYW1lZE5vZGVNYXAg
Kj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQot
Ci0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01f
Y2FzdDxOYW1lZE5vZGVNYXAgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1
cGVyIGZpbmFsaXplXTsKLX0KLQotLSAoTmFtZWROb2RlTWFwICopX25hbWVkTm9kZU1hcAotewot
ICAgIHJldHVybiBET01fY2FzdDxOYW1lZE5vZGVNYXAgKj4oX2ludGVybmFsKTsKLX0KLQotLSAo
RE9NTm9kZSAqKWdldE5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5h
bWUpOwotCi0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFw
XS0+Z2V0TmFtZWRJdGVtKG5hbWUpLmdldCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKXNldE5hbWVk
SXRlbTooRE9NTm9kZSAqKWFyZwotewotICAgIEFTU0VSVChhcmcpOwotCi0gICAgaW50IGV4Y2Vw
dGlvbiA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxm
IF9uYW1lZE5vZGVNYXBdLT5zZXROYW1lZEl0ZW0oW2FyZyBfbm9kZV0sIGV4Y2VwdGlvbikuZ2V0
KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS0gKERPTU5vZGUgKilyZW1vdmVOYW1lZEl0ZW06KE5TU3RyaW5nICopbmFtZQotewot
ICAgIEFTU0VSVChuYW1lKTsKLQotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTU5vZGUg
KnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+cmVtb3Zl
TmFtZWRJdGVtKG5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihl
eGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUgKilpdGVtOih1
bnNpZ25lZClpbmRleAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25h
bWVkTm9kZU1hcF0tPml0ZW0oaW5kZXgpLmdldCgpXTsKLX0KLQotLSAodW5zaWduZWQpbGVuZ3Ro
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9uYW1lZE5vZGVNYXBdLT5sZW5ndGgoKTsKLX0KLQotLSAo
RE9NTm9kZSAqKWdldE5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3Ry
aW5nICopbG9jYWxOYW1lCi17Ci0gICAgaWYgKCFuYW1lc3BhY2VVUkkgfHwgIWxvY2FsTmFtZSkg
ewotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIHJldHVybiBbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPmdldE5hbWVkSXRlbU5TKG5hbWVzcGFjZVVSSSwg
bG9jYWxOYW1lKS5nZXQoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilzZXROYW1lZEl0ZW1OUzooRE9N
Tm9kZSAqKWFyZwotewotICAgIEFTU0VSVChhcmcpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7
Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5v
ZGVNYXBdLT5zZXROYW1lZEl0ZW1OUyhbYXJnIF9ub2RlXSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
LSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6
KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAg
QVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01Ob2Rl
ICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPnJlbW92
ZU5hbWVkSXRlbU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCBleGNlcHRpb24pLmdldCgpXTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01OYW1lZE5vZGVNYXAgKFdlYkNvcmVJbnRlcm5h
bCkKLQotLSAoaWQpX2luaXRXaXRoTmFtZWROb2RlTWFwOihOYW1lZE5vZGVNYXAgKilpbXBsCi17
Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwg
PSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsK
LSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0r
IChET01OYW1lZE5vZGVNYXAgKilfbmFtZWROb2RlTWFwV2l0aDooTmFtZWROb2RlTWFwICopaW1w
bAotewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBj
YWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7
Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQotICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5j
ZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10g
X2luaXRXaXRoTmFtZWROb2RlTWFwOmltcGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotQGVuZAotCi0v
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NTm9kZUxpc3QKLQotQGlt
cGxlbWVudGF0aW9uIERPTU5vZGVMaXN0Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChf
aW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZUxpc3QgKj4oX2ludGVybmFsKS0+ZGVy
ZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXpl
Ci17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxOb2RlTGlzdCAqPihf
aW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0t
IChOb2RlTGlzdCAqKV9ub2RlTGlzdAotewotICAgIHJldHVybiBET01fY2FzdDxOb2RlTGlzdCAq
PihfaW50ZXJuYWwpOwotfQotCi0tIChET01Ob2RlICopaXRlbToodW5zaWduZWQpaW5kZXgKLXsK
LSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9ub2RlTGlzdF0tPml0ZW0oaW5k
ZXgpXTsKLX0KLQotLSAodW5zaWduZWQpbGVuZ3RoCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2Rl
TGlzdF0tPmxlbmd0aCgpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlTGlz
dCAoV2ViQ29yZUludGVybmFsKQotCi0tIChpZClfaW5pdFdpdGhOb2RlTGlzdDooTm9kZUxpc3Qg
KilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBf
aW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBs
LT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxm
OwotfQotCi0rIChET01Ob2RlTGlzdCAqKV9ub2RlTGlzdFdpdGg6KE5vZGVMaXN0ICopaW1wbAot
ewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNo
ZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0g
ICAgaWYgKGNhY2hlZEluc3RhbmNlKQotICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSBy
ZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2lu
aXRXaXRoTm9kZUxpc3Q6aW1wbF0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLS8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01JbXBsZW1lbnRhdGlvbgotCi1AaW1w
bGVtZW50YXRpb24gRE9NSW1wbGVtZW50YXRpb24KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAg
aWYgKF9pbnRlcm5hbCkKLSAgICAgICAgRE9NX2Nhc3Q8RE9NSW1wbGVtZW50YXRpb25Gcm9udCAq
PihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9p
ZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIERPTV9jYXN0PERPTUlt
cGxlbWVudGF0aW9uRnJvbnQgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZmlu
YWxpemVdOwotfQotCi0tIChCT09MKWhhc0ZlYXR1cmU6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5T
U3RyaW5nICopdmVyc2lvbgotewotICAgIEFTU0VSVChmZWF0dXJlKTsKLSAgICBBU1NFUlQodmVy
c2lvbik7Ci0KLSAgICByZXR1cm4gW3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+aGFzRmVhdHVy
ZShmZWF0dXJlLCB2ZXJzaW9uKTsKLX0KLQotLSAoRE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9j
dW1lbnRUeXBlOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXB1YmxpY0lk
IDooTlNTdHJpbmcgKilzeXN0ZW1JZAotewotICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsKLSAg
ICBBU1NFUlQocHVibGljSWQpOwotICAgIEFTU0VSVChzeXN0ZW1JZCk7Ci0KLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8RG9jdW1lbnRUeXBlPiBpbXBsID0gW3NlbGYgX0RP
TUltcGxlbWVudGF0aW9uXS0+Y3JlYXRlRG9jdW1lbnRUeXBlKHF1YWxpZmllZE5hbWUsIHB1Ymxp
Y0lkLCBzeXN0ZW1JZCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PERPTURvY3VtZW50VHlwZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5n
ZXQoKV0pOwotfQotCi0tIChET01Eb2N1bWVudCAqKWNyZWF0ZURvY3VtZW50OihOU1N0cmluZyAq
KW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KERPTURvY3VtZW50VHlw
ZSAqKWRvY3R5cGUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQocXVh
bGlmaWVkTmFtZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8RG9j
dW1lbnQ+IGltcGwgPSBbc2VsZiBfRE9NSW1wbGVtZW50YXRpb25dLT5jcmVhdGVEb2N1bWVudChu
YW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIFtkb2N0eXBlIF9kb2N1bWVudFR5cGVdLCBlYyk7
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9j
dW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGwuZ2V0KCldKTsKLX0KLQotLSAoRE9NSFRN
TERvY3VtZW50ICopY3JlYXRlSFRNTERvY3VtZW50OihOU1N0cmluZyAqKXRpdGxlCi17Ci0gICAg
UmVmUHRyPEhUTUxEb2N1bWVudD4gaW1wbCA9IFtzZWxmIF9ET01JbXBsZW1lbnRhdGlvbl0tPmNy
ZWF0ZUhUTUxEb2N1bWVudCh0aXRsZSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUhUTUxE
b2N1bWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQoKV0pOwotfQotQGVuZAotCi1A
aW1wbGVtZW50YXRpb24gRE9NSW1wbGVtZW50YXRpb24gKERPTUltcGxlbWVudGF0aW9uQ1NTKQot
Ci0tIChET01DU1NTdHlsZVNoZWV0ICopY3JlYXRlQ1NTU3R5bGVTaGVldDooTlNTdHJpbmcgKil0
aXRsZSA6KE5TU3RyaW5nICopbWVkaWEKLXsKLSAgICBBU1NFUlQodGl0bGUpOwotICAgIEFTU0VS
VChtZWRpYSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01DU1NTdHlsZVNo
ZWV0ICpyZXN1bHQgPSBbRE9NQ1NTU3R5bGVTaGVldCBfQ1NTU3R5bGVTaGVldFdpdGg6W3NlbGYg
X0RPTUltcGxlbWVudGF0aW9uXS0+Y3JlYXRlQ1NTU3R5bGVTaGVldCh0aXRsZSwgbWVkaWEsIGVj
KS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi1AZW5kCi0gCi1AaW1wbGVtZW50YXRpb24gRE9NSW1wbGVtZW50YXRpb24gKFdlYkNvcmVJ
bnRlcm5hbCkKLQotLSAoaWQpX2luaXRXaXRoRE9NSW1wbGVtZW50YXRpb246KERPTUltcGxlbWVu
dGF0aW9uRnJvbnQgKilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9p
bml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBs
KTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAg
IHJldHVybiBzZWxmOwotfQotCi0rIChET01JbXBsZW1lbnRhdGlvbiAqKV9ET01JbXBsZW1lbnRh
dGlvbldpdGg6KERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilpbXBsCi17Ci0gICAgaWYgKCFpbXBs
KQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAg
IGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5z
dGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVh
c2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhET01JbXBsZW1l
bnRhdGlvbjppbXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKERPTUltcGxlbWVudGF0aW9uRnJv
bnQgKilfRE9NSW1wbGVtZW50YXRpb24KLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8RE9NSW1wbGVt
ZW50YXRpb25Gcm9udCAqPihfaW50ZXJuYWwpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Eb2N1bWVudEZyYWdtZW50Ci0KLUBpbXBsZW1l
bnRhdGlvbiBET01Eb2N1bWVudEZyYWdtZW50Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERP
TURvY3VtZW50RnJhZ21lbnQgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NRG9jdW1lbnRGcmFn
bWVudCAqKV9kb2N1bWVudEZyYWdtZW50V2l0aDooRG9jdW1lbnRGcmFnbWVudCAqKWltcGwKLXsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnRGcmFnbWVudCAqPihbRE9NTm9kZSBf
bm9kZVdpdGg6aW1wbF0pOwotfQotCi0tIChEb2N1bWVudEZyYWdtZW50ICopX2ZyYWdtZW50Ci17
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQgKj4oRE9NX2Nhc3Q8Tm9k
ZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotLy8gRE9NRG9jdW1lbnQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50
Ci0KLS0gKERPTU5vZGUgKilhZG9wdE5vZGU6KERPTU5vZGUgKilzb3VyY2UKLXsKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdp
dGg6W3NlbGYgX2RvY3VtZW50XS0+YWRvcHROb2RlKFtzb3VyY2UgX25vZGVdLCBlYykuZ2V0KCld
OwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAo
RE9NRG9jdW1lbnRUeXBlICopZG9jdHlwZQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01E
b2N1bWVudFR5cGUgKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmRvY3R5
cGUoKV0pOwotfQotCi0tIChET01JbXBsZW1lbnRhdGlvbiAqKWltcGxlbWVudGF0aW9uCi17Ci0g
ICAgcmV0dXJuIFtET01JbXBsZW1lbnRhdGlvbiBfRE9NSW1wbGVtZW50YXRpb25XaXRoOmltcGxl
bWVudGF0aW9uRnJvbnQoW3NlbGYgX2RvY3VtZW50XSldOwotfQotCi0tIChET01FbGVtZW50ICop
ZG9jdW1lbnRFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUVsZW1lbnQgKj4o
W0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmRvY3VtZW50RWxlbWVudCgpXSk7
Ci19Ci0KLS0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWUK
LXsKLSAgICBBU1NFUlQodGFnTmFtZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBET01FbGVtZW50ICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2Rl
IF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVFbGVtZW50KHRhZ05hbWUsIGVjKS5n
ZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWNyZWF0ZURvY3VtZW50RnJhZ21lbnQKLXsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnRGcmFnbWVudCAqPihbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLmdldCgpXSk7
Ci19Ci0KLS0gKERPTVRleHQgKiljcmVhdGVUZXh0Tm9kZTooTlNTdHJpbmcgKilkYXRhCi17Ci0g
ICAgQVNTRVJUKGRhdGEpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01UZXh0ICo+KFtET01O
b2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVUZXh0Tm9kZShkYXRhKS5nZXQo
KV0pOwotfQotCi0tIChET01Db21tZW50ICopY3JlYXRlQ29tbWVudDooTlNTdHJpbmcgKilkYXRh
Ci17Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Db21tZW50
ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDb21tZW50KGRh
dGEpLmdldCgpXSk7Ci19Ci0KLS0gKERPTUNEQVRBU2VjdGlvbiAqKWNyZWF0ZUNEQVRBU2VjdGlv
bjooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIGludCBleGNlcHRp
b24gPSAwOwotICAgIERPTUNEQVRBU2VjdGlvbiAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RE9NQ0RB
VEFTZWN0aW9uICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVD
REFUQVNlY3Rpb24oZGF0YSwgZXhjZXB0aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJv
cihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTVByb2Nlc3NpbmdJ
bnN0cnVjdGlvbiAqKWNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbjooTlNTdHJpbmcgKil0YXJn
ZXQgOihOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQodGFyZ2V0KTsKLSAgICBBU1NFUlQo
ZGF0YSk7Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NUHJvY2Vzc2luZ0luc3RydWN0
aW9uICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKj4oW0RP
TU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVj
dGlvbih0YXJnZXQsIGRhdGEsIGV4Y2VwdGlvbikuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01BdHRyICopY3Jl
YXRlQXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0gICAg
aW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJX
aXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUF0dHJpYnV0ZShuYW1lLCBleGNlcHRpb24pLmdl
dCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi0tIChET01FbnRpdHlSZWZlcmVuY2UgKiljcmVhdGVFbnRpdHlSZWZlcmVuY2U6KE5T
U3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBpbnQgZXhjZXB0aW9uID0g
MDsKLSAgICBET01FbnRpdHlSZWZlcmVuY2UgKnJlc3VsdCA9IHN0YXRpY19jYXN0PERPTUVudGl0
eVJlZmVyZW5jZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRl
RW50aXR5UmVmZXJlbmNlKG5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlTGlz
dCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lOihOU1N0cmluZyAqKXRhZ25hbWUKLXsKLSAgICBBU1NF
UlQodGFnbmFtZSk7Ci0gICAgcmV0dXJuIFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOltzZWxm
IF9kb2N1bWVudF0tPmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ25hbWUpLmdldCgpXTsKLX0KLQot
LSAoRE9NTm9kZSAqKWltcG9ydE5vZGU6KERPTU5vZGUgKilpbXBvcnRlZE5vZGUgOihCT09MKWRl
ZXAKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBb
RE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+aW1wb3J0Tm9kZShbaW1wb3J0ZWRO
b2RlIF9ub2RlXSwgZGVlcCwgZWMpLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50TlM6
KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lCi17Ci0g
ICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotCi0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUg
X25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkks
IHF1YWxpZmllZE5hbWUsIGVjKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihyZXN1bHQpOwotfQotCi0tIChET01B
dHRyICopY3JlYXRlQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJp
bmcgKilxdWFsaWZpZWROYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNT
RVJUKHF1YWxpZmllZE5hbWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0
ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUF0
dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgZXhjZXB0aW9uKS5nZXQoKV07
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5h
bWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFj
ZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0
IF9ub2RlTGlzdFdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhu
YW1lc3BhY2VVUkksIGxvY2FsTmFtZSkuZ2V0KCldOwotfQotCi0tIChET01FbGVtZW50ICopZ2V0
RWxlbWVudEJ5SWQ6KE5TU3RyaW5nICopZWxlbWVudElkCi17Ci0gICAgQVNTRVJUKGVsZW1lbnRJ
ZCk7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKV0pOwotfQot
Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRSYW5nZSkK
LQotLSAoRE9NUmFuZ2UgKiljcmVhdGVSYW5nZQotewotICAgIHJldHVybiBbRE9NUmFuZ2UgX3Jh
bmdlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVSYW5nZSgpLmdldCgpXTsKLX0KLQotQGVu
ZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50Q1NTKQotCi0tIChE
T01DU1NTdHlsZURlY2xhcmF0aW9uICopZ2V0T3ZlcnJpZGVTdHlsZTooRE9NRWxlbWVudCAqKWVs
dCA6KE5TU3RyaW5nICopcHNldWRvRWx0Ci17Ci0gICAgRWxlbWVudCAqZWxlbWVudCA9IFtlbHQg
X2VsZW1lbnRdOwotICAgIFN0cmluZyBwc2V1ZG9FbHRTdHJpbmcocHNldWRvRWx0KTsKLSAgICBy
ZXR1cm4gW0RPTUNTU1N0eWxlRGVjbGFyYXRpb24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOltzZWxm
IF9kb2N1bWVudF0tPmdldE92ZXJyaWRlU3R5bGUoZWxlbWVudCwgcHNldWRvRWx0U3RyaW5nLmlt
cGwoKSldOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9j
dW1lbnRTdHlsZSkKLQotLSAoRE9NU3R5bGVTaGVldExpc3QgKilzdHlsZVNoZWV0cwotewotICAg
IHJldHVybiBbRE9NU3R5bGVTaGVldExpc3QgX3N0eWxlU2hlZXRMaXN0V2l0aDpbc2VsZiBfZG9j
dW1lbnRdLT5zdHlsZVNoZWV0cygpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9N
RG9jdW1lbnQgKERPTURvY3VtZW50RXh0ZW5zaW9ucykKLQotLSAoRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiAqKWNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24KLXsKLSAgICByZXR1cm4gW0RPTUNTU1N0
eWxlRGVjbGFyYXRpb24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOltzZWxmIF9kb2N1bWVudF0tPmNy
ZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24oKS5nZXQoKV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVu
dGF0aW9uIERPTURvY3VtZW50IChXZWJDb3JlSW50ZXJuYWwpCi0KLSsgKERPTURvY3VtZW50ICop
X2RvY3VtZW50V2l0aDooRG9jdW1lbnQgKilpbXBsCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PERPTURvY3VtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19Ci0KLS0gKERvY3Vt
ZW50ICopX2RvY3VtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50ICo+KERP
TV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilfb3duZXJF
bGVtZW50Ci17Ci0gICAgcmV0dXJuIFtET01FbGVtZW50IF9lbGVtZW50V2l0aDpbc2VsZiBfZG9j
dW1lbnRdLT5vd25lckVsZW1lbnQoKV07Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUNoYXJhY3RlckRhdGEKLQotQGltcGxlbWVudGF0aW9u
IERPTUNoYXJhY3RlckRhdGEKLQotLSAoQ2hhcmFjdGVyRGF0YSAqKV9jaGFyYWN0ZXJEYXRhCi17
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENoYXJhY3RlckRhdGEgKj4oRE9NX2Nhc3Q8Tm9kZSAq
PihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgLy8gRG9jdW1l
bnRhdGlvbiBzYXlzIHdlIGNhbiByYWlzZSBhIERPTVNUUklOR19TSVpFX0VSUi4KLSAgICAvLyBI
b3dldmVyLCB0aGUgbG93ZXIgbGF5ZXIgZG9lcyBub3QgcmVwb3J0IHRoYXQgZXJyb3IgdXAgdG8g
dXMuCi0gICAgcmV0dXJuIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+ZGF0YSgpOwotfQotCi0tICh2
b2lkKXNldERhdGE6KE5TU3RyaW5nICopZGF0YQotewotICAgIEFTU0VSVChkYXRhKTsKLSAgICAK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPnNl
dERhdGEoZGF0YSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHVuc2ln
bmVkKWxlbmd0aAotewotICAgIHJldHVybiBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPmxlbmd0aCgp
OwotfQotCi0tIChOU1N0cmluZyAqKXN1YnN0cmluZ0RhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVu
c2lnbmVkKWNvdW50Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgTlNTdHJpbmcg
KnJlc3VsdCA9IFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+c3Vic3RyaW5nRGF0YShvZmZzZXQsIGNv
dW50LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi0tICh2b2lkKWFwcGVuZERhdGE6KE5TU3RyaW5nICopYXJnCi17Ci0gICAgQVNTRVJUKGFy
Zyk7Ci0gICAgCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3Rl
ckRhdGFdLT5hcHBlbmREYXRhKGFyZywgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19
Ci0KLS0gKHZvaWQpaW5zZXJ0RGF0YToodW5zaWduZWQpb2Zmc2V0IDooTlNTdHJpbmcgKilhcmcK
LXsKLSAgICBBU1NFUlQoYXJnKTsKLSAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPmluc2VydERhdGEob2Zmc2V0LCBhcmcsIGVjKTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKWRlbGV0ZURhdGE6KHVuc2lnbmVk
KW9mZnNldCA6KHVuc2lnbmVkKSBjb3VudAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+ZGVsZXRlRGF0YShvZmZzZXQsIGNvdW50LCBlYyk7
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClyZXBsYWNlRGF0YToodW5z
aWduZWQpb2Zmc2V0IDoodW5zaWduZWQpY291bnQgOihOU1N0cmluZyAqKWFyZwotewotICAgIEFT
U0VSVChhcmcpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJh
Y3RlckRhdGFdLT5yZXBsYWNlRGF0YShvZmZzZXQsIGNvdW50LCBhcmcsIGVjKTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZWMpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyBET01BdHRyCi0KLUBpbXBsZW1lbnRhdGlvbiBET01BdHRyCi0KLS0gKE5T
U3RyaW5nICopbmFtZQotewotICAgIHJldHVybiBbc2VsZiBfYXR0cl0tPm5vZGVOYW1lKCk7Ci19
Ci0KLS0gKEJPT0wpc3BlY2lmaWVkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9hdHRyXS0+c3BlY2lm
aWVkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2F0
dHJdLT5ub2RlVmFsdWUoKTsKLX0KLQotLSAodm9pZClzZXRWYWx1ZTooTlNTdHJpbmcgKil2YWx1
ZQotewotICAgIEFTU0VSVCh2YWx1ZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBbc2VsZiBfYXR0cl0tPnNldFZhbHVlKHZhbHVlLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLX0KLQotLSAoRE9NRWxlbWVudCAqKW93bmVyRWxlbWVudAotewotICAgIHJldHVybiBb
RE9NRWxlbWVudCBfZWxlbWVudFdpdGg6W3NlbGYgX2F0dHJdLT5vd25lckVsZW1lbnQoKV07Ci19
Ci0KLS0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZQotewotICAgIHJldHVybiBbRE9N
Q1NTU3R5bGVEZWNsYXJhdGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6IFtzZWxmIF9hdHRyXS0+
c3R5bGUoKV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTUF0dHIgKFdlYkNvcmVJ
bnRlcm5hbCkKLQotKyAoRE9NQXR0ciAqKV9hdHRyV2l0aDooQXR0ciAqKWltcGwKLXsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RE9NQXR0ciAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwot
fQotCi0tIChBdHRyICopX2F0dHIKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXR0ciAqPihE
T01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01FbGVtZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBE
T01FbGVtZW50Ci0KLS0gKE5TU3RyaW5nICopdGFnTmFtZQotewotICAgIHJldHVybiBbc2VsZiBf
ZWxlbWVudF0tPm5vZGVOYW1lKCk7Ci19Ci0KLS0gKERPTU5hbWVkTm9kZU1hcCAqKWF0dHJpYnV0
ZXMKLXsKLSAgICByZXR1cm4gW0RPTU5hbWVkTm9kZU1hcCBfbmFtZWROb2RlTWFwV2l0aDpbc2Vs
ZiBfZWxlbWVudF0tPmF0dHJpYnV0ZXMoKV07Ci19Ci0KLS0gKE5TU3RyaW5nICopZ2V0QXR0cmli
dXRlOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0gICAgcmV0dXJuIFtz
ZWxmIF9lbGVtZW50XS0+Z2V0QXR0cmlidXRlKG5hbWUpOwotfQotCi0tICh2b2lkKXNldEF0dHJp
YnV0ZTooTlNTdHJpbmcgKiluYW1lIDooTlNTdHJpbmcgKil2YWx1ZQotewotICAgIEFTU0VSVChu
YW1lKTsKLSAgICBBU1NFUlQodmFsdWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAg
W3NlbGYgX2VsZW1lbnRdLT5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIGV4Y2VwdGlvbik7Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci19Ci0KLS0gKHZvaWQpcmVtb3ZlQXR0cmli
dXRlOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7Ci0KLSAgICBpbnQgZXhj
ZXB0aW9uID0gMDsKLSAgICBbc2VsZiBfZWxlbWVudF0tPnJlbW92ZUF0dHJpYnV0ZShuYW1lLCBl
eGNlcHRpb24pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotfQotCi0tIChET01B
dHRyICopZ2V0QXR0cmlidXRlTm9kZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5h
bWUpOwotCi0gICAgcmV0dXJuIFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPmdl
dEF0dHJpYnV0ZU5vZGUobmFtZSkuZ2V0KCldOwotfQotCi0tIChET01BdHRyICopc2V0QXR0cmli
dXRlTm9kZTooRE9NQXR0ciAqKW5ld0F0dHIKLXsKLSAgICBBU1NFUlQobmV3QXR0cik7Ci0KLSAg
ICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0
cldpdGg6W3NlbGYgX2VsZW1lbnRdLT5zZXRBdHRyaWJ1dGVOb2RlKFtuZXdBdHRyIF9hdHRyXSwg
ZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NQXR0ciAqKXJlbW92ZUF0dHJpYnV0ZU5vZGU6KERP
TUF0dHIgKilvbGRBdHRyCi17Ci0gICAgQVNTRVJUKG9sZEF0dHIpOwotCi0gICAgaW50IGV4Y2Vw
dGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxm
IF9lbGVtZW50XS0+cmVtb3ZlQXR0cmlidXRlTm9kZShbb2xkQXR0ciBfYXR0cl0sIGV4Y2VwdGlv
bikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWU6KE5TU3Ry
aW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLQotICAgIHJldHVybiBbRE9NTm9kZUxp
c3QgX25vZGVMaXN0V2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEVsZW1lbnRzQnlUYWdOYW1lKG5h
bWUpLmdldCgpXTsKLX0KLQotLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcg
KiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VSVChuYW1l
c3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtzZWxmIF9l
bGVtZW50XS0+Z2V0QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwotfQotCi0t
ICh2b2lkKXNldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5n
ICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICBBU1NFUlQobmFtZXNw
YWNlVVJJKTsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7Ci0gICAgQVNTRVJUKHZhbHVlKTsK
LQotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIFtzZWxmIF9lbGVtZW50XS0+c2V0QXR0cmli
dXRlTlMobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCB2YWx1ZSwgZXhjZXB0aW9uKTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLX0KLQotLSAodm9pZClyZW1vdmVBdHRyaWJ1
dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewot
ICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAg
aW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5yZW1vdmVBdHRyaWJ1dGVO
UyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgZXhjZXB0aW9uKTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZXhjZXB0aW9uKTsKLX0KLQotLSAoRE9NQXR0ciAqKWdldEF0dHJpYnV0ZU5vZGVOUzooTlNT
dHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VS
VChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtE
T01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0ZU5vZGVOUyhuYW1l
c3BhY2VVUkksIGxvY2FsTmFtZSkuZ2V0KCldOwotfQotCi0tIChET01BdHRyICopc2V0QXR0cmli
dXRlTm9kZU5TOihET01BdHRyICopbmV3QXR0cgotewotICAgIEFTU0VSVChuZXdBdHRyKTsKLQot
ICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9h
dHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZU5vZGVOUyhbbmV3QXR0ciBfYXR0
cl0sIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRh
Z05hbWVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQot
ewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0g
ICAgcmV0dXJuIFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0
RWxlbWVudHNCeVRhZ05hbWVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkuZ2V0KCldOwotfQot
Ci0tIChCT09MKWhhc0F0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5h
bWUpOwotCi0gICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50XS0+aGFzQXR0cmlidXRlKG5hbWUpOwot
fQotCi0tIChCT09MKWhhc0F0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5T
U3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNT
RVJUKGxvY2FsTmFtZSk7Ci0KLSAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5oYXNBdHRyaWJ1
dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7Ci19Ci0KLS0gKHZvaWQpZm9jdXMKLXsKLSAg
ICBbc2VsZiBfZWxlbWVudF0tPmZvY3VzKCk7Ci19Ci0KLS0gKHZvaWQpYmx1cgotewotICAgIFtz
ZWxmIF9lbGVtZW50XS0+Ymx1cigpOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01F
bGVtZW50IChET01FbGVtZW50Q1NTSW5saW5lU3R5bGUpCi0KLS0gKERPTUNTU1N0eWxlRGVjbGFy
YXRpb24gKilzdHlsZQotewotICAgIHJldHVybiBbRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBfc3R5
bGVEZWNsYXJhdGlvbldpdGg6W3NlbGYgX2VsZW1lbnRdLT5zdHlsZSgpXTsKLX0KLQotQGVuZAot
Ci1AaW1wbGVtZW50YXRpb24gRE9NRWxlbWVudCAoRE9NRWxlbWVudEV4dGVuc2lvbnMpCi0KLS0g
KE5TSW1hZ2UqKWltYWdlCi17Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IFtzZWxmIF9l
bGVtZW50XS0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzSW1h
Z2UoKSkgewotICAgICAgICBSZW5kZXJJbWFnZSogaW1nID0gc3RhdGljX2Nhc3Q8UmVuZGVySW1h
Z2UqPihyZW5kZXJlcik7Ci0gICAgICAgIGlmIChpbWctPmNhY2hlZEltYWdlKCkgJiYgIWltZy0+
Y2FjaGVkSW1hZ2UoKS0+aXNFcnJvckltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gaW1nLT5j
YWNoZWRJbWFnZSgpLT5pbWFnZSgpLT5nZXROU0ltYWdlKCk7Ci0gICAgfQotICAgIHJldHVybiBu
aWw7Ci19Ci0KLS0gKHZvaWQpc2Nyb2xsSW50b1ZpZXc6KEJPT0wpYWxpZ25Ub3AKLXsKLSAgICBb
c2VsZiBfZWxlbWVudF0tPnNjcm9sbEludG9WaWV3KGFsaWduVG9wKTsKLX0KLQotLSAodm9pZClz
Y3JvbGxJbnRvVmlld0lmTmVlZGVkOihCT09MKWNlbnRlcklmTmVlZGVkCi17Ci0gICAgW3NlbGYg
X2VsZW1lbnRdLT5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKGNlbnRlcklmTmVlZGVkKTsKLX0KLQot
QGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRWxlbWVudCAoV2ViQ29yZUludGVybmFsKQotCi0r
IChET01FbGVtZW50ICopX2VsZW1lbnRXaXRoOihFbGVtZW50ICopaW1wbAotewotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7Ci19
Ci0KLS0gKEVsZW1lbnQgKilfZWxlbWVudAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVt
ZW50ICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLUBlbmQKLQotQGltcGxl
bWVudGF0aW9uIERPTUVsZW1lbnQgKFdlYlByaXZhdGUpCi0KLS0gKE5TRm9udCAqKV9mb250Ci17
Ci0gICAgUmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9lbGVtZW50XS0+cmVuZGVyZXIo
KTsKLSAgICBpZiAocmVuZGVyZXIpIHsKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5zdHlsZSgp
LT5mb250KCkuZ2V0TlNGb250KCk7Ci0gICAgfQotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKE5T
RGF0YSopX2ltYWdlVElGRlJlcHJlc2VudGF0aW9uCi17Ci0gICAgUmVuZGVyT2JqZWN0ICpyZW5k
ZXJlciA9IFtzZWxmIF9lbGVtZW50XS0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIgJiYg
cmVuZGVyZXItPmlzSW1hZ2UoKSkgewotICAgICAgICBSZW5kZXJJbWFnZSogaW1nID0gc3RhdGlj
X2Nhc3Q8UmVuZGVySW1hZ2UqPihyZW5kZXJlcik7Ci0gICAgICAgIGlmIChpbWctPmNhY2hlZElt
YWdlKCkgJiYgIWltZy0+Y2FjaGVkSW1hZ2UoKS0+aXNFcnJvckltYWdlKCkpCi0gICAgICAgICAg
ICByZXR1cm4gKE5TRGF0YSopKGltZy0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKS0+Z2V0VElGRlJl
cHJlc2VudGF0aW9uKCkpOwotICAgIH0KLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChOU1VSTCAq
KV9nZXRVUkxBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsK
LSAgICBFbGVtZW50ICplID0gW3NlbGYgX2VsZW1lbnRdOwotICAgIEFTU0VSVChlKTsKLSAgICBy
ZXR1cm4gS1VSTChlLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChwYXJzZVVSTChlLT5nZXRBdHRy
aWJ1dGUobmFtZSkpLmRlcHJlY2F0ZWRTdHJpbmcoKSkpLmdldE5TVVJMKCk7Ci19Ci0KLS0gKHZv
aWQgKilfTlBPYmplY3QKLXsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gW3NlbGYgX2VsZW1lbnRd
OwotICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGFwcGxldFRhZykgfHwgZWxlbWVudC0+aGFz
VGFnTmFtZShlbWJlZFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqPihlbGVt
ZW50KS0+Z2V0TlBPYmplY3QoKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiAwOwotfQotCi0t
IChCT09MKWlzRm9jdXNlZAotewotICAgIEVsZW1lbnQqIGltcGwgPSBbc2VsZiBfZWxlbWVudF07
Ci0gICAgaWYgKGltcGwtPmRvY3VtZW50KCktPmZvY3VzTm9kZSgpID09IGltcGwpCi0gICAgICAg
IHJldHVybiBZRVM7Ci0gICAgcmV0dXJuIE5POwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01UZXh0Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01U
ZXh0Ci0KLS0gKFRleHQgKilfdGV4dAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0ICo+
KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKERPTVRleHQgKilzcGxpdFRl
eHQ6KHVuc2lnbmVkKW9mZnNldAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERP
TU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfdGV4dF0tPnNwbGl0VGV4
dChvZmZzZXQsIGVjKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RE9NVGV4dCAqPihyZXN1bHQpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Db21tZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBE
T01Db21tZW50Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LS8vIERPTUNEQVRBU2VjdGlvbgotCi1AaW1wbGVtZW50YXRpb24gRE9NQ0RBVEFTZWN0aW9uCi0K
LUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTURvY3Vt
ZW50VHlwZQotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnRUeXBlCi0KLS0gKE5TU3RyaW5n
ICopbmFtZQotewotICAgIHJldHVybiBbc2VsZiBfZG9jdW1lbnRUeXBlXS0+cHVibGljSWQoKTsK
LX0KLQotLSAoRE9NTmFtZWROb2RlTWFwICopZW50aXRpZXMKLXsKLSAgICByZXR1cm4gW0RPTU5h
bWVkTm9kZU1hcCBfbmFtZWROb2RlTWFwV2l0aDpbc2VsZiBfZG9jdW1lbnRUeXBlXS0+ZW50aXRp
ZXMoKV07Ci19Ci0KLS0gKERPTU5hbWVkTm9kZU1hcCAqKW5vdGF0aW9ucwotewotICAgIHJldHVy
biBbRE9NTmFtZWROb2RlTWFwIF9uYW1lZE5vZGVNYXBXaXRoOltzZWxmIF9kb2N1bWVudFR5cGVd
LT5ub3RhdGlvbnMoKV07Ci19Ci0KLS0gKE5TU3RyaW5nICopcHVibGljSWQKLXsKLSAgICByZXR1
cm4gW3NlbGYgX2RvY3VtZW50VHlwZV0tPnB1YmxpY0lkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICop
c3lzdGVtSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2RvY3VtZW50VHlwZV0tPnN5c3RlbUlkKCk7
Ci19Ci0KLS0gKE5TU3RyaW5nICopaW50ZXJuYWxTdWJzZXQKLXsKLSAgICByZXR1cm4gW3NlbGYg
X2RvY3VtZW50VHlwZV0tPmludGVybmFsU3Vic2V0KCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVu
dGF0aW9uIERPTURvY3VtZW50VHlwZSAoV2ViQ29yZUludGVybmFsKQotCi0tIChEb2N1bWVudFR5
cGUgKilfZG9jdW1lbnRUeXBlCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50VHlw
ZSAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Ob3RhdGlvbgotCi1AaW1wbGVtZW50
YXRpb24gRE9NTm90YXRpb24KLQotLSAoTm90YXRpb24gKilfbm90YXRpb24KLXsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Tm90YXRpb24gKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsK
LX0KLQotLSAoTlNTdHJpbmcgKilwdWJsaWNJZAotewotICAgIHJldHVybiBbc2VsZiBfbm90YXRp
b25dLT5wdWJsaWNJZCgpOwotfQotCi0tIChOU1N0cmluZyAqKXN5c3RlbUlkCi17Ci0gICAgcmV0
dXJuIFtzZWxmIF9ub3RhdGlvbl0tPnN5c3RlbUlkKCk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUVudGl0eQotCi1AaW1wbGVtZW50YXRp
b24gRE9NRW50aXR5Ci0KLS0gKEVudGl0eSAqKV9lbnRpdHkKLXsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RW50aXR5ICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5T
U3RyaW5nICopcHVibGljSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2VudGl0eV0tPnB1YmxpY0lk
KCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopc3lzdGVtSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX2Vu
dGl0eV0tPnN5c3RlbUlkKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbm90YXRpb25OYW1lCi17Ci0g
ICAgcmV0dXJuIFtzZWxmIF9lbnRpdHldLT5ub3RhdGlvbk5hbWUoKTsKLX0KLQotQGVuZAotCi0v
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NRW50aXR5UmVmZXJlbmNl
Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01FbnRpdHlSZWZlcmVuY2UKLQotQGVuZAotCi0vLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9u
Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KLQotLSAoUHJvY2Vz
c2luZ0luc3RydWN0aW9uICopX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbgotewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50
ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcgKil0YXJnZXQKLXsKLSAgICByZXR1cm4gW3NlbGYg
X3Byb2Nlc3NpbmdJbnN0cnVjdGlvbl0tPnRhcmdldCgpOwotfQotCi0tIChOU1N0cmluZyAqKWRh
dGEKLXsKLSAgICByZXR1cm4gW3NlbGYgX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbl0tPmRhdGEoKTsK
LX0KLQotLSAodm9pZClzZXREYXRhOihOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQoZGF0
YSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcHJvY2Vzc2luZ0lu
c3RydWN0aW9uXS0+c2V0RGF0YShkYXRhLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsK
LX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9N
UmFuZ2UKLQotQGltcGxlbWVudGF0aW9uIERPTVJhbmdlCi0KLS0gKHZvaWQpZGVhbGxvYwotewot
ICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8UmFuZ2UgKj4oX2ludGVybmFs
KS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZp
bmFsaXplCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxSYW5nZSAq
PihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQot
Ci0tIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCi17Ci0gICAgaWYgKCFfaW50ZXJuYWwpCi0gICAg
ICAgIHJldHVybiBAIjxET01SYW5nZTogbnVsbD4iOwotICAgIHJldHVybiBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIjxET01SYW5nZTogJUAgJWQgJUAgJWQ+IiwKLSAgICAgICAgW3NlbGYg
c3RhcnRDb250YWluZXJdLCBbc2VsZiBzdGFydE9mZnNldF0sCi0gICAgICAgIFtzZWxmIGVuZENv
bnRhaW5lcl0sIFtzZWxmIGVuZE9mZnNldF1dOwotfQotCi0tIChET01Ob2RlICopc3RhcnRDb250
YWluZXIKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQg
PSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3JhbmdlXS0+c3RhcnRDb250YWluZXIoZWMpXTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKGlu
dClzdGFydE9mZnNldAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGludCByZXN1
bHQgPSBbc2VsZiBfcmFuZ2VdLT5zdGFydE9mZnNldChlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01Ob2RlICopZW5kQ29udGFpbmVy
Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RP
TU5vZGUgX25vZGVXaXRoOltzZWxmIF9yYW5nZV0tPmVuZENvbnRhaW5lcihlYyldOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoaW50KWVuZE9m
ZnNldAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGludCByZXN1bHQgPSBbc2Vs
ZiBfcmFuZ2VdLT5lbmRPZmZzZXQoZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoQk9PTCljb2xsYXBzZWQKLXsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBCT09MIHJlc3VsdCA9IFtzZWxmIF9yYW5nZV0tPmNvbGxhcHNlZChl
Yyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0t
IChET01Ob2RlICopY29tbW9uQW5jZXN0b3JDb250YWluZXIKLXsKLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYg
X3JhbmdlXS0+Y29tbW9uQW5jZXN0b3JDb250YWluZXIoZWMpXTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKHZvaWQpc2V0U3RhcnQ6KERPTU5v
ZGUgKilyZWZOb2RlIDooaW50KW9mZnNldAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIFtzZWxmIF9yYW5nZV0tPnNldFN0YXJ0KFtyZWZOb2RlIF9ub2RlXSwgb2Zmc2V0LCBlYyk7
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClzZXRFbmQ6KERPTU5vZGUg
KilyZWZOb2RlIDooaW50KW9mZnNldAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IFtzZWxmIF9yYW5nZV0tPnNldEVuZChbcmVmTm9kZSBfbm9kZV0sIG9mZnNldCwgZWMpOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc2V0U3RhcnRCZWZvcmU6KERPTU5v
ZGUgKilyZWZOb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3Jh
bmdlXS0+c2V0U3RhcnRCZWZvcmUoW3JlZk5vZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKLX0KLQotLSAodm9pZClzZXRTdGFydEFmdGVyOihET01Ob2RlICopcmVmTm9k
ZQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9yYW5nZV0tPnNldFN0
YXJ0QWZ0ZXIoW3JlZk5vZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsK
LX0KLQotLSAodm9pZClzZXRFbmRCZWZvcmU6KERPTU5vZGUgKilyZWZOb2RlCi17Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+c2V0RW5kQmVmb3JlKFtyZWZO
b2RlIF9ub2RlXSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQp
c2V0RW5kQWZ0ZXI6KERPTU5vZGUgKilyZWZOb2RlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+c2V0RW5kQWZ0ZXIoW3JlZk5vZGUgX25vZGVdLCBlYyk7
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodm9pZCljb2xsYXBzZTooQk9PTCl0
b1N0YXJ0Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+
Y29sbGFwc2UodG9TdGFydCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0g
KHZvaWQpc2VsZWN0Tm9kZTooRE9NTm9kZSAqKXJlZk5vZGUKLXsKLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5zZWxlY3ROb2RlKFtyZWZOb2RlIF9ub2RlXSwg
ZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc2VsZWN0Tm9kZUNv
bnRlbnRzOihET01Ob2RlICopcmVmTm9kZQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIFtzZWxmIF9yYW5nZV0tPnNlbGVjdE5vZGVDb250ZW50cyhbcmVmTm9kZSBfbm9kZV0sIGVj
KTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tIChzaG9ydCljb21wYXJlQm91bmRh
cnlQb2ludHM6KHVuc2lnbmVkIHNob3J0KWhvdyA6KERPTVJhbmdlICopc291cmNlUmFuZ2UKLXsK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBzaG9ydCByZXN1bHQgPSBbc2VsZiBfcmFu
Z2VdLT5jb21wYXJlQm91bmRhcnlQb2ludHMoc3RhdGljX2Nhc3Q8UmFuZ2U6OkNvbXBhcmVIb3c+
KGhvdyksIFtzb3VyY2VSYW5nZSBfcmFuZ2VdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVj
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKWRlbGV0ZUNvbnRlbnRzCi17Ci0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+ZGVsZXRlQ29udGVu
dHMoZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKERPTURvY3VtZW50RnJh
Z21lbnQgKilleHRyYWN0Q29udGVudHMKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBET01Eb2N1bWVudEZyYWdtZW50ICpyZXN1bHQgPSBbRE9NRG9jdW1lbnRGcmFnbWVudCBfZG9j
dW1lbnRGcmFnbWVudFdpdGg6W3NlbGYgX3JhbmdlXS0+ZXh0cmFjdENvbnRlbnRzKGVjKS5nZXQo
KV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0t
IChET01Eb2N1bWVudEZyYWdtZW50ICopY2xvbmVDb250ZW50cwotewotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIERPTURvY3VtZW50RnJhZ21lbnQgKnJlc3VsdCA9IFtET01Eb2N1bWVu
dEZyYWdtZW50IF9kb2N1bWVudEZyYWdtZW50V2l0aDpbc2VsZiBfcmFuZ2VdLT5jbG9uZUNvbnRl
bnRzKGVjKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi0tICh2b2lkKWluc2VydE5vZGU6KERPTU5vZGUgKiluZXdOb2RlCi17Ci0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3JhbmdlXS0+aW5zZXJ0Tm9kZShbbmV3
Tm9kZSBfbm9kZV0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lk
KXN1cnJvdW5kQ29udGVudHM6KERPTU5vZGUgKiluZXdQYXJlbnQKLXsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcmFuZ2VdLT5zdXJyb3VuZENvbnRlbnRzKFtuZXdQYXJl
bnQgX25vZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoRE9NUmFu
Z2UgKiljbG9uZVJhbmdlCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NUmFu
Z2UgKnJlc3VsdCA9IFtET01SYW5nZSBfcmFuZ2VXaXRoOltzZWxmIF9yYW5nZV0tPmNsb25lUmFu
Z2UoZWMpLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLS0gKE5TU3RyaW5nICopdG9TdHJpbmcKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBOU1N0cmluZyAqcmVzdWx0ID0gW3NlbGYgX3JhbmdlXS0+dG9TdHJpbmcoZWMp
OwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAo
TlNTdHJpbmcgKil0ZXh0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9yYW5nZV0tPnRleHQoKTsKLX0K
LQotLSAodm9pZClkZXRhY2gKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2Vs
ZiBfcmFuZ2VdLT5kZXRhY2goZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLUBl
bmQKLQotQGltcGxlbWVudGF0aW9uIERPTVJhbmdlIChXZWJDb3JlSW50ZXJuYWwpCi0KLS0gKGlk
KV9pbml0V2l0aFJhbmdlOihSYW5nZSAqKWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAg
ICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVy
bmFsICo+KGltcGwpOwotICAgIGltcGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwg
aW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLSsgKERPTVJhbmdlICopX3JhbmdlV2l0aDoo
UmFuZ2UgKilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAg
IAotICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3Jh
cHBlcihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2Nh
Y2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tz
ZWxmIGFsbG9jXSBfaW5pdFdpdGhSYW5nZTppbXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKFJh
bmdlICopX3JhbmdlCi17Ci0gICAgcmV0dXJuIERPTV9jYXN0PFJhbmdlICo+KF9pbnRlcm5hbCk7
Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTVJhbmdlIChXZWJQcml2YXRlKQotCi0t
IChOU1N0cmluZyAqKV90ZXh0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIHRleHRdOwotfQotCi1AZW5k
Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlRmlsdGVyCi0K
LS0gKGlkKV9pbml0V2l0aE5vZGVGaWx0ZXI6KE5vZGVGaWx0ZXIgKilpbXBsCi17Ci0gICAgQVNT
RVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2Fz
dDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRE
T01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01Ob2Rl
RmlsdGVyICopX25vZGVGaWx0ZXJXaXRoOihOb2RlRmlsdGVyICopaW1wbAotewotICAgIGlmICgh
aW1wbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsK
LSAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hl
ZEluc3RhbmNlKQotICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKLSAgICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTm9kZUZp
bHRlcjppbXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKE5vZGVGaWx0ZXIgKilfbm9kZUZpbHRl
cgotewotICAgIHJldHVybiBET01fY2FzdDxOb2RlRmlsdGVyICo+KF9pbnRlcm5hbCk7Ci19Ci0K
LS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIERPTV9jYXN0
PE5vZGVGaWx0ZXIgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZGVhbGxvY107
Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAoX2ludGVybmFsKQotICAgICAgICBE
T01fY2FzdDxOb2RlRmlsdGVyICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgW3N1cGVyIGZp
bmFsaXplXTsKLX0KLQotLSAoc2hvcnQpYWNjZXB0Tm9kZTooRE9NTm9kZSAqKW5vZGUKLXsKLSAg
ICByZXR1cm4gW3NlbGYgX25vZGVGaWx0ZXJdLT5hY2NlcHROb2RlKFtub2RlIF9ub2RlXSk7Ci19
Ci0KLUBlbmQKLQotCi1AaW1wbGVtZW50YXRpb24gRE9NTm9kZUl0ZXJhdG9yCi0KLS0gKGlkKV9p
bml0V2l0aE5vZGVJdGVyYXRvcjooTm9kZUl0ZXJhdG9yICopaW1wbCBmaWx0ZXI6KGlkIDxET01O
b2RlRmlsdGVyPilmaWx0ZXIKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2lu
aXRdOwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwp
OwotICAgIGltcGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAg
bV9maWx0ZXIgPSBbZmlsdGVyIHJldGFpbl07Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKE5v
ZGVJdGVyYXRvciAqKV9ub2RlSXRlcmF0b3IKLXsKLSAgICByZXR1cm4gRE9NX2Nhc3Q8Tm9kZUl0
ZXJhdG9yICo+KF9pbnRlcm5hbCk7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFttX2Zp
bHRlciByZWxlYXNlXTsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIFtzZWxmIGRldGFj
aF07Ci0gICAgICAgIERPTV9jYXN0PE5vZGVJdGVyYXRvciAqPihfaW50ZXJuYWwpLT5kZXJlZigp
OwotICAgIH0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsK
LSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIFtzZWxmIGRldGFjaF07Ci0gICAgICAgIERP
TV9jYXN0PE5vZGVJdGVyYXRvciAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBb
c3VwZXIgZmluYWxpemVdOwotfQotCi0tIChET01Ob2RlICopcm9vdAotewotICAgIHJldHVybiBb
RE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVJdGVyYXRvcl0tPnJvb3QoKV07Ci19Ci0KLS0g
KHVuc2lnbmVkKXdoYXRUb1Nob3cKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVJdGVyYXRvcl0t
PndoYXRUb1Nob3coKTsKLX0KLQotLSAoaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgotewotICAg
IGlmIChtX2ZpbHRlcikKLSAgICAgICAgLy8gVGhpcyBub2RlIGl0ZXJhdG9yIHdhcyBjcmVhdGVk
IGZyb20gdGhlIG9iamMgc2lkZQotICAgICAgICByZXR1cm4gW1ttX2ZpbHRlciByZXRhaW5dIGF1
dG9yZWxlYXNlXTsKLQotICAgIC8vIFRoaXMgbm9kZSBpdGVyYXRvciB3YXMgY3JlYXRlZCBmcm9t
IHRoZSBjKysgc2lkZQotICAgIHJldHVybiBbRE9NTm9kZUZpbHRlciBfbm9kZUZpbHRlcldpdGg6
W3NlbGYgX25vZGVJdGVyYXRvcl0tPmZpbHRlcigpXTsKLX0KLQotLSAoQk9PTClleHBhbmRFbnRp
dHlSZWZlcmVuY2VzCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlSXRlcmF0b3JdLT5leHBhbmRF
bnRpdHlSZWZlcmVuY2VzKCk7Ci19Ci0KLS0gKERPTU5vZGUgKiluZXh0Tm9kZQotewotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2Rl
V2l0aDpbc2VsZiBfbm9kZUl0ZXJhdG9yXS0+bmV4dE5vZGUoZWMpXTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUgKilwcmV2aW91
c05vZGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQg
PSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVJdGVyYXRvcl0tPnByZXZpb3VzTm9kZShl
YyldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
LSAodm9pZClkZXRhY2gKLXsKLSAgICBbc2VsZiBfbm9kZUl0ZXJhdG9yXS0+ZGV0YWNoKCk7Ci19
Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGVJdGVyYXRvcihXZWJDb3JlSW50ZXJu
YWwpCi0KLSsgKERPTU5vZGVJdGVyYXRvciAqKV9ub2RlSXRlcmF0b3JXaXRoOihOb2RlSXRlcmF0
b3IgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgotewotICAgIGlmICgh
aW1wbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsK
LSAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hl
ZEluc3RhbmNlKQotICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKLSAgICAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTm9kZUl0
ZXJhdG9yOmltcGwgZmlsdGVyOmZpbHRlcl0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLUBp
bXBsZW1lbnRhdGlvbiBET01UcmVlV2Fsa2VyCi0KLS0gKGlkKV9pbml0V2l0aFRyZWVXYWxrZXI6
KFRyZWVXYWxrZXIgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgotewot
ICAgIEFTU0VSVChpbXBsKTsKLQotICAgIFtzdXBlciBfaW5pdF07Ci0gICAgX2ludGVybmFsID0g
RE9NX2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwgKj4oaW1wbCk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0g
ICAgYWRkRE9NV3JhcHBlcihzZWxmLCBpbXBsKTsKLSAgICBtX2ZpbHRlciA9IFtmaWx0ZXIgcmV0
YWluXTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAoVHJlZVdhbGtlciAqKV90cmVlV2Fsa2Vy
Ci17Ci0gICAgcmV0dXJuIERPTV9jYXN0PFRyZWVXYWxrZXIgKj4oX2ludGVybmFsKTsKLX0KLQot
LSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKG1fZmlsdGVyKQotICAgICAgICBbbV9maWx0ZXIg
cmVsZWFzZV07Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxUcmVlV2Fs
a2VyICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsK
LX0KLQotLSAodm9pZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAg
RE9NX2Nhc3Q8VHJlZVdhbGtlciAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBb
c3VwZXIgZmluYWxpemVdOwotfQotCi0tIChET01Ob2RlICopcm9vdAotewotICAgIHJldHVybiBb
RE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5yb290KCldOwotfQotCi0tICh1
bnNpZ25lZCl3aGF0VG9TaG93Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF90cmVlV2Fsa2VyXS0+d2hh
dFRvU2hvdygpOwotfQotCi0tIChpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17Ci0gICAgaWYg
KG1fZmlsdGVyKQotICAgICAgICAvLyBUaGlzIHRyZWUgd2Fsa2VyIHdhcyBjcmVhdGVkIGZyb20g
dGhlIG9iamMgc2lkZQotICAgICAgICByZXR1cm4gW1ttX2ZpbHRlciByZXRhaW5dIGF1dG9yZWxl
YXNlXTsKLQotICAgIC8vIFRoaXMgdHJlZSB3YWxrZXIgd2FzIGNyZWF0ZWQgZnJvbSB0aGUgYysr
IHNpZGUKLSAgICByZXR1cm4gW0RPTU5vZGVGaWx0ZXIgX25vZGVGaWx0ZXJXaXRoOltzZWxmIF90
cmVlV2Fsa2VyXS0+ZmlsdGVyKCldOwotfQotCi0tIChCT09MKWV4cGFuZEVudGl0eVJlZmVyZW5j
ZXMKLXsKLSAgICByZXR1cm4gW3NlbGYgX3RyZWVXYWxrZXJdLT5leHBhbmRFbnRpdHlSZWZlcmVu
Y2VzKCk7Ci19Ci0KLS0gKERPTU5vZGUgKiljdXJyZW50Tm9kZQotewotICAgIHJldHVybiBbRE9N
Tm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5jdXJyZW50Tm9kZSgpXTsKLX0KLQot
LSAodm9pZClzZXRDdXJyZW50Tm9kZTooRE9NTm9kZSAqKWN1cnJlbnROb2RlCi17Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX3RyZWVXYWxrZXJdLT5zZXRDdXJyZW50Tm9k
ZShbY3VycmVudE5vZGUgX25vZGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0K
LQotLSAoRE9NTm9kZSAqKXBhcmVudE5vZGUKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVX
aXRoOltzZWxmIF90cmVlV2Fsa2VyXS0+cGFyZW50Tm9kZSgpXTsKLX0KLQotLSAoRE9NTm9kZSAq
KWZpcnN0Q2hpbGQKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90cmVl
V2Fsa2VyXS0+Zmlyc3RDaGlsZCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKWxhc3RDaGlsZAotewot
ICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX3RyZWVXYWxrZXJdLT5sYXN0Q2hp
bGQoKV07Ci19Ci0KLS0gKERPTU5vZGUgKilwcmV2aW91c1NpYmxpbmcKLXsKLSAgICByZXR1cm4g
W0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90cmVlV2Fsa2VyXS0+cHJldmlvdXNTaWJsaW5nKCld
OwotfQotCi0tIChET01Ob2RlICopbmV4dFNpYmxpbmcKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUg
X25vZGVXaXRoOltzZWxmIF90cmVlV2Fsa2VyXS0+bmV4dFNpYmxpbmcoKV07Ci19Ci0KLS0gKERP
TU5vZGUgKilwcmV2aW91c05vZGUKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltz
ZWxmIF90cmVlV2Fsa2VyXS0+cHJldmlvdXNOb2RlKCldOwotfQotCi0tIChET01Ob2RlICopbmV4
dE5vZGUKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF90cmVlV2Fsa2Vy
XS0+bmV4dE5vZGUoKV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTVRyZWVXYWxr
ZXIgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NVHJlZVdhbGtlciAqKV90cmVlV2Fsa2VyV2l0
aDooVHJlZVdhbGtlciAqKWltcGwgZmlsdGVyOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCi17
Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hl
ZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAg
ICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJl
dGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5p
dFdpdGhUcmVlV2Fsa2VyOmltcGwgZmlsdGVyOmZpbHRlcl0gYXV0b3JlbGVhc2VdOwotfQotCi1A
ZW5kCi0KLWNsYXNzIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uIDogcHVibGljIE5vZGVGaWx0ZXJD
b25kaXRpb24gCi17Ci1wdWJsaWM6Ci0gICAgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oaWQgPERP
TU5vZGVGaWx0ZXI+KTsKLSAgICB2aXJ0dWFsIH5PYmpDTm9kZUZpbHRlckNvbmRpdGlvbigpOwot
ICAgIHZpcnR1YWwgc2hvcnQgYWNjZXB0Tm9kZShOb2RlKikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0g
ICAgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oY29uc3QgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24g
Jik7Ci0gICAgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24gJm9wZXJhdG9yPShjb25zdCBPYmpDTm9k
ZUZpbHRlckNvbmRpdGlvbiAmKTsKLQotICAgIGlkIDxET01Ob2RlRmlsdGVyPiBtX2ZpbHRlcjsK
LX07Ci0KLU9iakNOb2RlRmlsdGVyQ29uZGl0aW9uOjpPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihp
ZCA8RE9NTm9kZUZpbHRlcj4gZmlsdGVyKQotICAgIDogbV9maWx0ZXIoZmlsdGVyKQotewotICAg
IEFTU0VSVChtX2ZpbHRlcik7Ci0gICAgQ0ZSZXRhaW4obV9maWx0ZXIpOwotfQotCi1PYmpDTm9k
ZUZpbHRlckNvbmRpdGlvbjo6fk9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKCkKLXsKLSAgICBDRlJl
bGVhc2UobV9maWx0ZXIpOwotfQotCi1zaG9ydCBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbjo6YWNj
ZXB0Tm9kZShOb2RlKiBub2RlKSBjb25zdAotewotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0
dXJuIE5vZGVGaWx0ZXI6OkZJTFRFUl9SRUpFQ1Q7Ci0gICAgcmV0dXJuIFttX2ZpbHRlciBhY2Nl
cHROb2RlOltET01Ob2RlIF9ub2RlV2l0aDpub2RlXV07Ci19Ci0KLUBpbXBsZW1lbnRhdGlvbiBE
T01Eb2N1bWVudCAoRE9NRG9jdW1lbnRUcmF2ZXJzYWwpCi0KLS0gKERPTU5vZGVJdGVyYXRvciAq
KWNyZWF0ZU5vZGVJdGVyYXRvcjooRE9NTm9kZSAqKXJvb3QgOih1bnNpZ25lZCl3aGF0VG9TaG93
IDooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlciA6KEJPT0wpZXhwYW5kRW50aXR5UmVmZXJlbmNl
cwotewotICAgIFJlZlB0cjxOb2RlRmlsdGVyPiBjcHBGaWx0ZXI7Ci0gICAgaWYgKGZpbHRlcikK
LSAgICAgICAgY3BwRmlsdGVyID0gbmV3IE5vZGVGaWx0ZXIobmV3IE9iakNOb2RlRmlsdGVyQ29u
ZGl0aW9uKGZpbHRlcikpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxO
b2RlSXRlcmF0b3I+IGltcGwgPSBbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVOb2RlSXRlcmF0b3Io
W3Jvb3QgX25vZGVdLCB3aGF0VG9TaG93LCBjcHBGaWx0ZXIsIGV4cGFuZEVudGl0eVJlZmVyZW5j
ZXMsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBbRE9NTm9kZUl0
ZXJhdG9yIF9ub2RlSXRlcmF0b3JXaXRoOmltcGwuZ2V0KCkgZmlsdGVyOmZpbHRlcl07Ci19Ci0K
LS0gKERPTVRyZWVXYWxrZXIgKiljcmVhdGVUcmVlV2Fsa2VyOihET01Ob2RlICopcm9vdCA6KHVu
c2lnbmVkKXdoYXRUb1Nob3cgOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyIDooQk9PTClleHBh
bmRFbnRpdHlSZWZlcmVuY2VzCi17Ci0gICAgUmVmUHRyPE5vZGVGaWx0ZXI+IGNwcEZpbHRlcjsK
LSAgICBpZiAoZmlsdGVyKQotICAgICAgICBjcHBGaWx0ZXIgPSBuZXcgTm9kZUZpbHRlcihuZXcg
T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oZmlsdGVyKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgUmVmUHRyPFRyZWVXYWxrZXI+IGltcGwgPSBbc2VsZiBfZG9jdW1lbnRdLT5jcmVh
dGVUcmVlV2Fsa2VyKFtyb290IF9ub2RlXSwgd2hhdFRvU2hvdywgY3BwRmlsdGVyLCBleHBhbmRF
bnRpdHlSZWZlcmVuY2VzLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1
cm4gW0RPTVRyZWVXYWxrZXIgX3RyZWVXYWxrZXJXaXRoOmltcGwuZ2V0KCkgZmlsdGVyOmZpbHRl
cl07Ci19Ci0KLUBlbmQKLQotT2JqQ0V2ZW50TGlzdGVuZXIqIE9iakNFdmVudExpc3RlbmVyOjpm
aW5kKGlkIDxET01FdmVudExpc3RlbmVyPiBsaXN0ZW5lcikKLXsKLSAgICBpZiAoTGlzdGVuZXJN
YXAqIG1hcCA9IGxpc3RlbmVyTWFwKQotICAgICAgICByZXR1cm4gbWFwLT5nZXQobGlzdGVuZXIp
OwotICAgIHJldHVybiBOVUxMOwotfQotCi1PYmpDRXZlbnRMaXN0ZW5lciAqT2JqQ0V2ZW50TGlz
dGVuZXI6OmNyZWF0ZShpZCA8RE9NRXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpCi17Ci0gICAgT2Jq
Q0V2ZW50TGlzdGVuZXIgKndyYXBwZXIgPSBmaW5kKGxpc3RlbmVyKTsKLSAgICBpZiAoIXdyYXBw
ZXIpCi0gICAgICAgIHdyYXBwZXIgPSBuZXcgT2JqQ0V2ZW50TGlzdGVuZXIobGlzdGVuZXIpOwot
ICAgIHdyYXBwZXItPnJlZigpOwotICAgIHJldHVybiB3cmFwcGVyOwotfQotCi1PYmpDRXZlbnRM
aXN0ZW5lcjo6T2JqQ0V2ZW50TGlzdGVuZXIoaWQgPERPTUV2ZW50TGlzdGVuZXI+IGxpc3RlbmVy
KQotICAgIDogbV9saXN0ZW5lcihbbGlzdGVuZXIgcmV0YWluXSkKLXsKLSAgICBMaXN0ZW5lck1h
cCogbWFwID0gbGlzdGVuZXJNYXA7Ci0gICAgaWYgKCFtYXApIHsKLSAgICAgICAgbWFwID0gbmV3
IExpc3RlbmVyTWFwOwotICAgICAgICBsaXN0ZW5lck1hcCA9IG1hcDsKLSAgICB9Ci0gICAgbWFw
LT5zZXQobGlzdGVuZXIsIHRoaXMpOwotfQotCi1PYmpDRXZlbnRMaXN0ZW5lcjo6fk9iakNFdmVu
dExpc3RlbmVyKCkKLXsKLSAgICBsaXN0ZW5lck1hcC0+cmVtb3ZlKG1fbGlzdGVuZXIpOwotICAg
IFttX2xpc3RlbmVyIHJlbGVhc2VdOwotfQotCi12b2lkIE9iakNFdmVudExpc3RlbmVyOjpoYW5k
bGVFdmVudChFdmVudCAqZXZlbnQsIGJvb2wpCi17Ci0gICAgW21fbGlzdGVuZXIgaGFuZGxlRXZl
bnQ6W0RPTUV2ZW50IF9ldmVudFdpdGg6ZXZlbnRdXTsKLX0KSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01Qcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTVByaXZhdGUuaAkocmV2aXNpb24gMTU5OTcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNv
bT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsOSArMjUsMTIgQEAKICAq
LwogCiAjaW1wb3J0IDxXZWJDb3JlL0RPTUNTUy5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01FbGVt
ZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUV2ZW50cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9E
T01IVE1MLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU5vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RE9NUmFuZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRE9NRXZlbnRzLmg+CisKIAogQGludGVyZmFj
ZSBET01SYW5nZSAoV2ViUHJpdmF0ZSkKIC8vIHVzZXMgc2FtZSBhbGdvcml0aG0gYXMgaW5uZXJU
ZXh0CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUmFuZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUmFuZ2UuaAkocmV2aXNpb24gMTU5OTcpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUmFuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8
c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTIzLDcgKzI0LDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpbXBvcnQgPFdlYkNvcmUv
RE9NQ29yZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9ET01PYmplY3QuaD4KIAogZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgRE9NUmFuZ2VFeGNl
cHRpb247CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01TdHlsZXNoZWV0cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01TdHlsZXNoZWV0cy5oCShyZXZp
c2lvbiAxNTk5NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01TdHlsZXNoZWV0cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOSArMjQsMTEgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAog
ICovCiAKLSNpbXBvcnQgPFdlYkNvcmUvRE9NQ29yZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01E
b2N1bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KIAogQGNsYXNzIERPTU1l
ZGlhTGlzdDsKK0BjbGFzcyBET01Ob2RlOwogQGNsYXNzIERPTVN0eWxlU2hlZXQ7CiAKIGV4dGVy
biBOU1N0cmluZyAqIGNvbnN0IERPTUV2ZW50RXhjZXB0aW9uOwpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTVRyYXZlcnNhbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01UcmF2ZXJzYWwuaAkocmV2aXNpb24gMTU5OTcpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NVHJhdmVyc2FsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdA
Z21haWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyNCwx
MCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2ltcG9ydCA8V2ViQ29yZS9ET01Db3JlLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0RPTURvY3VtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU9i
amVjdC5oPgogCitAY2xhc3MgRE9NTm9kZTsKIEBjbGFzcyBET01Ob2RlRmlsdGVyOwogCiBlbnVt
IHsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01WaWV3cy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01WaWV3cy5oCShyZXZpc2lvbiAxNTk5NykKKysrIFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01WaWV3cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxz
YW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjMsNyArMjQsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2ltcG9ydCA8V2ViQ29yZS9E
T01Db3JlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTURvY3VtZW50Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL0RPTU9iamVjdC5oPgogCiBAaW50ZXJmYWNlIERPTUFic3RyYWN0VmlldyA6IERPTU9iamVj
dAogLSAoRE9NRG9jdW1lbnQgKilkb2N1bWVudDsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01YUGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0
aC5oCShyZXZpc2lvbiAxNTk5NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNyArMjQsOCBAQAogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CiAgKi8KIAotI2ltcG9ydCA8V2ViQ29yZS9ET01Db3JlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RP
TURvY3VtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgogCiBleHRlcm4gTlNT
dHJpbmcgKiBjb25zdCBET01YUGF0aEV4Y2VwdGlvbjsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0JKHJldmlzaW9uIDE1OTk3KQorKysgV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0JKHdvcmtpbmcgY29weSkKQEAgLTcxLDcg
KzcxLDYgQEAgc3ViIFByb2Nlc3NEb2N1bWVudAogICAkdXNlRG9jdW1lbnQgPSBzaGlmdDsKICAg
CiAgIG15ICRpZmFjZU5hbWUgPSAkdXNlR2VuZXJhdG9yOwotICAkaWZhY2VOYW1lID1+IHMvXGIo
XHcpL1xVJDEvZzsgIyBNYWtlIGZpcnN0IGxldHRlciBvZiBlYWNoIHdvcmQgdXBwZXJjYXNlCiAg
ICRpZmFjZU5hbWUgPSAiQ29kZUdlbmVyYXRvciRpZmFjZU5hbWUiOwogCiAgICMgRHluYW1pY2Fs
bHkgbG9hZCBleHRlcm5hbCBjb2RlIGdlbmVyYXRpb24gcGVybCBtb2R1bGUuLi4KSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0JKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0JKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNzcxIEBACisjIAorIyBLRE9NIElETCBwYXJzZXIKKyMKKyMg
Q29weXJpZ2h0IChDKSAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgor
IyBDb3B5cmlnaHQgKEMpIDIwMDYgQW5kZXJzIENhcmxzc29uIDxhbmRlcnNjYUBtYWMuY29tPiAK
KyMgQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29t
PgorIyBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyMKKyMgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CisjIAorIyBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisjIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
IyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisjIAorIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjIAorIyBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisjIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorIyBCb3N0b24sIE1BIDAyMTExLTEzMDcs
IFVTQS4KKyMKKworcGFja2FnZSBDb2RlR2VuZXJhdG9yT2JqQzsKKwordXNlIEZpbGU6OnN0YXQ7
CisKK215ICRtb2R1bGUgPSAiIjsKK215ICRvdXRwdXREaXIgPSAiIjsKK215ICVpbXBsSW5jbHVk
ZXMgPSAoKTsKK215ICVoZWFkZXJGb3J3YXJkRGVjbGFyYXRpb25zID0gKCk7CitteSAkZXhjZXB0
aW9uSW5pdCA9ICJXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsiOworbXkgJGV4Y2VwdGlv
blJhaXNlT25FcnJvciA9ICJyYWlzZU9uRE9NRXJyb3IoZWMpOyI7CisKKworIyBEZWZhdWx0IHRl
bXBsYXRlCitteSAkaGVhZGVyVGVtcGxhdGUgPSA8PCAiRU9GIjsKKy8qCisgICAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmls
ZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJ
RlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1w
bGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisq
LworRU9GCisKKyMgRGVmYXVsdCBjb25zdHJ1Y3Rvcgorc3ViIG5ldworeworICAgIG15ICRvYmpl
Y3QgPSBzaGlmdDsKKyAgICBteSAkcmVmZXJlbmNlID0geyB9OworICAgIAorICAgICRjb2RlR2Vu
ZXJhdG9yID0gc2hpZnQ7CisgICAgJG91dHB1dERpciA9IHNoaWZ0OworICAgIAorICAgIGJsZXNz
KCRyZWZlcmVuY2UsICRvYmplY3QpOworICAgIHJldHVybiAkcmVmZXJlbmNlOworfQorCitzdWIg
ZmluaXNoCit7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAgIAorICAgICMgQ29tbWl0IGNo
YW5nZXMhCisgICAgJG9iamVjdC0+V3JpdGVEYXRhKCk7Cit9CisKKyMgUGFyYW1zOiAnZG9tQ2xh
c3MnIHN0cnVjdAorc3ViIEdlbmVyYXRlSW50ZXJmYWNlCit7CisgICAgbXkgJG9iamVjdCA9IHNo
aWZ0OworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworCisgICAgIyBTdGFydCBhY3R1YWwgZ2Vu
ZXJhdGlvbi4uCisgICAgJG9iamVjdC0+R2VuZXJhdGVIZWFkZXIoJGRhdGFOb2RlKTsKKyAgICAk
b2JqZWN0LT5HZW5lcmF0ZUltcGxlbWVudGF0aW9uKCRkYXRhTm9kZSk7CisKKyAgICBteSAkbmFt
ZSA9ICRkYXRhTm9kZS0+bmFtZTsKKworICAgICMgT3BlbiBmaWxlcyBmb3Igd3JpdGluZy4uLgor
ICAgIG15ICRoZWFkZXJGaWxlTmFtZSA9ICIkb3V0cHV0RGlyL0RPTSRuYW1lLmgiOworICAgIG15
ICRpbXBsRmlsZU5hbWUgPSAiJG91dHB1dERpci9ET00kbmFtZS5tbSI7CisKKyAgICBvcGVuKCRJ
TVBMLCAiPiRpbXBsRmlsZU5hbWUiKSBvciBkaWUgIkNvdWxkbid0IG9wZW4gZmlsZSAkaW1wbEZp
bGVOYW1lIjsKKyAgICBvcGVuKCRIRUFERVIsICI+JGhlYWRlckZpbGVOYW1lIikgb3IgZGllICJD
b3VsZG4ndCBvcGVuIGZpbGUgJGhlYWRlckZpbGVOYW1lIjsKK30KKworIyBQYXJhbXM6ICdpZGxE
b2N1bWVudCcgc3RydWN0CitzdWIgR2VuZXJhdGVNb2R1bGUKK3sKKyAgICBteSAkb2JqZWN0ID0g
c2hpZnQ7CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7ICAKKyAgICAKKyAgICAkbW9kdWxlID0g
JGRhdGFOb2RlLT5tb2R1bGU7ICAgIAorfQorCisKK3N1YiBHZXRDbGFzc05hbWUKK3sKKyAgICBt
eSAkbmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVsZShzaGlmdCk7CisgICAgCisgICAg
IyBzcGVjaWFsIGNhc2VzCisgICAgaWYgKCRuYW1lIGVxICJET01JbXBsZW1lbnRhdGlvbiIpIHsK
KyAgICAgICAgcmV0dXJuICRuYW1lOworICAgIH0KKworICAgIHJldHVybiAiRE9NIiAuICRuYW1l
OworfQorCitzdWIgR2V0SW1wbENsYXNzTmFtZQoreworICAgIG15ICRuYW1lID0gJGNvZGVHZW5l
cmF0b3ItPlN0cmlwTW9kdWxlKHNoaWZ0KTsKKyAgICAKKyAgICAjIHNwZWNpYWwgY2FzZXMKKyAg
ICBpZiAoJG5hbWUgZXEgIkRPTUltcGxlbWVudGF0aW9uIikgeworICAgICAgICByZXR1cm4gIldl
YkNvcmU6OkRPTUltcGxlbWVudGF0aW9uRnJvbnQiOworICAgIH0KKworICAgIHJldHVybiAiV2Vi
Q29yZTo6IiAuICRuYW1lOworfQorCitzdWIgR2V0UGFyZW50SW1wbENsYXNzTmFtZQoreworICAg
IG15ICRkYXRhTm9kZSA9IHNoaWZ0OworCisgICAgaWYgKEB7JGRhdGFOb2RlLT5wYXJlbnRzfSBl
cSAwKSB7CisgICAgICAgIHJldHVybiAiT2JqZWN0IjsKKyAgICB9CisKKyAgICBteSAkcGFyZW50
ID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKCRkYXRhTm9kZS0+cGFyZW50cygwKSk7Cisg
ICAgCisgICAgIyBzcGVjaWFsIGNhc2VzCisgICAgaWYgKCRwYXJlbnQgZXEgIkV2ZW50VGFyZ2V0
Tm9kZSIpIHsKKyAgICAgICAgJHBhcmVudCA9ICJOb2RlIjsKKyAgICB9CisKKyAgICByZXR1cm4g
JHBhcmVudDsKK30KKworc3ViIEdldE9iakNUeXBlCit7CisgICAgbXkgJHR5cGUgPSAkY29kZUdl
bmVyYXRvci0+U3RyaXBNb2R1bGUoc2hpZnQpOworICAgIAorICAgIGlmICgkdHlwZSBlcSAiYm9v
bGVhbiIpIHsKKyAgICAgICAgcmV0dXJuICJCT09MIjsKKyAgICB9IGVsc2lmICgkdHlwZSBlcSAi
dW5zaWduZWQgbG9uZyIpIHsKKyAgICAgICAgcmV0dXJuICJ1bnNpZ25lZCI7CisgICAgfSBlbHNp
ZiAoJHR5cGUgZXEgImxvbmciKSB7CisgICAgICAgIHJldHVybiAiaW50IjsKKyAgICB9IGVsc2lm
ICgkdHlwZSBlcSAiRE9NU3RyaW5nIikgeworICAgICAgICByZXR1cm4gIk5TU3RyaW5nICoiOwor
ICAgIH0gZWxzaWYgKCR0eXBlIGVxICJET01JbXBsZW1lbnRhdGlvbiIpIHsKKyAgICAgICAgcmV0
dXJuICIkdHlwZSAqIjsKKyAgICB9IGVsc2lmICgkdHlwZSBlcSAidW5zaWduZWQgc2hvcnQiIAor
ICAgICAgICAgICAgIG9yICR0eXBlIGVxICJmbG9hdCIKKyAgICAgICAgICAgICBvciAkdHlwZSBl
cSAidm9pZCIKKyAgICAgICAgICAgICBvciAkdHlwZSBlcSAiQXRvbWljU3RyaW5nIikgeworICAg
ICAgICByZXR1cm4gJHR5cGU7CisgICAgfQorICAgIAorICAgICMgRGVmYXVsdCwgYXNzdW1lIG9i
amVjdGl2ZS1jIHR5cGUgaXMgYSBwb2ludGVyIHdpdGggdGhlIHNhbWUgdHlwZSBuYW1lIGFzCisg
ICAgIyBpZGwgdHlwZSBwcmVmaXhlZCB3aXRoICJET00iLgorICAgIHJldHVybiAiRE9NJHR5cGUg
KiI7Cit9CisKK3N1YiBHZXRPYmpDVHlwZU1ha2VyCit7CisgICAgbXkgJHR5cGUgPSAkY29kZUdl
bmVyYXRvci0+U3RyaXBNb2R1bGUoc2hpZnQpOworCisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5J
c1ByaW1pdGl2ZVR5cGUoJHR5cGUpIG9yICR0eXBlIGVxICJET01TdHJpbmciKSB7CisgICAgICAg
IHJldHVybiAiIjsKKyAgICB9CisKKyAgICBpZiAoJHR5cGUgZXEgIkRPTVJHQkNvbG9yIikgewor
ICAgICAgICByZXR1cm4gIl9SR0JDb2xvcldpdGhSR0IiOworICAgIH0KKworCisgICAgbXkgJHR5
cGVNYWtlciA9ICIiOworCisgICAgaWYgKCR0eXBlIGVxICJIVE1MQ29sbGVjdGlvbiIpIHsKKyAg
ICAgICAgJHR5cGVNYWtlciA9ICJjb2xsZWN0aW9uIjsKKyAgICB9IGVsc2lmICgkdHlwZSBlcSAi
SFRNTEZvcm1FbGVtZW50IikgeworICAgICAgICAkdHlwZU1ha2VyID0gImZvcm1FbGVtZW50IjsK
KyAgICB9IGVsc2lmICgkdHlwZSBlcSAiQ1NTU3R5bGVEZWNsYXJhdGlvbiIpIHsKKyAgICAgICAg
JHR5cGVNYWtlciA9ICJzdHlsZURlY2xhcmF0aW9uIjsKKyAgICB9IGVsc2lmICgkdHlwZSBlcSAi
Q1NTU3R5bGVTaGVldCIpIHsKKyAgICAgICAgJHR5cGVNYWtlciA9ICJDU1NTdHlsZVNoZWV0IjsK
KyAgICB9IGVsc2lmICgkdHlwZSBlcSAiRE9NSW1wbGVtZW50YXRpb24iKSB7CisgICAgICAgICR0
eXBlTWFrZXIgPSAiRE9NSW1wbGVtZW50YXRpb24iOworICAgIH0gZWxzaWYgKCR0eXBlIGVxICJD
REFUQVNlY3Rpb24iKSB7CisgICAgICAgICR0eXBlTWFrZXIgPSAiQ0RBVEFTZWN0aW9uIjsKKyAg
ICB9IGVsc2UgeworICAgICAgICAkdHlwZU1ha2VyID0gbGNmaXJzdCgkdHlwZSk7CisgICAgfQor
CisgICAgIyBwdXQgaW50byB0aGUgZm9ybSAiX2Zvb0JhcldpdGgiIGZvciB0eXBlIEZvb0Jhci4K
KyAgICAkdHlwZU1ha2VyID0gIl8iIC4gJHR5cGVNYWtlciAuICJXaXRoIjsKKyAgICByZXR1cm4g
JHR5cGVNYWtlcjsKK30KKworc3ViIEFkZEZvcndhcmREZWNsYXJhdGlvbnNGb3JUeXBlCit7Cisg
ICAgbXkgJHR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoc2hpZnQpOworICAgIAor
ICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNQcmltaXRpdmVUeXBlKCR0eXBlKSBvciAkdHlwZSBl
cSAiRE9NU3RyaW5nIikgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmICgk
dHlwZSBlcSAiRE9NSW1wbGVtZW50YXRpb24iKSB7CisgICAgICAgICRoZWFkZXJGb3J3YXJkRGVj
bGFyYXRpb25zeyIkdHlwZSJ9ID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgICRo
ZWFkZXJGb3J3YXJkRGVjbGFyYXRpb25zeyJET00kdHlwZSJ9ID0gMTsKK30KKworc3ViIEFkZElu
Y2x1ZGVzRm9yVHlwZQoreworICAgIG15ICR0eXBlID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9k
dWxlKHNoaWZ0KTsKKyAgICAKKyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzUHJpbWl0aXZlVHlw
ZSgkdHlwZSkpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgkdHlwZSBlcSAi
RE9NU3RyaW5nIikgeworICAgICAgICAkaW1wbEluY2x1ZGVzeyJQbGF0Zm9ybVN0cmluZy5oIn0g
PSAxOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgIyBUZW1wIERPTUNTUy5oCisgICAg
aWYgKCR0eXBlIGVxICJDb3VudGVyIgorICAgICAgICAgICAgb3IgJHR5cGUgZXEgIk1lZGlhTGlz
dCIKKyAgICAgICAgICAgIG9yICR0eXBlIGVxICJDU1NTdHlsZVNoZWV0IikgeworICAgICAgICAk
aW1wbEluY2x1ZGVzeyJET01DU1MuaCJ9ID0gMTsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siJHR5
cGUuaCJ9ID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoJHR5cGUgZXEgIkNT
U1N0eWxlRGVjbGFyYXRpb24iKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUNTUy5oIn0g
PSAxOworICAgICAgICAkaW1wbEluY2x1ZGVzeyIkdHlwZS5oIn0gPSAxOworICAgICAgICAkaW1w
bEluY2x1ZGVzeyJDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oIn0gPSAxOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIGlmICgkdHlwZSBlcSAiUkdCQ29sb3IiIG9yICR0eXBl
IGVxICJSZWN0IikgeworICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01DU1MuaCJ9ID0gMTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoJHR5cGUgZXEgIkRPTUltcGxlbWVu
dGF0aW9uIikgeworICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01JbXBsZW1lbnRhdGlvbkZyb250
LmgifSA9IDE7CisgICAgfQorCisgICAgIyBEZWZhdWx0LCBpbmNsdWRlIHRoZSBzYW1lIG5hbWVk
IGZpbGUgKHRoZSBpbXBsZW1lbnRhdGlvbikgYW5kIHRoZSBzYW1lIG5hbWUgcHJlZml4ZWQgd2l0
aCAiRE9NIi4gCisgICAgJGltcGxJbmNsdWRlc3siJHR5cGUuaCJ9ID0gMTsKKyAgICAkaW1wbElu
Y2x1ZGVzeyJET00kdHlwZS5oIn0gPSAxOworfQorCitzdWIgR2VuZXJhdGVIZWFkZXIKK3sKKyAg
ICBteSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CisKKyAgICAj
IE1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IGhhdmUgbW9yZSB0aGFuIG9uZSBwYXJlbnQuCisgICAg
aWYgKEB7JGRhdGFOb2RlLT5wYXJlbnRzfSA+IDEpIHsKKyAgICAgICAgZGllICJBIGNsYXNzIGNh
bid0IGhhdmUgbW9yZSB0aGFuIG9uZSBwYXJlbnQuIjsKKyAgICB9CisKKyAgICBteSAkaW50ZXJm
YWNlTmFtZSA9ICRkYXRhTm9kZS0+bmFtZTsKKyAgICBteSAkY2xhc3NOYW1lID0gR2V0Q2xhc3NO
YW1lKCRpbnRlcmZhY2VOYW1lKTsKKyAgICBteSAkcGFyZW50Q2xhc3NOYW1lID0gIkRPTSIgLiBH
ZXRQYXJlbnRJbXBsQ2xhc3NOYW1lKCRkYXRhTm9kZSk7CisgICAgbXkgJGNvbmRpdGlvbmFsID0g
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifTsKKworICAgIG15
ICRudW1Db25zdGFudHMgPSBAeyRkYXRhTm9kZS0+Y29uc3RhbnRzfTsKKyAgICBteSAkbnVtQXR0
cmlidXRlcyA9IEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfTsKKyAgICBteSAkbnVtRnVuY3Rpb25z
ID0gQHskZGF0YU5vZGUtPmZ1bmN0aW9uc307CisKKyAgICAjIC0gQWRkIGRlZmF1bHQgaGVhZGVy
IHRlbXBsYXRlCisgICAgQGhlYWRlckNvbnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkaGVhZGVy
VGVtcGxhdGUpOworICAgIAorICAgICMgLSBBZGQgcHJvdGVjdGlvbiBhZ2FpbnN0IHVuc3VwcG9y
dGVkIG1vZHVsZXMKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50SGVhZGVyLCAiXG4jaWYgJHtjb25k
aXRpb25hbH1fU1VQUE9SVFxuIikgaWYgJGNvbmRpdGlvbmFsOworCisgICAgIyAtIElOQ0xVREVT
IC0KKyAgICBwdXNoKEBoZWFkZXJDb250ZW50SGVhZGVyLCAiXG4jaW1wb3J0IFwiJHBhcmVudENs
YXNzTmFtZS5oXCIgLy8gcGFyZW50IGNsYXNzXG5cbiIpOworCisKKyAgICAjIC0gQWRkIGNvbnN0
YW50cy4KKyAgICBpZiAoJG51bUNvbnN0YW50cyA+IDApIHsKKyAgICAgICAgbXkgQGhlYWRlckNv
bnN0YW50cyA9ICgpOworICAgICAgICBmb3JlYWNoIG15ICRjb25zdGFudCAoQHskZGF0YU5vZGUt
PmNvbnN0YW50c30pIHsKKworICAgICAgICAgICAgbXkgJGNvbnN0YW50TmFtZSA9ICRjb25zdGFu
dC0+bmFtZTsKKyAgICAgICAgICAgIG15ICRjb25zdGFudFZhbHVlID0gJGNvbnN0YW50LT52YWx1
ZTsKKyAgICAgICAgICAgIG15ICRvdXRwdXQgPSAiICAgIERPTV8iIC4gJGNvbnN0YW50TmFtZSAu
ICIgPSAiIC4gJGNvbnN0YW50VmFsdWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHB1c2go
QGhlYWRlckNvbnN0YW50cywgJG91dHB1dCk7CisgICAgICAgIH0KKyAgICAgICAgbXkgJGNvbWJp
bmVkQ29uc3RhbnRzID0gam9pbigiLFxuIiwgQGhlYWRlckNvbnN0YW50cyk7CisKKyAgICAgICAg
IyBGSVhNRTogdGhlIGZvcm1hdHRpbmcgb2YgdGhlIGVudW1zIHNob3VsZCBsaW5lIHVwIHRoZSBl
cXVhbCBzaWducy4KKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuLy8gQ29uc3RhbnRz
XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImVudW0ge1xuIik7CisgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICRjb21iaW5lZENvbnN0YW50cyk7CisgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICJcbn07XG4iKTsgICAgICAgIAorICAgIH0KKyAgICAKKyAgICAjIC0g
QmVnaW4gQGludGVyZmFjZSAKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG5cQGludGVyZmFj
ZSAkY2xhc3NOYW1lIDogJHBhcmVudENsYXNzTmFtZVxuIik7CisKKyAgICAjIC0gQWRkIGF0dHJp
YnV0ZSBnZXR0ZXJzL3NldHRlcnMuCisgICAgaWYgKCRudW1BdHRyaWJ1dGVzID4gMCkgeworICAg
ICAgICBteSBAaGVhZGVyQXR0cmlidXRlcyA9ICgpOworCisgICAgICAgIGZvcmVhY2ggKEB7JGRh
dGFOb2RlLT5hdHRyaWJ1dGVzfSkgeworICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZSA9ICRfOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiT2JqQ1ByaXZhdGUifSkgeworICAgICAgICAgICAgICAgICMgRklY
TUU6IGZvciBub3csIGp1c3Qgc2tpcCBtZXRob2RzIG5vdCBhcHByb3ZlZCBmb3IgQVBJIHlldAor
ICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEFkZEZv
cndhcmREZWNsYXJhdGlvbnNGb3JUeXBlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7CisK
KyAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5u
YW1lOworICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZVR5cGUgPSBHZXRPYmpDVHlwZSgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPnR5cGUpOworICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZUlzUmVhZG9u
bHkgPSAoJGF0dHJpYnV0ZS0+dHlwZSA9fiAvXnJlYWRvbmx5Lyk7CisgICAgCisgICAgICAgICAg
ICAjIC0gR0VUVEVSCisgICAgICAgICAgICBteSAkZ2V0dGVyID0gIi0gKCIgLiAkYXR0cmlidXRl
VHlwZSAuICIpIiAuICRhdHRyaWJ1dGVOYW1lIC4gIjtcbiI7CisgICAgICAgICAgICBwdXNoKEBo
ZWFkZXJBdHRyaWJ1dGVzLCAkZ2V0dGVyKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgIyAt
IFNFVFRFUgorICAgICAgICAgICAgaWYgKCEkYXR0cmlidXRlSXNSZWFkb25seSkgeworICAgICAg
ICAgICAgICAgIG15ICRzZXR0ZXIgPSAiLSAodm9pZClzZXQiIC4gdWNmaXJzdCgkYXR0cmlidXRl
TmFtZSkgLiAiOigiIC4gJGF0dHJpYnV0ZVR5cGUgLiAiKSIgLiAkYXR0cmlidXRlTmFtZSAuICI7
XG4iOworICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckF0dHJpYnV0ZXMsICRzZXR0ZXIpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKEBoZWFkZXJBdHRyaWJ1dGVz
ID4gMCkgeworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuLy8gQXR0cmlidXRl
c1xuIik7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCBAaGVhZGVyQXR0cmlidXRl
cyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAjIC0gQWRkIGZ1bmN0aW9ucy4KKyAgICBpZiAo
JG51bUZ1bmN0aW9ucyA+IDApIHsKKyAgICAgICAgbXkgQGhlYWRlckZ1bmN0aW9ucyA9ICgpOwor
CisgICAgICAgIGZvcmVhY2ggKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CisgICAgICAgICAg
ICBteSAkZnVuY3Rpb24gPSAkXzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCRmdW5j
dGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT2JqQ1ByaXZhdGUifSkgewor
ICAgICAgICAgICAgICAgICMgRklYTUU6IGZvciBub3csIGp1c3Qgc2tpcCBtZXRob2RzIG5vdCBh
cHByb3ZlZCBmb3IgQVBJIHlldAorICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIEFkZEZvcndhcmREZWNsYXJhdGlvbnNGb3JUeXBlKCRmdW5jdGlvbi0+
c2lnbmF0dXJlLT50eXBlKTsKKworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRmdW5j
dGlvbi0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICAgICAgbXkgJHJldHVyblR5cGUgPSBHZXRP
YmpDVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAgICAgICBteSAkbnVt
YmVyT2ZQYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OworCisgICAgICAgICAg
ICBteSAkb3V0cHV0ID0gIi0gKCRyZXR1cm5UeXBlKSRmdW5jdGlvbk5hbWUiOworICAgICAgICAg
ICAgZm9yZWFjaCBteSAkcGFyYW0gKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgeworICAgICAg
ICAgICAgICAgIG15ICRwYXJhbU5hbWUgPSAkcGFyYW0tPm5hbWU7CisgICAgICAgICAgICAgICAg
bXkgJHBhcmFtVHlwZSA9IEdldE9iakNUeXBlKCRwYXJhbS0+dHlwZSk7CisgICAgICAgICAgICAg
ICAgQWRkRm9yd2FyZERlY2xhcmF0aW9uc0ZvclR5cGUoJHBhcmFtLT50eXBlKTsKKworICAgICAg
ICAgICAgICAgICRvdXRwdXQgLj0gIjooJHBhcmFtVHlwZSkkcGFyYW1OYW1lIjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICRvdXRwdXQgLj0gIjtcbiI7CisKKyAgICAgICAgICAgIHB1c2go
QGhlYWRlckZ1bmN0aW9ucywgJG91dHB1dCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoQGhl
YWRlckZ1bmN0aW9ucyA+IDApIHsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJc
bi8vIEZ1bmN0aW9uc1xuIik7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCBAaGVh
ZGVyRnVuY3Rpb25zKTsKKyAgICAgICAgfQorICAgIH0KKworICAgICMgLSBFbmQgQGludGVyZmFj
ZSAKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG5cQGVuZFxuIik7CisKKyAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiXG4jZW5kaWYgLy8gJHtjb25kaXRpb25hbH1fU1VQUE9SVFxuIikgaWYg
JGNvbmRpdGlvbmFsOworCit9CisKK3N1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCit7CisgICAg
bXkgJG9iamVjdCA9IHNoaWZ0OworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworCisgICAgbXkg
JGludGVyZmFjZU5hbWUgPSAkZGF0YU5vZGUtPm5hbWU7CisgICAgbXkgJGNsYXNzTmFtZSA9IEdl
dENsYXNzTmFtZSgkaW50ZXJmYWNlTmFtZSk7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSBHZXRJ
bXBsQ2xhc3NOYW1lKCRpbnRlcmZhY2VOYW1lKTsKKyAgICBteSAkcGFyZW50SW1wbENsYXNzTmFt
ZSA9IEdldFBhcmVudEltcGxDbGFzc05hbWUoJGRhdGFOb2RlKTsKKworICAgIG15ICRjb25kaXRp
b25hbCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn07CisK
KyAgICBteSAkbnVtQXR0cmlidXRlcyA9IEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfTsKKyAgICBt
eSAkbnVtRnVuY3Rpb25zID0gQHskZGF0YU5vZGUtPmZ1bmN0aW9uc307CisgICAgbXkgJGhhc0Z1
bmN0aW9uc09yQXR0cmlidXRlcyA9ICRudW1BdHRyaWJ1dGVzICsgJG51bUZ1bmN0aW9uczsKKwor
ICAgICMgLSBBZGQgZGVmYXVsdCBoZWFkZXIgdGVtcGxhdGUuCisgICAgQGltcGxDb250ZW50SGVh
ZGVyID0gc3BsaXQoIlxyIiwgJGhlYWRlclRlbXBsYXRlKTsKKworICAgICMgLSBBZGQgcHJvdGVj
dGlvbiBhZ2FpbnN0IHVuc3VwcG9ydGVkIG1vZHVsZXMuCisgICAgcHVzaChAaW1wbENvbnRlbnRI
ZWFkZXIsICJcbiNpZmRlZiAke2NvbmRpdGlvbmFsfV9TVVBQT1JUXG4iKSBpZiAkY29uZGl0aW9u
YWw7CisKKyAgICAjIC0gSU5DTFVERVMgLQorICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAi
XG4jaW1wb3J0IFwiY29uZmlnLmhcIlxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIs
ICIjaW1wb3J0IFwiJGNsYXNzTmFtZS5oXCJcblxuIik7CisKKyAgICBpZiAoJGhhc0Z1bmN0aW9u
c09yQXR0cmlidXRlcykgeworICAgICAgICAjIE5FRURFRCBmb3IgRE9NX0NBU1QKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnRIZWFkZXIsICIjaW1wb3J0IFwiRE9NSW50ZXJuYWwuaFwiIC8vIG5l
ZWRlZCBmb3IgRE9NX2Nhc3Q8PlxuIik7CisgICAgICAgIAorICAgICAgICAjIGluY2x1ZGUgbW9k
dWxlIGRlcGVuZGFudCBpbnRlcm5hbCBpbnRlcmZhY2VzIAorICAgICAgICBpZiAoJGludGVyZmFj
ZU5hbWUgPX4gL15IVE1MLykgeworICAgICAgICAgICAgIyBIVE1MIG1vZHVsZSBpbnRlcm5hbCBp
bnRlcmZhY2VzCisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudEhlYWRlciwgIiNpbXBvcnQg
XCJET01IVE1MSW50ZXJuYWwuaFwiXG4iKTsKKyAgICAgICAgfSBlbHNpZiAoJGludGVyZmFjZU5h
bWUgPX4gL15DU1MvIG9yICRpbnRlcmZhY2VOYW1lIGVxICJSZWN0IiBvciAkaW50ZXJmYWNlTmFt
ZSBlcSAiQ291bnRlciIpIHsKKyAgICAgICAgICAgICMgQ1NTIG1vZHVsZSBpbnRlcm5hbCBpbnRl
cmZhY2VzCisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudEhlYWRlciwgIiNpbXBvcnQgXCJE
T01DU1NJbnRlcm5hbC5oXCJcbiIpOworICAgICAgICB9CisKKyAgICAgICAgIyBpbmNsdWRlIElt
cGxlbWVudGF0aW9uIGNsYXNzCisgICAgICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAiI2lt
cG9ydCBcIiRpbnRlcmZhY2VOYW1lLmhcIiAvLyBpbXBsZW1lbnRhdGlvbiBjbGFzc1xuIik7Cisg
ICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NSW1wbGVtZW50YXRpb24iKSB7CisgICAg
ICAgICAgICAjIEZJWE1FOiBuZWVkZWQgdW50aWwgd2UgY2FuIHJlbW92ZSBET01JbXBsZW1lbnRh
dGlvbkZyb250CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudEhlYWRlciwgIiNpbXBvcnQg
XCJET01JbXBsZW1lbnRhdGlvbkZyb250LmhcIlxuIik7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBAaW1wbENvbnRlbnQgPSAoKTsKKworICAgICMgU1RBUlQgaW1wbGVtZW50YXRpb24KKyAgICBw
dXNoKEBpbXBsQ29udGVudCwgIlxuXEBpbXBsZW1lbnRhdGlvbiAkY2xhc3NOYW1lXG5cbiIpOwor
ICAgIAorICAgICMgQUREIElOVEVSTkFMIENBU1RJTkcgTUVUSE9ECisgICAgbXkgJGludGVybmFs
Q2FzdGluZ05hbWUgPSAiXyIgLiBsY2ZpcnN0KCRpbnRlcmZhY2VOYW1lKTsKKyAgICBteSAkaW1w
bGVtZW50YXRpb24gPSAiW3NlbGYgJGludGVybmFsQ2FzdGluZ05hbWVdIjsKKyAgICAKKyAgICBp
ZiAoJGhhc0Z1bmN0aW9uc09yQXR0cmlidXRlcykgeworICAgICAgICBpZiAoJHBhcmVudEltcGxD
bGFzc05hbWUgZXEgIk9iamVjdCIpIHsKKyAgICAgICAgICAgICMgT25seSBnZW5lcmF0ZSAnZGVh
bGxvYycgYW5kICdmaW5hbGl6ZScgbWV0aG9kcyBmb3Igc3ViY2xhc3NlcyBvZiBET01PYmplY3Qu
CisKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiLSAodm9pZClkZWFsbG9jXG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoX2ludGVybmFsKVxuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgRE9NX2Nhc3Q8JGltcGxDbGFzc05hbWUgKj4oX2ludGVy
bmFsKS0+ZGVyZWYoKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
W3N1cGVyIGRlYWxsb2NdO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
blxuIik7CisKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiLSAodm9pZClmaW5hbGl6
ZVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKF9pbnRlcm5hbClcbiIpOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIERPTV9jYXN0PCRpbXBsQ2xhc3NOYW1lICo+
KF9pbnRlcm5hbCktPmRlcmVmKCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIFtzdXBlciBmaW5hbGl6ZV07XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAifVxuXG4iKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICItICgkaW1wbENsYXNzTmFtZSAqKSRpbnRlcm5hbENhc3RpbmdOYW1lXG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICByZXR1cm4gRE9NX2Nhc3Q8JGltcGxDbGFzc05hbWUgKj4oX2ludGVybmFs
KTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworCisgICAg
ICAgIH0gZWxzZSB7CisgICAgCisgICAgICAgICAgICBteSAkaW50ZXJuYWxCYXNlVHlwZTsKKyAg
ICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiQ1NTUHJpbWl0aXZlVmFsdWUiKSB7Cisg
ICAgICAgICAgICAgICAgIyBGSVhNRTogdGhpcyBzaG91bGQgYmUgYSByZWdleCBtYXRjaGluZyBD
U1MuLi5WYWx1ZS4KKyAgICAgICAgICAgICAgICAkaW50ZXJuYWxCYXNlVHlwZSA9ICJXZWJDb3Jl
OjpDU1NWYWx1ZSIKKyAgICAgICAgICAgIH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJDU1NJ
bXBvcnRSdWxlIiBvciAkaW50ZXJmYWNlTmFtZSBlcSAiQ1NTRm9udEZhY2VSdWxlIikgeworICAg
ICAgICAgICAgICAgICMgRklYTUU6IHRoaXMgc2hvdWxkIGJlIGEgcmVnZXggbWF0Y2hpbmcgQ1NT
Li4uUnVsZS4KKyAgICAgICAgICAgICAgICAkaW50ZXJuYWxCYXNlVHlwZSA9ICJXZWJDb3JlOjpD
U1NSdWxlIgorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkaW50ZXJuYWxC
YXNlVHlwZSA9ICJXZWJDb3JlOjpOb2RlIgorICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICItICgkaW1wbENsYXNzTmFtZSAqKSRpbnRlcm5hbENhc3RpbmdOYW1l
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05h
bWUgKj4oRE9NX2Nhc3Q8JGludGVybmFsQmFzZVR5cGUgKj4oX2ludGVybmFsKSk7XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgICMgLSBBdHRyaWJ1dGVzCisgICAgaWYgKCRudW1BdHRyaWJ1dGVzID4gMCkgeworICAg
ICAgICBmb3JlYWNoIChAeyRkYXRhTm9kZS0+YXR0cmlidXRlc30pIHsKKyAgICAgICAgICAgIG15
ICRhdHRyaWJ1dGUgPSAkXzsKKworICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9iakNQcml2YXRlIn0pIHsKKyAgICAgICAgICAgICAg
ICAjIEZJWE1FOiBmb3Igbm93LCBqdXN0IHNraXAgbWV0aG9kcyBub3QgYXBwcm92ZWQgZm9yIEFQ
SSB5ZXQKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBBZGRJbmNsdWRlc0ZvclR5cGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsKKworICAg
ICAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7
CisgICAgICAgICAgICBteSAkYXR0cmlidXRlVHlwZSA9IEdldE9iakNUeXBlKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAgICAgICBteSAkYXR0cmlidXRlSXNSZWFkb25seSA9
ICgkYXR0cmlidXRlLT50eXBlID1+IC9ecmVhZG9ubHkvKTsKKworICAgICAgICAgICAgIyAtIEdF
VFRFUgorICAgICAgICAgICAgbXkgJGdldHRlclNpZyA9ICItICgkYXR0cmlidXRlVHlwZSkkYXR0
cmlidXRlTmFtZVxuIjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgIyBFeGNlcHRpb24gaGFu
ZGxpbmcKKyAgICAgICAgICAgIG15ICRoYXNHZXR0ZXJFeGNlcHRpb24gPSBAeyRhdHRyaWJ1dGUt
PmdldHRlckV4Y2VwdGlvbnN9OworICAgICAgICAgICAgaWYgKCRoYXNHZXR0ZXJFeGNlcHRpb24p
IHsKKyAgICAgICAgICAgICAgICBkaWUgIldlIHNob3VsZCBub3QgaGF2ZSBhbnkgZ2V0dGVyIGV4
Y2VwdGlvbnMgeWV0ISI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IG15ICRnZXR0ZXJDb250ZW50SGVhZCA9ICIkaW1wbGVtZW50YXRpb24tPiRhdHRyaWJ1dGVOYW1l
KCI7CisgICAgICAgICAgICBteSAkZ2V0dGVyQ29udGVudFRhaWwgPSAiKSI7CisKKyAgICAgICAg
ICAgIG15ICRhdHRyaWJ1dGVUeXBlU2Fuc1B0ciA9ICRhdHRyaWJ1dGVUeXBlOworICAgICAgICAg
ICAgJGF0dHJpYnV0ZVR5cGVTYW5zUHRyID1+IHMvIFwqJC8vOyAjIFJlbW92ZSB0cmFpbGluZyAi
ICoiIGZyb20gcG9pbnRlciB0eXBlcy4KKyAgICAgICAgICAgIG15ICR0eXBlTWFrZXIgPSBHZXRP
YmpDVHlwZU1ha2VyKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAgICAgICBp
ZiAoJGF0dHJpYnV0ZVR5cGVTYW5zUHRyIGVxICJET01JbXBsZW1lbnRhdGlvbiIpIHsKKyAgICAg
ICAgICAgICAgICAjIEZJWE1FOiBXZSBoYXZlIHRvIHNwZWNpYWwgY2FzZSBET01JbXBsZW1lbnRh
dGlvbiB1bnRpbCBET01JbXBsZW1lbnRhdGlvbkZyb250IGlzIHJlbW92ZWQKKyAgICAgICAgICAg
ICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiWyRhdHRyaWJ1dGVUeXBlU2Fuc1B0ciAkdHlwZU1h
a2VyOmltcGxlbWVudGF0aW9uRnJvbnQoJGltcGxlbWVudGF0aW9uIjsKKyAgICAgICAgICAgICAg
ICAkZ2V0dGVyQ29udGVudFRhaWwgLj0gIl0iOworICAgICAgICAgICAgfSBlbHNpZiAoJHR5cGVN
YWtlciBuZSAiIikgeworICAgICAgICAgICAgICAgICMgU3Vycm91bmQgZ2V0dGVyIHdpdGggVHlw
ZU1ha2VyCisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIlskYXR0cmlidXRl
VHlwZVNhbnNQdHIgJHR5cGVNYWtlcjoiIC4gJGdldHRlckNvbnRlbnRIZWFkOworICAgICAgICAg
ICAgICAgICRnZXR0ZXJDb250ZW50VGFpbCAuPSAiXSI7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJVc2VzUGFzc1JlZlB0ciJ9KSB7CisgICAgICAgICAgICAgICAgJGdldHRlckNv
bnRlbnRUYWlsID0gIikuZ2V0KCIgLiAkZnVuY3Rpb25Db250ZW50VGFpbDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbXkgJGdldHRlckNvbnRlbnQ7CisgICAgICAg
ICAgICBpZiAoJGhhc0dldHRlckV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICRnZXR0ZXJD
b250ZW50ID0gJGdldHRlckNvbnRlbnRIZWFkIC4gImVjIiAuICRnZXR0ZXJDb250ZW50VGFpbDsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnQgPSAk
Z2V0dGVyQ29udGVudEhlYWQgLiAkZ2V0dGVyQ29udGVudFRhaWw7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkZ2V0dGVyU2lnKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAkZXhjZXB0aW9uSW5pdFxuIikgaWYgJGhhc0dldHRlckV4Y2Vw
dGlvbjsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAkZ2V0dGVy
Q29udGVudDtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGV4Y2Vw
dGlvblJhaXNlT25FcnJvclxuIikgaWYgJGhhc0dldHRlckV4Y2VwdGlvbjsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKworICAgICAgICAgICAgIyAtIFNFVFRFUgor
ICAgICAgICAgICAgaWYgKCEkYXR0cmlidXRlSXNSZWFkb25seSkgeworICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgIyBFeGNlcHRpb24gaGFuZGxpbmcKKyAgICAgICAgICAgICAgICBteSAk
aGFzU2V0dGVyRXhjZXB0aW9uID0gQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBteSAkc2V0dGVyTmFtZSA9ICJzZXQiIC4g
dWNmaXJzdCgkYXR0cmlidXRlTmFtZSk7CisgICAgICAgICAgICAgICAgbXkgJHNldHRlclNpZyA9
ICItICh2b2lkKSRzZXR0ZXJOYW1lOigkYXR0cmlidXRlVHlwZSkkYXR0cmlidXRlTmFtZVxuIjsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJHNl
dHRlclNpZyk7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoJGhhc1NldHRlckV4Y2VwdGlvbikg
eworICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBhc3NlcnRzIGV4c2lzdCBpbiB0aGUgZXhz
aXN0aW5nIGJpbmRpbmdzLCBidXQgSSBhbSB1bnN1cmUgd2h5IHRoZXkgYXJlIAorICAgICAgICAg
ICAgICAgICAgICAjIHRoZXJlIGluIHRoZSBmaXJzdCBwbGFjZTsKKyAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUKCRhdHRyaWJ1dGVOYW1lKTtcblxuIik7
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICRleGNlcHRpb25Jbml0XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgJGltcGxlbWVudGF0aW9uLT4kc2V0dGVyTmFtZSgkYXR0cmlidXRlTmFt
ZSwgZWMpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICRleGNlcHRpb25SYWlzZU9uRXJyb3JcbiIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsZW1lbnRhdGlv
bi0+JHNldHRlck5hbWUoJGF0dHJpYnV0ZU5hbWUpO1xuIik7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxu
XG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgICMgLSBGdW5jdGlv
bnMKKyAgICBpZiAoJG51bUZ1bmN0aW9ucyA+IDApIHsKKyAgICAgICAgZm9yZWFjaCAoQHskZGF0
YU5vZGUtPmZ1bmN0aW9uc30pIHsKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbiA9ICRfOworCisg
ICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJPYmpDUHJpdmF0ZSJ9KSB7CisgICAgICAgICAgICAgICAgIyBGSVhNRTogZm9yIG5vdywganVz
dCBza2lwIG1ldGhvZHMgbm90IGFwcHJvdmVkIGZvciBBUEkgeWV0CisgICAgICAgICAgICAgICAg
bmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCRm
dW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKTsKKworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFt
ZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICAgICAgbXkgJHJldHVyblR5
cGUgPSBHZXRPYmpDVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAgICAg
ICBteSAkaGFzUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKKyAgICAgICAg
ICAgIG15ICRyYWlzZXNFeGNlcHRpb25zID0gQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnN9
OworCisgICAgICAgICAgICBteSBAcGFyYW1ldGVyTmFtZXMgPSAoKTsKKyAgICAgICAgICAgIG15
IEBuZWVkc0Fzc2VydCA9ICgpOworCisgICAgICAgICAgICBteSAkZnVuY3Rpb25TaWcgPSAiLSAo
JHJldHVyblR5cGUpJGZ1bmN0aW9uTmFtZSI7CisgICAgICAgICAgICBmb3JlYWNoIChAeyRmdW5j
dGlvbi0+cGFyYW1ldGVyc30pIHsKKyAgICAgICAgICAgICAgICBteSAkcGFyYW0gPSAkXzsKKwor
ICAgICAgICAgICAgICAgIG15ICRwYXJhbVR5cGUgPSBHZXRPYmpDVHlwZSgkcGFyYW0tPnR5cGUp
OworICAgICAgICAgICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZSgkcGFyYW0tPnR5cGUpOworCisg
ICAgICAgICAgICAgICAgJHBhcmFtTmFtZSA9ICRwYXJhbS0+bmFtZTsKKworICAgICAgICAgICAg
ICAgIGlmICgkcGFyYW1UeXBlIGVxICJET01BdHRyICoiKSB7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQHBhcmFtZXRlck5hbWVzLCAiWyRwYXJhbU5hbWUgX2F0dHJdIik7CisgICAgICAgICAg
ICAgICAgfSBlbHNpZiAoJHBhcmFtVHlwZSBlcSAiRE9NTm9kZSAqIikgeworICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBwYXJhbWV0ZXJOYW1lcywgIlskcGFyYW1OYW1lIF9ub2RlXSIpOworICAg
ICAgICAgICAgICAgIH0gZWxzaWYgKCRwYXJhbVR5cGUgZXEgIkRPTURvY3VtZW50VHlwZSAqIikg
eworICAgICAgICAgICAgICAgICAgICBwdXNoKEBwYXJhbWV0ZXJOYW1lcywgIlskcGFyYW1OYW1l
IF9kb2N1bWVudFR5cGVdIik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgcHVzaChAcGFyYW1ldGVyTmFtZXMsICRwYXJhbU5hbWUpOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIGlmKCEkcGFyYW0tPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJJc0luZGV4In0pIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAbmVlZHNBc3NlcnQsICIg
ICAgQVNTRVJUKCRwYXJhbU5hbWUpO1xuIik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgJGZ1bmN0aW9uU2lnIC49ICI6KCRwYXJhbVR5cGUpJHBhcmFtTmFtZSI7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG15IEBmdW5jdGlvbkNvbnRlbnQg
PSAoKTsKKworICAgICAgICAgICAgaWYgKCRyZXR1cm5UeXBlIGVxICJ2b2lkIikgeworICAgICAg
ICAgICAgICAgICMgU3BlY2lhbCBjYXNlICd2b2lkJyByZXR1cm4gdHlwZS4KKworICAgICAgICAg
ICAgICAgIG15ICRmdW5jdGlvbkNvbnRlbnRIZWFkID0gIiRpbXBsZW1lbnRhdGlvbi0+JGZ1bmN0
aW9uTmFtZSgiOworICAgICAgICAgICAgICAgIG15ICRmdW5jdGlvbkNvbnRlbnRUYWlsID0gIik7
IjsKKyAgICAgICAgICAgICAgICBteSAkY29udGVudCA9ICIiOworCisgICAgICAgICAgICAgICAg
aWYgKCRoYXNQYXJhbWV0ZXJzKSB7CisgICAgICAgICAgICAgICAgICAgIG15ICRwYXJhbXMgPSBq
b2luKCIsICIsIEBwYXJhbWV0ZXJOYW1lcyk7CisgICAgICAgICAgICAgICAgICAgIGlmICgkcmFp
c2VzRXhjZXB0aW9ucykgeworICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkZnVu
Y3Rpb25Db250ZW50SGVhZCAuICRwYXJhbXMgLiAiLCBlYyIgLiAkZnVuY3Rpb25Db250ZW50VGFp
bDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICRjb250ZW50ID0gJGZ1bmN0aW9uQ29udGVudEhlYWQgLiAkcGFyYW1zIC4gJGZ1bmN0aW9uQ29u
dGVudFRhaWw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICBpZiAoJHJhaXNlc0V4Y2VwdGlvbnMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICRjb250ZW50ID0gJGZ1bmN0aW9uQ29udGVudEhlYWQgLiAiZWMiIC4g
JGZ1bmN0aW9uQ29udGVudFRhaWw7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9ICRmdW5jdGlvbkNvbnRlbnRIZWFkIC4gJGZ1
bmN0aW9uQ29udGVudFRhaWw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCRyYWlzZXNFeGNlcHRp
b25zKSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICAk
ZXhjZXB0aW9uSW5pdFxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29u
dGVudCwgIiAgICAkY29udGVudFxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0
aW9uQ29udGVudCwgIiAgICAkZXhjZXB0aW9uUmFpc2VPbkVycm9yXG4iKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQs
ICIgICAgJGNvbnRlbnRcbiIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBteSAkZnVuY3Rpb25Db250
ZW50SGVhZCA9ICRpbXBsZW1lbnRhdGlvbiAuICItPiIgLiAkZnVuY3Rpb25OYW1lIC4gIigiOwor
ICAgICAgICAgICAgICAgIG15ICRmdW5jdGlvbkNvbnRlbnRUYWlsID0gIikiOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIG15ICR0eXBlTWFrZXIgPSBHZXRPYmpDVHlwZU1ha2Vy
KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKTsKKyAgICAgICAgICAgICAgICB1bmxlc3MgKCR0
eXBlTWFrZXIgZXEgIiIpIHsKKyAgICAgICAgICAgICAgICAgICAgIyBSZW1vdmUgdHJhaWxpbmcg
IiAqIiBmcm9tIHBvaW50ZXIgdHlwZXMuCisgICAgICAgICAgICAgICAgICAgIG15ICRyZXR1cm5U
eXBlU2Fuc1B0ciA9ICRyZXR1cm5UeXBlOworICAgICAgICAgICAgICAgICAgICAkcmV0dXJuVHlw
ZVNhbnNQdHIgPX4gcy8gXCokLy87CisKKyAgICAgICAgICAgICAgICAgICAgIyBTdXJyb3VuZCBn
ZXR0ZXIgd2l0aCBUeXBlTWFrZXIKKyAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uQ29udGVu
dEhlYWQgPSAiWyRyZXR1cm5UeXBlU2Fuc1B0ciAkdHlwZU1ha2VyOiIgLiAkZnVuY3Rpb25Db250
ZW50SGVhZDsKKyAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uQ29udGVudFRhaWwgLj0gIl0i
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlVzZXNQYXNzUmVmUHRyIn0pIHsKKyAgICAg
ICAgICAgICAgICAgICAgJGZ1bmN0aW9uQ29udGVudFRhaWwgPSAiKS5nZXQoIiAuICRmdW5jdGlv
bkNvbnRlbnRUYWlsOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG15ICRj
b250ZW50ID0gIiI7CisKKyAgICAgICAgICAgICAgICBpZiAoJGhhc1BhcmFtZXRlcnMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbXkgJHBhcmFtcyA9IGpvaW4oIiwgIiAsIEBwYXJhbWV0ZXJOYW1l
cyk7CisgICAgICAgICAgICAgICAgICAgIGlmICgkcmFpc2VzRXhjZXB0aW9ucykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgIyBBIHRlbXBhcmFyeSB2YXJpYWJsZSBpcyBuZWVkZWQuCisgICAg
ICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9ICRmdW5jdGlvbkNvbnRlbnRIZWFkIC4gJHBh
cmFtcyAuICIsIGVjIiAuICRmdW5jdGlvbkNvbnRlbnRUYWlsOworICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkZnVuY3Rpb25D
b250ZW50SGVhZCAuICRwYXJhbXMgLiAkZnVuY3Rpb25Db250ZW50VGFpbDsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICgkcmFpc2VzRXhjZXB0aW9ucykgeworICAgICAgICAgICAgICAgICAgICAgICAgIyBBIHRl
bXBhcmFyeSB2YXJpYWJsZSBpcyBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAkY29u
dGVudCA9ICRmdW5jdGlvbkNvbnRlbnRIZWFkIC4gImVjIiAuICRmdW5jdGlvbkNvbnRlbnRUYWls
OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
JGNvbnRlbnQgPSAkZnVuY3Rpb25Db250ZW50SGVhZCAuICRmdW5jdGlvbkNvbnRlbnRUYWlsOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIGlmICgkcmFpc2VzRXhjZXB0aW9ucykgeworICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgJGV4Y2VwdGlvbkluaXRcbiIpOwor
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgJHJldHVyblR5
cGUgcmVzdWx0ID0gJGNvbnRlbnQ7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAZnVu
Y3Rpb25Db250ZW50LCAiICAgICRleGNlcHRpb25SYWlzZU9uRXJyb3JcbiIpOworICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgcmV0dXJuIHJlc3VsdDtcbiIp
OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGZ1
bmN0aW9uQ29udGVudCwgIiAgICByZXR1cm4gJGNvbnRlbnQ7XG4iKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJGZ1
bmN0aW9uU2lnXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgQG5lZWRzQXNzZXJ0KTsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCBAZnVuY3Rpb25Db250ZW50KTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgICMgRU5EIGlt
cGxlbWVudGF0aW9uCisgICAgcHVzaChAaW1wbENvbnRlbnQsICJcQGVuZFxuIik7CisgICAgCisg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsfV9TVVBQT1JU
XG4iKSBpZiAkY29uZGl0aW9uYWw7Cit9CisKKyMgSW50ZXJuYWwgaGVscGVyCitzdWIgV3JpdGVE
YXRhCit7CisgICAgaWYgKGRlZmluZWQoJElNUEwpKSB7CisgICAgICAgICMgV3JpdGUgY29udGVu
dCB0byBmaWxlLgorICAgICAgICBwcmludCAkSU1QTCBAaW1wbENvbnRlbnRIZWFkZXI7CisgICAg
ICAgIAorICAgICAgICBmb3JlYWNoIG15ICRpbXBsSW5jbHVkZSAoc29ydCBrZXlzKCVpbXBsSW5j
bHVkZXMpKSB7CisgICAgICAgICAgICBwcmludCAkSU1QTCAiI2ltcG9ydCBcIiRpbXBsSW5jbHVk
ZVwiXG4iOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwcmludCAkSU1QTCBAaW1wbENv
bnRlbnQ7CisgICAgICAgIGNsb3NlKCRJTVBMKTsKKyAgICAgICAgdW5kZWYoJElNUEwpOworICAg
ICAgICAKKyAgICAgICAgQGltcGxIZWFkZXJDb250ZW50ID0gIiI7CisgICAgICAgIEBpbXBsQ29u
dGVudCA9ICIiOyAgICAKKyAgICAgICAgJWltcGxJbmNsdWRlcyA9ICgpOworICAgIH0KKyAgICAg
ICAgCisgICAgaWYgKGRlZmluZWQoJEhFQURFUikpIHsKKyAgICAgICAgIyBXcml0ZSBjb250ZW50
IHRvIGZpbGUuCisgICAgICAgIHByaW50ICRIRUFERVIgQGhlYWRlckNvbnRlbnRIZWFkZXI7Cisg
ICAgICAgIAorICAgICAgICBmb3JlYWNoIG15ICRmb3J3YXJkRGVjbGFyYXRpb24gKHNvcnQga2V5
cyglaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9ucykpIHsKKyAgICAgICAgICAgIHByaW50ICRIRUFE
RVIgIlxAY2xhc3MgJGZvcndhcmREZWNsYXJhdGlvbjtcbiI7CisgICAgICAgIH0KKworICAgICAg
ICBwcmludCAkSEVBREVSIEBoZWFkZXJDb250ZW50OworICAgICAgICBjbG9zZSgkSEVBREVSKTsK
KyAgICAgICAgdW5kZWYoJEhFQURFUik7CisgICAgICAgIAorICAgICAgICBAaGVhZGVyQ29udGVu
dEhlYWRlciA9ICIiOworICAgICAgICBAaGVhZGVyQ29udGVudCA9ICIiOworICAgICAgICAlaGVh
ZGVyRm9yd2FyZERlY2xhcmF0aW9ucyA9ICgpOworICAgIH0KK30KKworMTsKSW5kZXg6IFdlYkNv
cmUvZG9tL0F0dHIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0F0dHIuaWRsCShyZXZp
c2lvbiAxNTk5NykKKysrIFdlYkNvcmUvZG9tL0F0dHIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
LgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwu
Y29tPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNCw3ICszNSw3IEBAIG1vZHVsZSBjb3JlIHsK
ICAgICAgICAgCiAgICAgICAgIC8vIGV4dGVuc2lvbnMKIAotICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgQ1NTU3R5bGVEZWNsYXJhdGlvbiBzdHlsZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFtPYmpDUHJpdmF0ZV0gQ1NTU3R5bGVEZWNsYXJhdGlvbiBzdHlsZTsKICAgICB9OwogCiB9
CkluZGV4OiBXZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0NEQVRBU2VjdGlvbi5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9DREFU
QVNlY3Rpb24uaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRl
IDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKK21vZHVsZSBjb3Jl
IHsKKworICAgIGludGVyZmFjZSBDREFUQVNlY3Rpb24gOiBUZXh0IHsKKyAgICB9OworCit9Cklu
ZGV4OiBXZWJDb3JlL2RvbS9Db21tZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9D
b21tZW50LmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0NvbW1lbnQuaWRsCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVl
bCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKK21vZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFj
ZSBDb21tZW50IDogQ2hhcmFjdGVyRGF0YSB7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9k
b20vRE9NSW1wbGVtZW50YXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RPTUlt
cGxlbWVudGF0aW9uLmlkbAkocmV2aXNpb24gMTU5OTcpCisrKyBXZWJDb3JlL2RvbS9ET01JbXBs
ZW1lbnRhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTI4LDI0ICsyOSwyNCBAQCBtb2R1bGUgY29yZSB7CiAKICAgICAgICAgLy8gRE9NIExl
dmVsIDIKIAotICAgICAgICBEb2N1bWVudFR5cGUgY3JlYXRlRG9jdW1lbnRUeXBlKGluIERPTVN0
cmluZyBxdWFsaWZpZWROYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIERPTVN0cmluZyBwdWJsaWNJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBET01TdHJpbmcgc3lzdGVtSWQpCisgICAgICAgIFtVc2VzUGFzc1JlZlB0
cl0gRG9jdW1lbnRUeXBlIGNyZWF0ZURvY3VtZW50VHlwZShpbiBET01TdHJpbmcgcXVhbGlmaWVk
TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIERPTVN0cmluZyBwdWJsaWNJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBzeXN0ZW1JZCkKICAg
ICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICBEb2N1bWVudCBjcmVhdGVE
b2N1bWVudChpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBuYW1lc3BhY2VV
UkksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbQ29udmVydE51bGxUb051
bGxTdHJpbmddIERPTVN0cmluZyBxdWFsaWZpZWROYW1lLCAKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBEb2N1bWVudFR5cGUgZG9j
dHlwZSkKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBEb2N1bWVudCBjcmVhdGVEb2N1bWVudChp
biBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBuYW1lc3BhY2VVUkksIAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtDb252ZXJ0
TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtDb252ZXJ0TnVsbFRvTnVs
bFN0cmluZ10gRG9jdW1lbnRUeXBlIGRvY3R5cGUpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKIAogICAgICAgICAvLyBET01JbXBsZW1lbnRhdGlvbkNTUyBpbnRlcmZhY2UgZnJv
bSBET00gTGV2ZWwgMiBDU1MKIAotICAgICAgICBDU1NTdHlsZVNoZWV0IGNyZWF0ZUNTU1N0eWxl
U2hlZXQoaW4gRE9NU3RyaW5nIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gRE9NU3RyaW5nIG1lZGlhKQorICAgICAgICBbT2JqQ1ByaXZhdGVdIENT
U1N0eWxlU2hlZXQgY3JlYXRlQ1NTU3R5bGVTaGVldChpbiBET01TdHJpbmcgdGl0bGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERP
TVN0cmluZyBtZWRpYSkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAg
ICAgIC8vIEhUTUxET01JbXBsZW1lbnRhdGlvbiBpbnRlcmZhY2UgZnJvbSBET00gTGV2ZWwgMiBI
VE1MCiAKLSAgICAgICAgSFRNTERvY3VtZW50IGNyZWF0ZUhUTUxEb2N1bWVudChpbiBET01TdHJp
bmcgdGl0bGUpOworICAgICAgICBbT2JqQ1ByaXZhdGVdIEhUTUxEb2N1bWVudCBjcmVhdGVIVE1M
RG9jdW1lbnQoaW4gRE9NU3RyaW5nIHRpdGxlKTsKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRs
CShyZXZpc2lvbiAxNTk5NykKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29t
cHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2Vp
bmlnQGdtYWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjksMTQ0ICszMCwxNDUgQEAg
bW9kdWxlIGNvcmUgewogICAgICAgICAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1l
bnQgZG9jdW1lbnRFbGVtZW50OwogICAgICAgICAKLSAgICAgICAgRWxlbWVudCBjcmVhdGVFbGVt
ZW50KGluIERPTVN0cmluZyB0YWdOYW1lKQorICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIEVsZW1l
bnQgY3JlYXRlRWxlbWVudChpbiBET01TdHJpbmcgdGFnTmFtZSkKICAgICAgICAgICAgIHJhaXNl
cyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgCi0gICAgICAgIERvY3VtZW50RnJhZ21lbnQgY3Jl
YXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIERvY3VtZW50
RnJhZ21lbnQgY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogICAgICAgICAKLSAgICAgICAgVGV4
dCBjcmVhdGVUZXh0Tm9kZShpbiBET01TdHJpbmcgZGF0YSk7CisgICAgICAgIFtVc2VzUGFzc1Jl
ZlB0cl0gVGV4dCBjcmVhdGVUZXh0Tm9kZShpbiBET01TdHJpbmcgZGF0YSk7CiAgICAgICAgIAot
ICAgICAgICBDb21tZW50IGNyZWF0ZUNvbW1lbnQoaW4gRE9NU3RyaW5nIGRhdGEpOworICAgICAg
ICBbVXNlc1Bhc3NSZWZQdHJdIENvbW1lbnQgY3JlYXRlQ29tbWVudChpbiBET01TdHJpbmcgZGF0
YSk7CiAgICAgICAgIAotICAgICAgICBDREFUQVNlY3Rpb24gY3JlYXRlQ0RBVEFTZWN0aW9uKGlu
IERPTVN0cmluZyBkYXRhKQorICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIENEQVRBU2VjdGlvbiBj
cmVhdGVDREFUQVNlY3Rpb24oaW4gRE9NU3RyaW5nIGRhdGEpCiAgICAgICAgICAgICByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKICAgICAgICAgCi0gICAgICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiBj
cmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oaW4gRE9NU3RyaW5nIHRhcmdldCwgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9N
U3RyaW5nIGRhdGEpCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gUHJvY2Vzc2luZ0luc3RydWN0
aW9uIGNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihpbiBET01TdHJpbmcgdGFyZ2V0LCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBkYXRhKQogICAgICAgICAgICAgcmFpc2VzIChE
T01FeGNlcHRpb24pOwogICAgICAgICAKLSAgICAgICAgQXR0ciBjcmVhdGVBdHRyaWJ1dGUoaW4g
RE9NU3RyaW5nIG5hbWUpCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gQXR0ciBjcmVhdGVBdHRy
aWJ1dGUoaW4gRE9NU3RyaW5nIG5hbWUpCiAgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlv
bik7CiAgICAgICAgIAotICAgICAgICBFbnRpdHlSZWZlcmVuY2UgY3JlYXRlRW50aXR5UmVmZXJl
bmNlKGluIERPTVN0cmluZyBuYW1lKQorICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIEVudGl0eVJl
ZmVyZW5jZSBjcmVhdGVFbnRpdHlSZWZlcmVuY2UoaW4gRE9NU3RyaW5nIG5hbWUpCiAgICAgICAg
ICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgCi0gICAgICAgIE5vZGVMaXN0IGdl
dEVsZW1lbnRzQnlUYWdOYW1lKGluIERPTVN0cmluZyB0YWduYW1lKTsKKyAgICAgICAgW1VzZXNQ
YXNzUmVmUHRyXSBOb2RlTGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZShpbiBET01TdHJpbmcgdGFn
bmFtZSk7CiAgICAgICAgIAogICAgICAgICAvLyBET00gTGV2ZWwgMiBDb3JlCiAgICAgICAgIAot
ICAgICAgICBOb2RlIGltcG9ydE5vZGUoaW4gTm9kZSBpbXBvcnRlZE5vZGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpbiBib29sZWFuIGRlZXApCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0g
Tm9kZSBpbXBvcnROb2RlKGluIE5vZGUgaW1wb3J0ZWROb2RlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGRlZXApCiAgICAgICAgICAgICByYWlz
ZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIAotICAgICAgICBFbGVtZW50IGNyZWF0ZUVsZW1l
bnROUyhpbiBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSkKKyAgICAgICAgW1VzZXNQYXNzUmVm
UHRyXSBFbGVtZW50IGNyZWF0ZUVsZW1lbnROUyhpbiBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0
cmluZyBxdWFsaWZpZWROYW1lKQogICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwog
ICAgICAgICAKLSAgICAgICAgQXR0ciBjcmVhdGVBdHRyaWJ1dGVOUyhpbiBET01TdHJpbmcgbmFt
ZXNwYWNlVVJJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBx
dWFsaWZpZWROYW1lKQorICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIEF0dHIgY3JlYXRlQXR0cmli
dXRlTlMoaW4gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBxdWFsaWZpZWROYW1lKQogICAg
ICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICAKLSAgICAgICAgTm9kZUxp
c3QgZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhpbiBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBsb2NhbE5h
bWUpOworICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIE5vZGVMaXN0IGdldEVsZW1lbnRzQnlUYWdO
YW1lTlMoaW4gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBsb2NhbE5hbWUp
OwogICAgICAgICAKICAgICAgICAgRWxlbWVudCBnZXRFbGVtZW50QnlJZChpbiBET01TdHJpbmcg
ZWxlbWVudElkKTsKIAogICAgICAgICAvLyBET00gTGV2ZWwgMiBFdmVudHMgKERvY3VtZW50RXZl
bnRzIGludGVyZmFjZSkKIAotICAgICAgICBFdmVudCBjcmVhdGVFdmVudChpbiBET01TdHJpbmcg
ZXZlbnRUeXBlKQorICAgICAgICBbT2JqQ1ByaXZhdGVdIEV2ZW50IGNyZWF0ZUV2ZW50KGluIERP
TVN0cmluZyBldmVudFR5cGUpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAog
ICAgICAgICAvLyBET00gTGV2ZWwgMiBUcmFudmVyc2FsIGFuZCBSYW5nZSAoRG9jdW1lbnRSYW5n
ZSBpbnRlcmZhY2UpCiAKLSAgICAgICAgUmFuZ2UgY3JlYXRlUmFuZ2UoKTsKKyAgICAgICAgW09i
akNQcml2YXRlXSBSYW5nZSBjcmVhdGVSYW5nZSgpOwogCiAgICAgICAgIC8vIERPTSBMZXZlbCAy
IFRyYW52ZXJzYWwgYW5kIFJhbmdlIChEb2N1bWVudFRyYXZlcnNhbCBpbnRlcmZhY2UpCiAKLSAg
ICAgICAgTm9kZUl0ZXJhdG9yIGNyZWF0ZU5vZGVJdGVyYXRvcihpbiBOb2RlIHJvb3QsIAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHVuc2lnbmVkIGxvbmcgd2hh
dFRvU2hvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBOb2Rl
RmlsdGVyIGZpbHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBib29sZWFuIGVudGl0eVJlZmVyZW5jZUV4cGFuc2lvbikKKyAgICAgICAgW09iakNQcml2YXRl
XSBOb2RlSXRlcmF0b3IgY3JlYXRlTm9kZUl0ZXJhdG9yKGluIE5vZGUgcm9vdCwgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB1bnNpZ25l
ZCBsb25nIHdoYXRUb1Nob3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBOb2RlRmlsdGVyIGZpbHRlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gZW50aXR5UmVm
ZXJlbmNlRXhwYW5zaW9uKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKLSAg
ICAgICAgVHJlZVdhbGtlciBjcmVhdGVUcmVlV2Fsa2VyKGluIE5vZGUgcm9vdCwgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB1bnNpZ25lZCBsb25nIHdoYXRUb1Nob3cs
IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gTm9kZUZpbHRlciBmaWx0
ZXIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBlbnRp
dHlSZWZlcmVuY2VFeHBhbnNpb24pCisgICAgICAgIFtPYmpDUHJpdmF0ZV0gVHJlZVdhbGtlciBj
cmVhdGVUcmVlV2Fsa2VyKGluIE5vZGUgcm9vdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIHVuc2lnbmVkIGxvbmcgd2hhdFRvU2hvdywgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIE5vZGVG
aWx0ZXIgZmlsdGVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gYm9vbGVhbiBlbnRpdHlSZWZlcmVuY2VFeHBhbnNpb24pCiAgICAgICAgICAg
ICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICAvLyBET00gTGV2ZWwgMiBBYnN0cmFj
dCBWaWV3cyAoRG9jdW1lbnRWaWV3IGludGVyZmFjZSkKIAotICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NV2luZG93IGRlZmF1bHRWaWV3OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
W09iakNQcml2YXRlXSBET01XaW5kb3cgZGVmYXVsdFZpZXc7CiAKICAgICAgICAgLy8gRE9NIExl
dmVsIDIgU3R5bGUgKERvY3VtZW50U3R5bGUgaW50ZXJmYWNlKQogCi0gICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBTdHlsZVNoZWV0TGlzdCBzdHlsZVNoZWV0czsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFtPYmpDUHJpdmF0ZV0gU3R5bGVTaGVldExpc3Qgc3R5bGVTaGVldHM7CiAKICAg
ICAgICAgLy8gRE9NIExldmVsIDIgU3R5bGUgKERvY3VtZW50Q1NTIGludGVyZmFjZSkKIAotICAg
ICAgICBDU1NTdHlsZURlY2xhcmF0aW9uIGdldE92ZXJyaWRlU3R5bGUoaW4gRWxlbWVudCBlbHQs
IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3Ry
aW5nIHBzZXVkb0VsdCk7CisgICAgICAgIFtPYmpDUHJpdmF0ZV0gQ1NTU3R5bGVEZWNsYXJhdGlv
biBnZXRPdmVycmlkZVN0eWxlKGluIEVsZW1lbnQgZWx0LCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIHBzZXVk
b0VsdCk7CiAKICAgICAgICAgLy8gRE9NIExldmVsIDMgQ29yZQogCi0gICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJpbmdUbz1OdWxsXSBET01TdHJpbmcgaW5wdXRFbmNv
ZGluZzsKLSAgICAgICAgTm9kZSBhZG9wdE5vZGUoaW4gTm9kZSBzb3VyY2UpCisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJpbmdUbz1OdWxsLCBPYmpDUHJpdmF0ZV0g
RE9NU3RyaW5nIGlucHV0RW5jb2Rpbmc7CisgICAgICAgIAorICAgICAgICBbVXNlc1Bhc3NSZWZQ
dHJdIE5vZGUgYWRvcHROb2RlKGluIE5vZGUgc291cmNlKQogICAgICAgICAgICAgcmFpc2VzIChE
T01FeGNlcHRpb24pOwogCiAjaWZkZWYgWFBBVEhfU1VQUE9SVAogICAgICAgICAvLyBET00gTGV2
ZWwgMyBYUGF0aCAoWFBhdGhFdmFsdWF0b3IgaW50ZXJmYWNlKQotICAgICAgICBYUGF0aEV4cHJl
c3Npb24gY3JlYXRlRXhwcmVzc2lvbihpbiBET01TdHJpbmcgZXhwcmVzc2lvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gWFBhdGhOU1Jlc29sdmVyIHJlc29s
dmVyKQorICAgICAgICBbT2JqQ1ByaXZhdGVdIFhQYXRoRXhwcmVzc2lvbiBjcmVhdGVFeHByZXNz
aW9uKGluIERPTVN0cmluZyBleHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFhQYXRoTlNSZXNvbHZlciByZXNvbHZlcikK
ICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCi0gICAgICAgIFhQYXRoTlNSZXNv
bHZlciBjcmVhdGVOU1Jlc29sdmVyKGluIE5vZGUgbm9kZVJlc29sdmVyKTsKKyAgICAgICAgW09i
akNQcml2YXRlXSBYUGF0aE5TUmVzb2x2ZXIgY3JlYXRlTlNSZXNvbHZlcihpbiBOb2RlIG5vZGVS
ZXNvbHZlcik7CiAgICAgICAgIAotICAgICAgICBYUGF0aFJlc3VsdCBldmFsdWF0ZShpbiBET01T
dHJpbmcgZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gTm9kZSBj
b250ZXh0Tm9kZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFhQYXRoTlNSZXNv
bHZlciByZXNvbHZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdW5zaWduZWQg
c2hvcnQgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gWFBhdGhSZXN1bHQg
aW5SZXN1bHQpCisgICAgICAgIFtPYmpDUHJpdmF0ZV0gWFBhdGhSZXN1bHQgZXZhbHVhdGUoaW4g
RE9NU3RyaW5nIGV4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gTm9kZSBjb250ZXh0Tm9kZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gWFBhdGhOU1Jlc29sdmVyIHJlc29sdmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHVuc2lnbmVkIHNob3J0IHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gWFBhdGhSZXN1
bHQgaW5SZXN1bHQpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICNlbmRpZgog
CiAgICAgICAgIC8vIENvbW1vbiBleHRlbnNpb25zCiAKLSAgICAgICAgYm9vbGVhbiBleGVjQ29t
bWFuZChpbiBET01TdHJpbmcgY29tbWFuZCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gYm9vbGVhbiB1c2VySW50ZXJmYWNlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBET01TdHJpbmcgdmFsdWUpOworICAgICAgICBbT2JqQ1ByaXZhdGVdIGJvb2xlYW4gZXhlY0Nv
bW1hbmQoaW4gRE9NU3RyaW5nIGNvbW1hbmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gYm9vbGVhbiB1c2VySW50ZXJmYWNlLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyB2YWx1ZSk7CiAKLSAgICAg
ICAgYm9vbGVhbiBxdWVyeUNvbW1hbmRFbmFibGVkKGluIERPTVN0cmluZyBjb21tYW5kKTsKKyAg
ICAgICAgW09iakNQcml2YXRlXSBib29sZWFuIHF1ZXJ5Q29tbWFuZEVuYWJsZWQoaW4gRE9NU3Ry
aW5nIGNvbW1hbmQpOwogCi0gICAgICAgIGJvb2xlYW4gcXVlcnlDb21tYW5kSW5kZXRlcm0oaW4g
RE9NU3RyaW5nIGNvbW1hbmQpOworICAgICAgICBbT2JqQ1ByaXZhdGVdIGJvb2xlYW4gcXVlcnlD
b21tYW5kSW5kZXRlcm0oaW4gRE9NU3RyaW5nIGNvbW1hbmQpOwogCi0gICAgICAgIGJvb2xlYW4g
cXVlcnlDb21tYW5kU3RhdGUoaW4gRE9NU3RyaW5nIGNvbW1hbmQpOworICAgICAgICBbT2JqQ1By
aXZhdGVdIGJvb2xlYW4gcXVlcnlDb21tYW5kU3RhdGUoaW4gRE9NU3RyaW5nIGNvbW1hbmQpOwog
Ci0gICAgICAgIGJvb2xlYW4gcXVlcnlDb21tYW5kU3VwcG9ydGVkKGluIERPTVN0cmluZyBjb21t
YW5kKTsKKyAgICAgICAgW09iakNQcml2YXRlXSBib29sZWFuIHF1ZXJ5Q29tbWFuZFN1cHBvcnRl
ZChpbiBET01TdHJpbmcgY29tbWFuZCk7CiAKLSAgICAgICAgW0NvbnZlcnROdWxsU3RyaW5nVG89
RmFsc2VdIERPTVN0cmluZyBxdWVyeUNvbW1hbmRWYWx1ZShpbiBET01TdHJpbmcgY29tbWFuZCk7
CisgICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPUZhbHNlLCBPYmpDUHJpdmF0ZV0gRE9NU3Ry
aW5nIHF1ZXJ5Q29tbWFuZFZhbHVlKGluIERPTVN0cmluZyBjb21tYW5kKTsKIAogICAgICAgICAv
LyBJRSBleHRlbnNpb25zCiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBV
Ukw7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbT2JqQ1ByaXZhdGVdIERPTVN0cmluZyBV
Ukw7CiAKLSAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0g
RE9NU3RyaW5nIGNoYXJzZXQ7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJpbmdU
bz1VbmRlZmluZWQsIE9iakNQcml2YXRlXSBET01TdHJpbmcgY2hhcnNldDsKIAotICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVkXSBET01TdHJp
bmcgZGVmYXVsdENoYXJzZXQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29udmVydE51
bGxTdHJpbmdUbz1VbmRlZmluZWQsIE9iakNQcml2YXRlXSBET01TdHJpbmcgZGVmYXVsdENoYXJz
ZXQ7CiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVu
ZGVmaW5lZF0gRE9NU3RyaW5nIHJlYWR5U3RhdGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBbQ29udmVydE51bGxTdHJpbmdUbz1VbmRlZmluZWQsIE9iakNQcml2YXRlXSBET01TdHJpbmcg
cmVhZHlTdGF0ZTsKIAotICAgICAgICBFbGVtZW50IGVsZW1lbnRGcm9tUG9pbnQoaW4gbG9uZyB4
LCBpbiBsb25nIHkpOworICAgICAgICBbT2JqQ1ByaXZhdGVdIEVsZW1lbnQgZWxlbWVudEZyb21Q
b2ludChpbiBsb25nIHgsIGluIGxvbmcgeSk7CiAKICAgICAgICAgLy8gTW96aWxsYSBleHRlbnNp
b25zCiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFN0cmluZ1RvPU51
bGxdIERPTVN0cmluZyBjaGFyYWN0ZXJTZXQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBb
Q29udmVydE51bGxTdHJpbmdUbz1OdWxsLCBPYmpDUHJpdmF0ZV0gRE9NU3RyaW5nIGNoYXJhY3Rl
clNldDsKIAogICAgICAgICAvLyBXZWJLaXQgZXh0ZW5zaW9ucwogCi0gICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJpbmdUbz1OdWxsXSBET01TdHJpbmcgcHJlZmVycmVk
U3R5bGVzaGVldFNldDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFN0
cmluZ1RvPU51bGwsIE9iakNQcml2YXRlXSBET01TdHJpbmcgcHJlZmVycmVkU3R5bGVzaGVldFNl
dDsKIAotICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5nVG89TnVsbF0gRE9NU3Ry
aW5nIHNlbGVjdGVkU3R5bGVzaGVldFNldDsKKyAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVs
bFN0cmluZ1RvPU51bGwsIE9iakNQcml2YXRlXSBET01TdHJpbmcgc2VsZWN0ZWRTdHlsZXNoZWV0
U2V0OwogCiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHJldmlzaW9uIDE1OTk3KQorKysgV2ViQ29y
ZS9kb20vRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTM0LDE1ICszNSwxNSBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHZvaWQgcmVt
b3ZlQXR0cmlidXRlKGluIERPTVN0cmluZyBuYW1lKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CiAKLSAgICAgICAgQXR0ciBnZXRBdHRyaWJ1dGVOb2RlKGluIERPTVN0cmluZyBu
YW1lKTsKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBBdHRyIGdldEF0dHJpYnV0ZU5vZGUoaW4g
RE9NU3RyaW5nIG5hbWUpOwogCi0gICAgICAgIEF0dHIgc2V0QXR0cmlidXRlTm9kZShpbiBBdHRy
IG5ld0F0dHIpCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gQXR0ciBzZXRBdHRyaWJ1dGVOb2Rl
KGluIEF0dHIgbmV3QXR0cikKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCi0g
ICAgICAgIEF0dHIgcmVtb3ZlQXR0cmlidXRlTm9kZShpbiBBdHRyIG9sZEF0dHIpCisgICAgICAg
IFtVc2VzUGFzc1JlZlB0cl0gQXR0ciByZW1vdmVBdHRyaWJ1dGVOb2RlKGluIEF0dHIgb2xkQXR0
cikKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCi0gICAgICAgIE5vZGVMaXN0
IGdldEVsZW1lbnRzQnlUYWdOYW1lKGluIERPTVN0cmluZyBuYW1lKTsKKyAgICAgICAgW1VzZXNQ
YXNzUmVmUHRyXSBOb2RlTGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZShpbiBET01TdHJpbmcgbmFt
ZSk7CiAKICAgICAgICAgLy8gRE9NIExldmVsIDIgQ29yZQogCkBAIC01OCwxMyArNTksMTMgQEAg
bW9kdWxlIGNvcmUgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmlu
ZyBsb2NhbE5hbWUpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAotICAgICAg
ICBOb2RlTGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0
cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBET01TdHJpbmcgbG9jYWxOYW1lKTsKKyAgICAgICAgW1VzZXNQYXNz
UmVmUHRyXSBOb2RlTGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKGluIFtDb252ZXJ0TnVsbFRv
TnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBsb2NhbE5h
bWUpOwogCi0gICAgICAgIEF0dHIgZ2V0QXR0cmlidXRlTm9kZU5TKGluIFtDb252ZXJ0TnVsbFRv
TnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gRE9NU3RyaW5nIGxvY2FsTmFtZSk7CisgICAgICAgIFtVc2VzUGFzc1Jl
ZlB0cl0gQXR0ciBnZXRBdHRyaWJ1dGVOb2RlTlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5n
XSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBsb2NhbE5hbWUpOwogCi0gICAgICAgIEF0
dHIgc2V0QXR0cmlidXRlTm9kZU5TKGluIEF0dHIgbmV3QXR0cikKKyAgICAgICAgW1VzZXNQYXNz
UmVmUHRyXSBBdHRyIHNldEF0dHJpYnV0ZU5vZGVOUyhpbiBBdHRyIG5ld0F0dHIpCiAgICAgICAg
ICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICBib29sZWFuIGhhc0F0dHJpYnV0
ZShpbiBET01TdHJpbmcgbmFtZSk7CkBAIC03Miw1MyArNzMsNTMgQEAgbW9kdWxlIGNvcmUgewog
ICAgICAgICBib29sZWFuIGhhc0F0dHJpYnV0ZU5TKGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmlu
Z10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBET01TdHJpbmcgbG9jYWxOYW1lKTsKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
Q1NTU3R5bGVEZWNsYXJhdGlvbiBzdHlsZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtP
YmpDUHJpdmF0ZV0gQ1NTU3R5bGVEZWNsYXJhdGlvbiBzdHlsZTsKIAogICAgICAgICAvLyBDb21t
b24gZXh0ZW5zaW9ucwogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIG9mZnNldExl
ZnQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbT2JqQ1ByaXZhdGVdIGxvbmcgb2Zmc2V0
TGVmdDsKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBvZmZzZXRUb3A7CisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbT2JqQ1ByaXZhdGVdIGxvbmcgb2Zmc2V0VG9wOwogCi0g
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIG9mZnNldFdpZHRoOworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgW09iakNQcml2YXRlXSBsb25nIG9mZnNldFdpZHRoOwogCi0gICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIG9mZnNldEhlaWdodDsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFtPYmpDUHJpdmF0ZV0gbG9uZyBvZmZzZXRIZWlnaHQ7CiAKLSAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgb2Zmc2V0UGFyZW50OworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgW09iakNQcml2YXRlXSBFbGVtZW50IG9mZnNldFBhcmVudDsKICAgICAgICAgCi0g
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGNsaWVudFdpZHRoOworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgW09iakNQcml2YXRlXSBsb25nIGNsaWVudFdpZHRoOwogCi0gICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGNsaWVudEhlaWdodDsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFtPYmpDUHJpdmF0ZV0gbG9uZyBjbGllbnRIZWlnaHQ7CiAKLSAgICAgICAgYXR0
cmlidXRlIGxvbmcgc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtPYmpD
UHJpdmF0ZV0gbG9uZyBzY3JvbGxMZWZ0OwogCi0gICAgICAgIGF0dHJpYnV0ZSBsb25nIHNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtPYmpDUHJpdmF0ZV0gbG9uZyBzY3Jv
bGxUb3A7CiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgc2Nyb2xsV2lkdGg7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbT2JqQ1ByaXZhdGVdIGxvbmcgc2Nyb2xsV2lkdGg7
CiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgc2Nyb2xsSGVpZ2h0OworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgW09iakNQcml2YXRlXSBsb25nIHNjcm9sbEhlaWdodDsKIAog
ICAgICAgICB2b2lkIGZvY3VzKCk7CiAKICAgICAgICAgdm9pZCBibHVyKCk7CiAKLSAgICAgICAg
dm9pZCBzY3JvbGxJbnRvVmlldyhpbiBbT3B0aW9uYWxdIGJvb2xlYW4gYWxpZ25XaXRoVG9wKTsK
KyAgICAgICAgW09iakNQcml2YXRlXSB2b2lkIHNjcm9sbEludG9WaWV3KGluIFtPcHRpb25hbF0g
Ym9vbGVhbiBhbGlnbldpdGhUb3ApOwogCiAgICAgICAgIC8vIElFIGV4dGVuc2lvbnMKIAotICAg
ICAgICBOb2RlIGluc2VydEFkamFjZW50RWxlbWVudChpbiBET01TdHJpbmcgcG9zaXRpb24sIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBOb2RlIG5ld0VsZW1lbnQpCisg
ICAgICAgIFtPYmpDUHJpdmF0ZV0gTm9kZSBpbnNlcnRBZGphY2VudEVsZW1lbnQoaW4gRE9NU3Ry
aW5nIHBvc2l0aW9uLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBOb2RlIG5ld0VsZW1lbnQpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKICAgICAgICAgCi0gICAgICAgIGJvb2xlYW4gY29udGFpbnMoaW4gRWxlbWVudCBlbGVt
ZW50KTsKKyAgICAgICAgW09iakNQcml2YXRlXSBib29sZWFuIGNvbnRhaW5zKGluIEVsZW1lbnQg
ZWxlbWVudCk7CiAKICAgICAgICAgLy8gV2ViS2l0IGV4dGVuc2lvbnMKIAotICAgICAgICB2b2lk
IHNjcm9sbEludG9WaWV3SWZOZWVkZWQoaW4gW09wdGlvbmFsXSBib29sZWFuIGNlbnRlcklmTmVl
ZGVkKTsKKyAgICAgICAgW09iakNQcml2YXRlXSB2b2lkIHNjcm9sbEludG9WaWV3SWZOZWVkZWQo
aW4gW09wdGlvbmFsXSBib29sZWFuIGNlbnRlcklmTmVlZGVkKTsKIAotICAgICAgICB2b2lkIHNj
cm9sbEJ5TGluZXMoaW4gbG9uZyBsaW5lcyk7CisgICAgICAgIFtPYmpDUHJpdmF0ZV0gdm9pZCBz
Y3JvbGxCeUxpbmVzKGluIGxvbmcgbGluZXMpOwogCi0gICAgICAgIHZvaWQgc2Nyb2xsQnlQYWdl
cyhpbiBsb25nIHBhZ2VzKTsKKyAgICAgICAgW09iakNQcml2YXRlXSB2b2lkIHNjcm9sbEJ5UGFn
ZXMoaW4gbG9uZyBwYWdlcyk7CiAKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2RvbS9FbnRpdHlS
ZWZlcmVuY2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VudGl0eVJlZmVyZW5jZS5p
ZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuaWRsCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVl
bCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKK21vZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFj
ZSBFbnRpdHlSZWZlcmVuY2UgOiBOb2RlIHsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL2Rv
bS9OYW1lZE5vZGVNYXAuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05hbWVkTm9kZU1h
cC5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaWRsCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVl
bCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKK21vZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFj
ZSBOYW1lZE5vZGVNYXAgeworCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gTm9kZSBnZXROYW1l
ZEl0ZW0oaW4gRE9NU3RyaW5nIG5hbWUpOworCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gTm9k
ZSBzZXROYW1lZEl0ZW0oaW4gTm9kZSBhcmcpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKKworICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIE5vZGUgcmVtb3ZlTmFtZWRJdGVtKGlu
IERPTVN0cmluZyBuYW1lKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAg
ICAgICAgW1VzZXNQYXNzUmVmUHRyXSBOb2RlIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7
CisgICAgICAgIAorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5n
dGg7CisKKworICAgICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAyOgorCisgICAgICAg
IFtVc2VzUGFzc1JlZlB0cl0gTm9kZSBnZXROYW1lZEl0ZW1OUyhpbiBET01TdHJpbmcgbmFtZXNw
YWNlVVJJLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IERPTVN0cmluZyBsb2NhbE5hbWUpCisgICAgICAgICAgICAvLyBGSVhNRTogdGhlIGltcGxlbWVu
dGF0aW9uIGRvZXMgdGFrZSBhbiBleGNlcHRpb25jb2RlIHBhcmFtZXRlci4KKyAgICAgICAgICAg
IC8qcmFpc2VzKERPTUV4Y2VwdGlvbikqLzsKKworICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIE5v
ZGUgc2V0TmFtZWRJdGVtTlMoaW4gTm9kZSBhcmcpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKKworICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIE5vZGUgcmVtb3ZlTmFtZWRJdGVt
TlMoaW4gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwgCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgbG9jYWxOYW1lKQorICAgICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL2Rv
bS9Ob2RlTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9kZUxpc3QuaWRsCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vTm9kZUxpc3QuaWRsCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNh
bS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMw
NywgVVNBLgorICovCisKK21vZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFjZSBOb2RlTGlzdCB7
CisKKyAgICAgICAgTm9kZSBpdGVtKGluIFtJc0luZGV4XSB1bnNpZ25lZCBsb25nIGluZGV4KTsK
KworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisKKyAg
ICB9OworCit9CkluZGV4OiBXZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5pZGwJKHJldmlz
aW9uIDE1OTk3KQorKysgV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBw
bGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxz
YW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjksNyArMzAsNyBA
QCBtb2R1bGUgY29yZSB7CiAKICAgICAgICAgLy8gaW50ZXJmYWNlIExpbmtTdHlsZSBmcm9tIERP
TSBMZXZlbCAyIFN0eWxlIFNoZWV0cwogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdHls
ZVNoZWV0IHNoZWV0OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW09iakNQcml2YXRlXSBT
dHlsZVNoZWV0IHNoZWV0OwogCiAgICAgfTsKIApJbmRleDogV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTk5OCkKKysrIFdlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAwNi0wOC0yMyAgU2Ft
IFdlaW5pZyAgPHNhbS53ZWluaWdAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gcGF0Y2ggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVu
ZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYyNAorICAgICAgICAgIFdlYkNvcmUgbmVlZHMg
YXV0b2dlbmVyYXRlZCBPYmotQyBET00gYmluZGluZ3MKKyAgICAgICAgICAKKyAgICAgICAgICBG
aXJzdCByb3VuZCBvZiBhdXRvLWdlbmVyYXRlZCBPYmplY3RpdmUgQyBET00gYmluZGluZ3MsIHN0
YXJ0aW5nCisgICAgICAgICAgd2l0aCB0aGUgRE9NIENvcmUuCisKKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAwNi0wOC0yMyAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSm9obiBTdWxsaXZhbgpJ
bmRleDogV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU5
OTcpCisrKyBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTg2NiwxOSArODY2LDE3IEBACiAJCTlDN0NBQkJCMDE5MEEzN0MwRUNBMTZFQSAv
KiBXZWJWaWV3ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJ
CQk2NThBNDA5NTBBMTQ4NTNCMDA1RTY5ODcgLyogV2ViRGF0YVNvdXJjZUludGVybmFsLmggKi8s
Ci0JCQkJNjUwRjc0RTIwOUU0ODhGNzAwMjAxMThBIC8qIFdlYlVuYXJjaGl2aW5nU3RhdGUuaCAq
LywKLQkJCQk2NTBGNzRFMzA5RTQ4OEY3MDAyMDExOEEgLyogV2ViVW5hcmNoaXZpbmdTdGF0ZS5t
ICovLAotCQkJCTY1NTBCN0M1MDk5RUZBRTkwMDkwRDc4MSAvKiBXZWJBcmNoaXZlci5oICovLAot
CQkJCTY1NTBCN0M2MDk5RUZBRTkwMDkwRDc4MSAvKiBXZWJBcmNoaXZlci5tICovLAogCQkJCUY1
MkNBNkJEMDJERjlEMEYwMTg2MzVDQSAvKiBIVE1MICovLAogCQkJCTUxRTk0QzA3MDZDMDJDQTMw
MEE5QjA5RSAvKiBQREYgKi8sCiAJCQkJODM3MzQzNUEwNjI0RUUwRDAwRjNCMjg5IC8qIFdlYkFy
Y2hpdmUuaCAqLywKIAkJCQk4MzczNDM1QjA2MjRFRTBEMDBGM0IyODkgLyogV2ViQXJjaGl2ZS5t
ICovLAorCQkJCTY1NTBCN0M1MDk5RUZBRTkwMDkwRDc4MSAvKiBXZWJBcmNoaXZlci5oICovLAor
CQkJCTY1NTBCN0M2MDk5RUZBRTkwMDkwRDc4MSAvKiBXZWJBcmNoaXZlci5tICovLAogCQkJCTkz
M0Q2NTk5MDM0MTNGRjIwMDg2MzVDRSAvKiBXZWJDbGlwVmlldy5oICovLAogCQkJCTkzM0Q2NTlB
MDM0MTNGRjIwMDg2MzVDRSAvKiBXZWJDbGlwVmlldy5tICovLAogCQkJCTM5NDQ2MDcwMDIwRjUw
RUQwRUNBMTc2NyAvKiBXZWJEYXRhU291cmNlLmggKi8sCiAJCQkJMzk0NDYwNzEwMjBGNTBFRDBF
Q0ExNzY3IC8qIFdlYkRhdGFTb3VyY2UubSAqLywKKwkJCQk2NThBNDA5NTBBMTQ4NTNCMDA1RTY5
ODcgLyogV2ViRGF0YVNvdXJjZUludGVybmFsLmggKi8sCiAJCQkJMzk0NDYwNzIwMjBGNTBFRDBF
Q0ExNzY3IC8qIFdlYkRhdGFTb3VyY2VQcml2YXRlLmggKi8sCiAJCQkJMzUwODFEQUUwMkI2RDRG
NTBBQ0EyQUNBIC8qIFdlYkRvY3VtZW50LmggKi8sCiAJCQkJRUQyMUI5ODEwNTI4RjdBQTAwMzI5
OUFDIC8qIFdlYkRvY3VtZW50SW50ZXJuYWwuaCAqLywKQEAgLTkxNCw2ICs5MTIsOCBAQAogCQkJ
CTdFNkZFRjA3MDg5ODVBNzIwMEM0NEMzRiAvKiBXZWJTY3JpcHREZWJ1Z0RlbGVnYXRlUHJpdmF0
ZS5oICovLAogCQkJCTUxNUUyN0NDMDQ1OEM4NjUwMENBMkQzQSAvKiBXZWJVSURlbGVnYXRlLmgg
Ki8sCiAJCQkJNjVBN0Q0NEEwNTY4QUIyNjAwRTcwRUY2IC8qIFdlYlVJRGVsZWdhdGVQcml2YXRl
LmggKi8sCisJCQkJNjUwRjc0RTIwOUU0ODhGNzAwMjAxMThBIC8qIFdlYlVuYXJjaGl2aW5nU3Rh
dGUuaCAqLywKKwkJCQk2NTBGNzRFMzA5RTQ4OEY3MDAyMDExOEEgLyogV2ViVW5hcmNoaXZpbmdT
dGF0ZS5tICovLAogCQkJCTUxQThCNTc5MDQyODM0RjcwMENBMkQzQSAvKiBXZWJWaWV3LmggKi8s
CiAJCQkJNTFBOEI1N0EwNDI4MzRGNzAwQ0EyRDNBIC8qIFdlYlZpZXcubSAqLywKIAkJCQk5MzBE
MDJCQjA2Mjc1RjY0MDA3NjcwMUUgLyogV2ViVmlld0ludGVybmFsLmggKi8sCkBAIC0xMjMxLDYg
KzEyMzEsMjQgQEAKIAkJCWJ1aWxkUGhhc2VzID0gKAogCQkJCTkzQUY1Mjg3MDgyNTRCMzMwMDVE
MDE1NiAvKiBET00uaCAqLywKIAkJCQk5M0FGNTJBNzA4MjU0RDhCMDA1RDAxNTYgLyogRE9NQ29y
ZS5oICovLAorCQkJCTg1MjZENzREMEE4RkVGMDIwMDkyMzRCMSAvKiBET01BdHRyLmggKi8sCisJ
CQkJODUzMTFGNjkwQThGOTA5MTAwNTEyNUM5IC8qIERPTUNEQVRBU2VjdGlvbi5oICovLAorCQkJ
CTg1MjZENkJGMEE4RkU2MEIwMDkyMzRCMSAvKiBET01DaGFyYWN0ZXJEYXRhLmggKi8sCisJCQkJ
ODUzMTFGNzIwQThGOTBGNjAwNTEyNUM5IC8qIERPTUNvbW1lbnQuaCAqLywKKwkJCQk4NTZDODlE
RTBBOTBFMzgzMDA1QzY4N0IgLyogRE9NRG9jdW1lbnQuaCAqLywKKwkJCQk4NUM5MDY2RjBBOEZE
MTFDMDBDMzdEOTEgLyogRE9NRG9jdW1lbnRGcmFnbWVudC5oICovLAorCQkJCTg1QzkwNUYzMEE4
RkNDQjIwMEMzN0Q5MSAvKiBET01Eb2N1bWVudFR5cGUuaCAqLywKKwkJCQk4NTM5QjU2NTBBOTAz
RUI5MDAzNjZDMkQgLyogRE9NRE9NSW1wbGVtZW50YXRpb24uaCAqLywKKwkJCQk4NUE1QzVFMTBB
OTAzMkIzMDBGOTFGMkMgLyogRE9NRWxlbWVudC5oICovLAorCQkJCTg1MzExRjc1MEE4RjkxNjgw
MDUxMjVDOSAvKiBET01FbnRpdHkuaCAqLywKKwkJCQk4NTMxMUY4ODBBOEY5MUZFMDA1MTI1Qzkg
LyogRE9NRW50aXR5UmVmZXJlbmNlLmggKi8sCisJCQkJODUyNkQ3RUEwQThGRjY0QzAwOTIzNEIx
IC8qIERPTU5hbWVkTm9kZU1hcC5oICovLAorCQkJCTg1NkM4QTkzMEE5MEY1NEYwMDVDNjg3QiAv
KiBET01Ob2RlLmggKi8sCisJCQkJODVBODVCNTkwQTkwMkMzMjAwQTVDRjNBIC8qIERPTU5vZGVM
aXN0LmggKi8sCisJCQkJODUzMTFGRTkwQThGOThCOTAwNTEyNUM5IC8qIERPTU5vdGF0aW9uLmgg
Ki8sCisJCQkJODU2QzhCN0IwQTkxMjlCODAwNUM2ODdCIC8qIERPTU9iamVjdC5oICovLAorCQkJ
CTg1MzEyMDEzMEE4RjlBNTIwMDUxMjVDOSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCAq
LywKKwkJCQk4NTI2RDY0MTBBOEZEQjg0MDA5MjM0QjEgLyogRE9NVGV4dC5oICovLAogCQkJCTkz
QUY1MkE5MDgyNTREOEYwMDVEMDE1NiAvKiBET01DU1MuaCAqLywKIAkJCQk5M0FGNTJBNTA4MjU0
RDg3MDA1RDAxNTYgLyogRE9NRXZlbnRzLmggKi8sCiAJCQkJOTNBRjUyQTMwODI1NEQ4MTAwNUQw
MTU2IC8qIERPTUV4dGVuc2lvbnMuaCAqLywKQEAgLTEzMjIsNiArMTM0MCwyOTQgQEAKIAkJCXNo
ZWxsUGF0aCA9IC9iaW4vc2g7CiAJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRf
QlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3Jl
L1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTVhQYXRoLmhcIiA+IFwi
JFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTVhQYXRoLmhc
IiI7CiAJCX07CisJCTg1MjZENjQxMEE4RkRCODQwMDkyMzRCMSAvKiBET01UZXh0LmggKi8gPSB7
CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJ
CQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTVRleHQuaCIsCisJCQkpOworCQkJ
bmFtZSA9IERPTVRleHQuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlM
RF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTVRleHQuaCIsCisJCQkpOwor
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGgg
PSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJ
Ui8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQv
IFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01UZXh0LmhcIiA+IFwiJFRBUkdFVF9C
VUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTVRleHQuaFwiIjsKKwkJfTsK
KwkJODUyNkQ2QkYwQThGRTYwQjAwOTIzNEIxIC8qIERPTUNoYXJhY3RlckRhdGEuaCAqLyA9IHsK
KwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJ
CSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NQ2hhcmFjdGVyRGF0YS5oIiwKKwkJ
CSk7CisJCQluYW1lID0gRE9NQ2hhcmFjdGVyRGF0YS5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJ
CQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9N
Q2hhcmFjdGVyRGF0YS5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJt
a2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwi
XG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElS
L0RPTUNoYXJhY3RlckRhdGEuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURF
UlNfRk9MREVSX1BBVEgvRE9NQ2hhcmFjdGVyRGF0YS5oXCIiOworCQl9OworCQk4NTI2RDc0RDBB
OEZFRjAyMDA5MjM0QjEgLyogRE9NQXR0ci5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3Jp
cHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVz
ID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hF
QURFUlNfRElSKS9ET01BdHRyLmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01BdHRyLmg7CisJCQlv
dXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJT
X0ZPTERFUl9QQVRIKS9ET01BdHRyLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2Ny
aXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERF
Ul9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVB
REVSU19ESVIvRE9NQXR0ci5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVS
U19GT0xERVJfUEFUSC9ET01BdHRyLmhcIiI7CisJCX07CisJCTg1MjZEN0VBMEE4RkY2NEMwMDky
MzRCMSAvKiBET01OYW1lZE5vZGVNYXAuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9
ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFE
RVJTX0RJUikvRE9NTmFtZWROb2RlTWFwLmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01OYW1lZE5v
ZGVNYXAuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQo
UFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTU5hbWVkTm9kZU1hcC5oIiwKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9
IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElS
LyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8g
XCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTU5hbWVkTm9kZU1hcC5oXCIgPiBcIiRU
QVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01OYW1lZE5vZGVN
YXAuaFwiIjsKKwkJfTsKKwkJODUzMTFGNjkwQThGOTA5MTAwNTEyNUM5IC8qIERPTUNEQVRBU2Vj
dGlvbi5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0
UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01DREFUQVNl
Y3Rpb24uaCIsCisJCQkpOworCQkJbmFtZSA9IERPTUNEQVRBU2VjdGlvbi5oOworCQkJb3V0cHV0
UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xE
RVJfUEFUSCkvRE9NQ0RBVEFTZWN0aW9uLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxs
U2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZP
TERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVf
SEVBREVSU19ESVIvRE9NQ0RBVEFTZWN0aW9uLmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBV
QkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTUNEQVRBU2VjdGlvbi5oXCIiOworCQl9OworCQk4
NTMxMUY3MjBBOEY5MEY2MDA1MTI1QzkgLyogRE9NQ29tbWVudC5oICovID0geworCQkJaXNhID0g
UEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09S
RV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01Db21tZW50LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBE
T01Db21tZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElS
KS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01Db21tZW50LmgiLAorCQkJKTsKKwkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0g
L2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIv
JFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBc
IiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NQ29tbWVudC5oXCIgPiBcIiRUQVJHRVRf
QlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01Db21tZW50LmhcIiI7CisJ
CX07CisJCTg1MzExRjc1MEE4RjkxNjgwMDUxMjVDOSAvKiBET01FbnRpdHkuaCAqLyA9IHsKKwkJ
CWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIk
KFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NRW50aXR5LmgiLAorCQkJKTsKKwkJCW5h
bWUgPSBET01FbnRpdHkuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlM
RF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUVudGl0eS5oIiwKKwkJCSk7
CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0
aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERf
RElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktp
dC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUVudGl0eS5oXCIgPiBcIiRUQVJH
RVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01FbnRpdHkuaFwiIjsK
KwkJfTsKKwkJODUzMTFGODgwQThGOTFGRTAwNTEyNUM5IC8qIERPTUVudGl0eVJlZmVyZW5jZS5o
ICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMg
PSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01FbnRpdHlSZWZlcmVu
Y2UuaCIsCisJCQkpOworCQkJbmFtZSA9IERPTUVudGl0eVJlZmVyZW5jZS5oOworCQkJb3V0cHV0
UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xE
RVJfUEFUSCkvRE9NRW50aXR5UmVmZXJlbmNlLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNo
ZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJT
X0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVIvRE9NRW50aXR5UmVmZXJlbmNlLmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9E
SVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTUVudGl0eVJlZmVyZW5jZS5oXCIiOwor
CQl9OworCQk4NTMxMUZFOTBBOEY5OEI5MDA1MTI1QzkgLyogRE9NTm90YXRpb24uaCAqLyA9IHsK
KwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJ
CSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NTm90YXRpb24uaCIsCisJCQkpOwor
CQkJbmFtZSA9IERPTU5vdGF0aW9uLmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJH
RVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01Ob3RhdGlvbi5o
IiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJ
CXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJH
RVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJD
b3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTU5vdGF0aW9uLmhc
IiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTU5v
dGF0aW9uLmhcIiI7CisJCX07CisJCTg1MzEyMDEzMEE4RjlBNTIwMDUxMjVDOSAvKiBET01Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJ
CSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJ
UikvRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9C
VUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTVByb2Nlc3NpbmdJbnN0
cnVjdGlvbi5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAt
cCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQg
LWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTVBy
b2Nlc3NpbmdJbnN0cnVjdGlvbi5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVB
REVSU19GT0xERVJfUEFUSC9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaFwiIjsKKwkJfTsKKwkJ
ODUzOUI1NjUwQTkwM0VCOTAwMzY2QzJEIC8qIERPTURPTUltcGxlbWVudGF0aW9uLmggKi8gPSB7
CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJ
CQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTURPTUltcGxlbWVudGF0aW9uLmgi
LAorCQkJKTsKKwkJCW5hbWUgPSBET01ET01JbXBsZW1lbnRhdGlvbi5oOworCQkJb3V0cHV0UGF0
aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJf
UEFUSCkvRE9NRE9NSW1wbGVtZW50YXRpb24uaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hl
bGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNf
Rk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFU
RV9IRUFERVJTX0RJUi9ET01ET01JbXBsZW1lbnRhdGlvbi5oXCIgPiBcIiRUQVJHRVRfQlVJTERf
RElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01ET01JbXBsZW1lbnRhdGlvbi5oXCIi
OworCQl9OworCQk4NTZDODlERTBBOTBFMzgzMDA1QzY4N0IgLyogRE9NRG9jdW1lbnQuaCAqLyA9
IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAor
CQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NRG9jdW1lbnQuaCIsCisJCQkp
OworCQkJbmFtZSA9IERPTURvY3VtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChU
QVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01Eb2N1bWVu
dC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
KwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRU
QVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9X
ZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTURvY3VtZW50
LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RP
TURvY3VtZW50LmhcIiI7CisJCX07CisJCTg1NkM4QTkzMEE5MEY1NEYwMDVDNjg3QiAvKiBET01O
b2RlLmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQ
YXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTU5vZGUuaCIs
CisJCQkpOworCQkJbmFtZSA9IERPTU5vZGUuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIk
KFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTU5vZGUu
aCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJ
CQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFS
R0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2Vi
Q29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01Ob2RlLmhcIiA+
IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTU5vZGUu
aFwiIjsKKwkJfTsKKwkJODU2QzhCN0IwQTkxMjlCODAwNUM2ODdCIC8qIERPTU9iamVjdC5oICov
ID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAo
CisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01PYmplY3QuaCIsCisJCQkp
OworCQkJbmFtZSA9IERPTU9iamVjdC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFS
R0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NT2JqZWN0Lmgi
LAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJ
c2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdF
VF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNv
cmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NT2JqZWN0LmhcIiA+
IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTU9iamVj
dC5oXCIiOworCQl9OworCQk4NUE1QzVFMTBBOTAzMkIzMDBGOTFGMkMgLyogRE9NRWxlbWVudC5o
ICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMg
PSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01FbGVtZW50LmgiLAor
CQkJKTsKKwkJCW5hbWUgPSBET01FbGVtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQki
JChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01FbGVt
ZW50LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwi
JFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBz
L1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NRWxlbWVu
dC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9E
T01FbGVtZW50LmhcIiI7CisJCX07CisJCTg1QTg1QjU5MEE5MDJDMzIwMEE1Q0YzQSAvKiBET01O
b2RlTGlzdC5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlu
cHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01Ob2Rl
TGlzdC5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NTm9kZUxpc3QuaDsKKwkJCW91dHB1dFBhdGhz
ID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BB
VEgpL0RPTU5vZGVMaXN0LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0g
Im1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRI
XCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19E
SVIvRE9NTm9kZUxpc3QuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNf
Rk9MREVSX1BBVEgvRE9NTm9kZUxpc3QuaFwiIjsKKwkJfTsKKwkJODVDOTA1RjMwQThGQ0NCMjAw
QzM3RDkxIC8qIERPTURvY3VtZW50VHlwZS5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3Jp
cHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVz
ID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hF
QURFUlNfRElSKS9ET01Eb2N1bWVudFR5cGUuaCIsCisJCQkpOworCQkJbmFtZSA9IERPTURvY3Vt
ZW50VHlwZS5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikv
JChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NRG9jdW1lbnRUeXBlLmgiLAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRo
ID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9E
SVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0
LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NRG9jdW1lbnRUeXBlLmhcIiA+IFwi
JFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTURvY3VtZW50
VHlwZS5oXCIiOworCQl9OworCQk4NUM5MDY2RjBBOEZEMTFDMDBDMzdEOTEgLyogRE9NRG9jdW1l
bnRGcmFnbWVudC5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwor
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJ
CWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01E
b2N1bWVudEZyYWdtZW50LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01Eb2N1bWVudEZyYWdtZW50
Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJ
Q19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01Eb2N1bWVudEZyYWdtZW50LmgiLAorCQkJKTsKKwkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0g
L2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIv
JFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBc
IiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NRG9jdW1lbnRGcmFnbWVudC5oXCIgPiBc
IiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01Eb2N1bWVu
dEZyYWdtZW50LmhcIiI7CisJCX07CiAJCTkzMzkzMjNFMDgyNUE2NDIwMEFBREE2QiAvKiBucHJ1
bnRpbWUuaCAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Cg==
</data>
<flag name="review"
          id="3192"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10240</attachid>
            <date>2006-08-26 09:37:01 -0700</date>
            <delta_ts>2006-08-26 16:31:21 -0700</delta_ts>
            <desc>better patch of DOMCore changes (ZOMG, it&apos;s even smaller)</desc>
            <filename>autoCore4.diff</filename>
            <type>text/plain</type>
            <size>204629</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjA1MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTE2IEBACisyMDA2LTA4LTI2ICBTYW0gV2VpbmlnICA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
LSBwYXRjaCBmb3IgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NjI0CisgICAgICAgICAgV2ViQ29yZSBuZWVkcyBhdXRvZ2VuZXJhdGVkIE9iai1DIERPTSBi
aW5kaW5ncworICAgICAgICAgIAorICAgICAgICAgIEZpcnN0IHJvdW5kIG9mIGF1dG8tZ2VuZXJh
dGVkIE9iamVjdGl2ZSBDIERPTSBiaW5kaW5ncywgc3RhcnRpbmcKKyAgICAgICAgICB3aXRoIHRo
ZSBET00gQ29yZS4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL29i
amMvRE9NLm1tOgorICAgICAgICAoLVtET01Ob2RlIGRlc2NyaXB0aW9uXSk6CisgICAgICAgICgt
W0RPTU5vZGUgS0pTOjpCaW5kaW5nczo6XSk6CisgICAgICAgICgtW0RPTU5vZGUgZGlzcGF0Y2hF
dmVudDpdKToKKyAgICAgICAgKC1bRE9NTmFtZWROb2RlTWFwIF9pbml0V2l0aE5hbWVkTm9kZU1h
cDpdKToKKyAgICAgICAgKCtbRE9NTmFtZWROb2RlTWFwIF9uYW1lZE5vZGVNYXBXaXRoOl0pOgor
ICAgICAgICAoLVtET01Ob2RlTGlzdCBfaW5pdFdpdGhOb2RlTGlzdDpdKToKKyAgICAgICAgKCtb
RE9NTm9kZUxpc3QgX25vZGVMaXN0V2l0aDpdKToKKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRp
b24gX2luaXRXaXRoRE9NSW1wbGVtZW50YXRpb246XSk6CisgICAgICAgICgrW0RPTUltcGxlbWVu
dGF0aW9uIF9ET01JbXBsZW1lbnRhdGlvbldpdGg6XSk6CisgICAgICAgICgtW0RPTUltcGxlbWVu
dGF0aW9uIF9ET01JbXBsZW1lbnRhdGlvbl0pOgorICAgICAgICAoK1tET01Eb2N1bWVudEZyYWdt
ZW50IF9kb2N1bWVudEZyYWdtZW50V2l0aDpdKToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnRGcmFn
bWVudCBfZnJhZ21lbnRdKToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgY3JlYXRlQ1NTU3R5bGVE
ZWNsYXJhdGlvbl0pOgorICAgICAgICAoK1tET01Eb2N1bWVudCBfZG9jdW1lbnRXaXRoOl0pOgor
ICAgICAgICAoLVtET01Eb2N1bWVudCBfZG9jdW1lbnRdKToKKyAgICAgICAgKC1bRE9NRG9jdW1l
bnQgX293bmVyRWxlbWVudF0pOgorICAgICAgICAoK1tET01BdHRyIF9hdHRyV2l0aDpdKToKKyAg
ICAgICAgKC1bRE9NQXR0ciBfYXR0cl0pOgorICAgICAgICAoK1tET01Eb2N1bWVudFR5cGUgX2Rv
Y3VtZW50VHlwZVdpdGg6V2ViQ29yZTo6XSk6CisgICAgICAgICgtW0RPTURvY3VtZW50VHlwZSBX
ZWJDb3JlOjpdKToKKyAgICAgICAgKCtbRE9NVGV4dCBfdGV4dFdpdGg6V2ViQ29yZTo6XSk6Cisg
ICAgICAgICgrW0RPTUNvbW1lbnQgX2NvbW1lbnRXaXRoOldlYkNvcmU6Ol0pOgorICAgICAgICAo
K1tET01DREFUQVNlY3Rpb24gX0NEQVRBU2VjdGlvbldpdGg6V2ViQ29yZTo6XSk6CisgICAgICAg
ICgrW0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiBfcHJvY2Vzc2luZ0luc3RydWN0aW9uV2l0aDpX
ZWJDb3JlOjpdKToKKyAgICAgICAgKCtbRE9NRW50aXR5UmVmZXJlbmNlIF9lbnRpdHlSZWZlcmVu
Y2VXaXRoOldlYkNvcmU6Ol0pOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NQ1NTLmg6Cisg
ICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01Db3JlLmg6CisgICAgICAgICogYmluZGluZ3Mvb2Jq
Yy9ET01FdmVudHMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5tbToKKyAg
ICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUV4dGVuc2lvbnMuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9vYmpjL0RPTUhUTUwubW06CisgICAgICAgICgrW0RPTUhUTUxEb2N1bWVudCBfSFRNTERvY3Vt
ZW50V2l0aDpXZWJDb3JlOjpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUhUTUxJbnRl
cm5hbC5oOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NSW1wbGVtZW50YXRpb25Gcm9udC5o
OgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9vYmpjL0RPTU5vZGUuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01O
b2RlLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bRE9NTm9kZSBkZWFsbG9jXSk6CisgICAgICAgICgt
W0RPTU5vZGUgZmluYWxpemVdKToKKyAgICAgICAgKC1bRE9NTm9kZSBub2RlTmFtZV0pOgorICAg
ICAgICAoLVtET01Ob2RlIG5vZGVWYWx1ZV0pOgorICAgICAgICAoLVtET01Ob2RlIHNldE5vZGVW
YWx1ZTpdKToKKyAgICAgICAgKC1bRE9NTm9kZSBub2RlVHlwZV0pOgorICAgICAgICAoLVtET01O
b2RlIHBhcmVudE5vZGVdKToKKyAgICAgICAgKC1bRE9NTm9kZSBjaGlsZE5vZGVzXSk6CisgICAg
ICAgICgtW0RPTU5vZGUgZmlyc3RDaGlsZF0pOgorICAgICAgICAoLVtET01Ob2RlIGxhc3RDaGls
ZF0pOgorICAgICAgICAoLVtET01Ob2RlIHByZXZpb3VzU2libGluZ10pOgorICAgICAgICAoLVtE
T01Ob2RlIG5leHRTaWJsaW5nXSk6CisgICAgICAgICgtW0RPTU5vZGUgYXR0cmlidXRlc10pOgor
ICAgICAgICAoLVtET01Ob2RlIG93bmVyRG9jdW1lbnRdKToKKyAgICAgICAgKC1bRE9NTm9kZSBp
bnNlcnRCZWZvcmU6Ol0pOgorICAgICAgICAoLVtET01Ob2RlIHJlcGxhY2VDaGlsZDo6XSk6Cisg
ICAgICAgICgtW0RPTU5vZGUgcmVtb3ZlQ2hpbGQ6XSk6CisgICAgICAgICgtW0RPTU5vZGUgYXBw
ZW5kQ2hpbGQ6XSk6CisgICAgICAgICgtW0RPTU5vZGUgaGFzQ2hpbGROb2Rlc10pOgorICAgICAg
ICAoLVtET01Ob2RlIGNsb25lTm9kZTpdKToKKyAgICAgICAgKC1bRE9NTm9kZSBub3JtYWxpemVd
KToKKyAgICAgICAgKC1bRE9NTm9kZSBpc1N1cHBvcnRlZDo6XSk6CisgICAgICAgICgtW0RPTU5v
ZGUgbmFtZXNwYWNlVVJJXSk6CisgICAgICAgICgtW0RPTU5vZGUgcHJlZml4XSk6CisgICAgICAg
ICgtW0RPTU5vZGUgc2V0UHJlZml4Ol0pOgorICAgICAgICAoLVtET01Ob2RlIGxvY2FsTmFtZV0p
OgorICAgICAgICAoLVtET01Ob2RlIGhhc0F0dHJpYnV0ZXNdKToKKyAgICAgICAgKC1bRE9NTm9k
ZSBpc1NhbWVOb2RlOl0pOgorICAgICAgICAoLVtET01Ob2RlIGlzRXF1YWxOb2RlOl0pOgorICAg
ICAgICAoLVtET01Ob2RlIGlzRGVmYXVsdE5hbWVzcGFjZTpdKToKKyAgICAgICAgKC1bRE9NTm9k
ZSBsb29rdXBQcmVmaXg6XSk6CisgICAgICAgICgtW0RPTU5vZGUgbG9va3VwTmFtZXNwYWNlVVJJ
Ol0pOgorICAgICAgICAoLVtET01Ob2RlIHRleHRDb250ZW50XSk6CisgICAgICAgICgtW0RPTU5v
ZGUgc2V0VGV4dENvbnRlbnQ6XSk6CisgICAgICAgICgtW0RPTU5vZGUgYm91bmRpbmdCb3hdKToK
KyAgICAgICAgKC1bRE9NTm9kZSBsaW5lQm94UmVjdHNdKToKKyAgICAgICAgKiBiaW5kaW5ncy9v
YmpjL0RPTU9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTU9iamVj
dC5tbTogQWRkZWQuCisgICAgICAgICgtW0RPTU9iamVjdCBpbml0XSk6CisgICAgICAgICgtW0RP
TU9iamVjdCBkZWFsbG9jXSk6CisgICAgICAgICgtW0RPTU9iamVjdCBmaW5hbGl6ZV0pOgorICAg
ICAgICAoLVtET01PYmplY3QgY29weVdpdGhab25lOl0pOgorICAgICAgICAqIGJpbmRpbmdzL29i
amMvRE9NUHJpdmF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NUmFuZ2UuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVN0eWxlc2hlZXRzLmg6CisgICAgICAgICogYmluZGlu
Z3Mvb2JqYy9ET01UcmF2ZXJzYWwuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVZpZXdz
Lmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01WaWV3cy5tbToKKyAgICAgICAgKiBiaW5k
aW5ncy9vYmpjL0RPTVhQYXRoLmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01YUGF0aC5t
bToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbTogQWRkZWQuCisgICAgICAg
ICogZG9tL0F0dHIuaWRsOgorICAgICAgICAqIGRvbS9DREFUQVNlY3Rpb24uaWRsOiBBZGRlZC4K
KyAgICAgICAgKiBkb20vQ29tbWVudC5pZGw6IEFkZGVkLgorICAgICAgICAqIGRvbS9ET01JbXBs
ZW1lbnRhdGlvbi5pZGw6CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBk
b20vRWxlbWVudC5pZGw6CisgICAgICAgICogZG9tL0VudGl0eVJlZmVyZW5jZS5pZGw6IEFkZGVk
LgorICAgICAgICAqIGRvbS9OYW1lZE5vZGVNYXAuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBkb20v
Tm9kZUxpc3QuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmlkbDoKKwogMjAwNi0wOC0yNiAgTmlrb2xhcyBaaW1tZXJtYW5uICA8emltbWVybWFubkBrZGUu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMuCkluZGV4OiBXZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShy
ZXZpc2lvbiAxNTk5NykKKysrIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBj
b3B5KQpAQCAtMSw0ICsxLDUgQEAKICMgQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVy
LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwg
V2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4gCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI3LDYgKzI4LDcgQEAKIFZQQVRIID0gXAogICAgICQoV2ViQ29yZSkgXAogICAgICQo
V2ViQ29yZSkvYmluZGluZ3MvanMgXAorICAgICQoV2ViQ29yZSkvYmluZGluZ3Mvb2JqYyBcCiAg
ICAgJChXZWJDb3JlKS9jc3MgXAogICAgICQoV2ViQ29yZSkvZG9tIFwKICAgICAkKFdlYkNvcmUp
L2h0bWwgXApAQCAtNDQsNiArNDYsMjIgQEAgYWxsIDogXAogICAgIENoYXJzZXREYXRhLmNwcCBc
CiAgICAgQ29sb3JEYXRhLmMgXAogICAgIERvY1R5cGVTdHJpbmdzLmNwcCBcCisgICAgRE9NQXR0
ci5oIFwKKyAgICBET01DREFUQVNlY3Rpb24uaCBcCisgICAgRE9NQ2hhcmFjdGVyRGF0YS5oIFwK
KyAgICBET01Db21tZW50LmggXAorICAgIERPTURPTUltcGxlbWVudGF0aW9uLmggXAorICAgIERP
TURvY3VtZW50LmggXAorICAgIERPTURvY3VtZW50RnJhZ21lbnQuaCBcCisgICAgRE9NRG9jdW1l
bnRUeXBlLmggXAorICAgIERPTUVsZW1lbnQuaCBcCisgICAgRE9NRW50aXR5LmggXAorICAgIERP
TUVudGl0eVJlZmVyZW5jZS5oIFwKKyAgICBET01OYW1lZE5vZGVNYXAuaCBcCisgICAgRE9NTm9k
ZUxpc3QuaCBcCisgICAgRE9NTm90YXRpb24uaCBcCisgICAgRE9NUHJvY2Vzc2luZ0luc3RydWN0
aW9uLmggXAorICAgIERPTVRleHQuaCBcCiAgICAgSFRNTEVudGl0eU5hbWVzLmMgXAogICAgIEpT
QXR0ci5oIFwKICAgICBKU0NTU1ByaW1pdGl2ZVZhbHVlLmggXApAQCAtMjg2LDYgKzMwNCwxOSBA
QCBrc3ZnY3NzdmFsdWVzLmggOgogCiBlbmRpZgogCisjIG5ldy1zdHlsZSBPYmplY3RpdmUtQyBi
aW5kaW5ncworCitPQkpDX0JJTkRJTkdTX1NDUklQVFMgPSBcCisgICAgYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yLnBtIFwKKyAgICBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JP
YmpDLnBtIFwKKyAgICBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbSBcCisgICAgYmluZGlu
Z3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0gXAorICAgIGJpbmRpbmdzL3NjcmlwdHMvZ2VuZXJh
dGUtYmluZGluZ3MucGwgXAorIworCitET00lLmggOiAlLmlkbCAkKE9CSkNfQklORElOR1NfU0NS
SVBUUykKKwlwZXJsIC1JJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQoV2ViQ29yZSkvYmlu
ZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCAtLWRlZmluZXMgIiQoRkVBVFVSRV9E
RUZJTkVTKSIgLS1nZW5lcmF0b3IgT2JqQyAtLWluY2x1ZGUgZG9tIC0taW5jbHVkZSBodG1sIC0t
aW5jbHVkZSB4cGF0aCAtLWluY2x1ZGUga3N2ZzIvc3ZnIC0tb3V0cHV0ZGlyICAuICQ8CisKICMg
bmV3LXN0eWxlIEphdmFTY3JpcHQgYmluZGluZ3MKIAogSlNfQklORElOR1NfU0NSSVBUUyA9IFwK
SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxNTk5NykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0zNTUsNiArMzU1LDIxIEBACiAJCTg1MDMxQjRGMEE0NEVGQzcwMEY5
OTJFMCAvKiBVSUV2ZW50V2l0aEtleVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NTAzMUIzOTBBNDRFRkM3MDBGOTkyRTAgLyogVUlFdmVudFdp
dGhLZXlTdGF0ZS5oICovOyB9OwogCQk4NTAzMUI1MDBBNDRFRkM3MDBGOTkyRTAgLyogV2hlZWxF
dmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NTAzMUIzQTBBNDRFRkM3MDBGOTkyRTAgLyogV2hlZWxFdmVudC5jcHAgKi87IH07CiAJCTg1MDMx
QjUxMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVlbEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTAzMUIzQjBBNDRFRkM3MDBGOTkyRTAgLyogV2hl
ZWxFdmVudC5oICovOyB9OworCQk4NTA4OUNDODBBOThDMjI2MDBBMjc1QUEgLyogQ29tbWVudC5p
ZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDg5
Q0M3MEE5OEMyMjYwMEEyNzVBQSAvKiBDb21tZW50LmlkbCAqLzsgfTsKKwkJODUwODlDQ0EwQTk4
QzJBQjAwQTI3NUFBIC8qIENEQVRBU2VjdGlvbi5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDg5Q0M5MEE5OEMyQUIwMEEyNzVBQSAvKiBDREFU
QVNlY3Rpb24uaWRsICovOyB9OworCQk4NTA4OUNDQzBBOThDMzNBMDBBMjc1QUEgLyogRW50aXR5
UmVmZXJlbmNlLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODUwODlDQ0IwQTk4QzMzQTAwQTI3NUFBIC8qIEVudGl0eVJlZmVyZW5jZS5pZGwgKi87
IH07CisJCTg1MDg5Q0Q3MEE5OEM0MjgwMEEyNzVBQSAvKiBET01DREFUQVNlY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDg5Q0NGMEE5OEM0
MjcwMEEyNzVBQSAvKiBET01DREFUQVNlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTA4OUNEODBBOThDNDI4MDBBMjc1QUEgLyogRE9N
Q0RBVEFTZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODUwODlDRDAwQTk4QzQyNzAwQTI3NUFBIC8qIERPTUNEQVRBU2VjdGlvbi5tbSAqLzsg
fTsKKwkJODUwODlDRDkwQTk4QzQyODAwQTI3NUFBIC8qIERPTUNvbW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDg5Q0QxMEE5OEM0MjcwMEEy
NzVBQSAvKiBET01Db21tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJODUwODlDREEwQTk4QzQyODAwQTI3NUFBIC8qIERPTUNvbW1lbnQubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTA4OUNEMjBB
OThDNDI3MDBBMjc1QUEgLyogRE9NQ29tbWVudC5tbSAqLzsgfTsKKwkJODUwODlDREIwQTk4QzQy
ODAwQTI3NUFBIC8qIERPTURvY3VtZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDg5Q0QzMEE5OEM0MjgwMEEyNzVBQSAvKiBET01E
b2N1bWVudEZyYWdtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJODUwODlDREMwQTk4QzQyODAwQTI3NUFBIC8qIERPTURvY3VtZW50RnJhZ21l
bnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTA4
OUNENDBBOThDNDI4MDBBMjc1QUEgLyogRE9NRG9jdW1lbnRGcmFnbWVudC5tbSAqLzsgfTsKKwkJ
ODUwODlDREQwQTk4QzQyODAwQTI3NUFBIC8qIERPTUVudGl0eVJlZmVyZW5jZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwODlDRDUwQTk4QzQyODAw
QTI3NUFBIC8qIERPTUVudGl0eVJlZmVyZW5jZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1MDg5Q0RFMEE5OEM0MjgwMEEyNzVBQSAvKiBET01F
bnRpdHlSZWZlcmVuY2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NTA4OUNENjBBOThDNDI4MDBBMjc1QUEgLyogRE9NRW50aXR5UmVmZXJlbmNlLm1t
ICovOyB9OworCQk4NTE4RENFOTBBOUNDODBEMDA5MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50YXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MThE
Q0U3MEE5Q0M4MEMwMDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1MThEQ0VBMEE5Q0M4MEQw
MDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MThEQ0U4MEE5Q0M4MEQwMDkxQjdBNiAvKiBET01E
T01JbXBsZW1lbnRhdGlvbi5tbSAqLzsgfTsKKwkJODUxOERENzgwQTlDRjMxQjAwOTFCN0E2IC8q
IERPTU5hbWVkTm9kZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODUxOERENzYwQTlDRjMxQjAwOTFCN0E2IC8qIERPTU5hbWVkTm9kZU1hcC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1MThERDc5
MEE5Q0YzMUIwMDkxQjdBNiAvKiBET01OYW1lZE5vZGVNYXAubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTE4REQ3NzBBOUNGMzFCMDA5MUI3QTYgLyog
RE9NTmFtZWROb2RlTWFwLm1tICovOyB9OwogCQk4NTIxN0UwMjBBNUVDRDQ3MDBEQjhEMDAgLyog
WFNMSW1wb3J0UnVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NTIxN0UwMDBBNUVDRDQ3MDBEQjhEMDAgLyogWFNMSW1wb3J0UnVsZS5jcHAgKi87
IH07CiAJCTg1MjE3RTAzMEE1RUNENDcwMERCOEQwMCAvKiBYU0xJbXBvcnRSdWxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTIxN0UwMTBBNUVDRDQ3
MDBEQjhEMDAgLyogWFNMSW1wb3J0UnVsZS5oICovOyB9OwogCQk4NTRGRTczMDBBMjI5N0JFMDA1
OEQ3QUQgLyogTm9kZUZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NTRGRTcyNjBBMjI5N0JFMDA1OEQ3QUQgLyogTm9kZUZpbHRlci5jcHAg
Ki87IH07CkBAIC0zNjcsOCArMzgyLDM0IEBACiAJCTg1NEZFNzM3MEEyMjk3QkUwMDU4RDdBRCAv
KiBUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg1NEZFNzJEMEEyMjk3QkUwMDU4RDdBRCAvKiBUcmF2ZXJzYWwuaCAqLzsgfTsKIAkJODU0
RkU3MzgwQTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU0RkU3MkUwQTIyOTdCRTAwNThEN0FEIC8q
IFRyZWVXYWxrZXIuY3BwICovOyB9OwogCQk4NTRGRTczOTBBMjI5N0JFMDA1OEQ3QUQgLyogVHJl
ZVdhbGtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODU0RkU3MkYwQTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuaCAqLzsgfTsKKwkJODU2Qzg5
RkMwQTkwRjA2ODAwNUM2ODdCIC8qIERPTU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NkM4OUZBMEE5MEYwNjgwMDVDNjg3QiAvKiBET01Ob2Rl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODU2
Qzg5RkQwQTkwRjA2ODAwNUM2ODdCIC8qIERPTU5vZGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTZDODlGQjBBOTBGMDY4MDA1QzY4N0IgLyogRE9N
Tm9kZS5tbSAqLzsgfTsKKwkJODU2QzhBRTQwQTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2QzhBRTIw
QTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1NkM4QUU1MEE5MTI2NDkwMDVDNjg3QiAvKiBET01P
YmplY3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NTZDOEFFMzBBOTEyNjQ5MDA1QzY4N0IgLyogRE9NT2JqZWN0Lm1tICovOyB9OworCQk4NUFDQTk4
NjBBOUI1MjAzMDA2NzFFOTAgLyogRE9NQ2hhcmFjdGVyRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVBQ0E5ODQwQTlCNTIwMzAwNjcxRTkwIC8q
IERPTUNoYXJhY3RlckRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk4NUFDQTk4NzBBOUI1MjAzMDA2NzFFOTAgLyogRE9NQ2hhcmFjdGVyRGF0
YS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QUNB
OTg1MEE5QjUyMDMwMDY3MUU5MCAvKiBET01DaGFyYWN0ZXJEYXRhLm1tICovOyB9OworCQk4NUFD
QTk5QzBBOUI1NzU5MDA2NzFFOTAgLyogRE9NVGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVBQ0E5OUEwQTlCNTc1OTAwNjcxRTkwIC8qIERPTVRl
eHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4
NUFDQTk5RDBBOUI1NzU5MDA2NzFFOTAgLyogRE9NVGV4dC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QUNBOTlCMEE5QjU3NTkwMDY3MUU5MCAvKiBE
T01UZXh0Lm1tICovOyB9OworCQk4NUFDQTlDMDBBOUI1RkE1MDA2NzFFOTAgLyogRE9NRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVBQ0E5
QkUwQTlCNUZBNTAwNjcxRTkwIC8qIERPTUVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NUFDQTlDMTBBOUI1RkE1MDA2NzFFOTAgLyog
RE9NRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg1QUNBOUJGMEE5QjVGQTUwMDY3MUU5MCAvKiBET01FbGVtZW50Lm1tICovOyB9OworCQk4
NUFDQTlGQjBBOUI2MzEwMDA2NzFFOTAgLyogTmFtZWROb2RlTWFwLmlkbCBpbiBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVBQ0E5RjkwQTlCNjMxMDAwNjcx
RTkwIC8qIE5hbWVkTm9kZU1hcC5pZGwgKi87IH07CisJCTg1QUNBOUZDMEE5QjYzMTAwMDY3MUU5
MCAvKiBOb2RlTGlzdC5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg1QUNBOUZBMEE5QjYzMTAwMDY3MUU5MCAvKiBOb2RlTGlzdC5pZGwgKi87IH07
CisJCTg1QUNBQThEMEE5Qjc1OUMwMDY3MUU5MCAvKiBET01Ob2RlTGlzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVBQ0FBODkwQTlCNzU5QzAwNjcx
RTkwIC8qIERPTU5vZGVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJODVBQ0FBOEUwQTlCNzU5QzAwNjcxRTkwIC8qIERPTU5vZGVMaXN0Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVBQ0FBOEEw
QTlCNzU5QzAwNjcxRTkwIC8qIERPTU5vZGVMaXN0Lm1tICovOyB9OworCQk4NUFDQUJCMDBBOUNB
RjgwMDA2NzFFOTAgLyogRE9NRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg1QUNBQkFFMEE5Q0FGODAwMDY3MUU5MCAvKiBET01Eb2N1bWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1
QUNBQkIxMEE5Q0FGODAwMDY3MUU5MCAvKiBET01Eb2N1bWVudC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QUNBQkFGMEE5Q0FGODAwMDY3MUU5MCAv
KiBET01Eb2N1bWVudC5tbSAqLzsgfTsKKwkJODVDQTk2QjgwQTk2MjFBNjAwNjkwQ0NGIC8qIERP
TUVudGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODVDQTk2QjYwQTk2MjFBNjAwNjkwQ0NGIC8qIERPTUVudGl0eS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1Q0E5NkI5MEE5NjIxQTYwMDY5MEND
RiAvKiBET01FbnRpdHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NUNBOTZCNzBBOTYyMUE2MDA2OTBDQ0YgLyogRE9NRW50aXR5Lm1tICovOyB9Owor
CQk4NUNBOTZFQTBBOTYyNEU5MDA2OTBDQ0YgLyogRE9NTm90YXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1Q0E5NkU4MEE5NjI0RTkwMDY5MEND
RiAvKiBET01Ob3RhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTg1Q0E5NkVCMEE5NjI0RTkwMDY5MENDRiAvKiBET01Ob3RhdGlvbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1Q0E5NkU5MEE5
NjI0RTkwMDY5MENDRiAvKiBET01Ob3RhdGlvbi5tbSAqLzsgfTsKKwkJODVDQTk3NUMwQTk2MkU1
NDAwNjkwQ0NGIC8qIERPTURvY3VtZW50VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODVDQTk3NUEwQTk2MkU1NDAwNjkwQ0NGIC8qIERPTURvY3Vt
ZW50VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTg1Q0E5NzVEMEE5NjJFNTQwMDY5MENDRiAvKiBET01Eb2N1bWVudFR5cGUubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUNBOTc1QjBBOTYyRTU0
MDA2OTBDQ0YgLyogRE9NRG9jdW1lbnRUeXBlLm1tICovOyB9OworCQk4NUQzODlCMjBBOTkxQTdG
MDAyODIxNDUgLyogRE9NQXR0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODVEMzg5QjAwQTk5MUE3RjAwMjgyMTQ1IC8qIERPTUF0dHIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NUQzODlCMzBBOTkx
QTdGMDAyODIxNDUgLyogRE9NQXR0ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg1RDM4OUIxMEE5OTFBN0YwMDI4MjE0NSAvKiBET01BdHRyLm1tICov
OyB9OwogCQk4NUVDOUFGQTBBNzFBMkM2MDBFRUVBRUQgLyogRm9udERhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RUM5QUY4MEE3MUEyQzYwMEVF
RUFFRCAvKiBGb250RGF0YS5oICovOyB9OwogCQk4NUVDOUFGQjBBNzFBMkM2MDBFRUVBRUQgLyog
TGFuZ3VhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg1RUM5QUY5MEE3MUEyQzYwMEVFRUFFRCAvKiBMYW5ndWFnZS5oICovOyB9OworCQk4NUY1NkE3
QTBBOThDRTM3MDBBREI2MEEgLyogRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUY1NkE3ODBBOThDRTM3MDBB
REI2MEEgLyogRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVGNTZBN0IwQTk4Q0UzNzAwQURCNjBBIC8q
IERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg1RjU2QTc5MEE5OENFMzcwMEFEQjYwQSAvKiBET01Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24ubW0gKi87IH07CiAJCTkzMDMyQ0M4MDlBRUMzNDMwMEY4MkExOCAvKiBQ
YXRoQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTMwMzJDQzcwOUFFQzM0MzAwRjgyQTE4IC8qIFBhdGhDRy5jcHAgKi87IH07CiAJCTkzMDMyQ0NB
MDlBRUMzNEIwMEY4MkExOCAvKiBQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzAzMkNDOTA5QUVDMzRCMDBGODJBMTggLyogUGF0aC5oICovOyB9
OwogCQk5MzA1QjI0RDA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDVCMjRDMDk4RjFCNkIwMEMyODg1NSAv
KiBUaW1lci5oICovOyB9OwpAQCAtMjA1Myw2ICsyMDk0LDIxIEBACiAJCTg1MDMxQjM5MEE0NEVG
QzcwMEY5OTJFMCAvKiBVSUV2ZW50V2l0aEtleVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVSUV2ZW50V2l0aEtleVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg1MDMxQjNBMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVlbEV2ZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaGVlbEV2ZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODUwMzFCM0IwQTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVs
RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdoZWVsRXZlbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwODlDQzcwQTk4QzIyNjAwQTI3NUFBIC8q
IENvbW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDb21tZW50LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwODlDQzkwQTk4QzJBQjAwQTI3NUFBIC8qIENEQVRB
U2VjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENEQVRBU2VjdGlvbi5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MDg5Q0NCMEE5OEMzM0EwMEEyNzVBQSAvKiBF
bnRpdHlSZWZlcmVuY2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFbnRpdHlSZWZlcmVu
Y2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTA4OUNDRjBBOThDNDI3MDBB
Mjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01DREFUQVNlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUw
ODlDRDAwQTk4QzQyNzAwQTI3NUFBIC8qIERPTUNEQVRBU2VjdGlvbi5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01DREFUQVNlY3Rpb24ubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MDg5Q0QxMEE5OEM0MjcwMEEyNzVBQSAvKiBET01Db21t
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01Db21tZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MDg5Q0QyMEE5OEM0MjcwMEEyNzVBQSAvKiBE
T01Db21tZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERP
TUNvbW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MDg5Q0QzMEE5OEM0
MjgwMEEyNzVBQSAvKiBET01Eb2N1bWVudEZyYWdtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01Eb2N1bWVudEZyYWdtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTg1MDg5Q0Q0MEE5OEM0MjgwMEEyNzVBQSAvKiBET01Eb2N1bWVudEZyYWdtZW50
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTURvY3VtZW50
RnJhZ21lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MDg5Q0Q1MEE5OEM0
MjgwMEEyNzVBQSAvKiBET01FbnRpdHlSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTUVudGl0eVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4NTA4OUNENjBBOThDNDI4MDBBMjc1QUEgLyogRE9NRW50aXR5UmVmZXJlbmNlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUVudGl0eVJlZmVy
ZW5jZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUxOERDRTcwQTlDQzgwQzAw
OTFCN0E2IC8qIERPTURPTUltcGxlbWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01ET01JbXBsZW1lbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4NTE4RENFODBBOUNDODBEMDA5MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50YXRpb24u
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRE9NSW1wbGVt
ZW50YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MThERDc2MEE5Q0Yz
MUIwMDkxQjdBNiAvKiBET01OYW1lZE5vZGVNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTU5hbWVkTm9kZU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4NTE4REQ3NzBBOUNGMzFCMDA5MUI3QTYgLyogRE9NTmFtZWROb2RlTWFwLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTU5hbWVkTm9kZU1hcC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODUyMTdFMDAwQTVFQ0Q0NzAwREI4RDAwIC8qIFhT
TEltcG9ydFJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhT
TEltcG9ydFJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTIxN0UwMTBB
NUVDRDQ3MDBEQjhEMDAgLyogWFNMSW1wb3J0UnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gWFNMSW1wb3J0UnVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NTRGRTcyNjBBMjI5N0JFMDA1OEQ3QUQgLyogTm9kZUZpbHRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZUZpbHRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMDY1LDggKzIxMjEsMzUgQEAKIAkJODU0RkU3MkQwQTIyOTdCRTAw
NThEN0FEIC8qIFRyYXZlcnNhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VHJhdmVyc2FsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1NEZFNzJFMEEyMjk3
QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUcmVlV2Fsa2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODU0RkU3MkYwQTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRyZWVXYWxrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODU2Qzg5RkEwQTkwRjA2ODAwNUM2ODdCIC8qIERPTU5vZGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTZDODlGQjBBOTBG
MDY4MDA1QzY4N0IgLyogRE9NTm9kZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBET01Ob2RlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTZD
OEFFMjBBOTEyNjQ5MDA1QzY4N0IgLyogRE9NT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODU2QzhBRTMwQTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01PYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg1OUI3RkI5MEE4RDI4ODgwMEE1RjFFQSAvKiBDb2RlR2VuZXJhdG9yT2Jq
Qy5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gQ29kZUdlbmVyYXRvck9i
akMucG07IHBhdGggPSBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtOyBzb3Vy
Y2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTg1QUNBOTg0MEE5QjUyMDMwMDY3MUU5MCAvKiBE
T01DaGFyYWN0ZXJEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01D
aGFyYWN0ZXJEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QUNBOTg1MEE5
QjUyMDMwMDY3MUU5MCAvKiBET01DaGFyYWN0ZXJEYXRhLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUNoYXJhY3RlckRhdGEubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg1QUNBOTlBMEE5QjU3NTkwMDY3MUU5MCAvKiBET01UZXh0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01UZXh0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg1QUNBOTlCMEE5QjU3NTkwMDY3MUU5MCAvKiBET01UZXh0Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVRleHQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QUNBOUJFMEE5QjVGQTUwMDY3MUU5MCAvKiBET01F
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01FbGVtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QUNBOUJGMEE5QjVGQTUwMDY3MUU5MCAv
KiBET01FbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IERPTUVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QUNBOUY5MEE5
QjYzMTAwMDY3MUU5MCAvKiBOYW1lZE5vZGVNYXAuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBOYW1lZE5vZGVNYXAuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUFDQTlG
QTBBOUI2MzEwMDA2NzFFOTAgLyogTm9kZUxpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBOb2RlTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QUNBQTg5MEE5
Qjc1OUMwMDY3MUU5MCAvKiBET01Ob2RlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NTm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVB
Q0FBOEEwQTlCNzU5QzAwNjcxRTkwIC8qIERPTU5vZGVMaXN0Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTU5vZGVMaXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4NUFDQUJBRTBBOUNBRjgwMDA2NzFFOTAgLyogRE9NRG9jdW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTURvY3VtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QUNBQkFGMEE5Q0FGODAwMDY3MUU5MCAvKiBET01Eb2N1
bWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01Eb2N1
bWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVDQTk2QjYwQTk2MjFBNjAw
NjkwQ0NGIC8qIERPTUVudGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NRW50aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1Q0E5NkI3MEE5NjIx
QTYwMDY5MENDRiAvKiBET01FbnRpdHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gRE9NRW50aXR5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
NUNBOTZFODBBOTYyNEU5MDA2OTBDQ0YgLyogRE9NTm90YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTU5vdGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg1Q0E5NkU5MEE5NjI0RTkwMDY5MENDRiAvKiBET01Ob3RhdGlvbi5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01Ob3RhdGlvbi5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVDQTk3NUEwQTk2MkU1NDAwNjkwQ0NGIC8qIERPTURv
Y3VtZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRG9jdW1l
bnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1Q0E5NzVCMEE5NjJFNTQw
MDY5MENDRiAvKiBET01Eb2N1bWVudFR5cGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRE9NRG9jdW1lbnRUeXBlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4NUQzODlCMDBBOTkxQTdGMDAyODIxNDUgLyogRE9NQXR0ci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQXR0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4NUQzODlCMTBBOTkxQTdGMDAyODIxNDUgLyogRE9NQXR0ci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01BdHRyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NUVDOUFGODBBNzFBMkM2MDBFRUVBRUQgLyogRm9udERhdGEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnREYXRhLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg1RUM5QUY5MEE3MUEyQzYwMEVFRUFFRCAvKiBMYW5ndWFnZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGFuZ3VhZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVGNTZBNzgwQTk4Q0UzNzAwQURCNjBBIC8qIERPTVByb2Nl
c3NpbmdJbnN0cnVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1
RjU2QTc5MEE5OENFMzcwMEFEQjYwQSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzAzMkNDNzA5QUVDMzQz
MDBGODJBMTggLyogUGF0aENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBhdGhDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMDMyQ0M5MDlB
RUMzNEIwMEY4MkExOCAvKiBQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNUIyNEMwOThGMUI2QjAw
QzI4ODU1IC8qIFRpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRpbWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zOTgxLDYgKzQwNjQsNTcgQEAKIAkJ
CXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk4NTRGMTJB
QzBBOEVCQzE4MDAwOTQwQjUgLyogQ29yZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJODU2Qzg5RkEwQTkwRjA2ODAwNUM2ODdCIC8qIERPTU5vZGUuaCAq
LywKKwkJCQk4NTZDODlGQjBBOTBGMDY4MDA1QzY4N0IgLyogRE9NTm9kZS5tbSAqLywKKwkJCQk4
NTZDOEFFMjBBOTEyNjQ5MDA1QzY4N0IgLyogRE9NT2JqZWN0LmggKi8sCisJCQkJODU2QzhBRTMw
QTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gQ29y
ZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTg1QjIzMjI2MEE4QkYzQTEw
MEZERjQ3QiAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCTg1RDM4OUIwMEE5OTFBN0YwMDI4MjE0NSAvKiBET01BdHRyLmgg
Ki8sCisJCQkJODVEMzg5QjEwQTk5MUE3RjAwMjgyMTQ1IC8qIERPTUF0dHIubW0gKi8sCisJCQkJ
ODUwODlDQ0YwQTk4QzQyNzAwQTI3NUFBIC8qIERPTUNEQVRBU2VjdGlvbi5oICovLAorCQkJCTg1
MDg5Q0QwMEE5OEM0MjcwMEEyNzVBQSAvKiBET01DREFUQVNlY3Rpb24ubW0gKi8sCisJCQkJODVB
Q0E5ODQwQTlCNTIwMzAwNjcxRTkwIC8qIERPTUNoYXJhY3RlckRhdGEuaCAqLywKKwkJCQk4NUFD
QTk4NTBBOUI1MjAzMDA2NzFFOTAgLyogRE9NQ2hhcmFjdGVyRGF0YS5tbSAqLywKKwkJCQk4NTA4
OUNEMTBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ29tbWVudC5oICovLAorCQkJCTg1MDg5Q0QyMEE5
OEM0MjcwMEEyNzVBQSAvKiBET01Db21tZW50Lm1tICovLAorCQkJCTg1MThEQ0U3MEE5Q0M4MEMw
MDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5oICovLAorCQkJCTg1MThEQ0U4MEE5Q0M4
MEQwMDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5tbSAqLywKKwkJCQk4NUFDQUJBRTBB
OUNBRjgwMDA2NzFFOTAgLyogRE9NRG9jdW1lbnQuaCAqLywKKwkJCQk4NUFDQUJBRjBBOUNBRjgw
MDA2NzFFOTAgLyogRE9NRG9jdW1lbnQubW0gKi8sCisJCQkJODUwODlDRDMwQTk4QzQyODAwQTI3
NUFBIC8qIERPTURvY3VtZW50RnJhZ21lbnQuaCAqLywKKwkJCQk4NTA4OUNENDBBOThDNDI4MDBB
Mjc1QUEgLyogRE9NRG9jdW1lbnRGcmFnbWVudC5tbSAqLywKKwkJCQk4NUNBOTc1QTBBOTYyRTU0
MDA2OTBDQ0YgLyogRE9NRG9jdW1lbnRUeXBlLmggKi8sCisJCQkJODVDQTk3NUIwQTk2MkU1NDAw
NjkwQ0NGIC8qIERPTURvY3VtZW50VHlwZS5tbSAqLywKKwkJCQk4NUFDQTlCRTBBOUI1RkE1MDA2
NzFFOTAgLyogRE9NRWxlbWVudC5oICovLAorCQkJCTg1QUNBOUJGMEE5QjVGQTUwMDY3MUU5MCAv
KiBET01FbGVtZW50Lm1tICovLAorCQkJCTg1Q0E5NkI2MEE5NjIxQTYwMDY5MENDRiAvKiBET01F
bnRpdHkuaCAqLywKKwkJCQk4NUNBOTZCNzBBOTYyMUE2MDA2OTBDQ0YgLyogRE9NRW50aXR5Lm1t
ICovLAorCQkJCTg1MDg5Q0Q1MEE5OEM0MjgwMEEyNzVBQSAvKiBET01FbnRpdHlSZWZlcmVuY2Uu
aCAqLywKKwkJCQk4NTA4OUNENjBBOThDNDI4MDBBMjc1QUEgLyogRE9NRW50aXR5UmVmZXJlbmNl
Lm1tICovLAorCQkJCTg1MThERDc2MEE5Q0YzMUIwMDkxQjdBNiAvKiBET01OYW1lZE5vZGVNYXAu
aCAqLywKKwkJCQk4NTE4REQ3NzBBOUNGMzFCMDA5MUI3QTYgLyogRE9NTmFtZWROb2RlTWFwLm1t
ICovLAorCQkJCTg1QUNBQTg5MEE5Qjc1OUMwMDY3MUU5MCAvKiBET01Ob2RlTGlzdC5oICovLAor
CQkJCTg1QUNBQThBMEE5Qjc1OUMwMDY3MUU5MCAvKiBET01Ob2RlTGlzdC5tbSAqLywKKwkJCQk4
NUNBOTZFODBBOTYyNEU5MDA2OTBDQ0YgLyogRE9NTm90YXRpb24uaCAqLywKKwkJCQk4NUNBOTZF
OTBBOTYyNEU5MDA2OTBDQ0YgLyogRE9NTm90YXRpb24ubW0gKi8sCisJCQkJODVGNTZBNzgwQTk4
Q0UzNzAwQURCNjBBIC8qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oICovLAorCQkJCTg1RjU2
QTc5MEE5OENFMzcwMEFEQjYwQSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0gKi8sCisJ
CQkJODVBQ0E5OUEwQTlCNTc1OTAwNjcxRTkwIC8qIERPTVRleHQuaCAqLywKKwkJCQk4NUFDQTk5
QjBBOUI1NzU5MDA2NzFFOTAgLyogRE9NVGV4dC5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gIkRl
cml2ZWQgU291cmNlcyI7CisJCQlwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZTsKKwkJCXNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7CisJCX07CiAJCTkzMDMyQ0NDMDlBRUMzNjIw
MEY4MkExOCAvKiBjZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC00OTY2LDkgKzUxMDAsOSBAQAogCQlCQzFBMzc5NDA5N0M2RkM0MDAxOUYzRDggLyogb2Jq
YyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUNBRjM0
N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oICovLAotCQkJCTFDQUYzNDdG
MEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0gKi8sCi0JCQkJMUNBRjM0ODAw
QTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCAqLywKKwkJCQk4NUIy
MzIyNjBBOEJGM0ExMDBGREY0N0IgLyogRGVyaXZlZCBTb3VyY2VzICovLAorCQkJCTg1NEYxMkFD
MEE4RUJDMTgwMDA5NDBCNSAvKiBDb3JlICovLAorCQkJCTg1OUI3RkI5MEE4RDI4ODgwMEE1RjFF
QSAvKiBDb2RlR2VuZXJhdG9yT2JqQy5wbSAqLywKIAkJCQlCQzFBMzc5NzA5N0M3MTVGMDAxOUYz
RDggLyogRE9NLmggKi8sCiAJCQkJQkMxQTM3OTgwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTS5tbSAq
LywKIAkJCQlCQzFBMzc5OTA5N0M3MTVGMDAxOUYzRDggLyogRE9NQ29yZS5oICovLApAQCAtNDk5
OCw2ICs1MTMyLDkgQEAKIAkJCQkxQTFEMTM3RTBBNTMyNTUyMDA2NEJGNUYgLyogRE9NWFBhdGgu
aCAqLywKIAkJCQkxQTFEMTM3RjBBNTMyNTUyMDA2NEJGNUYgLyogRE9NWFBhdGgubW0gKi8sCiAJ
CQkJMUExRDEzQzkwQTUzMjkwOTAwNjRCRjVGIC8qIERPTVhQYXRoSW50ZXJuYWwuaCAqLywKKwkJ
CQkxQ0FGMzQ3RTBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0LmggKi8sCisJCQkJ
MUNBRjM0N0YwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSAqLywKKwkJCQkx
Q0FGMzQ4MDBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oICovLAog
CQkJKTsKIAkJCXBhdGggPSBvYmpjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTU0
NzgsNiArNTYxNSw3IEBACiAJCQkJODUwMzFCMjcwQTQ0RUZDNzAwRjk5MkUwIC8qIEJlZm9yZVVu
bG9hZEV2ZW50LmggKi8sCiAJCQkJNjU1MEI2OTMwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2Vj
dGlvbi5jcHAgKi8sCiAJCQkJNjU1MEI2OTQwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlv
bi5oICovLAorCQkJCTg1MDg5Q0M5MEE5OEMyQUIwMEEyNzVBQSAvKiBDREFUQVNlY3Rpb24uaWRs
ICovLAogCQkJCTY1NTBCNjk1MDk5REYwMjcwMDkwRDc4MSAvKiBDaGFyYWN0ZXJEYXRhLmNwcCAq
LywKIAkJCQk2NTUwQjY5NjA5OURGMDI3MDA5MEQ3ODEgLyogQ2hhcmFjdGVyRGF0YS5oICovLAog
CQkJCTkzRUVDMUU2MDlDMjg3NzcwMEM1MTVEMSAvKiBDaGFyYWN0ZXJEYXRhLmlkbCAqLywKQEAg
LTU0ODgsNiArNTYyNiw3IEBACiAJCQkJODUwMzFCMkEwQTQ0RUZDNzAwRjk5MkUwIC8qIENsaXBi
b2FyZEV2ZW50LmggKi8sCiAJCQkJNjU1MEI2OTcwOTlERjAyNzAwOTBENzgxIC8qIENvbW1lbnQu
Y3BwICovLAogCQkJCTY1NTBCNjk4MDk5REYwMjcwMDkwRDc4MSAvKiBDb21tZW50LmggKi8sCisJ
CQkJODUwODlDQzcwQTk4QzIyNjAwQTI3NUFBIC8qIENvbW1lbnQuaWRsICovLAogCQkJCUE4MTg3
MjE0MDk3N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmNwcCAqLywKIAkJCQlBODE4NzIx
MTA5NzdEM0MwMDA1ODI2RDkgLyogQ29udGFpbmVyTm9kZS5oICovLAogCQkJCUE4QzRBN0Y4MDlE
NTYzMjcwMDAzQUM4RCAvKiBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbi5jcHAgKi8sCkBA
IC01NTE2LDYgKzU2NTUsNyBAQAogCQkJCTkzRUVDMUVCMDlDMjg3NzcwMEM1MTVEMSAvKiBFbnRp
dHkuaWRsICovLAogCQkJCUE4RUE3RUI5MEExOTQ1RDAwMEE4RUY1RiAvKiBFbnRpdHlSZWZlcmVu
Y2UuY3BwICovLAogCQkJCUE4RUE3RUI4MEExOTQ1RDAwMEE4RUY1RiAvKiBFbnRpdHlSZWZlcmVu
Y2UuaCAqLywKKwkJCQk4NTA4OUNDQjBBOThDMzNBMDBBMjc1QUEgLyogRW50aXR5UmVmZXJlbmNl
LmlkbCAqLywKIAkJCQk4NTAzMUIyQjBBNDRFRkM3MDBGOTkyRTAgLyogRXZlbnQuY3BwICovLAog
CQkJCTg1MDMxQjJDMEE0NEVGQzcwMEY5OTJFMCAvKiBFdmVudC5oICovLAogCQkJCTE0RTgzNkQy
MDlGODUxMjAwMEI4NUFFNCAvKiBFdmVudC5pZGwgKi8sCkBAIC01NTQ0LDYgKzU2ODQsNyBAQAog
CQkJCUE4QzRBN0YwMDlENTYzMjcwMDAzQUM4RCAvKiBOYW1lZE1hcHBlZEF0dHJNYXAuY3BwICov
LAogCQkJCUE4QzRBN0VGMDlENTYzMjcwMDAzQUM4RCAvKiBOYW1lZE1hcHBlZEF0dHJNYXAuaCAq
LywKIAkJCQlBODE4NzIxODA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggKi8sCisJ
CQkJODVBQ0E5RjkwQTlCNjMxMDAwNjcxRTkwIC8qIE5hbWVkTm9kZU1hcC5pZGwgKi8sCiAJCQkJ
QTgxODcyMTkwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlzdC5jcHAgKi8sCiAJCQkJQTgx
ODcyMTMwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlzdC5oICovLAogCQkJCUE4QzRBN0VF
MDlENTYzMjcwMDAzQUM4RCAvKiBOb2RlLmNwcCAqLywKQEAgLTU1NTksNiArNTcwMCw3IEBACiAJ
CQkJMUE3NTBEODcwQTkwRTM5NDAwMEZGMjE1IC8qIE5vZGVJdGVyYXRvci5pZGwgKi8sCiAJCQkJ
QTgxODcyMTYwOTc3RDNDMDAwNTgyNkQ5IC8qIE5vZGVMaXN0LmNwcCAqLywKIAkJCQlBODE4NzIx
MDA5NzdEM0MwMDA1ODI2RDkgLyogTm9kZUxpc3QuaCAqLywKKwkJCQk4NUFDQTlGQTBBOUI2MzEw
MDA2NzFFOTAgLyogTm9kZUxpc3QuaWRsICovLAogCQkJCUE4RUE3RUI3MEExOTQ1RDAwMEE4RUY1
RiAvKiBOb3RhdGlvbi5jcHAgKi8sCiAJCQkJQThFQTdFQjYwQTE5NDVEMDAwQThFRjVGIC8qIE5v
dGF0aW9uLmggKi8sCiAJCQkJOTNFRUMxRjQwOUMyODc3NzAwQzUxNUQxIC8qIE5vdGF0aW9uLmlk
bCAqLywKQEAgLTYzODEsNiArNjUyMywxMSBAQAogCQkJCUJDQUE5MEEwMEE3RUIwM0EwMDhCMTIy
OSAvKiBQbGF0Zm9ybVNjcm9sbEJhci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFQzlBRkEwQTcx
QTJDNjAwRUVFQUVEIC8qIEZvbnREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUVDOUFGQjBB
NzFBMkM2MDBFRUVBRUQgLyogTGFuZ3VhZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1NkM4OUZD
MEE5MEYwNjgwMDVDNjg3QiAvKiBET01Ob2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTZDOEFF
NDBBOTEyNjQ5MDA1QzY4N0IgLyogRE9NT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUNB
OTZCODBBOTYyMUE2MDA2OTBDQ0YgLyogRE9NRW50aXR5LmggaW4gSGVhZGVycyAqLywKKwkJCQk4
NUNBOTZFQTBBOTYyNEU5MDA2OTBDQ0YgLyogRE9NTm90YXRpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCTg1Q0E5NzVDMEE5NjJFNTQwMDY5MENDRiAvKiBET01Eb2N1bWVudFR5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBQjdGQzY5MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCN0ZDNkMwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhw
cmVzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCN0ZDNkYwQThCOTJFQzAwRDlEMzdCIC8q
IFhQYXRoRXhwcmVzc2lvbk5vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtNjQwMSw2ICs2NTQ4LDE5
IEBACiAJCQkJMUFDRTUzRjcwQThEMTk0NzAwMjI5NDdEIC8qIEpTWE1MU2VyaWFsaXplci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE3NTBENUQwQTkwREVFMTAwMEZGMjE1IC8qIEpTVHJlZVdhbGtl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE3NTBEOEUwQTkwRTUyMTAwMEZGMjE1IC8qIEpTTm9k
ZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTA4OUNENzBBOThDNDI4MDBBMjc1QUEg
LyogRE9NQ0RBVEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTA4OUNEOTBBOThDNDI4
MDBBMjc1QUEgLyogRE9NQ29tbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODUwODlDREIwQTk4
QzQyODAwQTI3NUFBIC8qIERPTURvY3VtZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTg1MDg5Q0REMEE5OEM0MjgwMEEyNzVBQSAvKiBET01FbnRpdHlSZWZlcmVuY2UuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTg1RjU2QTdBMEE5OENFMzcwMEFEQjYwQSAvKiBET01Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTg1RDM4OUIyMEE5OTFBN0YwMDI4MjE0NSAv
KiBET01BdHRyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUFDQTk4NjBBOUI1MjAzMDA2NzFFOTAg
LyogRE9NQ2hhcmFjdGVyRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODVBQ0E5OUMwQTlCNTc1
OTAwNjcxRTkwIC8qIERPTVRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1QUNBOUMwMEE5QjVG
QTUwMDY3MUU5MCAvKiBET01FbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUFDQUE4RDBB
OUI3NTlDMDA2NzFFOTAgLyogRE9NTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1QUNB
QkIwMEE5Q0FGODAwMDY3MUU5MCAvKiBET01Eb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
ODUxOERDRTkwQTlDQzgwRDAwOTFCN0E2IC8qIERPTURPTUltcGxlbWVudGF0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk4NTE4REQ3ODBBOUNGMzFCMDA5MUI3QTYgLyogRE9NTmFtZWROb2RlTWFw
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTc0MjkxNzBBOUMyRDBCMDBDNTJDOTcgLyogSWNvbkRh
dGFDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU3NDI5MTgwQTlDMkQwQjAwQzUyQzk3IC8q
IFNRTFN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU3NDI5MTkwQTlDMkQwQjAwQzUy
Qzk3IC8qIFNRTFRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTY0OTUsNiArNjY1NSwx
MSBAQAogCQkJCTFDRDQ0MThGMEE0Q0U3NkYwMEEwMDdBQiAvKiBub3J0aFNvdXRoUmVzaXplQ3Vy
c29yLnRpZmYgaW4gUmVzb3VyY2VzICovLAogCQkJCTFDRDQ0MTkwMEE0Q0U3NkYwMEEwMDdBQiAv
KiBub3J0aFdlc3RTb3V0aEVhc3RSZXNpemVDdXJzb3IudGlmZiBpbiBSZXNvdXJjZXMgKi8sCiAJ
CQkJMUE3NTBEODgwQTkwRTM5NDAwMEZGMjE1IC8qIE5vZGVJdGVyYXRvci5pZGwgaW4gUmVzb3Vy
Y2VzICovLAorCQkJCTg1MDg5Q0M4MEE5OEMyMjYwMEEyNzVBQSAvKiBDb21tZW50LmlkbCBpbiBS
ZXNvdXJjZXMgKi8sCisJCQkJODUwODlDQ0EwQTk4QzJBQjAwQTI3NUFBIC8qIENEQVRBU2VjdGlv
bi5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCTg1MDg5Q0NDMEE5OEMzM0EwMEEyNzVBQSAvKiBF
bnRpdHlSZWZlcmVuY2UuaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQk4NUFDQTlGQjBBOUI2MzEw
MDA2NzFFOTAgLyogTmFtZWROb2RlTWFwLmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJODVBQ0E5
RkMwQTlCNjMxMDAwNjcxRTkwIC8qIE5vZGVMaXN0LmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJ
NTExNTA5NUMwQTlDRTA0NzAwOTAxMDEzIC8qIHVybEljb24udGlmZiBpbiBSZXNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC03
MjUzLDYgKzc0MTgsMTEgQEAKIAkJCQlCQ0FBOTBDMzBBN0VCQTYwMDA4QjEyMjkgLyogU2Nyb2xs
QmFyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzQjBGRDhBMEE3NTlCRUQwMDgwQUQ0NCAvKiBT
dHJpbmdJbXBsTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNCMEZEOEIwQTc1OUJFRDAwODBB
RDQ0IC8qIFN0cmluZ01hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1NkM4OUZEMEE5MEYwNjgw
MDVDNjg3QiAvKiBET01Ob2RlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODU2QzhBRTUwQTkxMjY0
OTAwNUM2ODdCIC8qIERPTU9iamVjdC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1Q0E5NkI5MEE5
NjIxQTYwMDY5MENDRiAvKiBET01FbnRpdHkubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NUNBOTZF
QjBBOTYyNEU5MDA2OTBDQ0YgLyogRE9NTm90YXRpb24ubW0gaW4gU291cmNlcyAqLywKKwkJCQk4
NUNBOTc1RDBBOTYyRTU0MDA2OTBDQ0YgLyogRE9NRG9jdW1lbnRUeXBlLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFCN0ZDNjgwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBQjdGQzZCMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJl
c3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0ZDNkUwQThCOTJFQzAwRDlEMzdCIC8q
IFhQYXRoRXhwcmVzc2lvbk5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03Mjc1LDYgKzc0NDUs
MTkgQEAKIAkJCQkxQTc1MEQ4RDBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3NTBERDQwQTkwRTcyOTAwMEZGMjE1IC8qIEpTTm9kZUl0
ZXJhdG9yQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNzUwRTM0MEE5MEY4OUYwMDBG
RjIxNSAvKiBKU1RyZWVXYWxrZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODUwODlD
RDgwQTk4QzQyODAwQTI3NUFBIC8qIERPTUNEQVRBU2VjdGlvbi5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTg1MDg5Q0RBMEE5OEM0MjgwMEEyNzVBQSAvKiBET01Db21tZW50Lm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJODUwODlDREMwQTk4QzQyODAwQTI3NUFBIC8qIERPTURvY3VtZW50RnJhZ21lbnQu
bW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTA4OUNERTBBOThDNDI4MDBBMjc1QUEgLyogRE9NRW50
aXR5UmVmZXJlbmNlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODVGNTZBN0IwQTk4Q0UzNzAwQURC
NjBBIC8qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1
RDM4OUIzMEE5OTFBN0YwMDI4MjE0NSAvKiBET01BdHRyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
ODVBQ0E5ODcwQTlCNTIwMzAwNjcxRTkwIC8qIERPTUNoYXJhY3RlckRhdGEubW0gaW4gU291cmNl
cyAqLywKKwkJCQk4NUFDQTk5RDBBOUI1NzU5MDA2NzFFOTAgLyogRE9NVGV4dC5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTg1QUNBOUMxMEE5QjVGQTUwMDY3MUU5MCAvKiBET01FbGVtZW50Lm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJODVBQ0FBOEUwQTlCNzU5QzAwNjcxRTkwIC8qIERPTU5vZGVMaXN0
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODVBQ0FCQjEwQTlDQUY4MDAwNjcxRTkwIC8qIERPTURv
Y3VtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODUxOERDRUEwQTlDQzgwRDAwOTFCN0E2IC8q
IERPTURPTUltcGxlbWVudGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODUxOERENzkwQTlD
RjMxQjAwOTFCN0E2IC8qIERPTU5hbWVkTm9kZU1hcC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUx
ODZDMDU2MEE5QzIxNDcwMDM0RkU5NCAvKiBJY29uRGF0YUNhY2hlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NLm1tCShyZXZpc2lvbiAxNTk5NykKKysrIFdlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET00ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA0LTIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgSmFtZXMgRy4gU3BldGggKHNwZXRoQGVuZC5jb20p
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5j
b20pCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDE3ICsyOSwxNyBAQAog
I2ltcG9ydCAiRE9NLmgiCiAKICNpbXBvcnQgIkNEQVRBU2VjdGlvbi5oIgotI2ltcG9ydCAiY3Nz
aGVscGVyLmgiCiAjaW1wb3J0ICJDU1NTdHlsZVNoZWV0LmgiCiAjaW1wb3J0ICJDb21tZW50Lmgi
CiAjaW1wb3J0ICJET01FdmVudHNJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NSFRNTC5oIgogI2lt
cG9ydCAiRE9NSW1wbGVtZW50YXRpb25Gcm9udC5oIgogI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIK
ICNpbXBvcnQgIkRPTVByaXZhdGUuaCIKKyNpbXBvcnQgIkRlcHJlY2F0ZWRWYWx1ZUxpc3QuaCIK
ICNpbXBvcnQgIkRvY3VtZW50LmgiCiAjaW1wb3J0ICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW1w
b3J0ICJEb2N1bWVudFR5cGUuaCIKLSNpbXBvcnQgIkVudGl0eS5oIgogI2ltcG9ydCAiRW50aXR5
UmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJFdmVudC5oIgogI2ltcG9ydCAiRXZlbnRMaXN0ZW5lci5o
IgpAQCAtNDcsMzcgKzQ4LDEyMiBAQAogI2ltcG9ydCAiSFRNTERvY3VtZW50LmgiCiAjaW1wb3J0
ICJIVE1MTmFtZXMuaCIKICNpbXBvcnQgIkhUTUxQbHVnSW5FbGVtZW50LmgiCisjaW1wb3J0ICJJ
bnRSZWN0LmgiCiAjaW1wb3J0ICJOb2RlRmlsdGVyLmgiCiAjaW1wb3J0ICJOb2RlRmlsdGVyQ29u
ZGl0aW9uLmgiCiAjaW1wb3J0ICJOb2RlSXRlcmF0b3IuaCIKICNpbXBvcnQgIk5vZGVMaXN0Lmgi
Ci0jaW1wb3J0ICJOb3RhdGlvbi5oIgogI2ltcG9ydCAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgi
CiAjaW1wb3J0ICJRdWFsaWZpZWROYW1lLmgiCiAjaW1wb3J0ICJSYW5nZS5oIgogI2ltcG9ydCAi
UmVuZGVySW1hZ2UuaCIKKyNpbXBvcnQgIlRleHQuaCIKICNpbXBvcnQgIlRyZWVXYWxrZXIuaCIK
ICNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKKyNpbXBvcnQgImNzc2hlbHBlci5o
IgorCisKKworLy8gRnJvbSBvbGQgRE9NQ29yZS5oCisjaW1wb3J0ICJET01Ob2RlLmgiCisjaW1w
b3J0ICJET01PYmplY3QuaCIKKworLy8gR2VuZXJhdGVkIE9iamVjdGl2ZS1DIEJpbmRpbmdzCisj
aW1wb3J0ICJET01BdHRyLmgiCisjaW1wb3J0ICJET01DREFUQVNlY3Rpb24uaCIKKyNpbXBvcnQg
IkRPTUNoYXJhY3RlckRhdGEuaCIKKyNpbXBvcnQgIkRPTUNvbW1lbnQuaCIKKyNpbXBvcnQgIkRP
TURPTUltcGxlbWVudGF0aW9uLmgiCisjaW1wb3J0ICJET01Eb2N1bWVudC5oIgorI2ltcG9ydCAi
RE9NRG9jdW1lbnRGcmFnbWVudC5oIgorI2ltcG9ydCAiRE9NRG9jdW1lbnRUeXBlLmgiCisjaW1w
b3J0ICJET01FbGVtZW50LmgiCisjaW1wb3J0ICJET01FbnRpdHkuaCIKKyNpbXBvcnQgIkRPTUVu
dGl0eVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiRE9NTmFtZWROb2RlTWFwLmgiCisjaW1wb3J0ICJE
T01Ob2RlTGlzdC5oIgorI2ltcG9ydCAiRE9NTm90YXRpb24uaCIKKyNpbXBvcnQgIkRPTVByb2Nl
c3NpbmdJbnN0cnVjdGlvbi5oIgorI2ltcG9ydCAiRE9NVGV4dC5oIgorCisKKy8vIEZyb20gb2xk
IERPTUhUTUwuaAorLy8jaW1wb3J0ICJET01IVE1MQW5jaG9yRWxlbWVudC5oIgorLy8jaW1wb3J0
ICJET01IVE1MQXBwbGV0RWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MQ29sbGVjdGlvbi5o
IgorLy8jaW1wb3J0ICJET01IVE1MRG9jdW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTEVsZW1l
bnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTEZyYW1lRWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01I
VE1MRnJhbWVTZXRFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxJRnJhbWVFbGVtZW50Lmgi
CisvLyNpbXBvcnQgIkRPTUhUTUxPYmplY3RFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxP
cHRpb25FbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgor
Ly8jaW1wb3J0ICJET01IVE1MU2VsZWN0RWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MVGFi
bGVDYXB0aW9uRWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MVGFibGVDZWxsRWxlbWVudC5o
IgorLy8jaW1wb3J0ICJET01IVE1MVGFibGVDb2xFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhU
TUxUYWJsZUVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTFRhYmxlUm93RWxlbWVudC5oIgor
Ly8jaW1wb3J0ICJET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oIgorCisvLyBHZW5lcmF0ZWQg
T2JqZWN0aXZlLUMgQmluZGluZ3MKKy8vI2ltcG9ydCAiRE9NSFRNTEFyZWFFbGVtZW50LmgiCisv
LyNpbXBvcnQgIkRPTUhUTUxCUkVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTEJhc2VFbGVt
ZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxCYXNlRm9udEVsZW1lbnQuaCIKKy8vI2ltcG9ydCAi
RE9NSFRNTEJvZHlFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxCdXR0b25FbGVtZW50Lmgi
CisvLyNpbXBvcnQgIkRPTUhUTUxETGlzdEVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTERp
cmVjdG9yeUVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTERpdkVsZW1lbnQuaCIKKy8vI2lt
cG9ydCAiRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MRm9udEVs
ZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTEZvcm1FbGVtZW50LmgiCisvLyNpbXBvcnQgIkRP
TUhUTUxIUkVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTEhlYWRFbGVtZW50LmgiCisvLyNp
bXBvcnQgIkRPTUhUTUxIZWFkaW5nRWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MSHRtbEVs
ZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTEltYWdlRWxlbWVudC5oIgorLy8jaW1wb3J0ICJE
T01IVE1MSW5wdXRFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxJc0luZGV4RWxlbWVudC5o
IgorLy8jaW1wb3J0ICJET01IVE1MTElFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxMYWJl
bEVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTExlZ2VuZEVsZW1lbnQuaCIKKy8vI2ltcG9y
dCAiRE9NSFRNTExpbmtFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxNYXBFbGVtZW50Lmgi
CisvLyNpbXBvcnQgIkRPTUhUTUxNZW51RWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MTWV0
YUVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTE1vZEVsZW1lbnQuaCIKKy8vI2ltcG9ydCAi
RE9NSFRNTE9MaXN0RWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MT2JqZWN0RWxlbWVudC5o
IgorLy8jaW1wb3J0ICJET01IVE1MT3B0R3JvdXBFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhU
TUxQYXJhZ3JhcGhFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxQYXJhbUVsZW1lbnQuaCIK
Ky8vI2ltcG9ydCAiRE9NSFRNTFByZUVsZW1lbnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTFF1b3Rl
RWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01IVE1MU2NyaXB0RWxlbWVudC5oIgorLy8jaW1wb3J0
ICJET01IVE1MU3R5bGVFbGVtZW50LmgiCisvLyNpbXBvcnQgIkRPTUhUTUxUZXh0QXJlYUVsZW1l
bnQuaCIKKy8vI2ltcG9ydCAiRE9NSFRNTFRpdGxlRWxlbWVudC5oIgorLy8jaW1wb3J0ICJET01I
VE1MVUxpc3RFbGVtZW50LmgiCisKKwogI2ltcG9ydCA8b2JqYy9vYmpjLWNsYXNzLmg+CiAKIHVz
aW5nIFdlYkNvcmU6OkF0b21pY1N0cmluZzsKIHVzaW5nIFdlYkNvcmU6OkF0b21pY1N0cmluZ0lt
cGw7CiB1c2luZyBXZWJDb3JlOjpBdHRyOwotdXNpbmcgV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTsK
LXVzaW5nIFdlYkNvcmU6OkRlcHJlY2F0ZWRWYWx1ZUxpc3Q7CiB1c2luZyBXZWJDb3JlOjpEb2N1
bWVudDsKIHVzaW5nIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ7Ci11c2luZyBXZWJDb3JlOjpE
b2N1bWVudFR5cGU7CiB1c2luZyBXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbkZyb250OwogdXNp
bmcgV2ViQ29yZTo6RWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6OkVudGl0eTsKIHVzaW5nIFdlYkNv
cmU6OkV2ZW50OwogdXNpbmcgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcjsKIHVzaW5nIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGU7CiB1c2luZyBXZWJDb3JlOjpIVE1MRG9jdW1lbnQ7CiB1c2luZyBXZWJD
b3JlOjpIVE1MRWxlbWVudDsKIHVzaW5nIFdlYkNvcmU6OkZyYW1lTWFjOwotdXNpbmcgV2ViQ29y
ZTo6SW50UmVjdDsKIHVzaW5nIFdlYkNvcmU6OktVUkw7CiB1c2luZyBXZWJDb3JlOjpOYW1lZE5v
ZGVNYXA7CiB1c2luZyBXZWJDb3JlOjpOb2RlOwpAQCAtODUsMzIgKzE3MSwxNSBAQCB1c2luZyBX
ZWJDb3JlOjpOb2RlRmlsdGVyOwogdXNpbmcgV2ViQ29yZTo6Tm9kZUZpbHRlckNvbmRpdGlvbjsK
IHVzaW5nIFdlYkNvcmU6Ok5vZGVJdGVyYXRvcjsKIHVzaW5nIFdlYkNvcmU6Ok5vZGVMaXN0Owot
dXNpbmcgV2ViQ29yZTo6Tm90YXRpb247Ci11c2luZyBXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb247CiB1c2luZyBXZWJDb3JlOjpRdWFsaWZpZWROYW1lOwogdXNpbmcgV2ViQ29yZTo6UmFu
Z2U7CiB1c2luZyBXZWJDb3JlOjpSZW5kZXJJbWFnZTsKIHVzaW5nIFdlYkNvcmU6OlJlbmRlck9i
amVjdDsKIHVzaW5nIFdlYkNvcmU6OlN0cmluZzsKLXVzaW5nIFdlYkNvcmU6OlRleHQ7CiB1c2lu
ZyBXZWJDb3JlOjpUcmVlV2Fsa2VyOwogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6SFRNTE5h
bWVzOwogCi1AaW50ZXJmYWNlIERPTUF0dHIgKFdlYkNvcmVJbnRlcm5hbCkKLSsgKERPTUF0dHIg
KilfYXR0cldpdGg6KEF0dHIgKilpbXBsOwotLSAoQXR0ciAqKV9hdHRyOwotQGVuZAotCi1AaW50
ZXJmYWNlIERPTURvY3VtZW50VHlwZSAoV2ViQ29yZUludGVybmFsKQotLSAoRG9jdW1lbnRUeXBl
ICopX2RvY3VtZW50VHlwZTsKLUBlbmQKLQotQGludGVyZmFjZSBET01JbXBsZW1lbnRhdGlvbiAo
V2ViQ29yZUludGVybmFsKQotKyAoRE9NSW1wbGVtZW50YXRpb24gKilfRE9NSW1wbGVtZW50YXRp
b25XaXRoOihET01JbXBsZW1lbnRhdGlvbkZyb250ICopaW1wbDsKLS0gKERPTUltcGxlbWVudGF0
aW9uRnJvbnQgKilfRE9NSW1wbGVtZW50YXRpb247Ci1AZW5kCi0KIGNsYXNzIE9iakNFdmVudExp
c3RlbmVyIDogcHVibGljIEV2ZW50TGlzdGVuZXIgewogcHVibGljOgogICAgIHN0YXRpYyBPYmpD
RXZlbnRMaXN0ZW5lciAqZmluZChpZCA8RE9NRXZlbnRMaXN0ZW5lcj4pOwpAQCAtMTMxLDQyICsy
MDAsMTAgQEAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDbGFzcwogc3RhdGlj
IE9iakNDbGFzc01hcCogZWxlbWVudENsYXNzTWFwOwogc3RhdGljIExpc3RlbmVyTWFwKiBsaXN0
ZW5lck1hcDsKIAorCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRE9N
T2JqZWN0CiAKLUBpbXBsZW1lbnRhdGlvbiBET01PYmplY3QKLQotLy8gUHJldmVudCBjcmVhdGlv
biBvZiBET00gb2JqZWN0cyBieSBjbGllbnRzIHdobyBqdXN0ICJbW3h4eCBhbGxvY10gaW5pdF0i
LgotLSAoaWQpaW5pdAotewotICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0dlbmVyaWNFeGNlcHRp
b24gZm9ybWF0OkAiK1slQCBpbml0XTogc2hvdWxkIG5ldmVyIGJlIHVzZWQiLCBOU1N0cmluZ0Zy
b21DbGFzcyhbc2VsZiBjbGFzc10pXTsKLSAgICBbc2VsZiByZWxlYXNlXTsKLSAgICByZXR1cm4g
bmlsOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAg
ICAgIHJlbW92ZURPTVdyYXBwZXIoX2ludGVybmFsKTsKLSAgICB9Ci0gICAgW3N1cGVyIGRlYWxs
b2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAg
ICAgICByZW1vdmVET01XcmFwcGVyKF9pbnRlcm5hbCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5h
bGl6ZV07Ci19Ci0KLS0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQotewotICAgIHJl
dHVybiBbc2VsZiByZXRhaW5dOwotfQotCi1AZW5kCi0KIEBpbXBsZW1lbnRhdGlvbiBET01PYmpl
Y3QgKFdlYkNvcmVJbnRlcm5hbCkKIAogLSAoaWQpX2luaXQKQEAgLTE3NiwyNzEgKzIxMywxMCBA
QCBzdGF0aWMgTGlzdGVuZXJNYXAqIGxpc3RlbmVyTWFwOwogCiBAZW5kCiAKKwogLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTU5vZGUKIAotQGltcGxlbWVudGF0aW9u
IERPTU5vZGUKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAg
ICAgICBET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtz
dXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJu
YWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAg
IH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChOU1N0cmluZyAqKWRlc2NyaXB0aW9u
Ci17Ci0gICAgaWYgKCFfaW50ZXJuYWwpIHsKLSAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiPCVAOiBudWxsPiIsCi0gICAgICAgICAgICBbW3NlbGYgY2xhc3NdIGRl
c2NyaXB0aW9uXSwgc2VsZl07Ci0gICAgfQotICAgIE5TU3RyaW5nICp2YWx1ZSA9IFtzZWxmIG5v
ZGVWYWx1ZV07Ci0gICAgaWYgKHZhbHVlKSB7Ci0gICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIjwlQCBbJUBdOiAlcCAnJUAnPiIsCi0gICAgICAgICAgICBbW3NlbGYg
Y2xhc3NdIGRlc2NyaXB0aW9uXSwgW3NlbGYgbm9kZU5hbWVdLCBfaW50ZXJuYWwsIHZhbHVlXTsK
LSAgICB9Ci0gICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAIFslQF06
ICVwPiIsCi0gICAgICAgIFtbc2VsZiBjbGFzc10gZGVzY3JpcHRpb25dLCBbc2VsZiBub2RlTmFt
ZV0sIF9pbnRlcm5hbF07Ci19Ci0KLS0gKE5TU3RyaW5nICopbm9kZU5hbWUKLXsKLSAgICByZXR1
cm4gW3NlbGYgX25vZGVdLT5ub2RlTmFtZSgpOwotfQotCi0tIChOU1N0cmluZyAqKW5vZGVWYWx1
ZQotewotICAgIC8vIERvY3VtZW50YXRpb24gc2F5cyB3ZSBjYW4gcmFpc2UgYSBET01TVFJJTkdf
U0laRV9FUlIuCi0gICAgLy8gSG93ZXZlciwgdGhlIGxvd2VyIGxheWVyIGRvZXMgbm90IHJlcG9y
dCB0aGF0IGVycm9yIHVwIHRvIHVzLgotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPm5vZGVWYWx1
ZSgpOwotfQotCi0tICh2b2lkKXNldE5vZGVWYWx1ZTooTlNTdHJpbmcgKilzdHJpbmcKLXsKLSAg
ICBBU1NFUlQoc3RyaW5nKTsKLSAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBb
c2VsZiBfbm9kZV0tPnNldE5vZGVWYWx1ZShzdHJpbmcsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwotfQotCi0tICh1bnNpZ25lZCBzaG9ydClub2RlVHlwZQotewotICAgIHJldHVybiBb
c2VsZiBfbm9kZV0tPm5vZGVUeXBlKCk7Ci19Ci0KLS0gKERPTU5vZGUgKilwYXJlbnROb2RlCi17
Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPnBhcmVudE5vZGUo
KV07Ci19Ci0KLS0gKERPTU5vZGVMaXN0ICopY2hpbGROb2RlcwotewotICAgIHJldHVybiBbRE9N
Tm9kZUxpc3QgX25vZGVMaXN0V2l0aDpbc2VsZiBfbm9kZV0tPmNoaWxkTm9kZXMoKS5nZXQoKV07
Ci19Ci0KLS0gKERPTU5vZGUgKilmaXJzdENoaWxkCi17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9u
b2RlV2l0aDpbc2VsZiBfbm9kZV0tPmZpcnN0Q2hpbGQoKV07Ci19Ci0KLS0gKERPTU5vZGUgKils
YXN0Q2hpbGQKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9ub2RlXS0+
bGFzdENoaWxkKCldOwotfQotCi0tIChET01Ob2RlICopcHJldmlvdXNTaWJsaW5nCi17Ci0gICAg
cmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPnByZXZpb3VzU2libGluZygp
XTsKLX0KLQotLSAoRE9NTm9kZSAqKW5leHRTaWJsaW5nCi17Ci0gICAgcmV0dXJuIFtET01Ob2Rl
IF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPm5leHRTaWJsaW5nKCldOwotfQotCi0tIChET01OYW1l
ZE5vZGVNYXAgKilhdHRyaWJ1dGVzCi17Ci0gICAgLy8gRE9NIGxldmVsIDIgY29yZSBzcGVjaWZp
Y2F0aW9uIHNheXM6IAotICAgIC8vIEEgTmFtZWROb2RlTWFwIGNvbnRhaW5pbmcgdGhlIGF0dHJp
YnV0ZXMgb2YgdGhpcyBub2RlIChpZiBpdCBpcyBhbiBFbGVtZW50KSBvciBudWxsIG90aGVyd2lz
ZS4KLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChET01Eb2N1bWVudCAqKW93bmVyRG9jdW1lbnQK
LXsKLSAgICByZXR1cm4gW0RPTURvY3VtZW50IF9kb2N1bWVudFdpdGg6W3NlbGYgX25vZGVdLT5k
b2N1bWVudCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKWluc2VydEJlZm9yZTooRE9NTm9kZSAqKW5l
d0NoaWxkIDooRE9NTm9kZSAqKXJlZkNoaWxkCi17Ci0gICAgQVNTRVJUKG5ld0NoaWxkKTsKLSAg
ICBBU1NFUlQocmVmQ2hpbGQpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYg
KFtzZWxmIF9ub2RlXS0+aW5zZXJ0QmVmb3JlKFtuZXdDaGlsZCBfbm9kZV0sIFtyZWZDaGlsZCBf
bm9kZV0sIGVjKSkKLSAgICAgICAgcmV0dXJuIG5ld0NoaWxkOwotICAgIHJhaXNlT25ET01FcnJv
cihlYyk7Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoRE9NTm9kZSAqKXJlcGxhY2VDaGlsZDoo
RE9NTm9kZSAqKW5ld0NoaWxkIDooRE9NTm9kZSAqKW9sZENoaWxkCi17Ci0gICAgQVNTRVJUKG5l
d0NoaWxkKTsKLSAgICBBU1NFUlQob2xkQ2hpbGQpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgaWYgKFtzZWxmIF9ub2RlXS0+cmVwbGFjZUNoaWxkKFtuZXdDaGlsZCBfbm9kZV0s
IFtvbGRDaGlsZCBfbm9kZV0sIGVjKSkKLSAgICAgICAgcmV0dXJuIG9sZENoaWxkOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoRE9NTm9kZSAqKXJl
bW92ZUNoaWxkOihET01Ob2RlICopb2xkQ2hpbGQKLXsKLSAgICBBU1NFUlQob2xkQ2hpbGQpOwot
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKFtzZWxmIF9ub2RlXS0+cmVtb3Zl
Q2hpbGQoW29sZENoaWxkIF9ub2RlXSwgZWMpKQotICAgICAgICByZXR1cm4gb2xkQ2hpbGQ7Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChET01Ob2Rl
ICopYXBwZW5kQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGlsZAotewotICAgIEFTU0VSVChuZXdDaGls
ZCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpZiAoW3NlbGYgX25vZGVdLT5h
cHBlbmRDaGlsZChbbmV3Q2hpbGQgX25vZGVdLCBlYykpCi0gICAgICAgIHJldHVybiBuZXdDaGls
ZDsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKEJP
T0wpaGFzQ2hpbGROb2RlcwotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmhhc0NoaWxkTm9k
ZXMoKTsKLX0KLQotLSAoRE9NTm9kZSAqKWNsb25lTm9kZTooQk9PTClkZWVwCi17Ci0gICAgcmV0
dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPmNsb25lTm9kZShkZWVwKS5nZXQo
KV07Ci19Ci0KLS0gKHZvaWQpbm9ybWFsaXplCi17Ci0gICAgW3NlbGYgX25vZGVdLT5ub3JtYWxp
emUoKTsKLX0KLQotLSAoQk9PTClpc1N1cHBvcnRlZDooTlNTdHJpbmcgKilmZWF0dXJlIDooTlNT
dHJpbmcgKil2ZXJzaW9uCi17Ci0gICAgQVNTRVJUKGZlYXR1cmUpOwotICAgIEFTU0VSVCh2ZXJz
aW9uKTsKLQotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmlzU3VwcG9ydGVkKGZlYXR1cmUsIHZl
cnNpb24pOwotfQotCi0tIChOU1N0cmluZyAqKW5hbWVzcGFjZVVSSQotewotICAgIHJldHVybiBb
c2VsZiBfbm9kZV0tPm5hbWVzcGFjZVVSSSgpOwotfQotCi0tIChOU1N0cmluZyAqKXByZWZpeAot
ewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPnByZWZpeCgpOwotfQotCi0tICh2b2lkKXNldFBy
ZWZpeDooTlNTdHJpbmcgKilwcmVmaXgKLXsKLSAgICBBU1NFUlQocHJlZml4KTsKLQotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFN0cmluZyBwcmVmaXhTdHIocHJlZml4KTsKLSAgICBb
c2VsZiBfbm9kZV0tPnNldFByZWZpeChwcmVmaXhTdHIuaW1wbCgpLCBlYyk7Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKLX0KLQotLSAoTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICByZXR1
cm4gW3NlbGYgX25vZGVdLT5sb2NhbE5hbWUoKTsKLX0KLQotLSAoQk9PTCloYXNBdHRyaWJ1dGVz
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aGFzQXR0cmlidXRlcygpOwotfQotCi0tIChC
T09MKWlzU2FtZU5vZGU6KERPTU5vZGUgKilvdGhlcgotewotICAgIHJldHVybiBbc2VsZiBfbm9k
ZV0tPmlzU2FtZU5vZGUoW290aGVyIF9ub2RlXSk7Ci19Ci0KLS0gKEJPT0wpaXNFcXVhbE5vZGU6
KERPTU5vZGUgKilvdGhlcgotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmlzRXF1YWxOb2Rl
KFtvdGhlciBfbm9kZV0pOwotfQotCi0tIChCT09MKWlzRGVmYXVsdE5hbWVzcGFjZTooTlNTdHJp
bmcgKiluYW1lc3BhY2VVUkkKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc0RlZmF1bHRO
YW1lc3BhY2UobmFtZXNwYWNlVVJJKTsKLX0KLQotLSAoTlNTdHJpbmcgKilsb29rdXBQcmVmaXg6
KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bG9v
a3VwUHJlZml4KG5hbWVzcGFjZVVSSSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbG9va3VwTmFtZXNw
YWNlVVJJOihOU1N0cmluZyAqKXByZWZpeAotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmxv
b2t1cE5hbWVzcGFjZVVSSShwcmVmaXgpOwotfQotCi0tIChOU1N0cmluZyAqKXRleHRDb250ZW50
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+dGV4dENvbnRlbnQoKTsKLX0KLQotLSAodm9p
ZClzZXRUZXh0Q29udGVudDooTlNTdHJpbmcgKil0ZXh0Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgW3NlbGYgX25vZGVdLT5zZXRUZXh0Q29udGVudCh0ZXh0LCBlYyk7Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAoTlNSZWN0KWJvdW5kaW5nQm94Ci17Ci0gICAg
V2ViQ29yZTo6UmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9ub2RlXS0+cmVuZGVyZXIo
KTsKLSAgICBpZiAocmVuZGVyZXIpCi0gICAgICAgIHJldHVybiByZW5kZXJlci0+YWJzb2x1dGVC
b3VuZGluZ0JveFJlY3QoKTsKLSAgICByZXR1cm4gTlNaZXJvUmVjdDsKLX0KLQotLSAoTlNBcnJh
eSAqKWxpbmVCb3hSZWN0cwotewotICAgIFdlYkNvcmU6OlJlbmRlck9iamVjdCAqcmVuZGVyZXIg
PSBbc2VsZiBfbm9kZV0tPnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyKSB7Ci0gICAgICAg
IE5TTXV0YWJsZUFycmF5ICpyZXN1bHRzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07
Ci0gICAgICAgIERlcHJlY2F0ZWRWYWx1ZUxpc3Q8SW50UmVjdD4gcmVjdHMgPSByZW5kZXJlci0+
bGluZUJveFJlY3RzKCk7Ci0gICAgICAgIGlmICghcmVjdHMuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICBmb3IgKERlcHJlY2F0ZWRWYWx1ZUxpc3Q8SW50UmVjdD46OkNvbnN0SXRlcmF0b3IgaXQg
PSByZWN0cy5iZWdpbigpOyBpdCAhPSByZWN0cy5lbmQoKTsgKytpdCkKLSAgICAgICAgICAgICAg
ICBbcmVzdWx0cyBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDoqaXRdXTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gW3Jlc3VsdHMgYXV0b3JlbGVhc2VdOwotICAgIH0KLSAgICBy
ZXR1cm4gbmlsOwotfQotCi1AZW5kCi0KIHN0YXRpYyB2b2lkIGFkZEVsZW1lbnRDbGFzcyhjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWcsIENsYXNzIG9iakNDbGFzcykKIHsKICAgICBlbGVtZW50Q2xh
c3NNYXAtPnNldCh0YWcubG9jYWxOYW1lKCkuaW1wbCgpLCBvYmpDQ2xhc3MpOwpAQCAtNTI5LDYg
KzMwNSwyMiBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAKIEBp
bXBsZW1lbnRhdGlvbiBET01Ob2RlIChXZWJDb3JlSW50ZXJuYWwpCiAKKy8vIEZJWE1FOiBzaG91
bGQgdGhpcyBnbyBpbiB0aGUgbWFpbiBpbXBsZW1lbnRhdGlvbj8KKy0gKE5TU3RyaW5nICopZGVz
Y3JpcHRpb24KK3sKKyAgICBpZiAoIV9pbnRlcm5hbCkgeworICAgICAgICByZXR1cm4gW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUA6IG51bGw+IiwKKyAgICAgICAgICAgIFtbc2VsZiBj
bGFzc10gZGVzY3JpcHRpb25dLCBzZWxmXTsKKyAgICB9CisgICAgTlNTdHJpbmcgKnZhbHVlID0g
W3NlbGYgbm9kZVZhbHVlXTsKKyAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAIFslQF06ICVwICclQCc+IiwKKyAgICAgICAgICAg
IFtbc2VsZiBjbGFzc10gZGVzY3JpcHRpb25dLCBbc2VsZiBub2RlTmFtZV0sIF9pbnRlcm5hbCwg
dmFsdWVdOworICAgIH0KKyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8
JUAgWyVAXTogJXA+IiwKKyAgICAgICAgW1tzZWxmIGNsYXNzXSBkZXNjcmlwdGlvbl0sIFtzZWxm
IG5vZGVOYW1lXSwgX2ludGVybmFsXTsKK30KKwogLSAoaWQpX2luaXRXaXRoTm9kZTooTm9kZSAq
KWltcGwKIHsKICAgICBBU1NFUlQoaW1wbCk7CkBAIC02MDksMTAgKzQwMSwxMCBAQCBzdGF0aWMg
Q2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAKIC0gKGNvbnN0IEtKUzo6QmluZGlu
Z3M6OlJvb3RPYmplY3QgKilfZXhlY3V0aW9uQ29udGV4dAogewotICAgIGlmIChOb2RlICpuID0g
W3NlbGYgX25vZGVdKQorICAgIGlmIChOb2RlICpuID0gW3NlbGYgX25vZGVdKSB7CiAgICAgICAg
IGlmIChGcmFtZU1hYyAqZiA9IE1hYyhuLT5kb2N1bWVudCgpLT5mcmFtZSgpKSkKICAgICAgICAg
ICAgIHJldHVybiBmLT5leGVjdXRpb25Db250ZXh0Rm9yRE9NKCk7Ci0KKyAgICB9CiAgICAgcmV0
dXJuIDA7CiB9CiAKQEAgLTYyNyw2ICs0MTksNyBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNz
KGNvbnN0IEF0b21pY1N0CiAKIEBlbmQKIAorLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIGF1dG8t
Z2VuZW5lcmF0ZSBpbiBET01Ob2RlLm1tCiBAaW1wbGVtZW50YXRpb24gRE9NTm9kZSAoRE9NRXZl
bnRUYXJnZXQpCiAKIC0gKHZvaWQpYWRkRXZlbnRMaXN0ZW5lcjooTlNTdHJpbmcgKil0eXBlIDoo
aWQgPERPTUV2ZW50TGlzdGVuZXI+KWxpc3RlbmVyIDooQk9PTCl1c2VDYXB0dXJlCkBAIC02NTQs
ODI1ICs0NDcsMjA0IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QK
ICAgICAgICAgcmFpc2VET01FeGNlcHRpb24oRE9NX05PVF9TVVBQT1JURURfRVJSKTsKIAogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIEJPT0wgcmVzdWx0ID0gRXZlbnRUYXJnZXROb2Rl
Q2FzdChbc2VsZiBfbm9kZV0pLT5kaXNwYXRjaEV2ZW50KFtldmVudCBfZXZlbnRdLCBlYyk7Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1AZW5kCi0K
LS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01OYW1lZE5vZGVNYXAK
LQotQGltcGxlbWVudGF0aW9uIERPTU5hbWVkTm9kZU1hcAotCi0tICh2b2lkKWRlYWxsb2MKLXsK
LSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5hbWVkTm9kZU1hcCAqPihf
aW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0g
KHZvaWQpZmluYWxpemUKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0
PE5hbWVkTm9kZU1hcCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIg
ZmluYWxpemVdOwotfQotCi0tIChOYW1lZE5vZGVNYXAgKilfbmFtZWROb2RlTWFwCi17Ci0gICAg
cmV0dXJuIERPTV9jYXN0PE5hbWVkTm9kZU1hcCAqPihfaW50ZXJuYWwpOwotfQotCi0tIChET01O
b2RlICopZ2V0TmFtZWRJdGVtOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7
Ci0KLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5n
ZXROYW1lZEl0ZW0obmFtZSkuZ2V0KCldOwotfQotCi0tIChET01Ob2RlICopc2V0TmFtZWRJdGVt
OihET01Ob2RlICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7Ci0KLSAgICBpbnQgZXhjZXB0aW9u
ID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25h
bWVkTm9kZU1hcF0tPnNldE5hbWVkSXRlbShbYXJnIF9ub2RlXSwgZXhjZXB0aW9uKS5nZXQoKV07
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAg
QVNTRVJUKG5hbWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NTm9kZSAqcmVz
dWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5yZW1vdmVOYW1l
ZEl0ZW0obmFtZSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2Vw
dGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZSAqKWl0ZW06KHVuc2ln
bmVkKWluZGV4Ci17Ci0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWRO
b2RlTWFwXS0+aXRlbShpbmRleCkuZ2V0KCldOwotfQotCi0tICh1bnNpZ25lZClsZW5ndGgKLXsK
LSAgICByZXR1cm4gW3NlbGYgX25hbWVkTm9kZU1hcF0tPmxlbmd0aCgpOwotfQotCi0tIChET01O
b2RlICopZ2V0TmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcg
Kilsb2NhbE5hbWUKLXsKLSAgICBpZiAoIW5hbWVzcGFjZVVSSSB8fCAhbG9jYWxOYW1lKSB7Ci0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0
aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+Z2V0TmFtZWRJdGVtTlMobmFtZXNwYWNlVVJJLCBsb2Nh
bE5hbWUpLmdldCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbU5TOihET01Ob2Rl
ICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAg
ICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1h
cF0tPnNldE5hbWVkSXRlbU5TKFthcmcgX25vZGVdLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICBy
YWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChE
T01Ob2RlICopcmVtb3ZlTmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNT
dHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NF
UlQobG9jYWxOYW1lKTsKLQotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTU5vZGUgKnJl
c3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+cmVtb3ZlTmFt
ZWRJdGVtTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIGV4Y2VwdGlvbikuZ2V0KCldOwotICAg
IHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUBl
bmQKLQotQGltcGxlbWVudGF0aW9uIERPTU5hbWVkTm9kZU1hcCAoV2ViQ29yZUludGVybmFsKQot
Ci0tIChpZClfaW5pdFdpdGhOYW1lZE5vZGVNYXA6KE5hbWVkTm9kZU1hcCAqKWltcGwKLXsKLSAg
ICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRlcm5hbCA9IERP
TV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGltcGwtPnJlZigpOwotICAg
IGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLSsgKERP
TU5hbWVkTm9kZU1hcCAqKV9uYW1lZE5vZGVNYXBXaXRoOihOYW1lZE5vZGVNYXAgKilpbXBsCi17
Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hl
ZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAg
ICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJl
dGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5p
dFdpdGhOYW1lZE5vZGVNYXA6aW1wbF0gYXV0b3JlbGVhc2VdOwotfQotCi1AZW5kCi0KLS8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Ob2RlTGlzdAotCi1AaW1wbGVt
ZW50YXRpb24gRE9NTm9kZUxpc3QKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRl
cm5hbCkgewotICAgICAgICBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50ZXJuYWwpLT5kZXJlZigp
OwotICAgIH0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsK
LSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5vZGVMaXN0ICo+KF9pbnRl
cm5hbCktPmRlcmVmKCk7Ci0gICAgfQotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19Ci0KLS0gKE5v
ZGVMaXN0ICopX25vZGVMaXN0Ci17Ci0gICAgcmV0dXJuIERPTV9jYXN0PE5vZGVMaXN0ICo+KF9p
bnRlcm5hbCk7Ci19Ci0KLS0gKERPTU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleAotewotICAg
IHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVMaXN0XS0+aXRlbShpbmRleCld
OwotfQotCi0tICh1bnNpZ25lZClsZW5ndGgKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVMaXN0
XS0+bGVuZ3RoKCk7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGVMaXN0IChX
ZWJDb3JlSW50ZXJuYWwpCi0KLS0gKGlkKV9pbml0V2l0aE5vZGVMaXN0OihOb2RlTGlzdCAqKWlt
cGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRdOwotICAgIF9pbnRl
cm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwotICAgIGltcGwtPnJl
ZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0dXJuIHNlbGY7Ci19
Ci0KLSsgKERPTU5vZGVMaXN0ICopX25vZGVMaXN0V2l0aDooTm9kZUxpc3QgKilpbXBsCi17Ci0g
ICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlkIGNhY2hlZElu
c3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKLSAgICBp
ZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFp
bl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdp
dGhOb2RlTGlzdDppbXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUltcGxlbWVudGF0aW9uCi0KLUBpbXBsZW1l
bnRhdGlvbiBET01JbXBsZW1lbnRhdGlvbgotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAo
X2ludGVybmFsKQotICAgICAgICBET01fY2FzdDxET01JbXBsZW1lbnRhdGlvbkZyb250ICo+KF9p
bnRlcm5hbCktPmRlcmVmKCk7Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZp
bmFsaXplCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAgICAgRE9NX2Nhc3Q8RE9NSW1wbGVt
ZW50YXRpb25Gcm9udCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIFtzdXBlciBmaW5hbGl6
ZV07Ci19Ci0KLS0gKEJPT0wpaGFzRmVhdHVyZTooTlNTdHJpbmcgKilmZWF0dXJlIDooTlNTdHJp
bmcgKil2ZXJzaW9uCi17Ci0gICAgQVNTRVJUKGZlYXR1cmUpOwotICAgIEFTU0VSVCh2ZXJzaW9u
KTsKLQotICAgIHJldHVybiBbc2VsZiBfRE9NSW1wbGVtZW50YXRpb25dLT5oYXNGZWF0dXJlKGZl
YXR1cmUsIHZlcnNpb24pOwotfQotCi0tIChET01Eb2N1bWVudFR5cGUgKiljcmVhdGVEb2N1bWVu
dFR5cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICopcHVibGljSWQgOihO
U1N0cmluZyAqKXN5c3RlbUlkCi17Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotICAgIEFT
U0VSVChwdWJsaWNJZCk7Ci0gICAgQVNTRVJUKHN5c3RlbUlkKTsKLQotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIFJlZlB0cjxEb2N1bWVudFR5cGU+IGltcGwgPSBbc2VsZiBfRE9NSW1w
bGVtZW50YXRpb25dLT5jcmVhdGVEb2N1bWVudFR5cGUocXVhbGlmaWVkTmFtZSwgcHVibGljSWQs
IHN5c3RlbUlkLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RE9NRG9jdW1lbnRUeXBlICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsLmdldCgp
XSk7Ci19Ci0KLS0gKERPTURvY3VtZW50ICopY3JlYXRlRG9jdW1lbnQ6KE5TU3RyaW5nICopbmFt
ZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooRE9NRG9jdW1lbnRUeXBlICop
ZG9jdHlwZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChxdWFsaWZp
ZWROYW1lKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxEb2N1bWVu
dD4gaW1wbCA9IFtzZWxmIF9ET01JbXBsZW1lbnRhdGlvbl0tPmNyZWF0ZURvY3VtZW50KG5hbWVz
cGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgW2RvY3R5cGUgX2RvY3VtZW50VHlwZV0sIGVjKTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVu
dCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQoKV0pOwotfQotCi0tIChET01IVE1MRG9j
dW1lbnQgKiljcmVhdGVIVE1MRG9jdW1lbnQ6KE5TU3RyaW5nICopdGl0bGUKLXsKLSAgICBSZWZQ
dHI8SFRNTERvY3VtZW50PiBpbXBsID0gW3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+Y3JlYXRl
SFRNTERvY3VtZW50KHRpdGxlKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NSFRNTERvY3Vt
ZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsLmdldCgpXSk7Ci19Ci1AZW5kCi0KLUBpbXBs
ZW1lbnRhdGlvbiBET01JbXBsZW1lbnRhdGlvbiAoRE9NSW1wbGVtZW50YXRpb25DU1MpCi0KLS0g
KERPTUNTU1N0eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNoZWV0OihOU1N0cmluZyAqKXRpdGxl
IDooTlNTdHJpbmcgKiltZWRpYQotewotICAgIEFTU0VSVCh0aXRsZSk7Ci0gICAgQVNTRVJUKG1l
ZGlhKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTUNTU1N0eWxlU2hlZXQg
KnJlc3VsdCA9IFtET01DU1NTdHlsZVNoZWV0IF9DU1NTdHlsZVNoZWV0V2l0aDpbc2VsZiBfRE9N
SW1wbGVtZW50YXRpb25dLT5jcmVhdGVDU1NTdHlsZVNoZWV0KHRpdGxlLCBtZWRpYSwgZWMpLmdl
dCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LUBlbmQKLSAKLUBpbXBsZW1lbnRhdGlvbiBET01JbXBsZW1lbnRhdGlvbiAoV2ViQ29yZUludGVy
bmFsKQotCi0tIChpZClfaW5pdFdpdGhET01JbXBsZW1lbnRhdGlvbjooRE9NSW1wbGVtZW50YXRp
b25Gcm9udCAqKWltcGwKLXsKLSAgICBBU1NFUlQoaW1wbCk7Ci0KLSAgICBbc3VwZXIgX2luaXRd
OwotICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOwot
ICAgIGltcGwtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7Ci0gICAgcmV0
dXJuIHNlbGY7Ci19Ci0KLSsgKERPTUltcGxlbWVudGF0aW9uICopX0RPTUltcGxlbWVudGF0aW9u
V2l0aDooRE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKWltcGwKLXsKLSAgICBpZiAoIWltcGwpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWQgY2FjaGVkSW5zdGFuY2U7Ci0gICAgY2Fj
aGVkSW5zdGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwpOwotICAgIGlmIChjYWNoZWRJbnN0YW5j
ZSkKLSAgICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07
Ci0gICAgCi0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aERPTUltcGxlbWVudGF0
aW9uOmltcGxdIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoRE9NSW1wbGVtZW50YXRpb25Gcm9udCAq
KV9ET01JbXBsZW1lbnRhdGlvbgotewotICAgIHJldHVybiBET01fY2FzdDxET01JbXBsZW1lbnRh
dGlvbkZyb250ICo+KF9pbnRlcm5hbCk7Ci19Ci0KLUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTURvY3VtZW50RnJhZ21lbnQKLQotQGltcGxlbWVudGF0
aW9uIERPTURvY3VtZW50RnJhZ21lbnQKLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9j
dW1lbnRGcmFnbWVudCAoV2ViQ29yZUludGVybmFsKQotCi0rIChET01Eb2N1bWVudEZyYWdtZW50
ICopX2RvY3VtZW50RnJhZ21lbnRXaXRoOihEb2N1bWVudEZyYWdtZW50ICopaW1wbAotewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudEZyYWdtZW50ICo+KFtET01Ob2RlIF9ub2Rl
V2l0aDppbXBsXSk7Ci19Ci0KLS0gKERvY3VtZW50RnJhZ21lbnQgKilfZnJhZ21lbnQKLXsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnRGcmFnbWVudCAqPihET01fY2FzdDxOb2RlICo+
KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0vLyBET01Eb2N1bWVudAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQKLQot
LSAoRE9NTm9kZSAqKWFkb3B0Tm9kZTooRE9NTm9kZSAqKXNvdXJjZQotewotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpb
c2VsZiBfZG9jdW1lbnRdLT5hZG9wdE5vZGUoW3NvdXJjZSBfbm9kZV0sIGVjKS5nZXQoKV07Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01E
b2N1bWVudFR5cGUgKilkb2N0eXBlCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURvY3Vt
ZW50VHlwZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+ZG9jdHlwZSgp
XSk7Ci19Ci0KLS0gKERPTUltcGxlbWVudGF0aW9uICopaW1wbGVtZW50YXRpb24KLXsKLSAgICBy
ZXR1cm4gW0RPTUltcGxlbWVudGF0aW9uIF9ET01JbXBsZW1lbnRhdGlvbldpdGg6aW1wbGVtZW50
YXRpb25Gcm9udChbc2VsZiBfZG9jdW1lbnRdKV07Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilkb2N1
bWVudEVsZW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihbRE9N
Tm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+ZG9jdW1lbnRFbGVtZW50KCldKTsKLX0K
LQotLSAoRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnQ6KE5TU3RyaW5nICopdGFnTmFtZQotewot
ICAgIEFTU0VSVCh0YWdOYW1lKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERP
TUVsZW1lbnQgKnJlc3VsdCA9IHN0YXRpY19jYXN0PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUgX25v
ZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUVsZW1lbnQodGFnTmFtZSwgZWMpLmdldCgp
XSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0t
IChET01Eb2N1bWVudEZyYWdtZW50ICopY3JlYXRlRG9jdW1lbnRGcmFnbWVudAotewotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudEZyYWdtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0
aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuZ2V0KCldKTsKLX0K
LQotLSAoRE9NVGV4dCAqKWNyZWF0ZVRleHROb2RlOihOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBB
U1NFUlQoZGF0YSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTVRleHQgKj4oW0RPTU5vZGUg
X25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVRleHROb2RlKGRhdGEpLmdldCgpXSk7
Ci19Ci0KLS0gKERPTUNvbW1lbnQgKiljcmVhdGVDb21tZW50OihOU1N0cmluZyAqKWRhdGEKLXsK
LSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUNvbW1lbnQgKj4o
W0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNvbW1lbnQoZGF0YSku
Z2V0KCldKTsKLX0KLQotLSAoRE9NQ0RBVEFTZWN0aW9uICopY3JlYXRlQ0RBVEFTZWN0aW9uOihO
U1N0cmluZyAqKWRhdGEKLXsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgaW50IGV4Y2VwdGlvbiA9
IDA7Ci0gICAgRE9NQ0RBVEFTZWN0aW9uICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxET01DREFUQVNl
Y3Rpb24gKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNEQVRB
U2VjdGlvbihkYXRhLCBleGNlcHRpb24pLmdldCgpXSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4
Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uICopY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uOihOU1N0cmluZyAqKXRhcmdldCA6
KE5TU3RyaW5nICopZGF0YQotewotICAgIEFTU0VSVCh0YXJnZXQpOwotICAgIEFTU0VSVChkYXRh
KTsKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24g
KnJlc3VsdCA9IHN0YXRpY19jYXN0PERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqPihbRE9NTm9k
ZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9u
KHRhcmdldCwgZGF0YSwgZXhjZXB0aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihl
eGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTUF0dHIgKiljcmVhdGVB
dHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBpbnQg
ZXhjZXB0aW9uID0gMDsKLSAgICBET01BdHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldpdGg6
W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlQXR0cmlidXRlKG5hbWUsIGV4Y2VwdGlvbikuZ2V0KCld
OwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLS0gKERPTUVudGl0eVJlZmVyZW5jZSAqKWNyZWF0ZUVudGl0eVJlZmVyZW5jZTooTlNTdHJp
bmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotICAgIGludCBleGNlcHRpb24gPSAwOwot
ICAgIERPTUVudGl0eVJlZmVyZW5jZSAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RE9NRW50aXR5UmVm
ZXJlbmNlICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVFbnRp
dHlSZWZlcmVuY2UobmFtZSwgZXhjZXB0aW9uKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJv
cihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGVMaXN0ICop
Z2V0RWxlbWVudHNCeVRhZ05hbWU6KE5TU3RyaW5nICopdGFnbmFtZQotewotICAgIEFTU0VSVCh0
YWduYW1lKTsKLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX2Rv
Y3VtZW50XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWUodGFnbmFtZSkuZ2V0KCldOwotfQotCi0tIChE
T01Ob2RlICopaW1wb3J0Tm9kZTooRE9NTm9kZSAqKWltcG9ydGVkTm9kZSA6KEJPT0wpZGVlcAot
ewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01O
b2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5pbXBvcnROb2RlKFtpbXBvcnRlZE5vZGUg
X25vZGVdLCBkZWVwLCBlYykuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnROUzooTlNT
dHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUKLXsKLSAgICBB
U1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7Ci0KLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZVVSSSwgcXVh
bGlmaWVkTmFtZSwgZWMpLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KHJlc3VsdCk7Ci19Ci0KLS0gKERPTUF0dHIg
KiljcmVhdGVBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAq
KXF1YWxpZmllZE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQo
cXVhbGlmaWVkTmFtZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01BdHRyICpy
ZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlQXR0cmli
dXRlTlMobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0t
IChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNw
YWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICBBU1NFUlQobmFtZXNwYWNlVVJJ
KTsKLSAgICBBU1NFUlQobG9jYWxOYW1lKTsKLQotICAgIHJldHVybiBbRE9NTm9kZUxpc3QgX25v
ZGVMaXN0V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKG5hbWVz
cGFjZVVSSSwgbG9jYWxOYW1lKS5nZXQoKV07Ci19Ci0KLS0gKERPTUVsZW1lbnQgKilnZXRFbGVt
ZW50QnlJZDooTlNTdHJpbmcgKillbGVtZW50SWQKLXsKLSAgICBBU1NFUlQoZWxlbWVudElkKTsK
LQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0
aDpbc2VsZiBfZG9jdW1lbnRdLT5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpXSk7Ci19Ci0KLUBl
bmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChET01Eb2N1bWVudFJhbmdlKQotCi0t
IChET01SYW5nZSAqKWNyZWF0ZVJhbmdlCi17Ci0gICAgcmV0dXJuIFtET01SYW5nZSBfcmFuZ2VX
aXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVJhbmdlKCkuZ2V0KCldOwotfQotCi1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRDU1MpCi0KLS0gKERPTUNT
U1N0eWxlRGVjbGFyYXRpb24gKilnZXRPdmVycmlkZVN0eWxlOihET01FbGVtZW50ICopZWx0IDoo
TlNTdHJpbmcgKilwc2V1ZG9FbHQKLXsKLSAgICBFbGVtZW50ICplbGVtZW50ID0gW2VsdCBfZWxl
bWVudF07Ci0gICAgU3RyaW5nIHBzZXVkb0VsdFN0cmluZyhwc2V1ZG9FbHQpOwotICAgIHJldHVy
biBbRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6W3NlbGYgX2Rv
Y3VtZW50XS0+Z2V0T3ZlcnJpZGVTdHlsZShlbGVtZW50LCBwc2V1ZG9FbHRTdHJpbmcuaW1wbCgp
KV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChET01Eb2N1bWVu
dFN0eWxlKQotCi0tIChET01TdHlsZVNoZWV0TGlzdCAqKXN0eWxlU2hlZXRzCi17Ci0gICAgcmV0
dXJuIFtET01TdHlsZVNoZWV0TGlzdCBfc3R5bGVTaGVldExpc3RXaXRoOltzZWxmIF9kb2N1bWVu
dF0tPnN0eWxlU2hlZXRzKCldOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1
bWVudCAoRE9NRG9jdW1lbnRFeHRlbnNpb25zKQotCi0tIChET01DU1NTdHlsZURlY2xhcmF0aW9u
ICopY3JlYXRlQ1NTU3R5bGVEZWNsYXJhdGlvbgotewotICAgIHJldHVybiBbRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRl
Q1NTU3R5bGVEZWNsYXJhdGlvbigpLmdldCgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRp
b24gRE9NRG9jdW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKLQotKyAoRE9NRG9jdW1lbnQgKilfZG9j
dW1lbnRXaXRoOihEb2N1bWVudCAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9N
RG9jdW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTsKLX0KLQotLSAoRG9jdW1lbnQg
KilfZG9jdW1lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQgKj4oRE9NX2Nh
c3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoRE9NRWxlbWVudCAqKV9vd25lckVsZW1l
bnQKLXsKLSAgICByZXR1cm4gW0RPTUVsZW1lbnQgX2VsZW1lbnRXaXRoOltzZWxmIF9kb2N1bWVu
dF0tPm93bmVyRWxlbWVudCgpXTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotLy8gRE9NQ2hhcmFjdGVyRGF0YQotCi1AaW1wbGVtZW50YXRpb24gRE9N
Q2hhcmFjdGVyRGF0YQotCi0tIChDaGFyYWN0ZXJEYXRhICopX2NoYXJhY3RlckRhdGEKLXsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyRGF0YSAqPihET01fY2FzdDxOb2RlICo+KF9p
bnRlcm5hbCkpOwotfQotCi0tIChOU1N0cmluZyAqKWRhdGEKLXsKLSAgICAvLyBEb2N1bWVudGF0
aW9uIHNheXMgd2UgY2FuIHJhaXNlIGEgRE9NU1RSSU5HX1NJWkVfRVJSLgotICAgIC8vIEhvd2V2
ZXIsIHRoZSBsb3dlciBsYXllciBkb2VzIG5vdCByZXBvcnQgdGhhdCBlcnJvciB1cCB0byB1cy4K
LSAgICByZXR1cm4gW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5kYXRhKCk7Ci19Ci0KLS0gKHZvaWQp
c2V0RGF0YTooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIAotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+c2V0RGF0
YShkYXRhLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodW5zaWduZWQp
bGVuZ3RoCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+bGVuZ3RoKCk7Ci19
Ci0KLS0gKE5TU3RyaW5nICopc3Vic3RyaW5nRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWdu
ZWQpY291bnQKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBOU1N0cmluZyAqcmVz
dWx0ID0gW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5zdWJzdHJpbmdEYXRhKG9mZnNldCwgY291bnQs
IGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LS0gKHZvaWQpYXBwZW5kRGF0YTooTlNTdHJpbmcgKilhcmcKLXsKLSAgICBBU1NFUlQoYXJnKTsK
LSAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0
YV0tPmFwcGVuZERhdGEoYXJnLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQot
LSAodm9pZClpbnNlcnREYXRhOih1bnNpZ25lZClvZmZzZXQgOihOU1N0cmluZyAqKWFyZwotewot
ICAgIEFTU0VSVChhcmcpOwotICAgIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtz
ZWxmIF9jaGFyYWN0ZXJEYXRhXS0+aW5zZXJ0RGF0YShvZmZzZXQsIGFyZywgZWMpOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpZGVsZXRlRGF0YToodW5zaWduZWQpb2Zm
c2V0IDoodW5zaWduZWQpIGNvdW50Ci17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
W3NlbGYgX2NoYXJhY3RlckRhdGFdLT5kZWxldGVEYXRhKG9mZnNldCwgY291bnQsIGVjKTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2b2lkKXJlcGxhY2VEYXRhOih1bnNpZ25l
ZClvZmZzZXQgOih1bnNpZ25lZCljb3VudCA6KE5TU3RyaW5nICopYXJnCi17Ci0gICAgQVNTRVJU
KGFyZyk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVy
RGF0YV0tPnJlcGxhY2VEYXRhKG9mZnNldCwgY291bnQsIGFyZywgZWMpOworICAgIEJPT0wgcmVz
dWx0ID0gRXZlbnRUYXJnZXROb2RlQ2FzdChbc2VsZiBfbm9kZV0pLT5kaXNwYXRjaEV2ZW50KFtl
dmVudCBfZXZlbnRdLCBlYyk7CiAgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiBAZW5kCiAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyBET01BdHRyCiAKLUBpbXBsZW1lbnRhdGlvbiBET01BdHRyCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRE9NTmFtZWROb2RlTWFwCiAKLS0gKE5TU3RyaW5nICop
bmFtZQotewotICAgIHJldHVybiBbc2VsZiBfYXR0cl0tPm5vZGVOYW1lKCk7Ci19CitAaW1wbGVt
ZW50YXRpb24gRE9NTmFtZWROb2RlTWFwIChXZWJDb3JlSW50ZXJuYWwpCiAKLS0gKEJPT0wpc3Bl
Y2lmaWVkCistIChpZClfaW5pdFdpdGhOYW1lZE5vZGVNYXA6KE5hbWVkTm9kZU1hcCAqKWltcGwK
IHsKLSAgICByZXR1cm4gW3NlbGYgX2F0dHJdLT5zcGVjaWZpZWQoKTsKLX0KKyAgICBBU1NFUlQo
aW1wbCk7CiAKLS0gKE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2F0dHJd
LT5ub2RlVmFsdWUoKTsKKyAgICBbc3VwZXIgX2luaXRdOworICAgIF9pbnRlcm5hbCA9IERPTV9j
YXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOworICAgIGltcGwtPnJlZigpOworICAgIGFk
ZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7CisgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQp
c2V0VmFsdWU6KE5TU3RyaW5nICopdmFsdWUKKysgKERPTU5hbWVkTm9kZU1hcCAqKV9uYW1lZE5v
ZGVNYXBXaXRoOihOYW1lZE5vZGVNYXAgKilpbXBsCiB7Ci0gICAgQVNTRVJUKHZhbHVlKTsKLQot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9hdHRyXS0+c2V0VmFsdWUodmFs
dWUsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIGlmICghaW1wbCkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBpZCBjYWNoZWRJbnN0YW5jZTsKKyAgICBjYWNoZWRJ
bnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7CisgICAgaWYgKGNhY2hlZEluc3RhbmNlKQor
ICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAg
ICAKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTmFtZWROb2RlTWFwOmltcGxd
IGF1dG9yZWxlYXNlXTsKIH0KIAotLSAoRE9NRWxlbWVudCAqKW93bmVyRWxlbWVudAotewotICAg
IHJldHVybiBbRE9NRWxlbWVudCBfZWxlbWVudFdpdGg6W3NlbGYgX2F0dHJdLT5vd25lckVsZW1l
bnQoKV07Ci19CitAZW5kCiAKLS0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZQotewot
ICAgIHJldHVybiBbRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6
IFtzZWxmIF9hdHRyXS0+c3R5bGUoKV07Ci19CiAKLUBlbmQKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLyBET01Ob2RlTGlzdAogCi1AaW1wbGVtZW50YXRpb24gRE9NQXR0
ciAoV2ViQ29yZUludGVybmFsKQorQGltcGxlbWVudGF0aW9uIERPTU5vZGVMaXN0IChXZWJDb3Jl
SW50ZXJuYWwpCiAKLSsgKERPTUF0dHIgKilfYXR0cldpdGg6KEF0dHIgKilpbXBsCistIChpZClf
aW5pdFdpdGhOb2RlTGlzdDooTm9kZUxpc3QgKilpbXBsCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PERPTUF0dHIgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTsKKyAgICBBU1NFUlQoaW1w
bCk7CisKKyAgICBbc3VwZXIgX2luaXRdOworICAgIF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9i
amVjdEludGVybmFsICo+KGltcGwpOworICAgIGltcGwtPnJlZigpOworICAgIGFkZERPTVdyYXBw
ZXIoc2VsZiwgaW1wbCk7CisgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKEF0dHIgKilfYXR0cgor
KyAoRE9NTm9kZUxpc3QgKilfbm9kZUxpc3RXaXRoOihOb2RlTGlzdCAqKWltcGwKIHsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8QXR0ciAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwor
ICAgIGlmICghaW1wbCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBpZCBjYWNoZWRJ
bnN0YW5jZTsKKyAgICBjYWNoZWRJbnN0YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7CisgICAg
aWYgKGNhY2hlZEluc3RhbmNlKQorICAgICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRh
aW5dIGF1dG9yZWxlYXNlXTsKKyAgICAKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRX
aXRoTm9kZUxpc3Q6aW1wbF0gYXV0b3JlbGVhc2VdOwogfQogCiBAZW5kCiAKLS8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01FbGVtZW50CiAKLUBpbXBsZW1lbnRhdGlv
biBET01FbGVtZW50CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRE9N
SW1wbGVtZW50YXRpb24KKyAKK0BpbXBsZW1lbnRhdGlvbiBET01JbXBsZW1lbnRhdGlvbiAoV2Vi
Q29yZUludGVybmFsKQogCi0tIChOU1N0cmluZyAqKXRhZ05hbWUKKy0gKGlkKV9pbml0V2l0aERP
TUltcGxlbWVudGF0aW9uOihET01JbXBsZW1lbnRhdGlvbkZyb250ICopaW1wbAogewotICAgIHJl
dHVybiBbc2VsZiBfZWxlbWVudF0tPm5vZGVOYW1lKCk7Ci19CisgICAgQVNTRVJUKGltcGwpOwog
Ci0tIChET01OYW1lZE5vZGVNYXAgKilhdHRyaWJ1dGVzCi17Ci0gICAgcmV0dXJuIFtET01OYW1l
ZE5vZGVNYXAgX25hbWVkTm9kZU1hcFdpdGg6W3NlbGYgX2VsZW1lbnRdLT5hdHRyaWJ1dGVzKCld
OworICAgIFtzdXBlciBfaW5pdF07CisgICAgX2ludGVybmFsID0gRE9NX2Nhc3Q8RE9NT2JqZWN0
SW50ZXJuYWwgKj4oaW1wbCk7CisgICAgaW1wbC0+cmVmKCk7CisgICAgYWRkRE9NV3JhcHBlcihz
ZWxmLCBpbXBsKTsKKyAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAoTlNTdHJpbmcgKilnZXRBdHRy
aWJ1dGU6KE5TU3RyaW5nICopbmFtZQorKyAoRE9NSW1wbGVtZW50YXRpb24gKilfRE9NSW1wbGVt
ZW50YXRpb25XaXRoOihET01JbXBsZW1lbnRhdGlvbkZyb250ICopaW1wbAogewotICAgIEFTU0VS
VChuYW1lKTsKLSAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5nZXRBdHRyaWJ1dGUobmFtZSk7
CisgICAgaWYgKCFpbXBsKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIGlkIGNhY2hl
ZEluc3RhbmNlOworICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihpbXBsKTsKKyAg
ICBpZiAoY2FjaGVkSW5zdGFuY2UpCisgICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJl
dGFpbl0gYXV0b3JlbGVhc2VdOworICAgIAorICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5p
dFdpdGhET01JbXBsZW1lbnRhdGlvbjppbXBsXSBhdXRvcmVsZWFzZV07CiB9CiAKLS0gKHZvaWQp
c2V0QXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUgOihOU1N0cmluZyAqKXZhbHVlCistIChET01J
bXBsZW1lbnRhdGlvbkZyb250ICopX0RPTUltcGxlbWVudGF0aW9uCiB7Ci0gICAgQVNTRVJUKG5h
bWUpOwotICAgIEFTU0VSVCh2YWx1ZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBb
c2VsZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgZXhjZXB0aW9uKTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gRE9NX2Nhc3Q8RE9NSW1w
bGVtZW50YXRpb25Gcm9udCAqPihfaW50ZXJuYWwpOwogfQogCi0tICh2b2lkKXJlbW92ZUF0dHJp
YnV0ZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOworQGVuZAogCi0gICAg
aW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5yZW1vdmVBdHRyaWJ1dGUo
bmFtZSwgZXhjZXB0aW9uKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLX0KIAot
LSAoRE9NQXR0ciAqKWdldEF0dHJpYnV0ZU5vZGU6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFT
U0VSVChuYW1lKTsKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBET01E
b2N1bWVudEZyYWdtZW50CiAKLSAgICByZXR1cm4gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9l
bGVtZW50XS0+Z2V0QXR0cmlidXRlTm9kZShuYW1lKS5nZXQoKV07Ci19CitAaW1wbGVtZW50YXRp
b24gRE9NRG9jdW1lbnRGcmFnbWVudCAoV2ViQ29yZUludGVybmFsKQogCi0tIChET01BdHRyICop
c2V0QXR0cmlidXRlTm9kZTooRE9NQXR0ciAqKW5ld0F0dHIKKysgKERPTURvY3VtZW50RnJhZ21l
bnQgKilfZG9jdW1lbnRGcmFnbWVudFdpdGg6KERvY3VtZW50RnJhZ21lbnQgKilpbXBsCiB7Ci0g
ICAgQVNTRVJUKG5ld0F0dHIpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0
ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+c2V0QXR0cmli
dXRlTm9kZShbbmV3QXR0ciBfYXR0cl0sIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25E
T01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PERPTURvY3VtZW50RnJhZ21lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTsK
IH0KIAotLSAoRE9NQXR0ciAqKXJlbW92ZUF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKilvbGRBdHRy
CistIChEb2N1bWVudEZyYWdtZW50ICopX2ZyYWdtZW50CiB7Ci0gICAgQVNTRVJUKG9sZEF0dHIp
OwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0
dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+cmVtb3ZlQXR0cmlidXRlTm9kZShbb2xkQXR0
ciBfYXR0cl0sIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRp
b24pOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50
RnJhZ21lbnQgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKIH0KIAotLSAoRE9NTm9k
ZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgQVNT
RVJUKG5hbWUpOworQGVuZAogCi0gICAgcmV0dXJuIFtET01Ob2RlTGlzdCBfbm9kZUxpc3RXaXRo
OltzZWxmIF9lbGVtZW50XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWUobmFtZSkuZ2V0KCldOwotfQog
Ci0tIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6
KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAg
QVNTRVJUKGxvY2FsTmFtZSk7CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8gRE9NRG9jdW1lbnQKIAotICAgIHJldHVybiBbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0
ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKLX0KKy8vIEZJWE1FOiB0aGlzIHNob3VsZCBi
ZSBhdXRvLWdlbmVuZXJhdGUgaW4gRE9NRG9jdW1lbnQubW0KK0BpbXBsZW1lbnRhdGlvbiBET01E
b2N1bWVudCAoRE9NRG9jdW1lbnRFeHRlbnNpb25zKQogCi0tICh2b2lkKXNldEF0dHJpYnV0ZU5T
OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5T
U3RyaW5nICopdmFsdWUKKy0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKiljcmVhdGVDU1NTdHls
ZURlY2xhcmF0aW9uCiB7Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1
YWxpZmllZE5hbWUpOwotICAgIEFTU0VSVCh2YWx1ZSk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0g
MDsKLSAgICBbc2VsZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgcXVh
bGlmaWVkTmFtZSwgdmFsdWUsIGV4Y2VwdGlvbik7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2Vw
dGlvbik7CisgICAgcmV0dXJuIFtET01DU1NTdHlsZURlY2xhcmF0aW9uIF9zdHlsZURlY2xhcmF0
aW9uV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKCkuZ2V0
KCldOwogfQogCi0tICh2b2lkKXJlbW92ZUF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFj
ZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7
Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7CitAZW5kCiAKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsK
LSAgICBbc2VsZiBfZWxlbWVudF0tPnJlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9j
YWxOYW1lLCBleGNlcHRpb24pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotfQor
QGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChXZWJDb3JlSW50ZXJuYWwpCiAKLS0gKERPTUF0
dHIgKilnZXRBdHRyaWJ1dGVOb2RlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJp
bmcgKilsb2NhbE5hbWUKKysgKERPTURvY3VtZW50ICopX2RvY3VtZW50V2l0aDooRG9jdW1lbnQg
KilpbXBsCiB7Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFt
ZSk7Ci0KLSAgICByZXR1cm4gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9lbGVtZW50XS0+Z2V0
QXR0cmlidXRlTm9kZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKS5nZXQoKV07CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PERPTURvY3VtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7
CiB9CiAKLS0gKERPTUF0dHIgKilzZXRBdHRyaWJ1dGVOb2RlTlM6KERPTUF0dHIgKiluZXdBdHRy
CistIChEb2N1bWVudCAqKV9kb2N1bWVudAogewotICAgIEFTU0VSVChuZXdBdHRyKTsKLQotICAg
IGludCBleGNlcHRpb24gPSAwOwotICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRy
V2l0aDpbc2VsZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZU5vZGVOUyhbbmV3QXR0ciBfYXR0cl0s
IGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAg
IHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50ICo+KERPTV9j
YXN0PE5vZGUgKj4oX2ludGVybmFsKSk7CiB9CiAKLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVu
dHNCeVRhZ05hbWVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2Fs
TmFtZQorLSAoRE9NRWxlbWVudCAqKV9vd25lckVsZW1lbnQKIHsKLSAgICBBU1NFUlQobmFtZXNw
YWNlVVJJKTsKLSAgICBBU1NFUlQobG9jYWxOYW1lKTsKLQotICAgIHJldHVybiBbRE9NTm9kZUxp
c3QgX25vZGVMaXN0V2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEVsZW1lbnRzQnlUYWdOYW1lTlMo
bmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpLmdldCgpXTsKKyAgICByZXR1cm4gW0RPTUVsZW1lbnQg
X2VsZW1lbnRXaXRoOltzZWxmIF9kb2N1bWVudF0tPm93bmVyRWxlbWVudCgpXTsKIH0KIAotLSAo
Qk9PTCloYXNBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsK
K0BlbmQKIAotICAgIHJldHVybiBbc2VsZiBfZWxlbWVudF0tPmhhc0F0dHJpYnV0ZShuYW1lKTsK
LX0KIAotLSAoQk9PTCloYXNBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihO
U1N0cmluZyAqKWxvY2FsTmFtZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFT
U0VSVChsb2NhbE5hbWUpOworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
IERPTUF0dHIKIAotICAgIHJldHVybiBbc2VsZiBfZWxlbWVudF0tPmhhc0F0dHJpYnV0ZU5TKG5h
bWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKLX0KK0BpbXBsZW1lbnRhdGlvbiBET01BdHRyIChXZWJD
b3JlSW50ZXJuYWwpCiAKLS0gKHZvaWQpZm9jdXMKKysgKERPTUF0dHIgKilfYXR0cldpdGg6KEF0
dHIgKilpbXBsCiB7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5mb2N1cygpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxET01BdHRyICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7CiB9CiAKLS0g
KHZvaWQpYmx1cgorLSAoQXR0ciAqKV9hdHRyCiB7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5ibHVy
KCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF0dHIgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50
ZXJuYWwpKTsKIH0KIAogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gRE9NRWxlbWVudCAoRE9NRWxl
bWVudENTU0lubGluZVN0eWxlKQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vIERPTURvY3VtZW50VHlwZQorCitAaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnRUeXBlIChX
ZWJDb3JlSW50ZXJuYWwpCisKKysgKERPTURvY3VtZW50VHlwZSAqKV9kb2N1bWVudFR5cGVXaXRo
OihXZWJDb3JlOjpEb2N1bWVudFR5cGUgKilpbXBsOworeworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxET01Eb2N1bWVudFR5cGUgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTsKK30KIAotLSAo
RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKXN0eWxlCistIChXZWJDb3JlOjpEb2N1bWVudFR5cGUg
KilfZG9jdW1lbnRUeXBlOwogewotICAgIHJldHVybiBbRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBf
c3R5bGVEZWNsYXJhdGlvbldpdGg6W3NlbGYgX2VsZW1lbnRdLT5zdHlsZSgpXTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RG9jdW1lbnRUeXBlICo+KERPTV9jYXN0PFdlYkNvcmU6
Ok5vZGUgKj4oX2ludGVybmFsKSk7CiB9CiAKIEBlbmQKIAorLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vIERPTUVsZW1lbnQKKworLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJl
IGF1dG8tZ2VuZW5lcmF0ZSBpbiBET01FbGVtZW50Lm1tCiBAaW1wbGVtZW50YXRpb24gRE9NRWxl
bWVudCAoRE9NRWxlbWVudEV4dGVuc2lvbnMpCiAKIC0gKE5TSW1hZ2UqKWltYWdlCkBAIC0xNDg2
LDE2ICs2NTgsNiBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAg
ICAgcmV0dXJuIG5pbDsKIH0KIAotLSAodm9pZClzY3JvbGxJbnRvVmlldzooQk9PTClhbGlnblRv
cAotewotICAgIFtzZWxmIF9lbGVtZW50XS0+c2Nyb2xsSW50b1ZpZXcoYWxpZ25Ub3ApOwotfQot
Ci0tICh2b2lkKXNjcm9sbEludG9WaWV3SWZOZWVkZWQ6KEJPT0wpY2VudGVySWZOZWVkZWQKLXsK
LSAgICBbc2VsZiBfZWxlbWVudF0tPnNjcm9sbEludG9WaWV3SWZOZWVkZWQoY2VudGVySWZOZWVk
ZWQpOwotfQotCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBET01FbGVtZW50IChXZWJDb3JlSW50
ZXJuYWwpCkBAIC0xNTYxLDE3MyArNzIzLDcyIEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3Mo
Y29uc3QgQXRvbWljU3QKIAogQGVuZAogCisKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAvLyBET01UZXh0CiAKLUBpbXBsZW1lbnRhdGlvbiBET01UZXh0Ci0KLS0gKFRleHQg
KilfdGV4dAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0ICo+KERPTV9jYXN0PE5vZGUg
Kj4oX2ludGVybmFsKSk7Ci19CitAaW1wbGVtZW50YXRpb24gRE9NVGV4dCAoV2ViQ29yZUludGVy
bmFsKQogCi0tIChET01UZXh0ICopc3BsaXRUZXh0Oih1bnNpZ25lZClvZmZzZXQKKysgKERPTVRl
eHQgKilfdGV4dFdpdGg6KFdlYkNvcmU6OlRleHQgKilpbXBsCiB7Ci0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxm
IF90ZXh0XS0+c3BsaXRUZXh0KG9mZnNldCwgZWMpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01UZXh0ICo+KHJlc3VsdCk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PERPTVRleHQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTsKIH0KIAog
QGVuZAogCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NQ29tbWVu
dAotCi1AaW1wbGVtZW50YXRpb24gRE9NQ29tbWVudAotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01DREFUQVNlY3Rpb24KLQotQGltcGxlbWVudGF0
aW9uIERPTUNEQVRBU2VjdGlvbgotCi1AZW5kCiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyBET01Eb2N1bWVudFR5cGUKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3Vt
ZW50VHlwZQotCi0tIChOU1N0cmluZyAqKW5hbWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2RvY3Vt
ZW50VHlwZV0tPnB1YmxpY0lkKCk7Ci19Ci0KLS0gKERPTU5hbWVkTm9kZU1hcCAqKWVudGl0aWVz
Ci17Ci0gICAgcmV0dXJuIFtET01OYW1lZE5vZGVNYXAgX25hbWVkTm9kZU1hcFdpdGg6W3NlbGYg
X2RvY3VtZW50VHlwZV0tPmVudGl0aWVzKCldOwotfQotCi0tIChET01OYW1lZE5vZGVNYXAgKilu
b3RhdGlvbnMKLXsKLSAgICByZXR1cm4gW0RPTU5hbWVkTm9kZU1hcCBfbmFtZWROb2RlTWFwV2l0
aDpbc2VsZiBfZG9jdW1lbnRUeXBlXS0+bm90YXRpb25zKCldOwotfQotCi0tIChOU1N0cmluZyAq
KXB1YmxpY0lkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9kb2N1bWVudFR5cGVdLT5wdWJsaWNJZCgp
OwotfQorLy8gRE9NQ29tbWVudAogCi0tIChOU1N0cmluZyAqKXN5c3RlbUlkCi17Ci0gICAgcmV0
dXJuIFtzZWxmIF9kb2N1bWVudFR5cGVdLT5zeXN0ZW1JZCgpOwotfQorQGltcGxlbWVudGF0aW9u
IERPTUNvbW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKIAotLSAoTlNTdHJpbmcgKilpbnRlcm5hbFN1
YnNldAorKyAoRE9NQ29tbWVudCAqKV9jb21tZW50V2l0aDooV2ViQ29yZTo6Q29tbWVudCAqKWlt
cGwKIHsKLSAgICByZXR1cm4gW3NlbGYgX2RvY3VtZW50VHlwZV0tPmludGVybmFsU3Vic2V0KCk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUNvbW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRo
OmltcGxdKTsKIH0KIAogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnRUeXBlIChX
ZWJDb3JlSW50ZXJuYWwpCi0KLS0gKERvY3VtZW50VHlwZSAqKV9kb2N1bWVudFR5cGUKLXsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnRUeXBlICo+KERPTV9jYXN0PE5vZGUgKj4oX2lu
dGVybmFsKSk7Ci19Ci0KLUBlbmQKIAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS8vIERPTU5vdGF0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Ob3RhdGlvbgotCi0tIChO
b3RhdGlvbiAqKV9ub3RhdGlvbgotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxOb3RhdGlvbiAq
PihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQorLy8gRE9NQ0RBVEFTZWN0aW9uCiAK
LS0gKE5TU3RyaW5nICopcHVibGljSWQKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vdGF0aW9uXS0+
cHVibGljSWQoKTsKLX0KK0BpbXBsZW1lbnRhdGlvbiBET01DREFUQVNlY3Rpb24gKFdlYkNvcmVJ
bnRlcm5hbCkKIAotLSAoTlNTdHJpbmcgKilzeXN0ZW1JZAorKyAoRE9NQ0RBVEFTZWN0aW9uICop
X0NEQVRBU2VjdGlvbldpdGg6KFdlYkNvcmU6OkNEQVRBU2VjdGlvbiAqKWltcGw7CiB7Ci0gICAg
cmV0dXJuIFtzZWxmIF9ub3RhdGlvbl0tPnN5c3RlbUlkKCk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PERPTUNEQVRBU2VjdGlvbiAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwogfQogCiBA
ZW5kCiAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01FbnRpdHkK
LQotQGltcGxlbWVudGF0aW9uIERPTUVudGl0eQotCi0tIChFbnRpdHkgKilfZW50aXR5Ci17Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEVudGl0eSAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5h
bCkpOwotfQogCi0tIChOU1N0cmluZyAqKXB1YmxpY0lkCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9l
bnRpdHldLT5wdWJsaWNJZCgpOwotfQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKy8vIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbgogCi0tIChOU1N0cmluZyAqKXN5c3RlbUlk
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9lbnRpdHldLT5zeXN0ZW1JZCgpOwotfQorQGltcGxlbWVu
dGF0aW9uIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAoV2ViQ29yZUludGVybmFsKQogCi0tIChO
U1N0cmluZyAqKW5vdGF0aW9uTmFtZQorKyAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICopX3By
b2Nlc3NpbmdJbnN0cnVjdGlvbldpdGg6KFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbiAq
KWltcGw7CiB7Ci0gICAgcmV0dXJuIFtzZWxmIF9lbnRpdHldLT5ub3RhdGlvbk5hbWUoKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICo+KFtET01Ob2Rl
IF9ub2RlV2l0aDppbXBsXSk7CiB9CiAKIEBlbmQKIAotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS8vIERPTUVudGl0eVJlZmVyZW5jZQotCi1AaW1wbGVtZW50YXRpb24gRE9N
RW50aXR5UmVmZXJlbmNlCi0KLUBlbmQKIAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIC8vIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbgogCi1AaW1wbGVtZW50YXRpb24gRE9N
UHJvY2Vzc2luZ0luc3RydWN0aW9uCi0KLS0gKFByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKV9wcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24KLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJvY2Vzc2luZ0lu
c3RydWN0aW9uICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0KLS0gKE5TU3Ry
aW5nICopdGFyZ2V0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9wcm9jZXNzaW5nSW5zdHJ1Y3Rpb25d
LT50YXJnZXQoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgcmV0dXJuIFtzZWxm
IF9wcm9jZXNzaW5nSW5zdHJ1Y3Rpb25dLT5kYXRhKCk7Ci19CitAaW1wbGVtZW50YXRpb24gRE9N
RW50aXR5UmVmZXJlbmNlIChXZWJDb3JlSW50ZXJuYWwpCiAKLS0gKHZvaWQpc2V0RGF0YTooTlNT
dHJpbmcgKilkYXRhCisrIChET01FbnRpdHlSZWZlcmVuY2UgKilfZW50aXR5UmVmZXJlbmNlV2l0
aDooV2ViQ29yZTo6RW50aXR5UmVmZXJlbmNlICopaW1wbDsKIHsKLSAgICBBU1NFUlQoZGF0YSk7
Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfcHJvY2Vzc2luZ0luc3Ry
dWN0aW9uXS0+c2V0RGF0YShkYXRhLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRW50aXR5UmVmZXJlbmNlICo+KFtET01Ob2RlIF9ub2Rl
V2l0aDppbXBsXSk7CiB9CiAKIEBlbmQKIAorCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogLy8gRE9NUmFuZ2UKIApAQCAtMTk4Niw5ICsxMDQ3LDkgQEAgc3RhdGljIENsYXNz
IGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogCiBAZW5kCiAKLS8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLyBET01Ob2RlRmlsdGVyCiAKIEBpbXBsZW1lbnRhdGlvbiBET01Ob2RlRmlsdGVyCiAKQEAg
LTIwNDMsNiArMTEwNCw5IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWlj
U3QKIEBlbmQKIAogCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRE9N
Tm9kZUl0ZXJhdG9yCisKIEBpbXBsZW1lbnRhdGlvbiBET01Ob2RlSXRlcmF0b3IKIAogLSAoaWQp
X2luaXRXaXRoTm9kZUl0ZXJhdG9yOihOb2RlSXRlcmF0b3IgKilpbXBsIGZpbHRlcjooaWQgPERP
TU5vZGVGaWx0ZXI+KWZpbHRlcgpAQCAtMjE0Niw2ICsxMjEwLDEwIEBAIHN0YXRpYyBDbGFzcyBl
bGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogQGVuZAogCisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisvLyBET01UcmVlV2Fsa2VyCisKIEBpbXBsZW1lbnRhdGlvbiBE
T01UcmVlV2Fsa2VyCiAKIC0gKGlkKV9pbml0V2l0aFRyZWVXYWxrZXI6KFRyZWVXYWxrZXIgKilp
bXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgpAQCAtMjI3NCw3ICsxMzQyLDEx
IEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogQGVuZAogCi1j
bGFzcyBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbiA6IHB1YmxpYyBOb2RlRmlsdGVyQ29uZGl0aW9u
IAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gT2JqQ05vZGVGaWx0
ZXJDb25kaXRpb24KKworY2xhc3MgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24gOiBwdWJsaWMgTm9k
ZUZpbHRlckNvbmRpdGlvbgogewogcHVibGljOgogICAgIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9u
KGlkIDxET01Ob2RlRmlsdGVyPik7CkBAIC0yMzA3LDYgKzEzNzksMTEgQEAgc2hvcnQgT2JqQ05v
ZGVGaWx0ZXJDb25kaXRpb246OmFjY2VwdE5vZAogICAgIHJldHVybiBbbV9maWx0ZXIgYWNjZXB0
Tm9kZTpbRE9NTm9kZSBfbm9kZVdpdGg6bm9kZV1dOwogfQogCisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisvLyBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRUcmF2ZXJzYWwp
CisKKy8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBhdXRvLWdlbmVuZXJhdGUgaW4gRE9NRG9jdW1l
bnQubW0KIEBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRUcmF2ZXJzYWwp
CiAKIC0gKERPTU5vZGVJdGVyYXRvciAqKWNyZWF0ZU5vZGVJdGVyYXRvcjooRE9NTm9kZSAqKXJv
b3QgOih1bnNpZ25lZCl3aGF0VG9TaG93IDooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlciA6KEJP
T0wpZXhwYW5kRW50aXR5UmVmZXJlbmNlcwpAQCAtMjMzMyw2ICsxNDEwLDEwIEBAIHNob3J0IE9i
akNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2QKIAogQGVuZAogCisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBPYmpDRXZlbnRMaXN0ZW5lcgorCiBPYmpDRXZl
bnRMaXN0ZW5lciogT2JqQ0V2ZW50TGlzdGVuZXI6OmZpbmQoaWQgPERPTUV2ZW50TGlzdGVuZXI+
IGxpc3RlbmVyKQogewogICAgIGlmIChMaXN0ZW5lck1hcCogbWFwID0gbGlzdGVuZXJNYXApCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTUNTUy5oCShyZXZpc2lvbiAxNTk5NykKKysrIFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01DU1MuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsMzQgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAogICovCiAKKyNpbXBvcnQgPFdlYkNvcmUvRE9NQ29yZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9ET01TdHlsZXNoZWV0cy5oPgogCisjaW1wb3J0IDxXZWJDb3JlL0RPTURvY3Vt
ZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
RE9NRE9NSW1wbGVtZW50YXRpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CisK
Ky8vCisvLyBJbnRlcmZhY2UgdGhhdCB1c2VkIHRvIGJlIGluIHRoaXMgZmlsZToKKy8vCisKKy8v
IE5vdyBpbmNsdWRlZCBpbiBET01FbGVtZW50LmgKKy8vQGludGVyZmFjZSBET01FbGVtZW50IChE
T01FbGVtZW50Q1NTSW5saW5lU3R5bGUpCisvLy0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilz
dHlsZTsKKy8vQGVuZAorCisvLyBOb3cgaW5jbHVkZWQgaW4gRE9NRG9jdW1lbnQuaAorLy9AaW50
ZXJmYWNlIERPTURvY3VtZW50IChET01Eb2N1bWVudENTUykKKy8vLSAoRE9NQ1NTU3R5bGVEZWNs
YXJhdGlvbiAqKWdldE92ZXJyaWRlU3R5bGU6KERPTUVsZW1lbnQgKillbHQgOihOU1N0cmluZyAq
KXBzZXVkb0VsdDsKKy8vQGVuZAorCisvLyBOb3cgaW5jbHVkZWQgaW4gRE9NRE9NSW1wbGVtZW50
YXRpb24uaAorLy9AaW50ZXJmYWNlIERPTUltcGxlbWVudGF0aW9uIChET01JbXBsZW1lbnRhdGlv
bkNTUykKKy8vLSAoRE9NQ1NTU3R5bGVTaGVldCAqKWNyZWF0ZUNTU1N0eWxlU2hlZXQ6KE5TU3Ry
aW5nICopdGl0bGUgOihOU1N0cmluZyAqKW1lZGlhOworLy9AZW5kCisKKwogQGNsYXNzIERPTUNv
dW50ZXI7CiBAY2xhc3MgRE9NQ1NTUnVsZTsKIEBjbGFzcyBET01DU1NTdHlsZURlY2xhcmF0aW9u
OwpAQCAtMzMsNiArNTksMTIgQEAKIEBjbGFzcyBET01SZWN0OwogQGNsYXNzIERPTVJHQkNvbG9y
OwogCisvLyBGSVhNRTogdGhpcyBzaG91bGQgZ28gaW50byBET01Eb2N1bWVudC5oCisvLyBSRUFT
T046IG5vdCBpbiBJREwgeWV0LgorQGludGVyZmFjZSBET01Eb2N1bWVudCAoRE9NVmlld0NTUykK
Ky0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilnZXRDb21wdXRlZFN0eWxlOihET01FbGVtZW50
ICopZWx0IDooTlNTdHJpbmcgKilwc2V1ZG9FbHQ7CitAZW5kCisKIEBpbnRlcmZhY2UgRE9NQ1NT
UnVsZUxpc3QgOiBET01PYmplY3QKIC0gKHVuc2lnbmVkKWxlbmd0aDsKIC0gKERPTUNTU1J1bGUg
KilpdGVtOih1bnNpZ25lZClpbmRleDsKQEAgLTE4NSwxMCArMjE3LDYgQEAgZW51bSB7CiAtIChO
U1N0cmluZyAqKXNlcGFyYXRvcjsKIEBlbmQKIAotQGludGVyZmFjZSBET01FbGVtZW50IChET01F
bGVtZW50Q1NTSW5saW5lU3R5bGUpCi0tIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGU7
Ci1AZW5kCi0KIEBpbnRlcmZhY2UgRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAoRE9NQ1NTMlByb3Bl
cnRpZXMpCiAtIChOU1N0cmluZyAqKWF6aW11dGg7CiAtICh2b2lkKXNldEF6aW11dGg6KE5TU3Ry
aW5nICopYXppbXV0aDsKQEAgLTQ0MiwxNSArNDcwLDMgQEAgZW51bSB7CiAtICh1bnNpZ25lZClp
bnNlcnRSdWxlOihOU1N0cmluZyAqKXJ1bGUgOih1bnNpZ25lZClpbmRleDsKIC0gKHZvaWQpZGVs
ZXRlUnVsZToodW5zaWduZWQpaW5kZXg7CiBAZW5kCi0KLUBpbnRlcmZhY2UgRE9NRG9jdW1lbnQg
KERPTVZpZXdDU1MpCi0tIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopZ2V0Q29tcHV0ZWRTdHls
ZTooRE9NRWxlbWVudCAqKWVsdCA6KE5TU3RyaW5nICopcHNldWRvRWx0OwotQGVuZAotCi1AaW50
ZXJmYWNlIERPTURvY3VtZW50IChET01Eb2N1bWVudENTUykKLS0gKERPTUNTU1N0eWxlRGVjbGFy
YXRpb24gKilnZXRPdmVycmlkZVN0eWxlOihET01FbGVtZW50ICopZWx0IDooTlNTdHJpbmcgKilw
c2V1ZG9FbHQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSW1wbGVtZW50YXRpb24gKERPTUltcGxl
bWVudGF0aW9uQ1NTKQotLSAoRE9NQ1NTU3R5bGVTaGVldCAqKWNyZWF0ZUNTU1N0eWxlU2hlZXQ6
KE5TU3RyaW5nICopdGl0bGUgOihOU1N0cmluZyAqKW1lZGlhOwotQGVuZApJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTUNvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NQ29yZS5oCShyZXZpc2lvbiAxNTk5NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01Db3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21h
aWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyMTggKzI0LDIx
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9i
amVjdC5oPgotCi1AY2xhc3MgRE9NRG9jdW1lbnQ7IAotQGNsYXNzIERPTURvY3VtZW50VHlwZTsK
LUBjbGFzcyBET01FbGVtZW50OwotQGNsYXNzIERPTU5hbWVkTm9kZU1hcDsKLUBjbGFzcyBET01O
b2RlTGlzdDsKLQotdHlwZWRlZiBzdHJ1Y3QgRE9NT2JqZWN0SW50ZXJuYWwgRE9NT2JqZWN0SW50
ZXJuYWw7Ci0KLUBpbnRlcmZhY2UgRE9NT2JqZWN0IDogV2ViU2NyaXB0T2JqZWN0IDxOU0NvcHlp
bmc+Ci17Ci0gICAgRE9NT2JqZWN0SW50ZXJuYWwgKl9pbnRlcm5hbDsKLX0KLUBlbmQKLQotdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgRE9NVGltZVN0YW1wOwotCi1leHRlcm4gTlNTdHJpbmcg
KiBjb25zdCBET01FeGNlcHRpb247Ci0KLWVudW0gewotICAgIC8vCi0gICAgLy8gRE9NIGV4Y2Vw
dGlvbiBjb2RlcwotICAgIC8vCi0gICAgRE9NX0lOREVYX1NJWkVfRVJSICAgICAgICAgICAgICAg
ID0gMSwKLSAgICBET01fRE9NU1RSSU5HX1NJWkVfRVJSICAgICAgICAgICAgPSAyLAotICAgIERP
TV9ISUVSQVJDSFlfUkVRVUVTVF9FUlIgICAgICAgICA9IDMsCi0gICAgRE9NX1dST05HX0RPQ1VN
RU5UX0VSUiAgICAgICAgICAgID0gNCwKLSAgICBET01fSU5WQUxJRF9DSEFSQUNURVJfRVJSICAg
ICAgICAgPSA1LAotICAgIERPTV9OT19EQVRBX0FMTE9XRURfRVJSICAgICAgICAgICA9IDYsCi0g
ICAgRE9NX05PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiAgID0gNywKLSAgICBET01fTk9UX0ZP
VU5EX0VSUiAgICAgICAgICAgICAgICAgPSA4LAotICAgIERPTV9OT1RfU1VQUE9SVEVEX0VSUiAg
ICAgICAgICAgICA9IDksCi0gICAgRE9NX0lOVVNFX0FUVFJJQlVURV9FUlIgICAgICAgICAgID0g
MTAsCi0gICAgRE9NX0lOVkFMSURfU1RBVEVfRVJSICAgICAgICAgICAgID0gMTEsCi0gICAgRE9N
X1NZTlRBWF9FUlIgICAgICAgICAgICAgICAgICAgID0gMTIsCi0gICAgRE9NX0lOVkFMSURfTU9E
SUZJQ0FUSU9OX0VSUiAgICAgID0gMTMsCi0gICAgRE9NX05BTUVTUEFDRV9FUlIgICAgICAgICAg
ICAgICAgID0gMTQsCi0gICAgRE9NX0lOVkFMSURfQUNDRVNTX0VSUiAgICAgICAgICAgID0gMTUK
LX07Ci0KLUBpbnRlcmZhY2UgRE9NSW1wbGVtZW50YXRpb24gOiBET01PYmplY3QKLS0gKEJPT0wp
aGFzRmVhdHVyZTooTlNTdHJpbmcgKilmZWF0dXJlIDooTlNTdHJpbmcgKil2ZXJzaW9uOwotLSAo
RE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBlOihOU1N0cmluZyAqKXF1YWxpZmll
ZE5hbWUgOihOU1N0cmluZyAqKXB1YmxpY0lkIDooTlNTdHJpbmcgKilzeXN0ZW1JZDsKLS0gKERP
TURvY3VtZW50ICopY3JlYXRlRG9jdW1lbnQ6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNT
dHJpbmcgKilxdWFsaWZpZWROYW1lIDooRE9NRG9jdW1lbnRUeXBlICopZG9jdHlwZTsKLUBlbmQK
LQotZW51bSB7Ci0gICAgLy8KLSAgICAvLyBET00gbm9kZSB0eXBlcwotICAgIC8vCi0gICAgRE9N
X0VMRU1FTlRfTk9ERSAgICAgICAgICAgICAgICAgID0gMSwKLSAgICBET01fQVRUUklCVVRFX05P
REUgICAgICAgICAgICAgICAgPSAyLAotICAgIERPTV9URVhUX05PREUgICAgICAgICAgICAgICAg
ICAgICA9IDMsCi0gICAgRE9NX0NEQVRBX1NFQ1RJT05fTk9ERSAgICAgICAgICAgID0gNCwKLSAg
ICBET01fRU5USVRZX1JFRkVSRU5DRV9OT0RFICAgICAgICAgPSA1LAotICAgIERPTV9FTlRJVFlf
Tk9ERSAgICAgICAgICAgICAgICAgICA9IDYsCi0gICAgRE9NX1BST0NFU1NJTkdfSU5TVFJVQ1RJ
T05fTk9ERSAgID0gNywKLSAgICBET01fQ09NTUVOVF9OT0RFICAgICAgICAgICAgICAgICAgPSA4
LAotICAgIERPTV9ET0NVTUVOVF9OT0RFICAgICAgICAgICAgICAgICA9IDksCi0gICAgRE9NX0RP
Q1VNRU5UX1RZUEVfTk9ERSAgICAgICAgICAgID0gMTAsCi0gICAgRE9NX0RPQ1VNRU5UX0ZSQUdN
RU5UX05PREUgICAgICAgID0gMTEsCi0gICAgRE9NX05PVEFUSU9OX05PREUgICAgICAgICAgICAg
ICAgID0gMTIKLX07Ci0KLUBpbnRlcmZhY2UgRE9NTm9kZSA6IERPTU9iamVjdAotLSAoTlNTdHJp
bmcgKilub2RlTmFtZTsKLS0gKE5TU3RyaW5nICopbm9kZVZhbHVlOwotLSAodm9pZClzZXROb2Rl
VmFsdWU6KE5TU3RyaW5nICopc3RyaW5nOwotLSAodW5zaWduZWQgc2hvcnQpbm9kZVR5cGU7Ci0t
IChET01Ob2RlICopcGFyZW50Tm9kZTsKLS0gKERPTU5vZGVMaXN0ICopY2hpbGROb2RlczsKLS0g
KERPTU5vZGUgKilmaXJzdENoaWxkOwotLSAoRE9NTm9kZSAqKWxhc3RDaGlsZDsKLS0gKERPTU5v
ZGUgKilwcmV2aW91c1NpYmxpbmc7Ci0tIChET01Ob2RlICopbmV4dFNpYmxpbmc7Ci0tIChET01O
YW1lZE5vZGVNYXAgKilhdHRyaWJ1dGVzOwotLSAoRE9NRG9jdW1lbnQgKilvd25lckRvY3VtZW50
OwotLSAoRE9NTm9kZSAqKWluc2VydEJlZm9yZTooRE9NTm9kZSAqKW5ld0NoaWxkIDooRE9NTm9k
ZSAqKXJlZkNoaWxkOwotLSAoRE9NTm9kZSAqKXJlcGxhY2VDaGlsZDooRE9NTm9kZSAqKW5ld0No
aWxkIDooRE9NTm9kZSAqKW9sZENoaWxkOwotLSAoRE9NTm9kZSAqKXJlbW92ZUNoaWxkOihET01O
b2RlICopb2xkQ2hpbGQ7Ci0tIChET01Ob2RlICopYXBwZW5kQ2hpbGQ6KERPTU5vZGUgKiluZXdD
aGlsZDsKLS0gKEJPT0wpaGFzQ2hpbGROb2RlczsKLS0gKERPTU5vZGUgKiljbG9uZU5vZGU6KEJP
T0wpZGVlcDsKLS0gKHZvaWQpbm9ybWFsaXplOwotLSAoQk9PTClpc1N1cHBvcnRlZDooTlNTdHJp
bmcgKilmZWF0dXJlIDooTlNTdHJpbmcgKil2ZXJzaW9uOwotLSAoTlNTdHJpbmcgKiluYW1lc3Bh
Y2VVUkk7Ci0tIChOU1N0cmluZyAqKXByZWZpeDsKLS0gKHZvaWQpc2V0UHJlZml4OihOU1N0cmlu
ZyAqKXByZWZpeDsKLS0gKE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAoQk9PTCloYXNBdHRyaWJ1
dGVzOwotLSAoQk9PTClpc1NhbWVOb2RlOihET01Ob2RlICopb3RoZXI7Ci0tIChCT09MKWlzRXF1
YWxOb2RlOihET01Ob2RlICopb3RoZXI7Ci0tIChOU1N0cmluZyAqKXRleHRDb250ZW50OwotLSAo
dm9pZClzZXRUZXh0Q29udGVudDooTlNTdHJpbmcgKil0ZXh0OwotQGVuZAotCi1AaW50ZXJmYWNl
IERPTU5vZGVMaXN0IDogRE9NT2JqZWN0Ci0tIChET01Ob2RlICopaXRlbToodW5zaWduZWQpaW5k
ZXg7Ci0tICh1bnNpZ25lZClsZW5ndGg7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NTmFtZWROb2Rl
TWFwIDogRE9NT2JqZWN0Ci0tIChET01Ob2RlICopZ2V0TmFtZWRJdGVtOihOU1N0cmluZyAqKW5h
bWU7Ci0tIChET01Ob2RlICopc2V0TmFtZWRJdGVtOihET01Ob2RlICopYXJnOwotLSAoRE9NTm9k
ZSAqKXJlbW92ZU5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1lOwotLSAoRE9NTm9kZSAqKWl0ZW06
KHVuc2lnbmVkKWluZGV4OwotLSAodW5zaWduZWQpbGVuZ3RoOwotLSAoRE9NTm9kZSAqKWdldE5h
bWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1l
OwotLSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbU5TOihET01Ob2RlICopYXJnOwotLSAoRE9NTm9k
ZSAqKXJlbW92ZU5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5n
ICopbG9jYWxOYW1lOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUNoYXJhY3RlckRhdGEgOiBET01O
b2RlCi0tIChOU1N0cmluZyAqKWRhdGE7Ci0tICh2b2lkKXNldERhdGE6KE5TU3RyaW5nICopZGF0
YTsKLS0gKHVuc2lnbmVkKWxlbmd0aDsKLS0gKE5TU3RyaW5nICopc3Vic3RyaW5nRGF0YToodW5z
aWduZWQpb2Zmc2V0IDoodW5zaWduZWQpY291bnQ7Ci0tICh2b2lkKWFwcGVuZERhdGE6KE5TU3Ry
aW5nICopYXJnOwotLSAodm9pZClpbnNlcnREYXRhOih1bnNpZ25lZClvZmZzZXQgOihOU1N0cmlu
ZyAqKWFyZzsKLS0gKHZvaWQpZGVsZXRlRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQp
IGNvdW50OwotLSAodm9pZClyZXBsYWNlRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQp
Y291bnQgOihOU1N0cmluZyAqKWFyZzsKLUBlbmQKLQotQGludGVyZmFjZSBET01BdHRyIDogRE9N
Tm9kZQotLSAoTlNTdHJpbmcgKiluYW1lOwotLSAoQk9PTClzcGVjaWZpZWQ7Ci0tIChOU1N0cmlu
ZyAqKXZhbHVlOwotLSAodm9pZClzZXRWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZTsKLS0gKERPTUVs
ZW1lbnQgKilvd25lckVsZW1lbnQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRWxlbWVudCA6IERP
TU5vZGUKLS0gKE5TU3RyaW5nICopdGFnTmFtZTsKLS0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRl
OihOU1N0cmluZyAqKW5hbWU7Ci0tICh2b2lkKXNldEF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1l
IDooTlNTdHJpbmcgKil2YWx1ZTsKLS0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlOihOU1N0cmluZyAq
KW5hbWU7Ci0tIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9kZTooTlNTdHJpbmcgKiluYW1lOwot
LSAoRE9NQXR0ciAqKXNldEF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKiluZXdBdHRyOwotLSAoRE9N
QXR0ciAqKXJlbW92ZUF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKilvbGRBdHRyOwotLSAoRE9NTm9k
ZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZTooTlNTdHJpbmcgKiluYW1lOwotLSAoTlNTdHJp
bmcgKilnZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAq
KWxvY2FsTmFtZTsKLS0gKHZvaWQpc2V0QXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNl
VVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKil2YWx1ZTsKLS0gKHZv
aWQpcmVtb3ZlQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcg
Kilsb2NhbE5hbWU7Ci0tIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9kZU5TOihOU1N0cmluZyAq
KW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAoRE9NQXR0ciAqKXNldEF0
dHJpYnV0ZU5vZGVOUzooRE9NQXR0ciAqKW5ld0F0dHI7Ci0tIChET01Ob2RlTGlzdCAqKWdldEVs
ZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKils
b2NhbE5hbWU7Ci0tIChCT09MKWhhc0F0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lOwotLSAoQk9P
TCloYXNBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxv
Y2FsTmFtZTsKLS0gKHZvaWQpZm9jdXM7Ci0tICh2b2lkKWJsdXI7Ci1AZW5kCi0KLUBpbnRlcmZh
Y2UgRE9NVGV4dCA6IERPTUNoYXJhY3RlckRhdGEKLS0gKERPTVRleHQgKilzcGxpdFRleHQ6KHVu
c2lnbmVkKW9mZnNldDsKLUBlbmQKLQotQGludGVyZmFjZSBET01Db21tZW50IDogRE9NQ2hhcmFj
dGVyRGF0YQotQGVuZAotCi1AaW50ZXJmYWNlIERPTUNEQVRBU2VjdGlvbiA6IERPTVRleHQKLUBl
bmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudFR5cGUgOiBET01Ob2RlCi0tIChOU1N0cmluZyAq
KW5hbWU7Ci0tIChET01OYW1lZE5vZGVNYXAgKillbnRpdGllczsKLS0gKERPTU5hbWVkTm9kZU1h
cCAqKW5vdGF0aW9uczsKLS0gKE5TU3RyaW5nICopcHVibGljSWQ7Ci0tIChOU1N0cmluZyAqKXN5
c3RlbUlkOwotLSAoTlNTdHJpbmcgKilpbnRlcm5hbFN1YnNldDsKLUBlbmQKLQotQGludGVyZmFj
ZSBET01Ob3RhdGlvbiA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopcHVibGljSWQ7Ci0tIChOU1N0
cmluZyAqKXN5c3RlbUlkOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUVudGl0eSA6IERPTU5vZGUK
LS0gKE5TU3RyaW5nICopcHVibGljSWQ7Ci0tIChOU1N0cmluZyAqKXN5c3RlbUlkOwotLSAoTlNT
dHJpbmcgKilub3RhdGlvbk5hbWU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRW50aXR5UmVmZXJl
bmNlIDogRE9NTm9kZQotQGVuZAotCi1AaW50ZXJmYWNlIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlv
biA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopdGFyZ2V0OwotLSAoTlNTdHJpbmcgKilkYXRhOwot
LSAodm9pZClzZXREYXRhOihOU1N0cmluZyAqKWRhdGE7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9N
RG9jdW1lbnRGcmFnbWVudCA6IERPTU5vZGUKLUBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVu
dCA6IERPTU5vZGUKLS0gKERPTURvY3VtZW50VHlwZSAqKWRvY3R5cGU7Ci0tIChET01JbXBsZW1l
bnRhdGlvbiAqKWltcGxlbWVudGF0aW9uOwotLSAoRE9NRWxlbWVudCAqKWRvY3VtZW50RWxlbWVu
dDsKLS0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWU7Ci0t
IChET01Eb2N1bWVudEZyYWdtZW50ICopY3JlYXRlRG9jdW1lbnRGcmFnbWVudDsKLS0gKERPTVRl
eHQgKiljcmVhdGVUZXh0Tm9kZTooTlNTdHJpbmcgKilkYXRhOwotLSAoRE9NQ29tbWVudCAqKWNy
ZWF0ZUNvbW1lbnQ6KE5TU3RyaW5nICopZGF0YTsKLS0gKERPTUNEQVRBU2VjdGlvbiAqKWNyZWF0
ZUNEQVRBU2VjdGlvbjooTlNTdHJpbmcgKilkYXRhOwotLSAoRE9NUHJvY2Vzc2luZ0luc3RydWN0
aW9uICopY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uOihOU1N0cmluZyAqKXRhcmdldCA6KE5T
U3RyaW5nICopZGF0YTsKLS0gKERPTUF0dHIgKiljcmVhdGVBdHRyaWJ1dGU6KE5TU3RyaW5nICop
bmFtZTsKLS0gKERPTUVudGl0eVJlZmVyZW5jZSAqKWNyZWF0ZUVudGl0eVJlZmVyZW5jZTooTlNT
dHJpbmcgKiluYW1lOwotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZTooTlNT
dHJpbmcgKil0YWduYW1lOwotLSAoRE9NTm9kZSAqKWltcG9ydE5vZGU6KERPTU5vZGUgKilpbXBv
cnRlZE5vZGUgOihCT09MKWRlZXA7Ci0tIChET01FbGVtZW50ICopY3JlYXRlRWxlbWVudE5TOihO
U1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZTsKLS0gKERP
TUF0dHIgKiljcmVhdGVBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0
cmluZyAqKXF1YWxpZmllZE5hbWU7Ci0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdO
YW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0t
IChET01FbGVtZW50ICopZ2V0RWxlbWVudEJ5SWQ6KE5TU3RyaW5nICopZWxlbWVudElkOwotLSAo
RE9NTm9kZSAqKWFkb3B0Tm9kZTooRE9NTm9kZSAqKXNvdXJjZTsKLUBlbmQKKyNpbXBvcnQgPFdl
YkNvcmUvRE9NQXR0ci5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01DREFUQVNlY3Rpb24uaD4KKyNp
bXBvcnQgPFdlYkNvcmUvRE9NQ2hhcmFjdGVyRGF0YS5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01D
b21tZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTURPTUltcGxlbWVudGF0aW9uLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0RPTURvY3VtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTURvY3VtZW50
RnJhZ21lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnRUeXBlLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0RPTUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRW50aXR5Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0RPTUVudGl0eVJlZmVyZW5jZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9E
T01OYW1lZE5vZGVNYXAuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NTm9kZS5oPgorI2ltcG9ydCA8
V2ViQ29yZS9ET01Ob2RlTGlzdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Ob3RhdGlvbi5oPgor
I2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTVRleHQuaD4KSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FdmVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NRXZlbnRzLmgJKHJldmlzaW9uIDE1OTk3KQorKysgV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTUV2ZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0u
d2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMs
OCArMjQsMjEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKKyNpbXBvcnQgPFdlYkNvcmUvRE9N
RG9jdW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NTm9kZS5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9ET01PYmplY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NVmlld3MuaD4KIAorCisvLyBJbnRl
cmZhY2UgdGhhdCB1c2VkIHRvIGJlIGluIHRoaXMgZmlsZQorCisvLyBOb3cgaW5jbHVkZWQgaW4g
RE9NRG9jdW1lbnQuaAorLy9AaW50ZXJmYWNlIERPTURvY3VtZW50IChET01Eb2N1bWVudEV2ZW50
KQorLy8tIChET01FdmVudCAqKWNyZWF0ZUV2ZW50OihOU1N0cmluZyAqKWV2ZW50VHlwZTsKKy8v
QGVuZAorCisKKwogQGNsYXNzIERPTUV2ZW50OwogCiBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBE
T01FdmVudEV4Y2VwdGlvbjsKQEAgLTQzLDkgKzU3LDEyIEBAIGVudW0gRE9NRXZlbnRFeGNlcHRp
b25Db2RlIHsKIC0gKEJPT0wpZGlzcGF0Y2hFdmVudDooRE9NRXZlbnQgKilldmVudDsKIEBlbmQK
IAorCisvLyBGSVhNRTogc2hvdWxkIHRoaXMgZ28gaW50byBET01Ob2RlLmgKIEBpbnRlcmZhY2Ug
RE9NTm9kZSAoRE9NRXZlbnRUYXJnZXQpIDxET01FdmVudFRhcmdldD4KIEBlbmQKIAorCiBlbnVt
IHsKICAgICBET01fQ0FQVFVSSU5HX1BIQVNFID0gMSwKICAgICBET01fQVRfVEFSR0VUID0gMiwK
QEAgLTY1LDEwICs4Miw2IEBAIGVudW0gewogLSAodm9pZClpbml0RXZlbnQ6KE5TU3RyaW5nICop
ZXZlbnRUeXBlQXJnIDooQk9PTCljYW5CdWJibGVBcmcgOihCT09MKWNhbmNlbGFibGVBcmc7CiBA
ZW5kCiAKLUBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgKERPTURvY3VtZW50RXZlbnQpCi0tIChET01F
dmVudCAqKWNyZWF0ZUV2ZW50OihOU1N0cmluZyAqKWV2ZW50VHlwZTsKLUBlbmQKLQogQGludGVy
ZmFjZSBET01VSUV2ZW50IDogRE9NRXZlbnQKIC0gKERPTUFic3RyYWN0VmlldyAqKXZpZXc7CiAt
IChpbnQpZGV0YWlsOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZlbnRzLm1tCShyZXZpc2lv
biAxNTk5NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FdmVudHMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTM3OCwxNSArMzc4LDMgQEAgQUxMT1dfRE9NX0NBU1QoRXZlbnQpCiB9CiAKIEBl
bmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChET01Eb2N1bWVudEV2ZW50KQotCi0t
IChET01FdmVudCAqKWNyZWF0ZUV2ZW50OihOU1N0cmluZyAqKWV2ZW50VHlwZQotewotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBbc2VsZiBfZG9j
dW1lbnRdLT5jcmVhdGVFdmVudChldmVudFR5cGUsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3Io
ZWMpOwotICAgIHJldHVybiBbRE9NRXZlbnQgX2V2ZW50V2l0aDpldmVudC5nZXQoKV07Ci19Ci0K
LUBlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FeHRlbnNpb25zLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV4dGVuc2lvbnMuaAkocmV2aXNpb24g
MTU5OTcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXh0ZW5zaW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjIgKzI0LDY4IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
ICAqLwogCisjaW1wb3J0IDxXZWJDb3JlL0RPTUF0dHIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9N
Q1NTLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTURPTUltcGxlbWVudGF0aW9uLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0RPTURvY3VtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUVsZW1lbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Ob2RlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RPTVJhbmdlLmg+CiAKKworLy8KKy8vIEludGVyZmFjZSB0aGF0
IHVzZWQgdG8gYmUgaW4gdGhpcyBmaWxlOgorLy8KKworLy8gTm93IGluY2x1ZGVkIGluIERPTU5v
ZGUuaAorLy9AaW50ZXJmYWNlIERPTU5vZGUgKERPTU5vZGVFeHRlbnNpb25zKQorLy8tIChOU1Jl
Y3QpYm91bmRpbmdCb3g7CisvLy0gKE5TQXJyYXkgKilsaW5lQm94UmVjdHM7CisvL0BlbmQKKwor
Ly8gTm93IGluY2x1ZGVkIGluIERPTUF0dHIuaAorLy9AaW50ZXJmYWNlIERPTUF0dHIgKERPTUF0
dHJFeHRlbnNpb25zKQorLy8tIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGU7CisvL0Bl
bmQKKworLy8gTm93IGluY2x1ZGVkIGluIERPTUltcGxlbWVudGF0aW9uLmgKKy8vQGludGVyZmFj
ZSBET01JbXBsZW1lbnRhdGlvbiAoRE9NSW1wbGVtZW50YXRpb25FeHRlbnNpb25zKQorLy8tIChE
T01IVE1MRG9jdW1lbnQgKiljcmVhdGVIVE1MRG9jdW1lbnQ6KE5TU3RyaW5nICopdGl0bGU7Cisv
L0BlbmQKKworLy8gTm93IGluY2x1ZGVkIGluIERPTUVsZW1lbnQuaAorLy9AaW50ZXJmYWNlIERP
TUVsZW1lbnQgKERPTUVsZW1lbnRFeHRlbnNpb25zKQorLy8tICh2b2lkKXNjcm9sbEludG9WaWV3
OihCT09MKWFsaWduVG9wOworLy8tICh2b2lkKXNjcm9sbEludG9WaWV3SWZOZWVkZWQ6KEJPT0wp
Y2VudGVySWZOZWVkZWQ7CisvL0BlbmQKKworCisKIEBjbGFzcyBOU0NvbG9yOwogQGNsYXNzIE5T
SW1hZ2U7CitAY2xhc3MgRE9NSFRNTENvbGxlY3Rpb247CiAKLUBpbnRlcmZhY2UgRE9NSW1wbGVt
ZW50YXRpb24gKERPTUltcGxlbWVudGF0aW9uRXh0ZW5zaW9ucykKLS0gKERPTUhUTUxEb2N1bWVu
dCAqKWNyZWF0ZUhUTUxEb2N1bWVudDooTlNTdHJpbmcgKil0aXRsZTsKLUBlbmQKLQorLy8gRklY
TUU6IHRoaXMgc2hvdWxkIGJlIGF1dG8tZ2VuZW5lcmF0ZSBpbiBET01Eb2N1bWVudC5tbQorLy8g
UkVBU09OOiBub3QgaW4gSURMIHlldC4KIEBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgKERPTURvY3Vt
ZW50Q1NTRXh0ZW5zaW9ucykKIC0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKiljcmVhdGVDU1NT
dHlsZURlY2xhcmF0aW9uOwogLSAoRE9NQ1NTUnVsZUxpc3QgKilnZXRNYXRjaGVkQ1NTUnVsZXM6
KERPTUVsZW1lbnQgKillbHQgOihOU1N0cmluZyAqKXBzZXVkb0VsdDsKIEBlbmQKIAorCisvLyBG
SVhNRTogdGhpcyBzaG91bGQgYmUgYXV0by1nZW5lbmVyYXRlIGluIERPTUVsZW1lbnQubW0KKy8v
IFJFQVNPTjogbm90IGluIElETCB5ZXQgYW5kIG5vdCB0cml2aWFsIHRvIGdlbmVyYXRlLgorQGlu
dGVyZmFjZSBET01FbGVtZW50IChET01FbGVtZW50RXh0ZW5zaW9ucykKKy0gKE5TSW1hZ2UgKilp
bWFnZTsKKworLy8gVGhlIGZvbGxvd2luZyB0d28gbWV0aG9kcyBoYXZlIGJlZW4gbW92ZWQgaW50
byBET01FbGVtZW50LmggYXMgbm90ZWQgYWJvdmUuCisvLy0gKHZvaWQpc2Nyb2xsSW50b1ZpZXc6
KEJPT0wpYWxpZ25Ub3A7CisvLy0gKHZvaWQpc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZDooQk9PTClj
ZW50ZXJJZk5lZWRlZDsKK0BlbmQKKworCisKIEBpbnRlcmZhY2UgRE9NSFRNTERvY3VtZW50IChE
T01IVE1MRG9jdW1lbnRFeHRlbnNpb25zKQogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWNyZWF0
ZURvY3VtZW50RnJhZ21lbnRXaXRoTWFya3VwU3RyaW5nOihOU1N0cmluZyAqKW1hcmt1cFN0cmlu
ZyBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkw7CiAtIChET01Eb2N1bWVudEZyYWdtZW50ICopY3Jl
YXRlRG9jdW1lbnRGcmFnbWVudFdpdGhUZXh0OihOU1N0cmluZyAqKXRleHQ7CkBAIC05NiwzMCAr
MTQzLDE1IEBACiAtIChOU0NvbG9yICopY29sb3I7CiBAZW5kCiAKLUBpbnRlcmZhY2UgRE9NQXR0
ciAoRE9NQXR0ckV4dGVuc2lvbnMpCi0tIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGU7
Ci1AZW5kCi0KIEBpbnRlcmZhY2UgRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAoRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbkV4dGVuc2lvbnMpCiAtIChOU1N0cmluZyAqKWdldFByb3BlcnR5U2hvcnRoYW5k
OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZTsKIC0gKEJPT0wpaXNQcm9wZXJ0eUltcGxpY2l0OihO
U1N0cmluZyAqKXByb3BlcnR5TmFtZTsKIEBlbmQKIAotQGludGVyZmFjZSBET01Ob2RlIChET01O
b2RlRXh0ZW5zaW9ucykKLS0gKE5TUmVjdClib3VuZGluZ0JveDsKLS0gKE5TQXJyYXkgKilsaW5l
Qm94UmVjdHM7Ci1AZW5kCi0KIEBpbnRlcmZhY2UgRE9NUmFuZ2UgKERPTVJhbmdlRXh0ZW5zaW9u
cykKIC0gKE5TU3RyaW5nICopdGV4dDsKIEBlbmQKIAotQGludGVyZmFjZSBET01FbGVtZW50IChE
T01FbGVtZW50RXh0ZW5zaW9ucykKLS0gKE5TSW1hZ2UgKilpbWFnZTsKLS0gKHZvaWQpc2Nyb2xs
SW50b1ZpZXc6KEJPT0wpYWxpZ25Ub3A7Ci0tICh2b2lkKXNjcm9sbEludG9WaWV3SWZOZWVkZWQ6
KEJPT0wpY2VudGVySWZOZWVkZWQ7Ci1AZW5kCi0KIEBpbnRlcmZhY2UgRE9NSFRNTElucHV0RWxl
bWVudCAoRE9NSFRNTElucHV0RWxlbWVudEV4dGVuc2lvbnMpCiAtIChOU1N0cmluZyAqKWFsdERp
c3BsYXlTdHJpbmc7CiAtIChOU1VSTCAqKWFic29sdXRlSW1hZ2VVUkw7CkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NSFRNTC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NSFRNTC5tbQkocmV2aXNpb24gMTU5OTcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NSFRNTC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjI3LDYgKzYyNywxNSBAQCB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogCiBAZW5kCiAKK0BpbXBsZW1lbnRhdGlvbiBET01IVE1MRG9j
dW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKKworKyAoRE9NSFRNTERvY3VtZW50ICopX0hUTUxEb2N1
bWVudFdpdGg6KFdlYkNvcmU6OkhUTUxEb2N1bWVudCAqKWltcGw7Cit7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PERPTUhUTUxEb2N1bWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwor
fQorCitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBET01IVE1MSHRtbEVsZW1lbnQKIAogLSAoSFRN
TEh0bWxFbGVtZW50ICopX0hUTUxIdG1sRWxlbWVudApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUhUTUxJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01IVE1MSW50ZXJuYWwuaAkocmV2aXNpb24gMTU5OTcpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NSFRNTEludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDE0IEBA
CiAjaW1wb3J0ICJET01IVE1MLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBI
VE1MRG9jdW1lbnQ7CiAgICAgY2xhc3MgSFRNTE9wdGlvbnNDb2xsZWN0aW9uOwogfQogCiBAaW50
ZXJmYWNlIERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbiAoV2ViQ29yZUludGVybmFsKQogKyAoRE9N
SFRNTE9wdGlvbnNDb2xsZWN0aW9uICopX29wdGlvbnNDb2xsZWN0aW9uV2l0aDooV2ViQ29yZTo6
SFRNTE9wdGlvbnNDb2xsZWN0aW9uICopaW1wbDsKIEBlbmQKKworQGludGVyZmFjZSBET01IVE1M
RG9jdW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKKysgKERPTUhUTUxEb2N1bWVudCAqKV9IVE1MRG9j
dW1lbnRXaXRoOihXZWJDb3JlOjpIVE1MRG9jdW1lbnQgKilpbXBsOworQGVuZApJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTUltcGxlbWVudGF0aW9uRnJvbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW1wbGVtZW50YXRpb25Gcm9udC5oCShyZXZpc2lv
biAxNTk5NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbXBsZW1lbnRhdGlvbkZyb250
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdl
aW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTUzLDYg
KzU0LDYgQEAgcHVibGljOgogCiBET01JbXBsZW1lbnRhdGlvbkZyb250KiBpbXBsZW1lbnRhdGlv
bkZyb250KERvY3VtZW50Kik7CiAKLX0gLy9uYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotI2VuZGlmCisjZW5kaWYgLy8gRE9NSW1wbGVtZW50YXRpb25Gcm9udF9oCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaAkocmV2aXNpb24gMTU5OTcpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBKYW1lcyBHLiBTcGV0
aCAoc3BldGhAZW5kLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIChz
YW0ud2VpbmlnQGdtYWlsLmNvbSkKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjYsMjUgKzI3LDUyIEBACiAKICNpbXBvcnQgIkRPTS5oIgogCisjaW1wb3J0ICJET01BdHRyLmgi
CisjaW1wb3J0ICJET01DREFUQVNlY3Rpb24uaCIKKyNpbXBvcnQgIkRPTUNvbW1lbnQuaCIKKyNp
bXBvcnQgIkRPTURPTUltcGxlbWVudGF0aW9uLmgiCisjaW1wb3J0ICJET01Eb2N1bWVudC5oIgor
I2ltcG9ydCAiRE9NRG9jdW1lbnRGcmFnbWVudC5oIgorI2ltcG9ydCAiRE9NRG9jdW1lbnRUeXBl
LmgiCisjaW1wb3J0ICJET01FbGVtZW50LmgiCisjaW1wb3J0ICJET01FbnRpdHlSZWZlcmVuY2Uu
aCIKKyNpbXBvcnQgIkRPTU5hbWVkTm9kZU1hcC5oIgorI2ltcG9ydCAiRE9NTm9kZS5oIgorI2lt
cG9ydCAiRE9NTm9kZUxpc3QuaCIKKyNpbXBvcnQgIkRPTU9iamVjdC5oIgorI2ltcG9ydCAiRE9N
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCisjaW1wb3J0ICJET01UZXh0LmgiCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBBdHRyOworICAgIGNsYXNzIENEQVRBU2VjdGlvbjsKICAg
ICBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwogICAgIGNsYXNzIENTU1N0eWxlU2hlZXQ7Ci0g
ICAgY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKKyAgICBjbGFzcyBDb21tZW50OworICAgIGNsYXNz
IERPTUltcGxlbWVudGF0aW9uRnJvbnQ7CiAgICAgY2xhc3MgRG9jdW1lbnQ7CisgICAgY2xhc3Mg
RG9jdW1lbnRGcmFnbWVudDsKICAgICBjbGFzcyBEb2N1bWVudFR5cGU7CiAgICAgY2xhc3MgRWxl
bWVudDsKLSAgICBjbGFzcyBOb2RlRmlsdGVyOworICAgIGNsYXNzIEVudGl0eVJlZmVyZW5jZTsK
KyAgICBjbGFzcyBOYW1lZE5vZGVNYXA7CiAgICAgY2xhc3MgTm9kZTsKKyAgICBjbGFzcyBOb2Rl
RmlsdGVyOwogICAgIGNsYXNzIE5vZGVJdGVyYXRvcjsKLSAgICBjbGFzcyBOYW1lZE5vZGVNYXA7
CiAgICAgY2xhc3MgTm9kZUxpc3Q7CisgICAgY2xhc3MgUHJvY2Vzc2luZ0luc3RydWN0aW9uOwog
ICAgIGNsYXNzIFJhbmdlOwogICAgIGNsYXNzIFN0eWxlU2hlZXRMaXN0OworICAgIGNsYXNzIFRl
eHQ7CiAgICAgY2xhc3MgVHJlZVdhbGtlcjsKLQorICAgIAogICAgIHR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CiB9CiAKK0BpbnRlcmZhY2UgRE9NT2JqZWN0IChXZWJDb3JlSW50ZXJuYWwpCist
IChpZClfaW5pdDsKK0BlbmQKKwogQGludGVyZmFjZSBET01Ob2RlIChXZWJDb3JlSW50ZXJuYWwp
CiArIChET01Ob2RlICopX25vZGVXaXRoOihXZWJDb3JlOjpOb2RlICopaW1wbDsKIC0gKFdlYkNv
cmU6Ok5vZGUgKilfbm9kZTsKQEAgLTU4LDExICs4Niw0NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiArIChET01Ob2RlTGlzdCAqKV9ub2RlTGlzdFdpdGg6KFdlYkNvcmU6Ok5vZGVMaXN0ICopaW1w
bDsKIEBlbmQKIAorQGludGVyZmFjZSBET01UZXh0IChXZWJDb3JlSW50ZXJuYWwpCisrIChET01U
ZXh0ICopX3RleHRXaXRoOihXZWJDb3JlOjpUZXh0ICopaW1wbDsKK0BlbmQKKworQGludGVyZmFj
ZSBET01Db21tZW50IChXZWJDb3JlSW50ZXJuYWwpCisrIChET01Db21tZW50ICopX2NvbW1lbnRX
aXRoOihXZWJDb3JlOjpDb21tZW50ICopaW1wbDsKK0BlbmQKKworQGludGVyZmFjZSBET01DREFU
QVNlY3Rpb24gKFdlYkNvcmVJbnRlcm5hbCkKKysgKERPTUNEQVRBU2VjdGlvbiAqKV9DREFUQVNl
Y3Rpb25XaXRoOihXZWJDb3JlOjpDREFUQVNlY3Rpb24gKilpbXBsOworQGVuZAorCitAaW50ZXJm
YWNlIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAoV2ViQ29yZUludGVybmFsKQorKyAoRE9NUHJv
Y2Vzc2luZ0luc3RydWN0aW9uICopX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbldpdGg6KFdlYkNvcmU6
OlByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKWltcGw7CitAZW5kCisKK0BpbnRlcmZhY2UgRE9NRW50
aXR5UmVmZXJlbmNlIChXZWJDb3JlSW50ZXJuYWwpCisrIChET01FbnRpdHlSZWZlcmVuY2UgKilf
ZW50aXR5UmVmZXJlbmNlV2l0aDooV2ViQ29yZTo6RW50aXR5UmVmZXJlbmNlICopaW1wbDsKK0Bl
bmQKKwogQGludGVyZmFjZSBET01FbGVtZW50IChXZWJDb3JlSW50ZXJuYWwpCiArIChET01FbGVt
ZW50ICopX2VsZW1lbnRXaXRoOihXZWJDb3JlOjpFbGVtZW50ICopaW1wbDsKIC0gKFdlYkNvcmU6
OkVsZW1lbnQgKilfZWxlbWVudDsKIEBlbmQKIAorQGludGVyZmFjZSBET01BdHRyIChXZWJDb3Jl
SW50ZXJuYWwpCisrIChET01BdHRyICopX2F0dHJXaXRoOihXZWJDb3JlOjpBdHRyICopaW1wbDsK
Ky0gKFdlYkNvcmU6OkF0dHIgKilfYXR0cjsKK0BlbmQKKworQGludGVyZmFjZSBET01Eb2N1bWVu
dFR5cGUgKFdlYkNvcmVJbnRlcm5hbCkKKysgKERPTURvY3VtZW50VHlwZSAqKV9kb2N1bWVudFR5
cGVXaXRoOihXZWJDb3JlOjpEb2N1bWVudFR5cGUgKilpbXBsOworLSAoV2ViQ29yZTo6RG9jdW1l
bnRUeXBlICopX2RvY3VtZW50VHlwZTsKK0BlbmQKKworQGludGVyZmFjZSBET01JbXBsZW1lbnRh
dGlvbiAoV2ViQ29yZUludGVybmFsKQorKyAoRE9NSW1wbGVtZW50YXRpb24gKilfRE9NSW1wbGVt
ZW50YXRpb25XaXRoOihXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbkZyb250ICopaW1wbDsKKy0g
KFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uRnJvbnQgKilfRE9NSW1wbGVtZW50YXRpb247CitA
ZW5kCisKIEBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKICsgKERPTURv
Y3VtZW50ICopX2RvY3VtZW50V2l0aDooV2ViQ29yZTo6RG9jdW1lbnQgKilpbXBsOwogLSAoV2Vi
Q29yZTo6RG9jdW1lbnQgKilfZG9jdW1lbnQ7CkBAIC04NywxMCArMTUwLDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogKyAoRE9NVHJlZVdhbGtlciAqKV90cmVlV2Fsa2VyV2l0aDooV2ViQ29yZTo6
VHJlZVdhbGtlciAqKWltcGwgZmlsdGVyOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyOwogQGVu
ZAogCi1AaW50ZXJmYWNlIERPTU9iamVjdCAoV2ViQ29yZUludGVybmFsKQotLSAoaWQpX2luaXQ7
Ci1AZW5kCi0KIEBpbnRlcmZhY2UgRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAoV2ViQ29yZUludGVy
bmFsKQogKyAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKV9zdHlsZURlY2xhcmF0aW9uV2l0aDoo
V2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbiAqKWltcGw7CiAtIChXZWJDb3JlOjpDU1NTdHls
ZURlY2xhcmF0aW9uICopX3N0eWxlRGVjbGFyYXRpb247CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01O
b2RlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZS5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgorCitAY2xhc3MgRE9NRG9jdW1lbnQ7IAor
QGNsYXNzIERPTU5hbWVkTm9kZU1hcDsKK0BjbGFzcyBET01Ob2RlTGlzdDsKKworLy8gRE9NIG5v
ZGUgdHlwZXMKK2VudW0geworICAgIERPTV9FTEVNRU5UX05PREUgICAgICAgICAgICAgICAgICA9
IDEsCisgICAgRE9NX0FUVFJJQlVURV9OT0RFICAgICAgICAgICAgICAgID0gMiwKKyAgICBET01f
VEVYVF9OT0RFICAgICAgICAgICAgICAgICAgICAgPSAzLAorICAgIERPTV9DREFUQV9TRUNUSU9O
X05PREUgICAgICAgICAgICA9IDQsCisgICAgRE9NX0VOVElUWV9SRUZFUkVOQ0VfTk9ERSAgICAg
ICAgID0gNSwKKyAgICBET01fRU5USVRZX05PREUgICAgICAgICAgICAgICAgICAgPSA2LAorICAg
IERPTV9QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUgICA9IDcsCisgICAgRE9NX0NPTU1FTlRf
Tk9ERSAgICAgICAgICAgICAgICAgID0gOCwKKyAgICBET01fRE9DVU1FTlRfTk9ERSAgICAgICAg
ICAgICAgICAgPSA5LAorICAgIERPTV9ET0NVTUVOVF9UWVBFX05PREUgICAgICAgICAgICA9IDEw
LAorICAgIERPTV9ET0NVTUVOVF9GUkFHTUVOVF9OT0RFICAgICAgICA9IDExLAorICAgIERPTV9O
T1RBVElPTl9OT0RFICAgICAgICAgICAgICAgICA9IDEyCit9OworCitAaW50ZXJmYWNlIERPTU5v
ZGUgOiBET01PYmplY3QKKy0gKE5TU3RyaW5nICopbm9kZU5hbWU7CistIChOU1N0cmluZyAqKW5v
ZGVWYWx1ZTsKKy0gKHZvaWQpc2V0Tm9kZVZhbHVlOihOU1N0cmluZyAqKXN0cmluZzsKKy0gKHVu
c2lnbmVkIHNob3J0KW5vZGVUeXBlOworLSAoRE9NTm9kZSAqKXBhcmVudE5vZGU7CistIChET01O
b2RlTGlzdCAqKWNoaWxkTm9kZXM7CistIChET01Ob2RlICopZmlyc3RDaGlsZDsKKy0gKERPTU5v
ZGUgKilsYXN0Q2hpbGQ7CistIChET01Ob2RlICopcHJldmlvdXNTaWJsaW5nOworLSAoRE9NTm9k
ZSAqKW5leHRTaWJsaW5nOworLSAoRE9NTmFtZWROb2RlTWFwICopYXR0cmlidXRlczsKKy0gKERP
TURvY3VtZW50ICopb3duZXJEb2N1bWVudDsKKy0gKERPTU5vZGUgKilpbnNlcnRCZWZvcmU6KERP
TU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilyZWZDaGlsZDsKKy0gKERPTU5vZGUgKilyZXBs
YWNlQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilvbGRDaGlsZDsKKy0gKERP
TU5vZGUgKilyZW1vdmVDaGlsZDooRE9NTm9kZSAqKW9sZENoaWxkOworLSAoRE9NTm9kZSAqKWFw
cGVuZENoaWxkOihET01Ob2RlICopbmV3Q2hpbGQ7CistIChCT09MKWhhc0NoaWxkTm9kZXM7Cist
IChET01Ob2RlICopY2xvbmVOb2RlOihCT09MKWRlZXA7CistICh2b2lkKW5vcm1hbGl6ZTsKKy0g
KEJPT0wpaXNTdXBwb3J0ZWQ6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lv
bjsKKy0gKE5TU3RyaW5nICopbmFtZXNwYWNlVVJJOworLSAoTlNTdHJpbmcgKilwcmVmaXg7Cist
ICh2b2lkKXNldFByZWZpeDooTlNTdHJpbmcgKilwcmVmaXg7CistIChOU1N0cmluZyAqKWxvY2Fs
TmFtZTsKKy0gKEJPT0wpaGFzQXR0cmlidXRlczsKKy0gKEJPT0wpaXNTYW1lTm9kZTooRE9NTm9k
ZSAqKW90aGVyOworLSAoQk9PTClpc0VxdWFsTm9kZTooRE9NTm9kZSAqKW90aGVyOworLSAoTlNT
dHJpbmcgKil0ZXh0Q29udGVudDsKKy0gKHZvaWQpc2V0VGV4dENvbnRlbnQ6KE5TU3RyaW5nICop
dGV4dDsKK0BlbmQKKworQGludGVyZmFjZSBET01Ob2RlIChET01Ob2RlRXh0ZW5zaW9ucykKKy0g
KE5TUmVjdClib3VuZGluZ0JveDsKKy0gKE5TQXJyYXkgKilsaW5lQm94UmVjdHM7CitAZW5kCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZS5tbQkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01Ob2RlLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IEphbWVzIEcuIFNwZXRoIDxzcGV0
aEBlbmQuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWlu
aWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRPTU5v
ZGUuaCIKKworI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIgLy8gbmVlZGVkIGZvciBET01fY2FzdDw+
CisjaW1wb3J0ICJOb2RlLmgiIC8vIGltcGxlbWVudGF0aW9uIGNsYXNzCisKKyNpbXBvcnQgIkF0
b21pY1N0cmluZy5oIgorI2ltcG9ydCAiRE9NRG9jdW1lbnQuaCIKKyNpbXBvcnQgIkRPTU5hbWVk
Tm9kZU1hcC5oIgorI2ltcG9ydCAiRE9NTm9kZUxpc3QuaCIKKyNpbXBvcnQgIkRlcHJlY2F0ZWRW
YWx1ZUxpc3QuaCIKKyNpbXBvcnQgIkludFJlY3QuaCIKKyNpbXBvcnQgIk5hbWVkQXR0ck1hcC5o
IgorI2ltcG9ydCAiTmFtZWROb2RlTWFwLmgiCisjaW1wb3J0ICJOb2RlTGlzdC5oIgorI2ltcG9y
dCAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbXBvcnQgIlJlbmRlck9iamVjdC5oIgorI2ltcG9ydCA8
d3RmL0Fzc2VydGlvbnMuaD4KKworQGltcGxlbWVudGF0aW9uIERPTU5vZGUKKworLSAodm9pZClk
ZWFsbG9jCit7CisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAgRE9NX2Nhc3Q8V2ViQ29yZTo6
Tm9kZSAqPihfaW50ZXJuYWwpLT5kZXJlZigpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKwor
LSAodm9pZClmaW5hbGl6ZQoreworICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIERPTV9jYXN0
PFdlYkNvcmU6Ok5vZGUgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKKyAgICBbc3VwZXIgZmluYWxp
emVdOworfQorCistIChOU1N0cmluZyAqKW5vZGVOYW1lCit7CisgICAgcmV0dXJuIFtzZWxmIF9u
b2RlXS0+bm9kZU5hbWUoKTsKK30KKworLSAoTlNTdHJpbmcgKilub2RlVmFsdWUKK3sKKyAgICAv
LyBEb2N1bWVudGF0aW9uIHNheXMgd2UgY2FuIHJhaXNlIGEgRE9NU1RSSU5HX1NJWkVfRVJSLgor
ICAgIC8vIEhvd2V2ZXIsIHRoZSBsb3dlciBsYXllciBkb2VzIG5vdCByZXBvcnQgdGhhdCBlcnJv
ciB1cCB0byB1cy4KKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2RlVmFsdWUoKTsKK30KKwor
LSAodm9pZClzZXROb2RlVmFsdWU6KE5TU3RyaW5nICopc3RyaW5nCit7CisgICAgQVNTRVJUKHN0
cmluZyk7CisgICAgCisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgW3Nl
bGYgX25vZGVdLT5zZXROb2RlVmFsdWUoc3RyaW5nLCBlYyk7CisgICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKK30KKworLSAodW5zaWduZWQgc2hvcnQpbm9kZVR5cGUKK3sKKyAgICByZXR1cm4gW3Nl
bGYgX25vZGVdLT5ub2RlVHlwZSgpOworfQorCistIChET01Ob2RlICopcGFyZW50Tm9kZQorewor
ICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5wYXJlbnROb2RlKCld
OworfQorCistIChET01Ob2RlTGlzdCAqKWNoaWxkTm9kZXMKK3sKKyAgICByZXR1cm4gW0RPTU5v
ZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX25vZGVdLT5jaGlsZE5vZGVzKCkuZ2V0KCldOwor
fQorCistIChET01Ob2RlICopZmlyc3RDaGlsZAoreworICAgIHJldHVybiBbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX25vZGVdLT5maXJzdENoaWxkKCldOworfQorCistIChET01Ob2RlICopbGFz
dENoaWxkCit7CisgICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPmxh
c3RDaGlsZCgpXTsKK30KKworLSAoRE9NTm9kZSAqKXByZXZpb3VzU2libGluZworeworICAgIHJl
dHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5wcmV2aW91c1NpYmxpbmcoKV07
Cit9CisKKy0gKERPTU5vZGUgKiluZXh0U2libGluZworeworICAgIHJldHVybiBbRE9NTm9kZSBf
bm9kZVdpdGg6W3NlbGYgX25vZGVdLT5uZXh0U2libGluZygpXTsKK30KKworLSAoRE9NTmFtZWRO
b2RlTWFwICopYXR0cmlidXRlcworeworICAgIHJldHVybiBbRE9NTmFtZWROb2RlTWFwIF9uYW1l
ZE5vZGVNYXBXaXRoOltzZWxmIF9ub2RlXS0+YXR0cmlidXRlcygpXTsKK30KKworLSAoRE9NRG9j
dW1lbnQgKilvd25lckRvY3VtZW50Cit7CisgICAgcmV0dXJuIFtET01Eb2N1bWVudCBfZG9jdW1l
bnRXaXRoOltzZWxmIF9ub2RlXS0+ZG9jdW1lbnQoKV07Cit9CisKKy0gKERPTU5vZGUgKilpbnNl
cnRCZWZvcmU6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilyZWZDaGlsZAoreworICAg
IEFTU0VSVChuZXdDaGlsZCk7CisgICAgQVNTRVJUKHJlZkNoaWxkKTsKKworICAgIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlmIChbc2VsZiBfbm9kZV0tPmluc2VydEJlZm9y
ZShbbmV3Q2hpbGQgX25vZGVdLCBbcmVmQ2hpbGQgX25vZGVdLCBlYykpCisgICAgICAgIHJldHVy
biBuZXdDaGlsZDsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiBuaWw7Cit9
CisKKy0gKERPTU5vZGUgKilyZXBsYWNlQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5v
ZGUgKilvbGRDaGlsZAoreworICAgIEFTU0VSVChuZXdDaGlsZCk7CisgICAgQVNTRVJUKG9sZENo
aWxkKTsKKworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlmIChbc2Vs
ZiBfbm9kZV0tPnJlcGxhY2VDaGlsZChbbmV3Q2hpbGQgX25vZGVdLCBbb2xkQ2hpbGQgX25vZGVd
LCBlYykpCisgICAgICAgIHJldHVybiBvbGRDaGlsZDsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKERPTU5vZGUgKilyZW1vdmVDaGlsZDooRE9NTm9k
ZSAqKW9sZENoaWxkCit7CisgICAgQVNTRVJUKG9sZENoaWxkKTsKKworICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlmIChbc2VsZiBfbm9kZV0tPnJlbW92ZUNoaWxkKFtv
bGRDaGlsZCBfbm9kZV0sIGVjKSkKKyAgICAgICAgcmV0dXJuIG9sZENoaWxkOworICAgIHJhaXNl
T25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAoRE9NTm9kZSAqKWFwcGVu
ZENoaWxkOihET01Ob2RlICopbmV3Q2hpbGQKK3sKKyAgICBBU1NFUlQobmV3Q2hpbGQpOworCisg
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaWYgKFtzZWxmIF9ub2RlXS0+
YXBwZW5kQ2hpbGQoW25ld0NoaWxkIF9ub2RlXSwgZWMpKQorICAgICAgICByZXR1cm4gbmV3Q2hp
bGQ7CisgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gbmlsOworfQorCistIChC
T09MKWhhc0NoaWxkTm9kZXMKK3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5oYXNDaGlsZE5v
ZGVzKCk7Cit9CisKKy0gKERPTU5vZGUgKiljbG9uZU5vZGU6KEJPT0wpZGVlcAoreworICAgIHJl
dHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5jbG9uZU5vZGUoZGVlcCkuZ2V0
KCldOworfQorCistICh2b2lkKW5vcm1hbGl6ZQoreworICAgIFtzZWxmIF9ub2RlXS0+bm9ybWFs
aXplKCk7Cit9CisKKy0gKEJPT0wpaXNTdXBwb3J0ZWQ6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5T
U3RyaW5nICopdmVyc2lvbgoreworICAgIEFTU0VSVChmZWF0dXJlKTsKKyAgICBBU1NFUlQodmVy
c2lvbik7CisKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc1N1cHBvcnRlZChmZWF0dXJlLCB2
ZXJzaW9uKTsKK30KKworLSAoTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkKK3sKKyAgICByZXR1cm4g
W3NlbGYgX25vZGVdLT5uYW1lc3BhY2VVUkkoKTsKK30KKworLSAoTlNTdHJpbmcgKilwcmVmaXgK
K3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5wcmVmaXgoKTsKK30KKworLSAodm9pZClzZXRQ
cmVmaXg6KE5TU3RyaW5nICopcHJlZml4Cit7CisgICAgQVNTRVJUKHByZWZpeCk7CisKKyAgICBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJDb3JlOjpTdHJpbmcgcHJlZml4
U3RyKHByZWZpeCk7CisgICAgW3NlbGYgX25vZGVdLT5zZXRQcmVmaXgocHJlZml4U3RyLmltcGwo
KSwgZWMpOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7Cit9CisKKy0gKE5TU3RyaW5nICopbG9j
YWxOYW1lCit7CisgICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bG9jYWxOYW1lKCk7Cit9CisKKy0g
KEJPT0wpaGFzQXR0cmlidXRlcworeworICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmhhc0F0dHJp
YnV0ZXMoKTsKK30KKworLSAoQk9PTClpc1NhbWVOb2RlOihET01Ob2RlICopb3RoZXIKK3sKKyAg
ICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc1NhbWVOb2RlKFtvdGhlciBfbm9kZV0pOworfQorCist
IChCT09MKWlzRXF1YWxOb2RlOihET01Ob2RlICopb3RoZXIKK3sKKyAgICByZXR1cm4gW3NlbGYg
X25vZGVdLT5pc0VxdWFsTm9kZShbb3RoZXIgX25vZGVdKTsKK30KKworLSAoQk9PTClpc0RlZmF1
bHROYW1lc3BhY2U6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJCit7CisgICAgcmV0dXJuIFtzZWxm
IF9ub2RlXS0+aXNEZWZhdWx0TmFtZXNwYWNlKG5hbWVzcGFjZVVSSSk7Cit9CisKKy0gKE5TU3Ry
aW5nICopbG9va3VwUHJlZml4OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSQoreworICAgIHJldHVy
biBbc2VsZiBfbm9kZV0tPmxvb2t1cFByZWZpeChuYW1lc3BhY2VVUkkpOworfQorCistIChOU1N0
cmluZyAqKWxvb2t1cE5hbWVzcGFjZVVSSTooTlNTdHJpbmcgKilwcmVmaXgKK3sKKyAgICByZXR1
cm4gW3NlbGYgX25vZGVdLT5sb29rdXBOYW1lc3BhY2VVUkkocHJlZml4KTsKK30KKworLSAoTlNT
dHJpbmcgKil0ZXh0Q29udGVudAoreworICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPnRleHRDb250
ZW50KCk7Cit9CisKKy0gKHZvaWQpc2V0VGV4dENvbnRlbnQ6KE5TU3RyaW5nICopdGV4dAorewor
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFtzZWxmIF9ub2RlXS0+c2V0
VGV4dENvbnRlbnQodGV4dCwgZWMpOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7Cit9CisKK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIERPTU5vZGUgKERPTU5vZGVFeHRlbnNpb25zKQorCistIChO
U1JlY3QpYm91bmRpbmdCb3gKK3sKKyAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QgKnJlbmRlcmVy
ID0gW3NlbGYgX25vZGVdLT5yZW5kZXJlcigpOworICAgIGlmIChyZW5kZXJlcikKKyAgICAgICAg
cmV0dXJuIHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIHJldHVybiBO
U1plcm9SZWN0OworfQorCistIChOU0FycmF5ICopbGluZUJveFJlY3RzCit7CisgICAgV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9ub2RlXS0+cmVuZGVyZXIoKTsKKyAg
ICBpZiAocmVuZGVyZXIpIHsKKyAgICAgICAgTlNNdXRhYmxlQXJyYXkgKnJlc3VsdHMgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKyAgICAgICAgV2ViQ29yZTo6RGVwcmVjYXRlZFZh
bHVlTGlzdDxXZWJDb3JlOjpJbnRSZWN0PiByZWN0cyA9IHJlbmRlcmVyLT5saW5lQm94UmVjdHMo
KTsKKyAgICAgICAgaWYgKCFyZWN0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGZvciAoV2Vi
Q29yZTo6RGVwcmVjYXRlZFZhbHVlTGlzdDxXZWJDb3JlOjpJbnRSZWN0Pjo6Q29uc3RJdGVyYXRv
ciBpdCA9IHJlY3RzLmJlZ2luKCk7IGl0ICE9IHJlY3RzLmVuZCgpOyArK2l0KQorICAgICAgICAg
ICAgICAgIFtyZXN1bHRzIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OippdF1dOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBbcmVzdWx0cyBhdXRvcmVsZWFzZV07CisgICAgfQor
ICAgIHJldHVybiBuaWw7Cit9CisKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NT2JqZWN0
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NT2JqZWN0LmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0Lmg+CisKK3R5cGVkZWYgdW5zaWduZWQg
bG9uZyBsb25nIERPTVRpbWVTdGFtcDsKKworZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgRE9NRXhj
ZXB0aW9uOworCisvLyBET00gZXhjZXB0aW9uIGNvZGVzCitlbnVtIHsKKyAgICBET01fSU5ERVhf
U0laRV9FUlIgICAgICAgICAgICAgICAgPSAxLAorICAgIERPTV9ET01TVFJJTkdfU0laRV9FUlIg
ICAgICAgICAgICA9IDIsCisgICAgRE9NX0hJRVJBUkNIWV9SRVFVRVNUX0VSUiAgICAgICAgID0g
MywKKyAgICBET01fV1JPTkdfRE9DVU1FTlRfRVJSICAgICAgICAgICAgPSA0LAorICAgIERPTV9J
TlZBTElEX0NIQVJBQ1RFUl9FUlIgICAgICAgICA9IDUsCisgICAgRE9NX05PX0RBVEFfQUxMT1dF
RF9FUlIgICAgICAgICAgID0gNiwKKyAgICBET01fTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJS
ICAgPSA3LAorICAgIERPTV9OT1RfRk9VTkRfRVJSICAgICAgICAgICAgICAgICA9IDgsCisgICAg
RE9NX05PVF9TVVBQT1JURURfRVJSICAgICAgICAgICAgID0gOSwKKyAgICBET01fSU5VU0VfQVRU
UklCVVRFX0VSUiAgICAgICAgICAgPSAxMCwKKyAgICBET01fSU5WQUxJRF9TVEFURV9FUlIgICAg
ICAgICAgICAgPSAxMSwKKyAgICBET01fU1lOVEFYX0VSUiAgICAgICAgICAgICAgICAgICAgPSAx
MiwKKyAgICBET01fSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSICAgICAgPSAxMywKKyAgICBET01f
TkFNRVNQQUNFX0VSUiAgICAgICAgICAgICAgICAgPSAxNCwKKyAgICBET01fSU5WQUxJRF9BQ0NF
U1NfRVJSICAgICAgICAgICAgPSAxNQorfTsKKworCit0eXBlZGVmIHN0cnVjdCBET01PYmplY3RJ
bnRlcm5hbCBET01PYmplY3RJbnRlcm5hbDsKKworQGludGVyZmFjZSBET01PYmplY3QgOiBXZWJT
Y3JpcHRPYmplY3QgPE5TQ29weWluZz4KK3sKKyAgICBET01PYmplY3RJbnRlcm5hbCAqX2ludGVy
bmFsOworfQorQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU9iamVjdC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NT2JqZWN0Lm1tCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU9iamVjdC5tbQkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2
IEphbWVzIEcuIFNwZXRoIDxzcGV0aEBlbmQuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNh
bXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIkRPTU9iamVjdC5oIgorCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgor
CitAaW1wbGVtZW50YXRpb24gRE9NT2JqZWN0CisKKy8vIFByZXZlbnQgY3JlYXRpb24gb2YgRE9N
IG9iamVjdHMgYnkgY2xpZW50cyB3aG8ganVzdCAiW1t4eHggYWxsb2NdIGluaXRdIi4KKy0gKGlk
KWluaXQKK3sKKyAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1h
dDpAIitbJUAgaW5pdF06IHNob3VsZCBuZXZlciBiZSB1c2VkIiwgTlNTdHJpbmdGcm9tQ2xhc3Mo
W3NlbGYgY2xhc3NdKV07CisgICAgW3NlbGYgcmVsZWFzZV07CisgICAgcmV0dXJuIG5pbDsKK30K
KworLSAodm9pZClkZWFsbG9jCit7CisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAgcmVtb3Zl
RE9NV3JhcHBlcihfaW50ZXJuYWwpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9p
ZClmaW5hbGl6ZQoreworICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIHJlbW92ZURPTVdyYXBw
ZXIoX2ludGVybmFsKTsKKyAgICBbc3VwZXIgZmluYWxpemVdOworfQorCistIChpZCljb3B5V2l0
aFpvbmU6KE5TWm9uZSAqKXpvbmUKK3sKKyAgICByZXR1cm4gW3NlbGYgcmV0YWluXTsKK30KKwor
QGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVByaXZhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUHJpdmF0ZS5oCShyZXZpc2lvbiAxNTk5NykK
KysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Qcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBX
ZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNCw5ICsyNSwxMiBAQAogICovCiAKICNpbXBvcnQgPFdlYkNvcmUvRE9NQ1NTLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0RPTUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRXZl
bnRzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9N
Tm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01SYW5nZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9E
T01FdmVudHMuaD4KKwogCiBAaW50ZXJmYWNlIERPTVJhbmdlIChXZWJQcml2YXRlKQogLy8gdXNl
cyBzYW1lIGFsZ29yaXRobSBhcyBpbm5lclRleHQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01SYW5nZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01SYW5n
ZS5oCShyZXZpc2lvbiAxNTk5NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01SYW5nZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAw
NCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNyArMjQsMTggQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAogICovCiAKLSNpbXBvcnQgPFdlYkNvcmUvRE9NQ29yZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9E
T01Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KKworLy8KKy8vIElu
dGVyZmFjZXMgdGhhdCB1c2VkIHRvIGJlIGluIHRoaXMgZmlsZToKKy8vCisKKy8vIE5vdyBpbmNs
dWRlZCBpbiBET01Eb2N1bWVudC5oCisvL0BpbnRlcmZhY2UgRE9NRG9jdW1lbnQgKERPTURvY3Vt
ZW50UmFuZ2UpCisvLy0gKERPTVJhbmdlICopY3JlYXRlUmFuZ2U7CisvL0BlbmQKKwogCiBleHRl
cm4gTlNTdHJpbmcgKiBjb25zdCBET01SYW5nZUV4Y2VwdGlvbjsKIApAQCAtNzIsNiArODQsMyBA
QCBlbnVtIHsKIC0gKHZvaWQpZGV0YWNoOwogQGVuZAogCi1AaW50ZXJmYWNlIERPTURvY3VtZW50
IChET01Eb2N1bWVudFJhbmdlKQotLSAoRE9NUmFuZ2UgKiljcmVhdGVSYW5nZTsKLUBlbmQKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01TdHlsZXNoZWV0cy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01TdHlsZXNoZWV0cy5oCShyZXZpc2lvbiAxNTk5NykK
KysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01TdHlsZXNoZWV0cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11
ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsMTEgKzI0LDI5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW1w
b3J0IDxXZWJDb3JlL0RPTUNvcmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnQuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CisKKy8vCisvLyBJbnRlcmZhY2VzIHRoYXQg
dXNlZCB0byBiZSBpbiB0aGlzIGZpbGU6CisvLworCisvLyBOb3cgaW5jbHVkZWQgaW4gRE9NRG9j
dW1lbnQuaAorLy9AaW50ZXJmYWNlIERPTURvY3VtZW50IChET01Eb2N1bWVudFN0eWxlKQorLy8t
IChET01TdHlsZVNoZWV0TGlzdCAqKXN0eWxlU2hlZXRzOworLy9AZW5kCisKIAogQGNsYXNzIERP
TU1lZGlhTGlzdDsKK0BjbGFzcyBET01Ob2RlOwogQGNsYXNzIERPTVN0eWxlU2hlZXQ7CiAKKwor
QGludGVyZmFjZSBET01PYmplY3QgKERPTUxpbmtTdHlsZSkKKy0gKERPTVN0eWxlU2hlZXQgKilz
aGVldDsKK0BlbmQKKworCiBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBET01FdmVudEV4Y2VwdGlv
bjsKIAogQGludGVyZmFjZSBET01TdHlsZVNoZWV0IDogRE9NT2JqZWN0CkBAIC01NSwxMCArNzQs
MyBAQCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBET01FdmVudEV4Y2VwdGlvCiAtICh2b2lkKWFw
cGVuZE1lZGl1bTooTlNTdHJpbmcgKiluZXdNZWRpdW07CiBAZW5kCiAKLUBpbnRlcmZhY2UgRE9N
T2JqZWN0IChET01MaW5rU3R5bGUpCi0tIChET01TdHlsZVNoZWV0ICopc2hlZXQ7Ci1AZW5kCi0K
LUBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgKERPTURvY3VtZW50U3R5bGUpCi0tIChET01TdHlsZVNo
ZWV0TGlzdCAqKXN0eWxlU2hlZXRzOwotQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTVRyYXZlcnNhbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01U
cmF2ZXJzYWwuaAkocmV2aXNpb24gMTU5OTcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
VHJhdmVyc2FsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29t
PgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyNCwxMCBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCiAgKi8KIAotI2ltcG9ydCA8V2ViQ29yZS9ET01Db3JlLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0RPTURvY3VtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgog
CitAY2xhc3MgRE9NTm9kZTsKIEBjbGFzcyBET01Ob2RlRmlsdGVyOwogCiBlbnVtIHsKQEAgLTg3
LDYgKzkwLDggQEAgZW51bSB7CiAtIChET01Ob2RlICopbmV4dE5vZGU7CiBAZW5kCiAKKworLy8g
RklYTUU6IHRoaXMgc2hvdWxkIGdvIGludG8gRE9NRG9jdW1lbnQuaAogQGludGVyZmFjZSBET01E
b2N1bWVudCAoRE9NRG9jdW1lbnRUcmF2ZXJzYWwpCiAtIChET01Ob2RlSXRlcmF0b3IgKiljcmVh
dGVOb2RlSXRlcmF0b3I6KERPTU5vZGUgKilyb290IDoodW5zaWduZWQpd2hhdFRvU2hvdyA6KGlk
IDxET01Ob2RlRmlsdGVyPilmaWx0ZXIgOihCT09MKWV4cGFuZEVudGl0eVJlZmVyZW5jZXM7CiAt
IChET01UcmVlV2Fsa2VyICopY3JlYXRlVHJlZVdhbGtlcjooRE9NTm9kZSAqKXJvb3QgOih1bnNp
Z25lZCl3aGF0VG9TaG93IDooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlciA6KEJPT0wpZXhwYW5k
RW50aXR5UmVmZXJlbmNlczsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01WaWV3cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01WaWV3cy5oCShyZXZpc2lv
biAxNTk5NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01WaWV3cy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21w
dXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBT
YW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjMsMTIgKzI0LDIwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0j
aW1wb3J0IDxXZWJDb3JlL0RPTUNvcmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnQu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CisKKy8vCisvLyBJbnRlcmZhY2UgdGhh
dCB1c2VkIHRvIGJlIGluIHRoaXMgZmlsZToKKy8vCisKKy8vIE5vdyBpbmNsdWRlZCBpbiBET01E
b2N1bWVudC5oCisvL0BpbnRlcmZhY2UgRE9NRG9jdW1lbnQgKERPTURvY3VtZW50VmlldykKKy8v
LSAoRE9NQWJzdHJhY3RWaWV3ICopZGVmYXVsdFZpZXc7CisvL0BlbmQKIAogQGludGVyZmFjZSBE
T01BYnN0cmFjdFZpZXcgOiBET01PYmplY3QKIC0gKERPTURvY3VtZW50ICopZG9jdW1lbnQ7CiBA
ZW5kCiAKLUBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgKERPTURvY3VtZW50VmlldykKLS0gKERPTUFi
c3RyYWN0VmlldyAqKWRlZmF1bHRWaWV3OwotQGVuZAorCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NVmlld3MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TVZpZXdzLm1tCShyZXZpc2lvbiAxNTk5NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01W
aWV3cy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzksMTIgKzc5LDMgQEAgQUxMT1dfRE9NX0NBU1Qo
RE9NV2luZG93KQogfQogCiBAZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAoRE9N
RG9jdW1lbnRWaWV3KQotCi0tIChET01BYnN0cmFjdFZpZXcgKilkZWZhdWx0VmlldwotewotICAg
IHJldHVybiBbRE9NQWJzdHJhY3RWaWV3IF9hYnN0cmFjdFZpZXdXaXRoOltzZWxmIF9kb2N1bWVu
dF0tPmRlZmF1bHRWaWV3KCldOwotfQotCi1AZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NWFBhdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NWFBh
dGguaAkocmV2aXNpb24gMTU5OTcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NWFBhdGgu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDcgKzI0LDIwIEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKICAqLwogCi0jaW1wb3J0IDxXZWJDb3JlL0RPTUNvcmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
RE9NRG9jdW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CisKKy8vCisvLyBJ
bnRlcmZhY2VzIHRoYXQgdXNlZCB0byBiZSBpbiB0aGlzIGZpbGU6CisvLworCisvLyBOb3cgaW5j
bHVkZWQgaW4gRE9NRG9jdW1lbnQuaAorLy9AaW50ZXJmYWNlIERPTURvY3VtZW50IChET01Eb2N1
bWVudFhQYXRoKQorLy8tIChET01YUGF0aEV4cHJlc3Npb24gKiljcmVhdGVFeHByZXNzaW9uOihO
U1N0cmluZyAqKWV4cHJlc3Npb24gOihpZCA8RE9NWFBhdGhOU1Jlc29sdmVyPilyZXNvbHZlcjsK
Ky8vLSAoaWQgPERPTVhQYXRoTlNSZXNvbHZlcj4pY3JlYXRlTlNSZXNvbHZlcjooRE9NTm9kZSAq
KW5vZGVSZXNvbHZlcjsKKy8vLSAoRE9NWFBhdGhSZXN1bHQgKilldmFsdWF0ZTooTlNTdHJpbmcg
KilleHByZXNzaW9uIDooRE9NTm9kZSAqKWNvbnRleHROb2RlIDooaWQgPERPTVhQYXRoTlNSZXNv
bHZlcj4pcmVzb2x2ZXIgOih1bnNpZ25lZCBzaG9ydCl0eXBlIDooRE9NWFBhdGhSZXN1bHQgKily
ZXN1bHQ7CisvL0BlbmQKKwogCiBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBET01YUGF0aEV4Y2Vw
dGlvbjsKIApAQCAtNjUsOSArNzksMyBAQCBlbnVtIHsKIEBpbnRlcmZhY2UgRE9NWFBhdGhFeHBy
ZXNzaW9uIDogRE9NT2JqZWN0CiAtIChET01YUGF0aFJlc3VsdCAqKWV2YWx1YXRlOihET01Ob2Rl
ICopY29udGV4dE5vZGUgOih1bnNpZ25lZCBzaG9ydCl0eXBlIDooRE9NWFBhdGhSZXN1bHQgKily
ZXN1bHQ7CiBAZW5kCi0KLUBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgKERPTURvY3VtZW50WFBhdGgp
Ci0tIChET01YUGF0aEV4cHJlc3Npb24gKiljcmVhdGVFeHByZXNzaW9uOihOU1N0cmluZyAqKWV4
cHJlc3Npb24gOihpZCA8RE9NWFBhdGhOU1Jlc29sdmVyPilyZXNvbHZlcjsKLS0gKGlkIDxET01Y
UGF0aE5TUmVzb2x2ZXI+KWNyZWF0ZU5TUmVzb2x2ZXI6KERPTU5vZGUgKilub2RlUmVzb2x2ZXI7
Ci0tIChET01YUGF0aFJlc3VsdCAqKWV2YWx1YXRlOihOU1N0cmluZyAqKWV4cHJlc3Npb24gOihE
T01Ob2RlICopY29udGV4dE5vZGUgOihpZCA8RE9NWFBhdGhOU1Jlc29sdmVyPilyZXNvbHZlciA6
KHVuc2lnbmVkIHNob3J0KXR5cGUgOihET01YUGF0aFJlc3VsdCAqKXJlc3VsdDsKLUBlbmQKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NWFBhdGgubW0JKHJldmlzaW9uIDE1OTk3KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTVhQYXRoLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsMzcgKzI3
Miw0IEBAIHVzaW5nIFdlYkNvcmU6OlhQYXRoUmVzdWx0OwogCiBAZW5kCiAKLUBpbXBsZW1lbnRh
dGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRYUGF0aCkKLQotLSAoRE9NWFBhdGhFeHByZXNz
aW9uICopY3JlYXRlRXhwcmVzc2lvbjooTlNTdHJpbmcgKilleHByZXNzaW9uIDooaWQgPERPTVhQ
YXRoTlNSZXNvbHZlcj4pcmVzb2x2ZXIKLXsKLSAgICBpZiAocmVzb2x2ZXIgJiYgIVtyZXNvbHZl
ciBpc01lbWJlck9mQ2xhc3M6W0RPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciBjbGFzc11dKQotICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1hdDpAImNyZWF0
ZUV4cHJlc3Npb24gY3VycmVudGx5IGRvZXMgbm90IHdvcmsgd2l0aCBjdXN0b20gTlMgcmVzb2x2
ZXJzIl07Ci0gICAgCi0gICAgRE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyICpuYXRpdmVSZXNvbHZl
ciA9IChET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgKilyZXNvbHZlcjsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBET01YUGF0aEV4cHJlc3Npb24gKnJlc3VsdCA9IFtET01YUGF0aEV4
cHJlc3Npb24gX3hwYXRoRXhwcmVzc2lvbldpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRXhw
cmVzc2lvbihleHByZXNzaW9uLCBbbmF0aXZlUmVzb2x2ZXIgX3hwYXRoTlNSZXNvbHZlcl0sIGVj
KS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi0tIChpZCA8RE9NWFBhdGhOU1Jlc29sdmVyPiljcmVhdGVOU1Jlc29sdmVyOihET01Ob2Rl
ICopbm9kZVJlc29sdmVyCi17Ci0gICAgcmV0dXJuIFtET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIg
X3hwYXRoTlNSZXNvbHZlcldpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlTlNSZXNvbHZlcihb
bm9kZVJlc29sdmVyIF9ub2RlXSkuZ2V0KCldOwotfQotCi0tIChET01YUGF0aFJlc3VsdCAqKWV2
YWx1YXRlOihOU1N0cmluZyAqKWV4cHJlc3Npb24gOihET01Ob2RlICopY29udGV4dE5vZGUgOihp
ZCA8RE9NWFBhdGhOU1Jlc29sdmVyPilyZXNvbHZlciA6KHVuc2lnbmVkIHNob3J0KXR5cGUgOihE
T01YUGF0aFJlc3VsdCAqKXJlc3VsdAotewotICAgIGlmIChyZXNvbHZlciAmJiAhW3Jlc29sdmVy
IGlzTWVtYmVyT2ZDbGFzczpbRE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyIGNsYXNzXV0pCi0gICAg
ICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0dlbmVyaWNFeGNlcHRpb24gZm9ybWF0OkAiY3JlYXRl
RXhwcmVzc2lvbiBjdXJyZW50bHkgZG9lcyBub3Qgd29yayB3aXRoIGN1c3RvbSBOUyByZXNvbHZl
cnMiXTsKLSAgICAKLSAgICBET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgKm5hdGl2ZVJlc29sdmVy
ID0gKERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciAqKXJlc29sdmVyOwotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIERPTVhQYXRoUmVzdWx0ICpfcmVzdWx0ID0gW0RPTVhQYXRoUmVzdWx0
IF94cGF0aFJlc3VsdFdpdGg6W3NlbGYgX2RvY3VtZW50XS0+ZXZhbHVhdGUoZXhwcmVzc2lvbiwg
W2NvbnRleHROb2RlIF9ub2RlXSwgW25hdGl2ZVJlc29sdmVyIF94cGF0aE5TUmVzb2x2ZXJdLCB0
eXBlLCBbcmVzdWx0IF94cGF0aFJlc3VsdF0sIGVjKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVy
cm9yKGVjKTsKLSAgICByZXR1cm4gX3Jlc3VsdDsKLX0KLQotQGVuZAotCiAjZW5kaWYgLy8gWFBB
VEhfU1VQUE9SVApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3Iu
cG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3Iu
cG0JKHJldmlzaW9uIDE1OTk3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3IucG0JKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDYgQEAgc3ViIFByb2Nlc3NEb2N1
bWVudAogICAkdXNlRG9jdW1lbnQgPSBzaGlmdDsKICAgCiAgIG15ICRpZmFjZU5hbWUgPSAkdXNl
R2VuZXJhdG9yOwotICAkaWZhY2VOYW1lID1+IHMvXGIoXHcpL1xVJDEvZzsgIyBNYWtlIGZpcnN0
IGxldHRlciBvZiBlYWNoIHdvcmQgdXBwZXJjYXNlCiAgICRpZmFjZU5hbWUgPSAiQ29kZUdlbmVy
YXRvciRpZmFjZU5hbWUiOwogCiAgICMgRHluYW1pY2FsbHkgbG9hZCBleHRlcm5hbCBjb2RlIGdl
bmVyYXRpb24gcGVybCBtb2R1bGUuLi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yT2JqQy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvck9iakMucG0JKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTIz
IEBACisjIAorIyBLRE9NIElETCBwYXJzZXIKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDA1IE5pa29s
YXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorIyBDb3B5cmlnaHQgKEMpIDIwMDYgQW5k
ZXJzIENhcmxzc29uIDxhbmRlcnNjYUBtYWMuY29tPiAKKyMgQ29weXJpZ2h0IChDKSAyMDA2IFNh
bXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorIyBDb3B5cmlnaHQgKEMpIDIwMDYg
QXBwbGUgQ29tcHV0ZXIsIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBw
cm9qZWN0CisjIAorIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjIAorIyBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisjIAorIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFpbnQgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyMg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3Vp
dGUgMzMwLAorIyBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyMKKworcGFja2FnZSBDb2Rl
R2VuZXJhdG9yT2JqQzsKKwordXNlIEZpbGU6OnN0YXQ7CisKK215ICRtb2R1bGUgPSAiIjsKK215
ICRvdXRwdXREaXIgPSAiIjsKK215ICVpbXBsSW5jbHVkZXMgPSAoKTsKK215ICVoZWFkZXJGb3J3
YXJkRGVjbGFyYXRpb25zID0gKCk7CitteSAlaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9uc0ZvclBy
b3RvY29scyA9ICgpOworCitteSAkZXhjZXB0aW9uSW5pdCA9ICJXZWJDb3JlOjpFeGNlcHRpb25D
b2RlIGVjID0gMDsiOworbXkgJGV4Y2VwdGlvblJhaXNlT25FcnJvciA9ICJyYWlzZU9uRE9NRXJy
b3IoZWMpOyI7CisKKworIyBEZWZhdWx0IExpY2VuY2UgVGVtcGxhdGVzCitteSAkaGVhZGVyTGlj
ZW5jZVRlbXBsYXRlID0gPDwgIkVPRiI7CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2
IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdcQGdtYWlsLmNvbT4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KK0VP
RgorCitteSAkaW1wbGVtZW50YXRpb25MaWNlbmNlVGVtcGxhdGUgPSA8PCAiRU9GIjsKKy8qCisg
ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0Lgor
ICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwu
IERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgICAgQm9zdG9uLCBNQSAwMjExMS0x
MzA3LCBVU0EuCisqLworRU9GCisKKyMgRGVmYXVsdCBjb25zdHJ1Y3Rvcgorc3ViIG5ldworewor
ICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBteSAkcmVmZXJlbmNlID0geyB9OworICAgIAor
ICAgICRjb2RlR2VuZXJhdG9yID0gc2hpZnQ7CisgICAgJG91dHB1dERpciA9IHNoaWZ0OworICAg
IAorICAgIGJsZXNzKCRyZWZlcmVuY2UsICRvYmplY3QpOworICAgIHJldHVybiAkcmVmZXJlbmNl
OworfQorCitzdWIgZmluaXNoCit7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAgIAorICAg
ICMgQ29tbWl0IGNoYW5nZXMhCisgICAgJG9iamVjdC0+V3JpdGVEYXRhKCk7Cit9CisKKyMgUGFy
YW1zOiAnZG9tQ2xhc3MnIHN0cnVjdAorc3ViIEdlbmVyYXRlSW50ZXJmYWNlCit7CisgICAgbXkg
JG9iamVjdCA9IHNoaWZ0OworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworCisgICAgIyBTdGFy
dCBhY3R1YWwgZ2VuZXJhdGlvbi4uCisgICAgJG9iamVjdC0+R2VuZXJhdGVIZWFkZXIoJGRhdGFO
b2RlKTsKKyAgICAkb2JqZWN0LT5HZW5lcmF0ZUltcGxlbWVudGF0aW9uKCRkYXRhTm9kZSk7CisK
KyAgICBteSAkbmFtZSA9ICRkYXRhTm9kZS0+bmFtZTsKKworICAgICMgT3BlbiBmaWxlcyBmb3Ig
d3JpdGluZy4uLgorICAgIG15ICRoZWFkZXJGaWxlTmFtZSA9ICIkb3V0cHV0RGlyL0RPTSRuYW1l
LmgiOworICAgIG15ICRpbXBsRmlsZU5hbWUgPSAiJG91dHB1dERpci9ET00kbmFtZS5tbSI7CisK
KyAgICBvcGVuKCRJTVBMLCAiPiRpbXBsRmlsZU5hbWUiKSBvciBkaWUgIkNvdWxkbid0IG9wZW4g
ZmlsZSAkaW1wbEZpbGVOYW1lIjsKKyAgICBvcGVuKCRIRUFERVIsICI+JGhlYWRlckZpbGVOYW1l
Iikgb3IgZGllICJDb3VsZG4ndCBvcGVuIGZpbGUgJGhlYWRlckZpbGVOYW1lIjsKK30KKworIyBQ
YXJhbXM6ICdpZGxEb2N1bWVudCcgc3RydWN0CitzdWIgR2VuZXJhdGVNb2R1bGUKK3sKKyAgICBt
eSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7ICAKKyAgICAKKyAg
ICAkbW9kdWxlID0gJGRhdGFOb2RlLT5tb2R1bGU7ICAgIAorfQorCisKK3N1YiBHZXRDbGFzc05h
bWUKK3sKKyAgICBteSAkbmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVsZShzaGlmdCk7
CisgICAgCisgICAgIyBzcGVjaWFsIGNhc2VzCisgICAgaWYgKCRuYW1lIGVxICJET01JbXBsZW1l
bnRhdGlvbiIpIHsKKyAgICAgICAgcmV0dXJuICRuYW1lOworICAgIH0KKworICAgIHJldHVybiAi
RE9NIiAuICRuYW1lOworfQorCitzdWIgR2V0SW1wbENsYXNzTmFtZQoreworICAgIG15ICRuYW1l
ID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKHNoaWZ0KTsKKyAgICAKKyAgICAjIHNwZWNp
YWwgY2FzZXMKKyAgICBpZiAoJG5hbWUgZXEgIkRPTUltcGxlbWVudGF0aW9uIikgeworICAgICAg
ICByZXR1cm4gIldlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uRnJvbnQiOworICAgIH0KKworICAg
IHJldHVybiAiV2ViQ29yZTo6IiAuICRuYW1lOworfQorCitzdWIgR2V0UGFyZW50SW1wbENsYXNz
TmFtZQoreworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworCisgICAgaWYgKEB7JGRhdGFOb2Rl
LT5wYXJlbnRzfSBlcSAwKSB7CisgICAgICAgIHJldHVybiAiT2JqZWN0IjsKKyAgICB9CisKKyAg
ICBteSAkcGFyZW50ID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKCRkYXRhTm9kZS0+cGFy
ZW50cygwKSk7CisgICAgCisgICAgIyBzcGVjaWFsIGNhc2VzCisgICAgaWYgKCRwYXJlbnQgZXEg
IkV2ZW50VGFyZ2V0Tm9kZSIpIHsKKyAgICAgICAgJHBhcmVudCA9ICJOb2RlIjsKKyAgICB9CisK
KyAgICByZXR1cm4gJHBhcmVudDsKK30KKworc3ViIEdldE9iakNUeXBlCit7CisgICAgbXkgJHR5
cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoc2hpZnQpOworICAgIAorICAgIGlmICgk
dHlwZSBlcSAiYm9vbGVhbiIpIHsKKyAgICAgICAgcmV0dXJuICJCT09MIjsKKyAgICB9IGVsc2lm
ICgkdHlwZSBlcSAidW5zaWduZWQgbG9uZyIpIHsKKyAgICAgICAgcmV0dXJuICJ1bnNpZ25lZCI7
CisgICAgfSBlbHNpZiAoJHR5cGUgZXEgImxvbmciKSB7CisgICAgICAgIHJldHVybiAiaW50IjsK
KyAgICB9IGVsc2lmICgkdHlwZSBlcSAiRE9NU3RyaW5nIikgeworICAgICAgICByZXR1cm4gIk5T
U3RyaW5nICoiOworICAgIH0gZWxzaWYgKCR0eXBlIGVxICJET01XaW5kb3ciKSB7CisgICAgICAg
IHJldHVybiAiRE9NQWJzdHJhY3RWaWV3ICoiOworICAgIH0gZWxzaWYgKCR0eXBlIGVxICJET01J
bXBsZW1lbnRhdGlvbiIpIHsKKyAgICAgICAgcmV0dXJuICIkdHlwZSAqIjsKKyAgICB9IGVsc2lm
ICgkdHlwZSBlcSAiWFBhdGhOU1Jlc29sdmVyIikgeworICAgICAgICByZXR1cm4gImlkIDxET01Y
UGF0aE5TUmVzb2x2ZXI+IjsKKyAgICB9IGVsc2lmICgkdHlwZSBlcSAidW5zaWduZWQgc2hvcnQi
IAorICAgICAgICAgICAgIG9yICR0eXBlIGVxICJmbG9hdCIKKyAgICAgICAgICAgICBvciAkdHlw
ZSBlcSAidm9pZCIKKyAgICAgICAgICAgICBvciAkdHlwZSBlcSAiQXRvbWljU3RyaW5nIikgewor
ICAgICAgICByZXR1cm4gJHR5cGU7CisgICAgfQorICAgIAorICAgICMgRGVmYXVsdCwgYXNzdW1l
IG9iamVjdGl2ZS1jIHR5cGUgaXMgYSBwb2ludGVyIHdpdGggdGhlIHNhbWUgdHlwZSBuYW1lIGFz
CisgICAgIyBpZGwgdHlwZSBwcmVmaXhlZCB3aXRoICJET00iLgorICAgIHJldHVybiAiRE9NJHR5
cGUgKiI7Cit9CisKK3N1YiBHZXRPYmpDVHlwZU1ha2VyCit7CisgICAgbXkgJHR5cGUgPSAkY29k
ZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoc2hpZnQpOworCisgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5Jc1ByaW1pdGl2ZVR5cGUoJHR5cGUpIG9yICR0eXBlIGVxICJET01TdHJpbmciKSB7CisgICAg
ICAgIHJldHVybiAiIjsKKyAgICB9CisKKyAgICBpZiAoJHR5cGUgZXEgIkRPTVJHQkNvbG9yIikg
eworICAgICAgICByZXR1cm4gIl9SR0JDb2xvcldpdGhSR0IiOworICAgIH0KKworCisgICAgbXkg
JHR5cGVNYWtlciA9ICIiOworCisgICAgaWYgKCR0eXBlIGVxICJIVE1MQ29sbGVjdGlvbiIpIHsK
KyAgICAgICAgJHR5cGVNYWtlciA9ICJjb2xsZWN0aW9uIjsKKyAgICB9IGVsc2lmICgkdHlwZSBl
cSAiSFRNTEZvcm1FbGVtZW50IikgeworICAgICAgICAkdHlwZU1ha2VyID0gImZvcm1FbGVtZW50
IjsKKyAgICB9IGVsc2lmICgkdHlwZSBlcSAiSFRNTERvY3VtZW50IikgeworICAgICAgICAkdHlw
ZU1ha2VyID0gIkhUTUxEb2N1bWVudCI7CisgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkNTU1N0eWxl
RGVjbGFyYXRpb24iKSB7CisgICAgICAgICR0eXBlTWFrZXIgPSAic3R5bGVEZWNsYXJhdGlvbiI7
CisgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkNTU1N0eWxlU2hlZXQiKSB7CisgICAgICAgICR0eXBl
TWFrZXIgPSAiQ1NTU3R5bGVTaGVldCI7CisgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkRPTUltcGxl
bWVudGF0aW9uIikgeworICAgICAgICAkdHlwZU1ha2VyID0gIkRPTUltcGxlbWVudGF0aW9uIjsK
KyAgICB9IGVsc2lmICgkdHlwZSBlcSAiQ0RBVEFTZWN0aW9uIikgeworICAgICAgICAkdHlwZU1h
a2VyID0gIkNEQVRBU2VjdGlvbiI7CisgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkRPTVdpbmRvdyIp
IHsKKyAgICAgICAgJHR5cGVNYWtlciA9ICJhYnN0cmFjdFZpZXciOworICAgIH0gZWxzaWYgKCR0
eXBlIGVxICJYUGF0aFJlc3VsdCIpIHsKKyAgICAgICAgJHR5cGVNYWtlciA9ICJ4cGF0aFJlc3Vs
dCI7CisgICAgfSBlbHNpZiAoJHR5cGUgZXEgIlhQYXRoTlNSZXNvbHZlciIpIHsKKyAgICAgICAg
JHR5cGVNYWtlciA9ICJ4cGF0aE5TUmVzb2x2ZXIiOworICAgIH0gZWxzaWYgKCR0eXBlIGVxICJY
UGF0aEV4cHJlc3Npb24iKSB7CisgICAgICAgICR0eXBlTWFrZXIgPSAieHBhdGhFeHByZXNzaW9u
IjsKKyAgICB9IGVsc2UgeworICAgICAgICAkdHlwZU1ha2VyID0gbGNmaXJzdCgkdHlwZSk7Cisg
ICAgfQorCisgICAgIyBwdXQgaW50byB0aGUgZm9ybSAiX2Zvb0JhcldpdGgiIGZvciB0eXBlIEZv
b0Jhci4KKyAgICAkdHlwZU1ha2VyID0gIl8iIC4gJHR5cGVNYWtlciAuICJXaXRoIjsKKyAgICBy
ZXR1cm4gJHR5cGVNYWtlcjsKK30KKworc3ViIEFkZEZvcndhcmREZWNsYXJhdGlvbnNGb3JUeXBl
Cit7CisgICAgbXkgJHR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoc2hpZnQpOwor
ICAgIAorICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNQcmltaXRpdmVUeXBlKCR0eXBlKSBvciAk
dHlwZSBlcSAiRE9NU3RyaW5nIikgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IGlmICgkdHlwZSBlcSAiRE9NSW1wbGVtZW50YXRpb24iKSB7CisgICAgICAgICRoZWFkZXJGb3J3
YXJkRGVjbGFyYXRpb25zeyIkdHlwZSJ9ID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmICgkdHlwZSBlcSAiRE9NV2luZG93IikgeworICAgICAgICAkaGVhZGVyRm9yd2FyZERl
Y2xhcmF0aW9uc3siRE9NQWJzdHJhY3RWaWV3In0gPSAxOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKCR0eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7CisgICAgICAgICMgT25s
eSBvbmUgcHJvdG9jb2wgc28gZmFyLgorICAgICAgICAkaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9u
c0ZvclByb3RvY29sc3siRE9NWFBhdGhOU1Jlc29sdmVyIn0gPSAxOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgJGhlYWRlckZvcndhcmREZWNsYXJhdGlvbnN7IkRPTSR0eXBlIn0gPSAx
OworfQorCitzdWIgQWRkSW5jbHVkZXNGb3JUeXBlCit7CisgICAgbXkgJHR5cGUgPSAkY29kZUdl
bmVyYXRvci0+U3RyaXBNb2R1bGUoc2hpZnQpOworICAgIAorICAgIGlmICgkY29kZUdlbmVyYXRv
ci0+SXNQcmltaXRpdmVUeXBlKCR0eXBlKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKCR0eXBlIGVxICJET01TdHJpbmciKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IlBs
YXRmb3JtU3RyaW5nLmgifSA9IDE7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAjIFRl
bXAgRE9NQ1NTLmgKKyAgICBpZiAoJHR5cGUgZXEgIkNvdW50ZXIiCisgICAgICAgICAgICBvciAk
dHlwZSBlcSAiTWVkaWFMaXN0IgorICAgICAgICAgICAgb3IgJHR5cGUgZXEgIkNTU1N0eWxlU2hl
ZXQiKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUNTUy5oIn0gPSAxOworICAgICAgICAk
aW1wbEluY2x1ZGVzeyIkdHlwZS5oIn0gPSAxOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmICgkdHlwZSBlcSAiQ1NTU3R5bGVEZWNsYXJhdGlvbiIpIHsKKyAgICAgICAgJGltcGxJbmNs
dWRlc3siRE9NQ1NTLmgifSA9IDE7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IiR0eXBlLmgifSA9
IDE7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgi
fSA9IDE7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCR0eXBlIGVxICJSR0JDb2xv
ciIgb3IgJHR5cGUgZXEgIlJlY3QiKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUNTUy5o
In0gPSAxOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgIyBUZW1wIERPTUhUTUwuaAor
ICAgIGlmICgkdHlwZSBlcSAiSFRNTERvY3VtZW50IikgeworICAgICAgICAkaW1wbEluY2x1ZGVz
eyJET01IVE1MLmgifSA9IDE7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUhUTUxJbnRlcm5h
bC5oIn0gPSAxOworICAgICAgICAkaW1wbEluY2x1ZGVzeyIkdHlwZS5oIn0gPSAxOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgIyBUZW1wIERPTUV2ZW50cy5oCisgICAgaWYgKCR0eXBl
IGVxICJFdmVudCIpIHsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NRXZlbnRzLmgifSA9IDE7
CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUV2ZW50c0ludGVybmFsLmgifSA9IDE7CisgICAg
ICAgICRpbXBsSW5jbHVkZXN7IiR0eXBlLmgifSA9IDE7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICAjIFRlbXAgRE9NU3R5bGVTaGVldHMuaAorICAgIGlmICgkdHlwZSBlcSAiU3R5bGVT
aGVldExpc3QiKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTVN0eWxlU2hlZXRzLmgifSA9
IDE7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IiR0eXBlLmgifSA9IDE7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgIyBUZW1wIERPTVZpZXdzLmgKKyAgICBpZiAoJHR5cGUgZXEg
IkRPTVdpbmRvdyIpIHsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NVmlld3MuaCJ9ID0gMTsK
KyAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NVmlld3NJbnRlcm5hbC5oIn0gPSAxOworICAgICAg
ICAkaW1wbEluY2x1ZGVzeyIkdHlwZS5oIn0gPSAxOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgICMgVGVtcCBET01YUGF0aC5oCisgICAgaWYgKCR0eXBlIGVxICJYUGF0aEV4cHJl
c3Npb24iCisgICAgICAgICAgICBvciAkdHlwZSBlcSAiWFBhdGhOU1Jlc29sdmVyIgorICAgICAg
ICAgICAgb3IgJHR5cGUgZXEgIlhQYXRoUmVzdWx0IikgeworICAgICAgICAkaW1wbEluY2x1ZGVz
eyJET01YUGF0aC5oIn0gPSAxOworICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01YUGF0aEludGVy
bmFsLmgifSA9IDE7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IiR0eXBlLmgifSA9IDE7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAjIFRlbXAgRE9NSW1wbGVtZW50YXRpb25Gcm9udC5o
CisgICAgaWYgKCR0eXBlIGVxICJET01JbXBsZW1lbnRhdGlvbiIpIHsKKyAgICAgICAgJGltcGxJ
bmNsdWRlc3siRE9NSW1wbGVtZW50YXRpb25Gcm9udC5oIn0gPSAxOworICAgIH0KKworICAgICMg
RGVmYXVsdCwgaW5jbHVkZSB0aGUgc2FtZSBuYW1lZCBmaWxlICh0aGUgaW1wbGVtZW50YXRpb24p
IGFuZCB0aGUgc2FtZSBuYW1lIHByZWZpeGVkIHdpdGggIkRPTSIuIAorICAgICRpbXBsSW5jbHVk
ZXN7IiR0eXBlLmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3siRE9NJHR5cGUuaCJ9ID0gMTsK
K30KKworc3ViIEdlbmVyYXRlSGVhZGVyCit7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAg
IG15ICRkYXRhTm9kZSA9IHNoaWZ0OworCisgICAgIyBNYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCBo
YXZlIG1vcmUgdGhhbiBvbmUgcGFyZW50LgorICAgIGlmIChAeyRkYXRhTm9kZS0+cGFyZW50c30g
PiAxKSB7CisgICAgICAgIGRpZSAiQSBjbGFzcyBjYW4ndCBoYXZlIG1vcmUgdGhhbiBvbmUgcGFy
ZW50LiI7CisgICAgfQorCisgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkZGF0YU5vZGUtPm5hbWU7
CisgICAgbXkgJGNsYXNzTmFtZSA9IEdldENsYXNzTmFtZSgkaW50ZXJmYWNlTmFtZSk7CisgICAg
bXkgJHBhcmVudENsYXNzTmFtZSA9ICJET00iIC4gR2V0UGFyZW50SW1wbENsYXNzTmFtZSgkZGF0
YU5vZGUpOworCisgICAgbXkgJG51bUNvbnN0YW50cyA9IEB7JGRhdGFOb2RlLT5jb25zdGFudHN9
OworICAgIG15ICRudW1BdHRyaWJ1dGVzID0gQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9OworICAg
IG15ICRudW1GdW5jdGlvbnMgPSBAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfTsKKworICAgICMgLSBB
ZGQgZGVmYXVsdCBoZWFkZXIgdGVtcGxhdGUKKyAgICBAaGVhZGVyQ29udGVudEhlYWRlciA9IHNw
bGl0KCJcciIsICRoZWFkZXJMaWNlbmNlVGVtcGxhdGUpOworCisgICAgIyAtIElOQ0xVREVTIC0K
KyAgICBwdXNoKEBoZWFkZXJDb250ZW50SGVhZGVyLCAiXG4jaW1wb3J0IFwiJHBhcmVudENsYXNz
TmFtZS5oXCIgLy8gcGFyZW50IGNsYXNzXG5cbiIpOworCisgICAgIyAtIEFkZCBjb25zdGFudHMu
CisgICAgaWYgKCRudW1Db25zdGFudHMgPiAwKSB7CisgICAgICAgIG15IEBoZWFkZXJDb25zdGFu
dHMgPSAoKTsKKyAgICAgICAgZm9yZWFjaCBteSAkY29uc3RhbnQgKEB7JGRhdGFOb2RlLT5jb25z
dGFudHN9KSB7CisKKyAgICAgICAgICAgIG15ICRjb25zdGFudE5hbWUgPSAkY29uc3RhbnQtPm5h
bWU7CisgICAgICAgICAgICBteSAkY29uc3RhbnRWYWx1ZSA9ICRjb25zdGFudC0+dmFsdWU7Cisg
ICAgICAgICAgICBteSAkb3V0cHV0ID0gIiAgICBET01fIiAuICRjb25zdGFudE5hbWUgLiAiID0g
IiAuICRjb25zdGFudFZhbHVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb25zdGFudHMsICRvdXRwdXQpOworICAgICAgICB9CisgICAgICAgIG15ICRjb21iaW5lZENv
bnN0YW50cyA9IGpvaW4oIixcbiIsIEBoZWFkZXJDb25zdGFudHMpOworCisgICAgICAgICMgRklY
TUU6IHRoZSBmb3JtYXR0aW5nIG9mIHRoZSBlbnVtcyBzaG91bGQgbGluZSB1cCB0aGUgZXF1YWwg
c2lnbnMuCisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbi8vIENvbnN0YW50c1xuIik7
CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJlbnVtIHtcbiIpOworICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAkY29tYmluZWRDb25zdGFudHMpOworICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiXG59O1xuIik7ICAgICAgICAKKyAgICB9CisgICAgCisgICAgbXkgJWhhc2hP
ZkNhdGFnb3JpZXMgPSAoKTsKKyAgICAKKyAgICAjIC0gQmVnaW4gQGludGVyZmFjZSAKKyAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiXG5cQGludGVyZmFjZSAkY2xhc3NOYW1lIDogJHBhcmVudENs
YXNzTmFtZVxuIik7CisKKyAgICAjIC0gQWRkIGF0dHJpYnV0ZSBnZXR0ZXJzL3NldHRlcnMuCisg
ICAgaWYgKCRudW1BdHRyaWJ1dGVzID4gMCkgeworICAgICAgICBteSBAaGVhZGVyQXR0cmlidXRl
cyA9ICgpOworCisgICAgICAgIGZvcmVhY2ggKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgewor
ICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZSA9ICRfOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT2JqQ1By
aXZhdGUifSkgeworICAgICAgICAgICAgICAgICMgRklYTUU6IGZvciBub3csIGp1c3Qgc2tpcCBt
ZXRob2RzIG5vdCBhcHByb3ZlZCBmb3IgQVBJIHlldAorICAgICAgICAgICAgICAgIG5leHQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEFkZEZvcndhcmREZWNsYXJhdGlvbnNGb3JUeXBl
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7CisKKyAgICAgICAgICAgIG15ICRhdHRyaWJ1
dGVOYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICAgICAgbXkgJGF0
dHJpYnV0ZVR5cGUgPSBHZXRPYmpDVHlwZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOwor
ICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZUlzUmVhZG9ubHkgPSAoJGF0dHJpYnV0ZS0+dHlwZSA9
fiAvXnJlYWRvbmx5Lyk7CisgICAgICAgICAgICBteSAkY2F0YWdvcnkgPSAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPYmpDQ2F0YWdvcnkifTsKKworICAgICAg
ICAgICAgIyAtIEdFVFRFUgorICAgICAgICAgICAgbXkgJGdldHRlciA9ICItICgiIC4gJGF0dHJp
YnV0ZVR5cGUgLiAiKSIgLiAkYXR0cmlidXRlTmFtZSAuICI7XG4iOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBpZiAoJGNhdGFnb3J5KSB7CisgICAgICAgICAgICAgICAgcHVzaChAeyAkaGFz
aE9mQ2F0YWdvcmllc3skY2F0YWdvcnl9IH0sICRnZXR0ZXIpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJBdHRyaWJ1dGVzLCAkZ2V0dGVyKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgCisgICAgICAgICAgICAjIC0gU0VUVEVSCisgICAg
ICAgICAgICBpZiAoISRhdHRyaWJ1dGVJc1JlYWRvbmx5KSB7CisgICAgICAgICAgICAgICAgbXkg
JHNldHRlciA9ICItICh2b2lkKXNldCIgLiB1Y2ZpcnN0KCRhdHRyaWJ1dGVOYW1lKSAuICI6KCIg
LiAkYXR0cmlidXRlVHlwZSAuICIpIiAuICRhdHRyaWJ1dGVOYW1lIC4gIjtcbiI7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCRjYXRhZ29yeSkgeworICAgICAgICAgICAg
ICAgICAgICBwdXNoKEB7ICRoYXNoT2ZDYXRhZ29yaWVzeyRjYXRhZ29yeX0gfSwgJHNldHRlcik7
CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaGVh
ZGVyQXR0cmlidXRlcywgJHNldHRlcik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgcHVzaChAaGVhZGVyQXR0cmlidXRlcywgJHNldHRlcik7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoQGhlYWRlckF0dHJpYnV0ZXMgPiAwKSB7CisgICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4vLyBBdHRyaWJ1dGVzXG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIEBoZWFkZXJBdHRyaWJ1dGVzKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgICMgLSBBZGQgZnVuY3Rpb25zLgorICAgIGlmICgkbnVtRnVuY3Rpb25zID4g
MCkgeworICAgICAgICBteSBAaGVhZGVyRnVuY3Rpb25zID0gKCk7CisKKyAgICAgICAgZm9yZWFj
aCAoQHskZGF0YU5vZGUtPmZ1bmN0aW9uc30pIHsKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbiA9
ICRfOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPYmpDUHJpdmF0ZSJ9KSB7CisgICAgICAgICAgICAgICAg
IyBGSVhNRTogZm9yIG5vdywganVzdCBza2lwIG1ldGhvZHMgbm90IGFwcHJvdmVkIGZvciBBUEkg
eWV0CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
QWRkRm9yd2FyZERlY2xhcmF0aW9uc0ZvclR5cGUoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUp
OworCisgICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUt
Pm5hbWU7CisgICAgICAgICAgICBteSAkcmV0dXJuVHlwZSA9IEdldE9iakNUeXBlKCRmdW5jdGlv
bi0+c2lnbmF0dXJlLT50eXBlKTsKKyAgICAgICAgICAgIG15ICRudW1iZXJPZlBhcmFtZXRlcnMg
PSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CisgICAgICAgICAgICBteSAkY2F0YWdvcnkgPSAk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9iakNDYXRhZ29yeSJ9
OworCisgICAgICAgICAgICBteSAkb3V0cHV0ID0gIi0gKCRyZXR1cm5UeXBlKSRmdW5jdGlvbk5h
bWUiOworICAgICAgICAgICAgZm9yZWFjaCBteSAkcGFyYW0gKEB7JGZ1bmN0aW9uLT5wYXJhbWV0
ZXJzfSkgeworICAgICAgICAgICAgICAgIG15ICRwYXJhbU5hbWUgPSAkcGFyYW0tPm5hbWU7Cisg
ICAgICAgICAgICAgICAgbXkgJHBhcmFtVHlwZSA9IEdldE9iakNUeXBlKCRwYXJhbS0+dHlwZSk7
CisgICAgICAgICAgICAgICAgQWRkRm9yd2FyZERlY2xhcmF0aW9uc0ZvclR5cGUoJHBhcmFtLT50
eXBlKTsKKworICAgICAgICAgICAgICAgICRvdXRwdXQgLj0gIjooJHBhcmFtVHlwZSkkcGFyYW1O
YW1lIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRvdXRwdXQgLj0gIjtcbiI7CisgICAg
CisgICAgICAgICAgICBpZiAoJGNhdGFnb3J5KSB7CisgICAgICAgICAgICAgICAgcHVzaChAeyAk
aGFzaE9mQ2F0YWdvcmllc3skY2F0YWdvcnl9IH0sICRvdXRwdXQpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJBdHRyaWJ1dGVzLCAkb3V0cHV0KTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVzaChAaGVhZGVyRnVuY3Rpb25zLCAkb3V0
cHV0KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChAaGVhZGVyRnVuY3Rpb25zID4gMCkgewor
ICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuLy8gRnVuY3Rpb25zXG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIEBoZWFkZXJGdW5jdGlvbnMpOworICAgICAg
ICB9CisgICAgfQorCisgICAgIyAtIEVuZCBAaW50ZXJmYWNlIAorICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICJcblxAZW5kXG4iKTsKKyAgICAKKyAgICAjIEFkZCBhZGRpdGlvbmFsIENhdGFnb3Jp
ZXMgKGlmIGFueSkKKyAgICBpZiAoc2NhbGFyKGtleXMoJWhhc2hPZkNhdGFnb3JpZXMpKSkgewor
ICAgICAgICAKKyAgICAgICAgZm9yZWFjaChzb3J0KGtleXMoJWhhc2hPZkNhdGFnb3JpZXMpKSkg
eworICAgICAgICAgICAgbXkgJGNhdGFnb3J5ID0gJF87CisKKyAgICAgICAgICAgICMgLSBCZWdp
biBAaW50ZXJmYWNlIAorICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuXEBpbnRl
cmZhY2UgJGNsYXNzTmFtZSAoJGNhdGFnb3J5KVxuIik7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGZvcmVhY2ggKEB7ICRoYXNoT2ZDYXRhZ29yaWVzeyRjYXRhZ29yeX0gfSkgeworICAgICAg
ICAgICAgICAgIG15ICRkZWNsYXJhdGlvbiA9ICRfOworICAgICAgICAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICRkZWNsYXJhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgICMgLSBFbmQgQGludGVyZmFjZQorICAgICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIlxAZW5kXG4iKTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KK3sKKyAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJGRhdGFO
b2RlID0gc2hpZnQ7CisKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRkYXRhTm9kZS0+bmFtZTsK
KyAgICBteSAkY2xhc3NOYW1lID0gR2V0Q2xhc3NOYW1lKCRpbnRlcmZhY2VOYW1lKTsKKyAgICBt
eSAkaW1wbENsYXNzTmFtZSA9IEdldEltcGxDbGFzc05hbWUoJGludGVyZmFjZU5hbWUpOworICAg
IG15ICRwYXJlbnRJbXBsQ2xhc3NOYW1lID0gR2V0UGFyZW50SW1wbENsYXNzTmFtZSgkZGF0YU5v
ZGUpOworCisKKyAgICBteSAkbnVtQXR0cmlidXRlcyA9IEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVz
fTsKKyAgICBteSAkbnVtRnVuY3Rpb25zID0gQHskZGF0YU5vZGUtPmZ1bmN0aW9uc307CisgICAg
bXkgJGhhc0Z1bmN0aW9uc09yQXR0cmlidXRlcyA9ICRudW1BdHRyaWJ1dGVzICsgJG51bUZ1bmN0
aW9uczsKKworICAgICMgLSBBZGQgZGVmYXVsdCBoZWFkZXIgdGVtcGxhdGUuCisgICAgQGltcGxD
b250ZW50SGVhZGVyID0gc3BsaXQoIlxyIiwgJGltcGxlbWVudGF0aW9uTGljZW5jZVRlbXBsYXRl
KTsKKworICAgICMgLSBJTkNMVURFUyAtCisgICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIsICJc
biNpbXBvcnQgXCJjb25maWcuaFwiXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudEhlYWRlciwg
IiNpbXBvcnQgXCIkY2xhc3NOYW1lLmhcIlxuXG4iKTsKKworICAgIGlmICgkaGFzRnVuY3Rpb25z
T3JBdHRyaWJ1dGVzKSB7CisgICAgICAgICMgTkVFREVEIGZvciBET01fQ0FTVAorICAgICAgICBw
dXNoKEBpbXBsQ29udGVudEhlYWRlciwgIiNpbXBvcnQgXCJET01JbnRlcm5hbC5oXCIgLy8gbmVl
ZGVkIGZvciBET01fY2FzdDw+XG4iKTsKKyAgICAgICAgCisgICAgICAgICMgaW5jbHVkZSBtb2R1
bGUgZGVwZW5kYW50IGludGVybmFsIGludGVyZmFjZXMgCisgICAgICAgIGlmICgkaW50ZXJmYWNl
TmFtZSA9fiAvXkhUTUwvKSB7CisgICAgICAgICAgICAjIEhUTUwgbW9kdWxlIGludGVybmFsIGlu
dGVyZmFjZXMKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAiI2ltcG9ydCBc
IkRPTUhUTUxJbnRlcm5hbC5oXCJcbiIpOworICAgICAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFt
ZSA9fiAvXkNTUy8gb3IgJGludGVyZmFjZU5hbWUgZXEgIlJlY3QiIG9yICRpbnRlcmZhY2VOYW1l
IGVxICJDb3VudGVyIikgeworICAgICAgICAgICAgIyBDU1MgbW9kdWxlIGludGVybmFsIGludGVy
ZmFjZXMKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAiI2ltcG9ydCBcIkRP
TUNTU0ludGVybmFsLmhcIlxuIik7CisgICAgICAgIH0KKworICAgICAgICAjIGluY2x1ZGUgSW1w
bGVtZW50YXRpb24gY2xhc3MKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIsICIjaW1w
b3J0IFwiJGludGVyZmFjZU5hbWUuaFwiIC8vIGltcGxlbWVudGF0aW9uIGNsYXNzXG4iKTsKKyAg
ICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01JbXBsZW1lbnRhdGlvbiIpIHsKKyAgICAg
ICAgICAgICMgRklYTUU6IG5lZWRlZCB1bnRpbCB3ZSBjYW4gcmVtb3ZlIERPTUltcGxlbWVudGF0
aW9uRnJvbnQKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAiI2ltcG9ydCBc
IkRPTUltcGxlbWVudGF0aW9uRnJvbnQuaFwiXG4iKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IEBpbXBsQ29udGVudCA9ICgpOworCisgICAgIyBTVEFSVCBpbXBsZW1lbnRhdGlvbgorICAgIHB1
c2goQGltcGxDb250ZW50LCAiXG5cQGltcGxlbWVudGF0aW9uICRjbGFzc05hbWVcblxuIik7Cisg
ICAgCisgICAgIyBBREQgSU5URVJOQUwgQ0FTVElORyBNRVRIT0QKKyAgICBteSAkaW50ZXJuYWxD
YXN0aW5nTmFtZSA9ICJfIiAuIGxjZmlyc3QoJGludGVyZmFjZU5hbWUpOworICAgIG15ICRpbXBs
ZW1lbnRhdGlvbiA9ICJbc2VsZiAkaW50ZXJuYWxDYXN0aW5nTmFtZV0iOworICAgIAorICAgIGlm
ICgkaGFzRnVuY3Rpb25zT3JBdHRyaWJ1dGVzKSB7CisgICAgICAgIGlmICgkcGFyZW50SW1wbENs
YXNzTmFtZSBlcSAiT2JqZWN0IikgeworICAgICAgICAgICAgIyBPbmx5IGdlbmVyYXRlICdkZWFs
bG9jJyBhbmQgJ2ZpbmFsaXplJyBtZXRob2RzIGZvciBzdWJjbGFzc2VzIG9mIERPTU9iamVjdC4K
KworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICItICh2b2lkKWRlYWxsb2NcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmIChfaW50ZXJuYWwpXG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICBET01fY2FzdDwkaW1wbENsYXNzTmFtZSAqPihfaW50ZXJu
YWwpLT5kZXJlZigpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBb
c3VwZXIgZGVhbGxvY107XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxu
XG4iKTsKKworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICItICh2b2lkKWZpbmFsaXpl
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoX2ludGVybmFsKVxuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgRE9NX2Nhc3Q8JGltcGxDbGFzc05hbWUgKj4o
X2ludGVybmFsKS0+ZGVyZWYoKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgW3N1cGVyIGZpbmFsaXplXTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9XG5cbiIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIi0gKCRpbXBsQ2xhc3NOYW1lICopJGludGVybmFsQ2FzdGluZ05hbWVcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHJldHVybiBET01fY2FzdDwkaW1wbENsYXNzTmFtZSAqPihfaW50ZXJuYWwp
O1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAKKyAgICAgICAgICAgIG15ICRpbnRlcm5hbEJhc2VUeXBlOworICAg
ICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJDU1NQcmltaXRpdmVWYWx1ZSIpIHsKKyAg
ICAgICAgICAgICAgICAjIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBhIHJlZ2V4IG1hdGNoaW5nIENT
Uy4uLlZhbHVlLgorICAgICAgICAgICAgICAgICRpbnRlcm5hbEJhc2VUeXBlID0gIldlYkNvcmU6
OkNTU1ZhbHVlIgorICAgICAgICAgICAgfSBlbHNpZiAoJGludGVyZmFjZU5hbWUgZXEgIkNTU0lt
cG9ydFJ1bGUiIG9yICRpbnRlcmZhY2VOYW1lIGVxICJDU1NGb250RmFjZVJ1bGUiKSB7CisgICAg
ICAgICAgICAgICAgIyBGSVhNRTogdGhpcyBzaG91bGQgYmUgYSByZWdleCBtYXRjaGluZyBDU1Mu
Li5SdWxlLgorICAgICAgICAgICAgICAgICRpbnRlcm5hbEJhc2VUeXBlID0gIldlYkNvcmU6OkNT
U1J1bGUiCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICRpbnRlcm5hbEJh
c2VUeXBlID0gIldlYkNvcmU6Ok5vZGUiCisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIi0gKCRpbXBsQ2xhc3NOYW1lICopJGludGVybmFsQ2FzdGluZ05hbWVc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFt
ZSAqPihET01fY2FzdDwkaW50ZXJuYWxCYXNlVHlwZSAqPihfaW50ZXJuYWwpKTtcbiIpOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworICAgICAgICB9CisgICAgfQor
CisgICAgIyAtIEF0dHJpYnV0ZXMKKyAgICBpZiAoJG51bUF0dHJpYnV0ZXMgPiAwKSB7CisgICAg
ICAgIGZvcmVhY2ggKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgeworICAgICAgICAgICAgbXkg
JGF0dHJpYnV0ZSA9ICRfOworCisgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT2JqQ1ByaXZhdGUifSkgeworICAgICAgICAgICAgICAg
ICMgRklYTUU6IGZvciBub3csIGp1c3Qgc2tpcCBtZXRob2RzIG5vdCBhcHByb3ZlZCBmb3IgQVBJ
IHlldAorICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IEFkZEluY2x1ZGVzRm9yVHlwZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOworCisgICAg
ICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsK
KyAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVUeXBlID0gR2V0T2JqQ1R5cGUoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT50eXBlKTsKKyAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVJc1JlYWRvbmx5ID0g
KCRhdHRyaWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8pOworCisgICAgICAgICAgICAjIC0gR0VU
VEVSCisgICAgICAgICAgICBteSAkZ2V0dGVyU2lnID0gIi0gKCRhdHRyaWJ1dGVUeXBlKSRhdHRy
aWJ1dGVOYW1lXG4iOworICAgICAgICAgICAgCisgICAgICAgICAgICAjIEV4Y2VwdGlvbiBoYW5k
bGluZworICAgICAgICAgICAgbXkgJGhhc0dldHRlckV4Y2VwdGlvbiA9IEB7JGF0dHJpYnV0ZS0+
Z2V0dGVyRXhjZXB0aW9uc307CisgICAgICAgICAgICBpZiAoJGhhc0dldHRlckV4Y2VwdGlvbikg
eworICAgICAgICAgICAgICAgIGRpZSAiV2Ugc2hvdWxkIG5vdCBoYXZlIGFueSBnZXR0ZXIgZXhj
ZXB0aW9ucyB5ZXQhIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
bXkgJGdldHRlckNvbnRlbnRIZWFkID0gIiRpbXBsZW1lbnRhdGlvbi0+JGF0dHJpYnV0ZU5hbWUo
IjsKKyAgICAgICAgICAgIG15ICRnZXR0ZXJDb250ZW50VGFpbCA9ICIpIjsKKworICAgICAgICAg
ICAgbXkgJGF0dHJpYnV0ZVR5cGVTYW5zUHRyID0gJGF0dHJpYnV0ZVR5cGU7CisgICAgICAgICAg
ICAkYXR0cmlidXRlVHlwZVNhbnNQdHIgPX4gcy8gXCokLy87ICMgUmVtb3ZlIHRyYWlsaW5nICIg
KiIgZnJvbSBwb2ludGVyIHR5cGVzLgorICAgICAgICAgICAgbXkgJHR5cGVNYWtlciA9IEdldE9i
akNUeXBlTWFrZXIoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsKKyAgICAgICAgICAgIGlm
ICgkYXR0cmlidXRlVHlwZVNhbnNQdHIgZXEgIkRPTUltcGxlbWVudGF0aW9uIikgeworICAgICAg
ICAgICAgICAgICMgRklYTUU6IFdlIGhhdmUgdG8gc3BlY2lhbCBjYXNlIERPTUltcGxlbWVudGF0
aW9uIHVudGlsIERPTUltcGxlbWVudGF0aW9uRnJvbnQgaXMgcmVtb3ZlZAorICAgICAgICAgICAg
ICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICJbJGF0dHJpYnV0ZVR5cGVTYW5zUHRyICR0eXBlTWFr
ZXI6aW1wbGVtZW50YXRpb25Gcm9udCgkaW1wbGVtZW50YXRpb24iOworICAgICAgICAgICAgICAg
ICRnZXR0ZXJDb250ZW50VGFpbCAuPSAiXSI7CisgICAgICAgICAgICB9IGVsc2lmICgkdHlwZU1h
a2VyIG5lICIiKSB7CisgICAgICAgICAgICAgICAgIyBTdXJyb3VuZCBnZXR0ZXIgd2l0aCBUeXBl
TWFrZXIKKyAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiWyRhdHRyaWJ1dGVU
eXBlU2Fuc1B0ciAkdHlwZU1ha2VyOiIgLiAkZ2V0dGVyQ29udGVudEhlYWQ7CisgICAgICAgICAg
ICAgICAgJGdldHRlckNvbnRlbnRUYWlsIC49ICJdIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IlVzZXNQYXNzUmVmUHRyIn0pIHsKKyAgICAgICAgICAgICAgICAkZ2V0dGVyQ29u
dGVudFRhaWwgPSAiKS5nZXQoIiAuICRmdW5jdGlvbkNvbnRlbnRUYWlsOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICBteSAkZ2V0dGVyQ29udGVudDsKKyAgICAgICAg
ICAgIGlmICgkaGFzR2V0dGVyRXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgJGdldHRlckNv
bnRlbnQgPSAkZ2V0dGVyQ29udGVudEhlYWQgLiAiZWMiIC4gJGdldHRlckNvbnRlbnRUYWlsOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudCA9ICRn
ZXR0ZXJDb250ZW50SGVhZCAuICRnZXR0ZXJDb250ZW50VGFpbDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRnZXR0ZXJTaWcpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICRleGNlcHRpb25Jbml0XG4iKSBpZiAkaGFzR2V0dGVyRXhjZXB0
aW9uOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICRnZXR0ZXJD
b250ZW50O1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkZXhjZXB0
aW9uUmFpc2VPbkVycm9yXG4iKSBpZiAkaGFzR2V0dGVyRXhjZXB0aW9uOworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworCisgICAgICAgICAgICAjIC0gU0VUVEVSCisg
ICAgICAgICAgICBpZiAoISRhdHRyaWJ1dGVJc1JlYWRvbmx5KSB7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAjIEV4Y2VwdGlvbiBoYW5kbGluZworICAgICAgICAgICAgICAgIG15ICRo
YXNTZXR0ZXJFeGNlcHRpb24gPSBAeyRhdHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlvbnN9OworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG15ICRzZXR0ZXJOYW1lID0gInNldCIgLiB1
Y2ZpcnN0KCRhdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgICAgICAgICBteSAkc2V0dGVyU2lnID0g
Ii0gKHZvaWQpJHNldHRlck5hbWU6KCRhdHRyaWJ1dGVUeXBlKSRhdHRyaWJ1dGVOYW1lXG4iOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkc2V0
dGVyU2lnKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICgkaGFzU2V0dGVyRXhjZXB0aW9uKSB7
CisgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IGFzc2VydHMgZXhzaXN0IGluIHRoZSBleHNp
c3RpbmcgYmluZGluZ3MsIGJ1dCBJIGFtIHVuc3VyZSB3aHkgdGhleSBhcmUgCisgICAgICAgICAg
ICAgICAgICAgICMgdGhlcmUgaW4gdGhlIGZpcnN0IHBsYWNlOworICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlQoJGF0dHJpYnV0ZU5hbWUpO1xuXG4iKTsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgJGV4Y2VwdGlvbkluaXRcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAkaW1wbGVtZW50YXRpb24tPiRzZXR0ZXJOYW1lKCRhdHRyaWJ1dGVOYW1l
LCBlYyk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
JGV4Y2VwdGlvblJhaXNlT25FcnJvclxuIik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGltcGxlbWVudGF0aW9u
LT4kc2V0dGVyTmFtZSgkYXR0cmlidXRlTmFtZSk7XG4iKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5c
biIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgIyAtIEZ1bmN0aW9u
cworICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCkgeworICAgICAgICBmb3JlYWNoIChAeyRkYXRh
Tm9kZS0+ZnVuY3Rpb25zfSkgeworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uID0gJF87CisKKyAg
ICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Ik9iakNQcml2YXRlIn0pIHsKKyAgICAgICAgICAgICAgICAjIEZJWE1FOiBmb3Igbm93LCBqdXN0
IHNraXAgbWV0aG9kcyBub3QgYXBwcm92ZWQgZm9yIEFQSSB5ZXQKKyAgICAgICAgICAgICAgICBu
ZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGUoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpOworCisgICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1l
ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgICAgICBteSAkcmV0dXJuVHlw
ZSA9IEdldE9iakNUeXBlKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKTsKKyAgICAgICAgICAg
IG15ICRoYXNQYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OworICAgICAgICAg
ICAgbXkgJHJhaXNlc0V4Y2VwdGlvbnMgPSBAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc307
CisKKyAgICAgICAgICAgIG15IEBwYXJhbWV0ZXJOYW1lcyA9ICgpOworICAgICAgICAgICAgbXkg
QG5lZWRzQXNzZXJ0ID0gKCk7CisgICAgICAgICAgICBteSAlY3VzdG9tID0gKCk7CisKKyAgICAg
ICAgICAgIG15ICRmdW5jdGlvblNpZyA9ICItICgkcmV0dXJuVHlwZSkkZnVuY3Rpb25OYW1lIjsK
KyAgICAgICAgICAgIGZvcmVhY2ggKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgeworICAgICAg
ICAgICAgICAgIG15ICRwYXJhbSA9ICRfOworCisgICAgICAgICAgICAgICAgbXkgJHBhcmFtVHlw
ZSA9IEdldE9iakNUeXBlKCRwYXJhbS0+dHlwZSk7CisgICAgICAgICAgICAgICAgQWRkSW5jbHVk
ZXNGb3JUeXBlKCRwYXJhbS0+dHlwZSk7CisKKyAgICAgICAgICAgICAgICBteSAkcGFyYW1OYW1l
ID0gJHBhcmFtLT5uYW1lOworCisgICAgICAgICAgICAgICAgIyBGSVhNRTogc2hvdWxkIG1vdmUg
dGhpcyBvdXQgaW50byBpdCdzIG93biBmdWN0aW9uIHRvIHRha2UgY2FyZSBvZiBwb3NzaWJsZSBz
cGVjaWFsIGNhc2VzLgorICAgICAgICAgICAgICAgIG15ICRpZGxUeXBlID0gJGNvZGVHZW5lcmF0
b3ItPlN0cmlwTW9kdWxlKCRwYXJhbS0+dHlwZSk7CisgICAgICAgICAgICAgICAgaWYgKCRjb2Rl
R2VuZXJhdG9yLT5Jc1ByaW1pdGl2ZVR5cGUoJGlkbFR5cGUpIG9yICRpZGxUeXBlIGVxICJET01T
dHJpbmciKSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQHBhcmFtZXRlck5hbWVzLCAkcGFy
YW1OYW1lKTsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkaWRsVHlwZSBlcSAiWFBhdGhOU1Jl
c29sdmVyIikgeworICAgICAgICAgICAgICAgICAgICBteSAkaW1wbEdldHRlciA9ICJbbmF0aXZl
UmVzb2x2ZXIgX3hwYXRoTlNSZXNvbHZlcl0iOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBw
YXJhbWV0ZXJOYW1lcywgJGltcGxHZXR0ZXIpOworICAgICAgICAgICAgICAgICAgICAkbmVlZHND
dXN0b217IlhQYXRoTlNSZXNvbHZlciJ9ID0gJHBhcmFtTmFtZTsKKyAgICAgICAgICAgICAgICB9
IGVsc2lmICgkaWRsVHlwZSBlcSAiWFBhdGhSZXN1bHQiKSB7CisgICAgICAgICAgICAgICAgICAg
IG15ICRpbXBsR2V0dGVyID0gIlsiIC4gJHBhcmFtTmFtZSAuICIgX3hwYXRoUmVzdWx0XSI7Cisg
ICAgICAgICAgICAgICAgICAgIHB1c2goQHBhcmFtZXRlck5hbWVzLCAkaW1wbEdldHRlcik7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGltcGxHZXR0
ZXIgPSAiWyIgLiAkcGFyYW1OYW1lIC4gIiBfIiAuIGxjZmlyc3QoJGlkbFR5cGUpIC4gIl0iOwor
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBwYXJhbWV0ZXJOYW1lcywgJGltcGxHZXR0ZXIpOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICghJHBhcmFtLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSXNJbmRleCJ9KSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQG5l
ZWRzQXNzZXJ0LCAiICAgIEFTU0VSVCgkcGFyYW1OYW1lKTtcbiIpOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgICRmdW5jdGlvblNpZyAuPSAiOigkcGFyYW1UeXBlKSRwYXJh
bU5hbWUiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBteSBAZnVu
Y3Rpb25Db250ZW50ID0gKCk7CisKKyAgICAgICAgICAgIGlmICgkcmV0dXJuVHlwZSBlcSAidm9p
ZCIpIHsKKyAgICAgICAgICAgICAgICAjIFNwZWNpYWwgY2FzZSAndm9pZCcgcmV0dXJuIHR5cGUu
CisKKyAgICAgICAgICAgICAgICBteSAkZnVuY3Rpb25Db250ZW50SGVhZCA9ICIkaW1wbGVtZW50
YXRpb24tPiRmdW5jdGlvbk5hbWUoIjsKKyAgICAgICAgICAgICAgICBteSAkZnVuY3Rpb25Db250
ZW50VGFpbCA9ICIpOyI7CisgICAgICAgICAgICAgICAgbXkgJGNvbnRlbnQgPSAiIjsKKworICAg
ICAgICAgICAgICAgIGlmICgkaGFzUGFyYW1ldGVycykgeworICAgICAgICAgICAgICAgICAgICBt
eSAkcGFyYW1zID0gam9pbigiLCAiLCBAcGFyYW1ldGVyTmFtZXMpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoJHJhaXNlc0V4Y2VwdGlvbnMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRj
b250ZW50ID0gJGZ1bmN0aW9uQ29udGVudEhlYWQgLiAkcGFyYW1zIC4gIiwgZWMiIC4gJGZ1bmN0
aW9uQ29udGVudFRhaWw7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAkY29udGVudCA9ICRmdW5jdGlvbkNvbnRlbnRIZWFkIC4gJHBhcmFtcyAu
ICRmdW5jdGlvbkNvbnRlbnRUYWlsOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRyYWlzZXNFeGNlcHRpb25z
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9ICRmdW5jdGlvbkNvbnRlbnRI
ZWFkIC4gImVjIiAuICRmdW5jdGlvbkNvbnRlbnRUYWlsOworICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkZnVuY3Rpb25Db250
ZW50SGVhZCAuICRmdW5jdGlvbkNvbnRlbnRUYWlsOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICgk
cmFpc2VzRXhjZXB0aW9ucykgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNv
bnRlbnQsICIgICAgJGV4Y2VwdGlvbkluaXRcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNo
KEBmdW5jdGlvbkNvbnRlbnQsICIgICAgJGNvbnRlbnRcbiIpOworICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgJGV4Y2VwdGlvblJhaXNlT25FcnJvclxuIik7
CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAZnVu
Y3Rpb25Db250ZW50LCAiICAgICRjb250ZW50XG4iKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbXkg
JGZ1bmN0aW9uQ29udGVudEhlYWQgPSAkaW1wbGVtZW50YXRpb24gLiAiLT4iIC4gJGZ1bmN0aW9u
TmFtZSAuICIoIjsKKyAgICAgICAgICAgICAgICBteSAkZnVuY3Rpb25Db250ZW50VGFpbCA9ICIp
IjsKKworICAgICAgICAgICAgICAgIG15ICR0eXBlTWFrZXIgPSBHZXRPYmpDVHlwZU1ha2VyKCRm
dW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKTsKKyAgICAgICAgICAgICAgICB1bmxlc3MgKCR0eXBl
TWFrZXIgZXEgIiIpIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHJldHVyblR5cGVDbGFzcyA9
ICIiOworICAgICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUg
ZXEgIlhQYXRoTlNSZXNvbHZlciIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICMgU3BlY2lh
bCBjYXNlIFhQYXRoTlNSZXNvbHZlcgorICAgICAgICAgICAgICAgICAgICAgICAgJHJldHVyblR5
cGVDbGFzcyA9ICJET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIiOworICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgIiAq
IiBmcm9tIHBvaW50ZXIgdHlwZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuVHlw
ZUNsYXNzID0gJHJldHVyblR5cGU7CisgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuVHlw
ZUNsYXNzID1+IHMvIFwqJC8vOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICAgICAgIyBTdXJyb3VuZCBnZXR0ZXIgd2l0aCBUeXBlTWFrZXIKKyAgICAgICAgICAgICAg
ICAgICAgJGZ1bmN0aW9uQ29udGVudEhlYWQgPSAiWyRyZXR1cm5UeXBlQ2xhc3MgJHR5cGVNYWtl
cjoiIC4gJGZ1bmN0aW9uQ29udGVudEhlYWQ7CisgICAgICAgICAgICAgICAgICAgICRmdW5jdGlv
bkNvbnRlbnRUYWlsIC49ICJdIjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJVc2VzUGFz
c1JlZlB0ciJ9KSB7CisgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvbkNvbnRlbnRUYWlsID0g
IikuZ2V0KCIgLiAkZnVuY3Rpb25Db250ZW50VGFpbDsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBteSAkY29udGVudCA9ICIiOworCisgICAgICAgICAgICAgICAgaWYgKCRo
YXNQYXJhbWV0ZXJzKSB7CisgICAgICAgICAgICAgICAgICAgIG15ICRwYXJhbXMgPSBqb2luKCIs
ICIgLCBAcGFyYW1ldGVyTmFtZXMpOworICAgICAgICAgICAgICAgICAgICBpZiAoJHJhaXNlc0V4
Y2VwdGlvbnMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICMgQSB0ZW1wYXJhcnkgdmFyaWFi
bGUgaXMgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkZnVuY3Rp
b25Db250ZW50SGVhZCAuICRwYXJhbXMgLiAiLCBlYyIgLiAkZnVuY3Rpb25Db250ZW50VGFpbDsK
KyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRj
b250ZW50ID0gJGZ1bmN0aW9uQ29udGVudEhlYWQgLiAkcGFyYW1zIC4gJGZ1bmN0aW9uQ29udGVu
dFRhaWw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBpZiAoJHJhaXNlc0V4Y2VwdGlvbnMpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICMgQSB0ZW1wYXJhcnkgdmFyaWFibGUgaXMgbmVlZGVkLgorICAgICAgICAg
ICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkZnVuY3Rpb25Db250ZW50SGVhZCAuICJlYyIgLiAk
ZnVuY3Rpb25Db250ZW50VGFpbDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gJGZ1bmN0aW9uQ29udGVudEhlYWQgLiAkZnVu
Y3Rpb25Db250ZW50VGFpbDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoJHJhaXNlc0V4Y2VwdGlv
bnMpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgICRl
eGNlcHRpb25Jbml0XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250
ZW50LCAiICAgICRyZXR1cm5UeXBlIHJlc3VsdCA9ICRjb250ZW50O1xuIik7CisgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICAkZXhjZXB0aW9uUmFpc2VPbkVy
cm9yXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAg
IHJldHVybiByZXN1bHQ7XG4iKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgcmV0dXJuICRjb250ZW50O1xu
Iik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiRmdW5jdGlvblNpZ1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIntcbiIpOworICAgICAgICAgICAgCisgICAgICAgICAgICAjIHNwZWNpYWwgY2Fz
ZSB0aGUgWFBhdGhOU1Jlc29sdmVyCisgICAgICAgICAgICBpZiAoZGVmaW5lZCAkbmVlZHNDdXN0
b217IlhQYXRoTlNSZXNvbHZlciJ9KSB7CisgICAgICAgICAgICAgICAgbXkgJHBhcmFtTmFtZSA9
ICRuZWVkc0N1c3RvbXsiWFBhdGhOU1Jlc29sdmVyIn07CisgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKCRwYXJhbU5hbWUgJiYgIVskcGFyYW1OYW1lIGlzTWVtYmVy
T2ZDbGFzczpbRE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyIGNsYXNzXV0pXG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5T
R2VuZXJpY0V4Y2VwdGlvbiBmb3JtYXQ6XEBcImNyZWF0ZUV4cHJlc3Npb24gY3VycmVudGx5IGRv
ZXMgbm90IHdvcmsgd2l0aCBjdXN0b20gTlMgcmVzb2x2ZXJzXCJdO1xuIik7CisgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyICpu
YXRpdmVSZXNvbHZlciA9IChET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgKikkcGFyYW1OYW1lO1xu
XG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCApOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEBmdW5jdGlvbkNvbnRlbnQpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICAjIENsZWFyIHRoZSBoYXNoCisgICAgICAgICAgICAlbmVlZHNDdXN0b20gPSAoKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgICMgRU5EIGltcGxlbWVudGF0aW9uCisgICAgcHVzaChAaW1w
bENvbnRlbnQsICJcQGVuZFxuIik7Cit9CisKKyMgSW50ZXJuYWwgaGVscGVyCitzdWIgV3JpdGVE
YXRhCit7CisgICAgaWYgKGRlZmluZWQoJElNUEwpKSB7CisgICAgICAgICMgV3JpdGUgY29udGVu
dCB0byBmaWxlLgorICAgICAgICBwcmludCAkSU1QTCBAaW1wbENvbnRlbnRIZWFkZXI7CisgICAg
ICAgIAorICAgICAgICBmb3JlYWNoIG15ICRpbXBsSW5jbHVkZSAoc29ydCBrZXlzKCVpbXBsSW5j
bHVkZXMpKSB7CisgICAgICAgICAgICBwcmludCAkSU1QTCAiI2ltcG9ydCBcIiRpbXBsSW5jbHVk
ZVwiXG4iOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwcmludCAkSU1QTCBAaW1wbENv
bnRlbnQ7CisgICAgICAgIGNsb3NlKCRJTVBMKTsKKyAgICAgICAgdW5kZWYoJElNUEwpOworICAg
ICAgICAKKyAgICAgICAgQGltcGxIZWFkZXJDb250ZW50ID0gIiI7CisgICAgICAgIEBpbXBsQ29u
dGVudCA9ICIiOyAgICAKKyAgICAgICAgJWltcGxJbmNsdWRlcyA9ICgpOworICAgIH0KKyAgICAg
ICAgCisgICAgaWYgKGRlZmluZWQoJEhFQURFUikpIHsKKyAgICAgICAgIyBXcml0ZSBjb250ZW50
IHRvIGZpbGUuCisgICAgICAgIHByaW50ICRIRUFERVIgQGhlYWRlckNvbnRlbnRIZWFkZXI7Cisg
ICAgICAgIAorICAgICAgICBmb3JlYWNoIG15ICRmb3J3YXJkQ2xhc3NEZWNsYXJhdGlvbiAoc29y
dCBrZXlzKCVoZWFkZXJGb3J3YXJkRGVjbGFyYXRpb25zKSkgeworICAgICAgICAgICAgcHJpbnQg
JEhFQURFUiAiXEBjbGFzcyAkZm9yd2FyZENsYXNzRGVjbGFyYXRpb247XG4iOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBmb3JlYWNoIG15ICRmb3J3YXJkUHJvdG9jb2xEZWNsYXJhdGlv
biAoc29ydCBrZXlzKCVoZWFkZXJGb3J3YXJkRGVjbGFyYXRpb25zRm9yUHJvdG9jb2xzKSkgewor
ICAgICAgICAgICAgcHJpbnQgJEhFQURFUiAiXEBwcm90b2NvbCAkZm9yd2FyZFByb3RvY29sRGVj
bGFyYXRpb247XG4iOworICAgICAgICB9CisKKyAgICAgICAgcHJpbnQgJEhFQURFUiBAaGVhZGVy
Q29udGVudDsKKyAgICAgICAgY2xvc2UoJEhFQURFUik7CisgICAgICAgIHVuZGVmKCRIRUFERVIp
OworICAgICAgICAKKyAgICAgICAgQGhlYWRlckNvbnRlbnRIZWFkZXIgPSAiIjsKKyAgICAgICAg
QGhlYWRlckNvbnRlbnQgPSAiIjsKKyAgICAgICAgJWhlYWRlckZvcndhcmREZWNsYXJhdGlvbnMg
PSAoKTsKKyAgICB9Cit9CisKKzE7CkluZGV4OiBXZWJDb3JlL2RvbS9BdHRyLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9BdHRyLmlkbAkocmV2aXNpb24gMTU5OTcpCisrKyBXZWJDb3Jl
L2RvbS9BdHRyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtMzQsNyArMzUsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIAogICAgICAgICAvLyBl
eHRlbnNpb25zCiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIENTU1N0eWxlRGVjbGFyYXRp
b24gc3R5bGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbT2JqQ0NhdGFnb3J5PURPTUF0
dHJFeHRlbnNpb25zXSBDU1NTdHlsZURlY2xhcmF0aW9uIHN0eWxlOwogICAgIH07CiAKIH0KSW5k
ZXg6IFdlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vQ0RBVEFTZWN0aW9uLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0NEQVRBU2Vj
dGlvbi5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMw
LAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworbW9kdWxlIGNvcmUgewor
CisgICAgaW50ZXJmYWNlIENEQVRBU2VjdGlvbiA6IFRleHQgeworICAgIH07CisKK30KSW5kZXg6
IFdlYkNvcmUvZG9tL0NvbW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NvbW1l
bnQuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vQ29tbWVudC5pZGwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdl
aW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAw
MjExMS0xMzA3LCBVU0EuCisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIENv
bW1lbnQgOiBDaGFyYWN0ZXJEYXRhIHsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL2RvbS9E
T01JbXBsZW1lbnRhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRE9NSW1wbGVt
ZW50YXRpb24uaWRsCShyZXZpc2lvbiAxNTk5NykKKysrIFdlYkNvcmUvZG9tL0RPTUltcGxlbWVu
dGF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBT
YW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtMjgsMjQgKzI5LDI0IEBAIG1vZHVsZSBjb3JlIHsKIAogICAgICAgICAvLyBET00gTGV2ZWwg
MgogCi0gICAgICAgIERvY3VtZW50VHlwZSBjcmVhdGVEb2N1bWVudFR5cGUoaW4gRE9NU3RyaW5n
IHF1YWxpZmllZE5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gRE9NU3RyaW5nIHB1YmxpY0lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIERPTVN0cmluZyBzeXN0ZW1JZCkKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBE
b2N1bWVudFR5cGUgY3JlYXRlRG9jdW1lbnRUeXBlKGluIERPTVN0cmluZyBxdWFsaWZpZWROYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gRE9NU3RyaW5nIHB1YmxpY0lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIHN5c3RlbUlkKQogICAgICAg
ICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgICAgIERvY3VtZW50IGNyZWF0ZURvY3Vt
ZW50KGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwg
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0
cmluZ10gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERvY3VtZW50VHlwZSBkb2N0eXBl
KQorICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIERvY3VtZW50IGNyZWF0ZURvY3VtZW50KGluIFtD
b252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW0NvbnZlcnROdWxs
VG9OdWxsU3RyaW5nXSBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW0NvbnZlcnROdWxsVG9OdWxsU3Ry
aW5nXSBEb2N1bWVudFR5cGUgZG9jdHlwZSkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRp
b24pOwogCiAgICAgICAgIC8vIERPTUltcGxlbWVudGF0aW9uQ1NTIGludGVyZmFjZSBmcm9tIERP
TSBMZXZlbCAyIENTUwogCi0gICAgICAgIENTU1N0eWxlU2hlZXQgY3JlYXRlQ1NTU3R5bGVTaGVl
dChpbiBET01TdHJpbmcgdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBET01TdHJpbmcgbWVkaWEpCisgICAgICAgIFtPYmpDQ2F0YWdvcnk9RE9NSW1w
bGVtZW50YXRpb25DU1MsIFVzZXNQYXNzUmVmUHRyXSBDU1NTdHlsZVNoZWV0IGNyZWF0ZUNTU1N0
eWxlU2hlZXQoaW4gRE9NU3RyaW5nIHRpdGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIERPTVN0cmluZyBtZWRpYSkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNl
cHRpb24pOwogCiAgICAgICAgIC8vIEhUTUxET01JbXBsZW1lbnRhdGlvbiBpbnRlcmZhY2UgZnJv
bSBET00gTGV2ZWwgMiBIVE1MCiAKLSAgICAgICAgSFRNTERvY3VtZW50IGNyZWF0ZUhUTUxEb2N1
bWVudChpbiBET01TdHJpbmcgdGl0bGUpOworICAgICAgICBbT2JqQ0NhdGFnb3J5PURPTUltcGxl
bWVudGF0aW9uRXh0ZW5zaW9ucywgVXNlc1Bhc3NSZWZQdHJdIEhUTUxEb2N1bWVudCBjcmVhdGVI
VE1MRG9jdW1lbnQoaW4gRE9NU3RyaW5nIHRpdGxlKTsKICAgICB9OwogCiB9CkluZGV4OiBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQu
aWRsCShyZXZpc2lvbiAxNTk5NykKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUg
Q29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0u
d2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjksMTQ0ICszMCwxNDUg
QEAgbW9kdWxlIGNvcmUgewogICAgICAgICAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVs
ZW1lbnQgZG9jdW1lbnRFbGVtZW50OwogICAgICAgICAKLSAgICAgICAgRWxlbWVudCBjcmVhdGVF
bGVtZW50KGluIERPTVN0cmluZyB0YWdOYW1lKQorICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIEVs
ZW1lbnQgY3JlYXRlRWxlbWVudChpbiBET01TdHJpbmcgdGFnTmFtZSkKICAgICAgICAgICAgIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgCi0gICAgICAgIERvY3VtZW50RnJhZ21lbnQg
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIERvY3Vt
ZW50RnJhZ21lbnQgY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogICAgICAgICAKLSAgICAgICAg
VGV4dCBjcmVhdGVUZXh0Tm9kZShpbiBET01TdHJpbmcgZGF0YSk7CisgICAgICAgIFtVc2VzUGFz
c1JlZlB0cl0gVGV4dCBjcmVhdGVUZXh0Tm9kZShpbiBET01TdHJpbmcgZGF0YSk7CiAgICAgICAg
IAotICAgICAgICBDb21tZW50IGNyZWF0ZUNvbW1lbnQoaW4gRE9NU3RyaW5nIGRhdGEpOworICAg
ICAgICBbVXNlc1Bhc3NSZWZQdHJdIENvbW1lbnQgY3JlYXRlQ29tbWVudChpbiBET01TdHJpbmcg
ZGF0YSk7CiAgICAgICAgIAotICAgICAgICBDREFUQVNlY3Rpb24gY3JlYXRlQ0RBVEFTZWN0aW9u
KGluIERPTVN0cmluZyBkYXRhKQorICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIENEQVRBU2VjdGlv
biBjcmVhdGVDREFUQVNlY3Rpb24oaW4gRE9NU3RyaW5nIGRhdGEpCiAgICAgICAgICAgICByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgCi0gICAgICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlv
biBjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oaW4gRE9NU3RyaW5nIHRhcmdldCwgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
RE9NU3RyaW5nIGRhdGEpCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uIGNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihpbiBET01TdHJpbmcgdGFyZ2V0LCAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBkYXRhKQogICAgICAgICAgICAgcmFpc2Vz
IChET01FeGNlcHRpb24pOwogICAgICAgICAKLSAgICAgICAgQXR0ciBjcmVhdGVBdHRyaWJ1dGUo
aW4gRE9NU3RyaW5nIG5hbWUpCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gQXR0ciBjcmVhdGVB
dHRyaWJ1dGUoaW4gRE9NU3RyaW5nIG5hbWUpCiAgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2Vw
dGlvbik7CiAgICAgICAgIAotICAgICAgICBFbnRpdHlSZWZlcmVuY2UgY3JlYXRlRW50aXR5UmVm
ZXJlbmNlKGluIERPTVN0cmluZyBuYW1lKQorICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIEVudGl0
eVJlZmVyZW5jZSBjcmVhdGVFbnRpdHlSZWZlcmVuY2UoaW4gRE9NU3RyaW5nIG5hbWUpCiAgICAg
ICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgCi0gICAgICAgIE5vZGVMaXN0
IGdldEVsZW1lbnRzQnlUYWdOYW1lKGluIERPTVN0cmluZyB0YWduYW1lKTsKKyAgICAgICAgW1Vz
ZXNQYXNzUmVmUHRyXSBOb2RlTGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZShpbiBET01TdHJpbmcg
dGFnbmFtZSk7CiAgICAgICAgIAogICAgICAgICAvLyBET00gTGV2ZWwgMiBDb3JlCiAgICAgICAg
IAotICAgICAgICBOb2RlIGltcG9ydE5vZGUoaW4gTm9kZSBpbXBvcnRlZE5vZGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGRlZXApCisgICAgICAgIFtVc2VzUGFzc1JlZlB0
cl0gTm9kZSBpbXBvcnROb2RlKGluIE5vZGUgaW1wb3J0ZWROb2RlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGRlZXApCiAgICAgICAgICAgICBy
YWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIAotICAgICAgICBFbGVtZW50IGNyZWF0ZUVs
ZW1lbnROUyhpbiBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSkKKyAgICAgICAgW1VzZXNQYXNz
UmVmUHRyXSBFbGVtZW50IGNyZWF0ZUVsZW1lbnROUyhpbiBET01TdHJpbmcgbmFtZXNwYWNlVVJJ
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERP
TVN0cmluZyBxdWFsaWZpZWROYW1lKQogICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24p
OwogICAgICAgICAKLSAgICAgICAgQXR0ciBjcmVhdGVBdHRyaWJ1dGVOUyhpbiBET01TdHJpbmcg
bmFtZXNwYWNlVVJJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmlu
ZyBxdWFsaWZpZWROYW1lKQorICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIEF0dHIgY3JlYXRlQXR0
cmlidXRlTlMoaW4gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBxdWFsaWZpZWROYW1lKQog
ICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICAKLSAgICAgICAgTm9k
ZUxpc3QgZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhpbiBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBsb2Nh
bE5hbWUpOworICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIE5vZGVMaXN0IGdldEVsZW1lbnRzQnlU
YWdOYW1lTlMoaW4gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBsb2NhbE5h
bWUpOwogICAgICAgICAKICAgICAgICAgRWxlbWVudCBnZXRFbGVtZW50QnlJZChpbiBET01TdHJp
bmcgZWxlbWVudElkKTsKIAogICAgICAgICAvLyBET00gTGV2ZWwgMiBFdmVudHMgKERvY3VtZW50
RXZlbnRzIGludGVyZmFjZSkKIAotICAgICAgICBFdmVudCBjcmVhdGVFdmVudChpbiBET01TdHJp
bmcgZXZlbnRUeXBlKQorICAgICAgICBbT2JqQ0NhdGFnb3J5PURPTURvY3VtZW50RXZlbnQsIFVz
ZXNQYXNzUmVmUHRyXSBFdmVudCBjcmVhdGVFdmVudChpbiBET01TdHJpbmcgZXZlbnRUeXBlKQog
ICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgLy8gRE9NIExldmVs
IDIgVHJhbnZlcnNhbCBhbmQgUmFuZ2UgKERvY3VtZW50UmFuZ2UgaW50ZXJmYWNlKQogCi0gICAg
ICAgIFJhbmdlIGNyZWF0ZVJhbmdlKCk7CisgICAgICAgIFtPYmpDQ2F0YWdvcnk9RE9NRG9jdW1l
bnRSYW5nZSwgVXNlc1Bhc3NSZWZQdHJdIFJhbmdlIGNyZWF0ZVJhbmdlKCk7CiAKICAgICAgICAg
Ly8gRE9NIExldmVsIDIgVHJhbnZlcnNhbCBhbmQgUmFuZ2UgKERvY3VtZW50VHJhdmVyc2FsIGlu
dGVyZmFjZSkKIAotICAgICAgICBOb2RlSXRlcmF0b3IgY3JlYXRlTm9kZUl0ZXJhdG9yKGluIE5v
ZGUgcm9vdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdW5z
aWduZWQgbG9uZyB3aGF0VG9TaG93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIE5vZGVGaWx0ZXIgZmlsdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIGJvb2xlYW4gZW50aXR5UmVmZXJlbmNlRXhwYW5zaW9uKQorICAgICAg
ICBbT2JqQ1ByaXZhdGVdIE5vZGVJdGVyYXRvciBjcmVhdGVOb2RlSXRlcmF0b3IoaW4gTm9kZSBy
b290LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIHVuc2lnbmVkIGxvbmcgd2hhdFRvU2hvdywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIE5vZGVGaWx0ZXIgZmlsdGVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9v
bGVhbiBlbnRpdHlSZWZlcmVuY2VFeHBhbnNpb24pCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKIAotICAgICAgICBUcmVlV2Fsa2VyIGNyZWF0ZVRyZWVXYWxrZXIoaW4gTm9kZSBy
b290LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHVuc2lnbmVkIGxv
bmcgd2hhdFRvU2hvdywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBO
b2RlRmlsdGVyIGZpbHRlciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBib29sZWFuIGVudGl0eVJlZmVyZW5jZUV4cGFuc2lvbikKKyAgICAgICAgW09iakNQcml2YXRl
XSBUcmVlV2Fsa2VyIGNyZWF0ZVRyZWVXYWxrZXIoaW4gTm9kZSByb290LCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdW5zaWduZWQgbG9uZyB3
aGF0VG9TaG93LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gTm9kZUZpbHRlciBmaWx0ZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGVudGl0eVJlZmVyZW5jZUV4cGFuc2lv
bikKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgICAgIC8vIERPTSBM
ZXZlbCAyIEFic3RyYWN0IFZpZXdzIChEb2N1bWVudFZpZXcgaW50ZXJmYWNlKQogCi0gICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01XaW5kb3cgZGVmYXVsdFZpZXc7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBbT2JqQ0NhdGFnb3J5PURPTURvY3VtZW50Vmlld10gRE9NV2luZG93IGRl
ZmF1bHRWaWV3OwogCiAgICAgICAgIC8vIERPTSBMZXZlbCAyIFN0eWxlIChEb2N1bWVudFN0eWxl
IGludGVyZmFjZSkKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgU3R5bGVTaGVldExpc3Qg
c3R5bGVTaGVldHM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbT2JqQ0NhdGFnb3J5PURP
TURvY3VtZW50U3R5bGVdIFN0eWxlU2hlZXRMaXN0IHN0eWxlU2hlZXRzOwogCiAgICAgICAgIC8v
IERPTSBMZXZlbCAyIFN0eWxlIChEb2N1bWVudENTUyBpbnRlcmZhY2UpCiAKLSAgICAgICAgQ1NT
U3R5bGVEZWNsYXJhdGlvbiBnZXRPdmVycmlkZVN0eWxlKGluIEVsZW1lbnQgZWx0LCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBwc2V1
ZG9FbHQpOworICAgICAgICBbT2JqQ0NhdGFnb3J5PURPTURvY3VtZW50Q1NTXSBDU1NTdHlsZURl
Y2xhcmF0aW9uIGdldE92ZXJyaWRlU3R5bGUoaW4gRWxlbWVudCBlbHQsIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gRE9NU3RyaW5nIHBzZXVkb0VsdCk7CiAKICAgICAgICAgLy8gRE9NIExldmVsIDMg
Q29yZQogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJpbmdUbz1O
dWxsXSBET01TdHJpbmcgaW5wdXRFbmNvZGluZzsKLSAgICAgICAgTm9kZSBhZG9wdE5vZGUoaW4g
Tm9kZSBzb3VyY2UpCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJp
bmdUbz1OdWxsLCBPYmpDUHJpdmF0ZV0gRE9NU3RyaW5nIGlucHV0RW5jb2Rpbmc7CisgICAgICAg
IAorICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIE5vZGUgYWRvcHROb2RlKGluIE5vZGUgc291cmNl
KQogICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwogCiAjaWZkZWYgWFBBVEhfU1VQ
UE9SVAogICAgICAgICAvLyBET00gTGV2ZWwgMyBYUGF0aCAoWFBhdGhFdmFsdWF0b3IgaW50ZXJm
YWNlKQotICAgICAgICBYUGF0aEV4cHJlc3Npb24gY3JlYXRlRXhwcmVzc2lvbihpbiBET01TdHJp
bmcgZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gWFBhdGhOU1Jlc29sdmVyIHJlc29sdmVyKQorICAgICAgICBbT2JqQ0NhdGFnb3J5PURPTURv
Y3VtZW50WFBhdGgsIFVzZXNQYXNzUmVmUHRyXSBYUGF0aEV4cHJlc3Npb24gY3JlYXRlRXhwcmVz
c2lvbihpbiBET01TdHJpbmcgZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gWFBhdGhOU1Jlc29sdmVyIHJlc29sdmVyKQogICAgICAgICAgICAgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CiAKLSAgICAgICAgWFBhdGhOU1Jlc29sdmVyIGNyZWF0ZU5TUmVzb2x2ZXIo
aW4gTm9kZSBub2RlUmVzb2x2ZXIpOworICAgICAgICBbT2JqQ0NhdGFnb3J5PURPTURvY3VtZW50
WFBhdGgsIFVzZXNQYXNzUmVmUHRyXSBYUGF0aE5TUmVzb2x2ZXIgY3JlYXRlTlNSZXNvbHZlcihp
biBOb2RlIG5vZGVSZXNvbHZlcik7CiAgICAgICAgIAotICAgICAgICBYUGF0aFJlc3VsdCBldmFs
dWF0ZShpbiBET01TdHJpbmcgZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gTm9kZSBjb250ZXh0Tm9kZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IFhQYXRoTlNSZXNvbHZlciByZXNvbHZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gdW5zaWduZWQgc2hvcnQgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
WFBhdGhSZXN1bHQgaW5SZXN1bHQpCisgICAgICAgIFtPYmpDQ2F0YWdvcnk9RE9NRG9jdW1lbnRY
UGF0aCwgVXNlc1Bhc3NSZWZQdHJdIFhQYXRoUmVzdWx0IGV2YWx1YXRlKGluIERPTVN0cmluZyBl
eHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBOb2RlIGNvbnRleHROb2RlLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gWFBhdGhOU1Jlc29sdmVyIHJlc29sdmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiB1bnNpZ25lZCBzaG9ydCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBYUGF0aFJlc3VsdCBpblJlc3VsdCkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OwogI2VuZGlmCiAKICAgICAgICAgLy8gQ29tbW9uIGV4dGVuc2lvbnMKIAotICAgICAgICBib29s
ZWFuIGV4ZWNDb21tYW5kKGluIERPTVN0cmluZyBjb21tYW5kLCAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBib29sZWFuIHVzZXJJbnRlcmZhY2UsIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIERPTVN0cmluZyB2YWx1ZSk7CisgICAgICAgIFtPYmpDUHJpdmF0ZV0gYm9v
bGVhbiBleGVjQ29tbWFuZChpbiBET01TdHJpbmcgY29tbWFuZCwgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIHVzZXJJbnRlcmZhY2UsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIHZhbHVl
KTsKIAotICAgICAgICBib29sZWFuIHF1ZXJ5Q29tbWFuZEVuYWJsZWQoaW4gRE9NU3RyaW5nIGNv
bW1hbmQpOworICAgICAgICBbT2JqQ1ByaXZhdGVdIGJvb2xlYW4gcXVlcnlDb21tYW5kRW5hYmxl
ZChpbiBET01TdHJpbmcgY29tbWFuZCk7CiAKLSAgICAgICAgYm9vbGVhbiBxdWVyeUNvbW1hbmRJ
bmRldGVybShpbiBET01TdHJpbmcgY29tbWFuZCk7CisgICAgICAgIFtPYmpDUHJpdmF0ZV0gYm9v
bGVhbiBxdWVyeUNvbW1hbmRJbmRldGVybShpbiBET01TdHJpbmcgY29tbWFuZCk7CiAKLSAgICAg
ICAgYm9vbGVhbiBxdWVyeUNvbW1hbmRTdGF0ZShpbiBET01TdHJpbmcgY29tbWFuZCk7CisgICAg
ICAgIFtPYmpDUHJpdmF0ZV0gYm9vbGVhbiBxdWVyeUNvbW1hbmRTdGF0ZShpbiBET01TdHJpbmcg
Y29tbWFuZCk7CiAKLSAgICAgICAgYm9vbGVhbiBxdWVyeUNvbW1hbmRTdXBwb3J0ZWQoaW4gRE9N
U3RyaW5nIGNvbW1hbmQpOworICAgICAgICBbT2JqQ1ByaXZhdGVdIGJvb2xlYW4gcXVlcnlDb21t
YW5kU3VwcG9ydGVkKGluIERPTVN0cmluZyBjb21tYW5kKTsKIAotICAgICAgICBbQ29udmVydE51
bGxTdHJpbmdUbz1GYWxzZV0gRE9NU3RyaW5nIHF1ZXJ5Q29tbWFuZFZhbHVlKGluIERPTVN0cmlu
ZyBjb21tYW5kKTsKKyAgICAgICAgW0NvbnZlcnROdWxsU3RyaW5nVG89RmFsc2UsIE9iakNQcml2
YXRlXSBET01TdHJpbmcgcXVlcnlDb21tYW5kVmFsdWUoaW4gRE9NU3RyaW5nIGNvbW1hbmQpOwog
CiAgICAgICAgIC8vIElFIGV4dGVuc2lvbnMKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIFVSTDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtPYmpDUHJpdmF0ZV0g
RE9NU3RyaW5nIFVSTDsKIAotICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5nVG89
VW5kZWZpbmVkXSBET01TdHJpbmcgY2hhcnNldDsKKyAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0
TnVsbFN0cmluZ1RvPVVuZGVmaW5lZCwgT2JqQ1ByaXZhdGVdIERPTVN0cmluZyBjaGFyc2V0Owog
Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJpbmdUbz1VbmRlZmlu
ZWRdIERPTVN0cmluZyBkZWZhdWx0Q2hhcnNldDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZCwgT2JqQ1ByaXZhdGVdIERPTVN0cmluZyBk
ZWZhdWx0Q2hhcnNldDsKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxs
U3RyaW5nVG89VW5kZWZpbmVkXSBET01TdHJpbmcgcmVhZHlTdGF0ZTsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZCwgT2JqQ1ByaXZhdGVd
IERPTVN0cmluZyByZWFkeVN0YXRlOwogCi0gICAgICAgIEVsZW1lbnQgZWxlbWVudEZyb21Qb2lu
dChpbiBsb25nIHgsIGluIGxvbmcgeSk7CisgICAgICAgIFtPYmpDUHJpdmF0ZV0gRWxlbWVudCBl
bGVtZW50RnJvbVBvaW50KGluIGxvbmcgeCwgaW4gbG9uZyB5KTsKIAogICAgICAgICAvLyBNb3pp
bGxhIGV4dGVuc2lvbnMKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxs
U3RyaW5nVG89TnVsbF0gRE9NU3RyaW5nIGNoYXJhY3RlclNldDsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFtDb252ZXJ0TnVsbFN0cmluZ1RvPU51bGwsIE9iakNQcml2YXRlXSBET01TdHJp
bmcgY2hhcmFjdGVyU2V0OwogCiAgICAgICAgIC8vIFdlYktpdCBleHRlbnNpb25zCiAKLSAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFN0cmluZ1RvPU51bGxdIERPTVN0cmlu
ZyBwcmVmZXJyZWRTdHlsZXNoZWV0U2V0OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0Nv
bnZlcnROdWxsU3RyaW5nVG89TnVsbCwgT2JqQ1ByaXZhdGVdIERPTVN0cmluZyBwcmVmZXJyZWRT
dHlsZXNoZWV0U2V0OwogCi0gICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJpbmdUbz1O
dWxsXSBET01TdHJpbmcgc2VsZWN0ZWRTdHlsZXNoZWV0U2V0OworICAgICAgICBhdHRyaWJ1dGUg
W0NvbnZlcnROdWxsU3RyaW5nVG89TnVsbCwgT2JqQ1ByaXZhdGVdIERPTVN0cmluZyBzZWxlY3Rl
ZFN0eWxlc2hlZXRTZXQ7CiAKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkocmV2aXNpb24gMTU5OTcp
CisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENv
cHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMzQsMTUgKzM1LDE1IEBAIG1vZHVsZSBjb3JlIHsKICAgICAg
ICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoaW4gRE9NU3RyaW5nIG5hbWUpCiAgICAgICAgICAgICBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKIAotICAgICAgICBBdHRyIGdldEF0dHJpYnV0ZU5vZGUoaW4g
RE9NU3RyaW5nIG5hbWUpOworICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIEF0dHIgZ2V0QXR0cmli
dXRlTm9kZShpbiBET01TdHJpbmcgbmFtZSk7CiAKLSAgICAgICAgQXR0ciBzZXRBdHRyaWJ1dGVO
b2RlKGluIEF0dHIgbmV3QXR0cikKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBBdHRyIHNldEF0
dHJpYnV0ZU5vZGUoaW4gQXR0ciBuZXdBdHRyKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAKLSAgICAgICAgQXR0ciByZW1vdmVBdHRyaWJ1dGVOb2RlKGluIEF0dHIgb2xkQXR0
cikKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBBdHRyIHJlbW92ZUF0dHJpYnV0ZU5vZGUoaW4g
QXR0ciBvbGRBdHRyKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKLSAgICAg
ICAgTm9kZUxpc3QgZ2V0RWxlbWVudHNCeVRhZ05hbWUoaW4gRE9NU3RyaW5nIG5hbWUpOworICAg
ICAgICBbVXNlc1Bhc3NSZWZQdHJdIE5vZGVMaXN0IGdldEVsZW1lbnRzQnlUYWdOYW1lKGluIERP
TVN0cmluZyBuYW1lKTsKIAogICAgICAgICAvLyBET00gTGV2ZWwgMiBDb3JlCiAKQEAgLTU4LDEz
ICs1OSwxMyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gRE9NU3RyaW5nIGxvY2FsTmFtZSkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OwogCi0gICAgICAgIE5vZGVMaXN0IGdldEVsZW1lbnRzQnlUYWdOYW1lTlMoaW4gW0NvbnZlcnRO
dWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBsb2NhbE5hbWUpOworICAgICAg
ICBbVXNlc1Bhc3NSZWZQdHJdIE5vZGVMaXN0IGdldEVsZW1lbnRzQnlUYWdOYW1lTlMoaW4gW0Nv
bnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3Ry
aW5nIGxvY2FsTmFtZSk7CiAKLSAgICAgICAgQXR0ciBnZXRBdHRyaWJ1dGVOb2RlTlMoaW4gW0Nv
bnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgbG9jYWxOYW1lKTsKKyAgICAgICAg
W1VzZXNQYXNzUmVmUHRyXSBBdHRyIGdldEF0dHJpYnV0ZU5vZGVOUyhpbiBbQ29udmVydE51bGxU
b051bGxTdHJpbmddIERPTVN0cmluZyBuYW1lc3BhY2VVUkksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIGxvY2FsTmFtZSk7CiAK
LSAgICAgICAgQXR0ciBzZXRBdHRyaWJ1dGVOb2RlTlMoaW4gQXR0ciBuZXdBdHRyKQorICAgICAg
ICBbVXNlc1Bhc3NSZWZQdHJdIEF0dHIgc2V0QXR0cmlidXRlTm9kZU5TKGluIEF0dHIgbmV3QXR0
cikKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgICAgIGJvb2xlYW4g
aGFzQXR0cmlidXRlKGluIERPTVN0cmluZyBuYW1lKTsKQEAgLTcyLDUzICs3Myw1MyBAQCBtb2R1
bGUgY29yZSB7CiAgICAgICAgIGJvb2xlYW4gaGFzQXR0cmlidXRlTlMoaW4gW0NvbnZlcnROdWxs
VG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIERPTVN0cmluZyBsb2NhbE5hbWUpOwogCi0gICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBDU1NTdHlsZURlY2xhcmF0aW9uIHN0eWxlOworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgW09iakNDYXRhZ29yeT1ET01FbGVtZW50Q1NTSW5saW5lU3R5bGVdIENTU1N0eWxl
RGVjbGFyYXRpb24gc3R5bGU7CiAKICAgICAgICAgLy8gQ29tbW9uIGV4dGVuc2lvbnMKIAotICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBvZmZzZXRMZWZ0OworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgW09iakNQcml2YXRlXSBsb25nIG9mZnNldExlZnQ7CiAKLSAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGxvbmcgb2Zmc2V0VG9wOworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgW09iakNQcml2YXRlXSBsb25nIG9mZnNldFRvcDsKIAotICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgbG9uZyBvZmZzZXRXaWR0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtPYmpD
UHJpdmF0ZV0gbG9uZyBvZmZzZXRXaWR0aDsKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
bG9uZyBvZmZzZXRIZWlnaHQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbT2JqQ1ByaXZh
dGVdIGxvbmcgb2Zmc2V0SGVpZ2h0OwogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVt
ZW50IG9mZnNldFBhcmVudDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtPYmpDUHJpdmF0
ZV0gRWxlbWVudCBvZmZzZXRQYXJlbnQ7CiAgICAgICAgIAotICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgbG9uZyBjbGllbnRXaWR0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtPYmpD
UHJpdmF0ZV0gbG9uZyBjbGllbnRXaWR0aDsKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
bG9uZyBjbGllbnRIZWlnaHQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbT2JqQ1ByaXZh
dGVdIGxvbmcgY2xpZW50SGVpZ2h0OwogCi0gICAgICAgIGF0dHJpYnV0ZSBsb25nIHNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbT2JqQ1ByaXZhdGVdIGxvbmcgc2Nyb2xs
TGVmdDsKIAotICAgICAgICBhdHRyaWJ1dGUgbG9uZyBzY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZSBbT2JqQ1ByaXZhdGVdIGxvbmcgc2Nyb2xsVG9wOwogCi0gICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBsb25nIHNjcm9sbFdpZHRoOworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgW09iakNQcml2YXRlXSBsb25nIHNjcm9sbFdpZHRoOwogCi0gICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBsb25nIHNjcm9sbEhlaWdodDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFtPYmpDUHJpdmF0ZV0gbG9uZyBzY3JvbGxIZWlnaHQ7CiAKICAgICAgICAgdm9pZCBmb2N1cygp
OwogCiAgICAgICAgIHZvaWQgYmx1cigpOwogCi0gICAgICAgIHZvaWQgc2Nyb2xsSW50b1ZpZXco
aW4gW09wdGlvbmFsXSBib29sZWFuIGFsaWduV2l0aFRvcCk7CisgICAgICAgIFtPYmpDQ2F0YWdv
cnk9RE9NRWxlbWVudEV4dGVuc2lvbnNGSVhdIHZvaWQgc2Nyb2xsSW50b1ZpZXcoaW4gW09wdGlv
bmFsXSBib29sZWFuIGFsaWduV2l0aFRvcCk7CiAKICAgICAgICAgLy8gSUUgZXh0ZW5zaW9ucwog
Ci0gICAgICAgIE5vZGUgaW5zZXJ0QWRqYWNlbnRFbGVtZW50KGluIERPTVN0cmluZyBwb3NpdGlv
biwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIE5vZGUgbmV3RWxlbWVu
dCkKKyAgICAgICAgW09iakNQcml2YXRlXSBOb2RlIGluc2VydEFkamFjZW50RWxlbWVudChpbiBE
T01TdHJpbmcgcG9zaXRpb24sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIE5vZGUgbmV3RWxlbWVudCkKICAgICAgICAgICAgIHJhaXNlcyhET01F
eGNlcHRpb24pOwogICAgICAgICAKLSAgICAgICAgYm9vbGVhbiBjb250YWlucyhpbiBFbGVtZW50
IGVsZW1lbnQpOworICAgICAgICBbT2JqQ1ByaXZhdGVdIGJvb2xlYW4gY29udGFpbnMoaW4gRWxl
bWVudCBlbGVtZW50KTsKIAogICAgICAgICAvLyBXZWJLaXQgZXh0ZW5zaW9ucwogCi0gICAgICAg
IHZvaWQgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChpbiBbT3B0aW9uYWxdIGJvb2xlYW4gY2VudGVy
SWZOZWVkZWQpOworICAgICAgICBbT2JqQ0NhdGFnb3J5PURPTUVsZW1lbnRFeHRlbnNpb25zRklY
XSB2b2lkIHNjcm9sbEludG9WaWV3SWZOZWVkZWQoaW4gW09wdGlvbmFsXSBib29sZWFuIGNlbnRl
cklmTmVlZGVkKTsKIAotICAgICAgICB2b2lkIHNjcm9sbEJ5TGluZXMoaW4gbG9uZyBsaW5lcyk7
CisgICAgICAgIFtPYmpDUHJpdmF0ZV0gdm9pZCBzY3JvbGxCeUxpbmVzKGluIGxvbmcgbGluZXMp
OwogCi0gICAgICAgIHZvaWQgc2Nyb2xsQnlQYWdlcyhpbiBsb25nIHBhZ2VzKTsKKyAgICAgICAg
W09iakNQcml2YXRlXSB2b2lkIHNjcm9sbEJ5UGFnZXMoaW4gbG9uZyBwYWdlcyk7CiAKICAgICB9
OwogCkluZGV4OiBXZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0VudGl0eVJlZmVyZW5jZS5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L2RvbS9FbnRpdHlSZWZlcmVuY2UuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwu
Y29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ
bGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisK
K21vZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFjZSBFbnRpdHlSZWZlcmVuY2UgOiBOb2RlIHsK
KyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL2RvbS9OYW1lZE5vZGVNYXAuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwu
Y29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ
bGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisK
K21vZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFjZSBOYW1lZE5vZGVNYXAgeworCisgICAgICAg
IFtVc2VzUGFzc1JlZlB0cl0gTm9kZSBnZXROYW1lZEl0ZW0oaW4gRE9NU3RyaW5nIG5hbWUpOwor
CisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gTm9kZSBzZXROYW1lZEl0ZW0oaW4gTm9kZSBhcmcp
CisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICBbVXNlc1Bhc3NS
ZWZQdHJdIE5vZGUgcmVtb3ZlTmFtZWRJdGVtKGluIERPTVN0cmluZyBuYW1lKQorICAgICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBOb2Rl
IGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgICAgIAorICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisKKworICAgICAgICAvLyBJbnRyb2R1
Y2VkIGluIERPTSBMZXZlbCAyOgorCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gTm9kZSBnZXRO
YW1lZEl0ZW1OUyhpbiBET01TdHJpbmcgbmFtZXNwYWNlVVJJLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBsb2NhbE5hbWUpCisgICAg
ICAgICAgICAvLyBGSVhNRTogdGhlIGltcGxlbWVudGF0aW9uIGRvZXMgdGFrZSBhbiBleGNlcHRp
b25jb2RlIHBhcmFtZXRlci4KKyAgICAgICAgICAgIC8qcmFpc2VzKERPTUV4Y2VwdGlvbikqLzsK
KworICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIE5vZGUgc2V0TmFtZWRJdGVtTlMoaW4gTm9kZSBh
cmcpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICBbVXNlc1Bh
c3NSZWZQdHJdIE5vZGUgcmVtb3ZlTmFtZWRJdGVtTlMoaW4gRE9NU3RyaW5nIG5hbWVzcGFjZVVS
SSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBE
T01TdHJpbmcgbG9jYWxOYW1lKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisK
KyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlTGlzdC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vTm9kZUxpc3QuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20v
Tm9kZUxpc3QuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRl
IDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKK21vZHVsZSBjb3Jl
IHsKKworICAgIGludGVyZmFjZSBOb2RlTGlzdCB7CisKKyAgICAgICAgTm9kZSBpdGVtKGluIFtJ
c0luZGV4XSB1bnNpZ25lZCBsb25nIGluZGV4KTsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1By
b2Nlc3NpbmdJbnN0cnVjdGlvbi5pZGwJKHJldmlzaW9uIDE1OTk3KQorKysgV2ViQ29yZS9kb20v
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHly
aWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtMjksNyArMzAsNyBAQCBtb2R1bGUgY29yZSB7CiAKICAgICAgICAg
Ly8gaW50ZXJmYWNlIExpbmtTdHlsZSBmcm9tIERPTSBMZXZlbCAyIFN0eWxlIFNoZWV0cwogCi0g
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdHlsZVNoZWV0IHNoZWV0OworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgW09iakNQcml2YXRlXSBTdHlsZVNoZWV0IHNoZWV0OwogCiAgICAgfTsK
IApJbmRleDogV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjA1MSkKKysrIFdlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNSBAQAorMjAwNi0wOC0yNiAgU2FtIFdlaW5pZyAgPHNhbS53ZWluaWdAZ21haWwu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0g
cGF0Y2ggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDYyNAorICAgICAgICAgIFdlYkNvcmUgbmVlZHMgYXV0b2dlbmVyYXRlZCBPYmotQyBET00gYmlu
ZGluZ3MKKyAgICAgICAgICAKKyAgICAgICAgICBGaXJzdCByb3VuZCBvZiBhdXRvLWdlbmVyYXRl
ZCBPYmplY3RpdmUgQyBET00gYmluZGluZ3MsIHN0YXJ0aW5nCisgICAgICAgICAgd2l0aCB0aGUg
RE9NIENvcmUuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KwogMjAwNi0wOC0yNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgVGltIEhhdGNoZXIKSW5kZXg6IFdlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1OTk3KQorKysgV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04NjYsMTkgKzg2NiwxNyBAQAog
CQk5QzdDQUJCQjAxOTBBMzdDMEVDQTE2RUEgLyogV2ViVmlldyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNjU4QTQwOTUwQTE0ODUzQjAwNUU2OTg3IC8q
IFdlYkRhdGFTb3VyY2VJbnRlcm5hbC5oICovLAotCQkJCTY1MEY3NEUyMDlFNDg4RjcwMDIwMTE4
QSAvKiBXZWJVbmFyY2hpdmluZ1N0YXRlLmggKi8sCi0JCQkJNjUwRjc0RTMwOUU0ODhGNzAwMjAx
MThBIC8qIFdlYlVuYXJjaGl2aW5nU3RhdGUubSAqLywKLQkJCQk2NTUwQjdDNTA5OUVGQUU5MDA5
MEQ3ODEgLyogV2ViQXJjaGl2ZXIuaCAqLywKLQkJCQk2NTUwQjdDNjA5OUVGQUU5MDA5MEQ3ODEg
LyogV2ViQXJjaGl2ZXIubSAqLywKIAkJCQlGNTJDQTZCRDAyREY5RDBGMDE4NjM1Q0EgLyogSFRN
TCAqLywKIAkJCQk1MUU5NEMwNzA2QzAyQ0EzMDBBOUIwOUUgLyogUERGICovLAogCQkJCTgzNzM0
MzVBMDYyNEVFMEQwMEYzQjI4OSAvKiBXZWJBcmNoaXZlLmggKi8sCiAJCQkJODM3MzQzNUIwNjI0
RUUwRDAwRjNCMjg5IC8qIFdlYkFyY2hpdmUubSAqLywKKwkJCQk2NTUwQjdDNTA5OUVGQUU5MDA5
MEQ3ODEgLyogV2ViQXJjaGl2ZXIuaCAqLywKKwkJCQk2NTUwQjdDNjA5OUVGQUU5MDA5MEQ3ODEg
LyogV2ViQXJjaGl2ZXIubSAqLywKIAkJCQk5MzNENjU5OTAzNDEzRkYyMDA4NjM1Q0UgLyogV2Vi
Q2xpcFZpZXcuaCAqLywKIAkJCQk5MzNENjU5QTAzNDEzRkYyMDA4NjM1Q0UgLyogV2ViQ2xpcFZp
ZXcubSAqLywKIAkJCQkzOTQ0NjA3MDAyMEY1MEVEMEVDQTE3NjcgLyogV2ViRGF0YVNvdXJjZS5o
ICovLAogCQkJCTM5NDQ2MDcxMDIwRjUwRUQwRUNBMTc2NyAvKiBXZWJEYXRhU291cmNlLm0gKi8s
CisJCQkJNjU4QTQwOTUwQTE0ODUzQjAwNUU2OTg3IC8qIFdlYkRhdGFTb3VyY2VJbnRlcm5hbC5o
ICovLAogCQkJCTM5NDQ2MDcyMDIwRjUwRUQwRUNBMTc2NyAvKiBXZWJEYXRhU291cmNlUHJpdmF0
ZS5oICovLAogCQkJCTM1MDgxREFFMDJCNkQ0RjUwQUNBMkFDQSAvKiBXZWJEb2N1bWVudC5oICov
LAogCQkJCUVEMjFCOTgxMDUyOEY3QUEwMDMyOTlBQyAvKiBXZWJEb2N1bWVudEludGVybmFsLmgg
Ki8sCkBAIC05MTQsNiArOTEyLDggQEAKIAkJCQk3RTZGRUYwNzA4OTg1QTcyMDBDNDRDM0YgLyog
V2ViU2NyaXB0RGVidWdEZWxlZ2F0ZVByaXZhdGUuaCAqLywKIAkJCQk1MTVFMjdDQzA0NThDODY1
MDBDQTJEM0EgLyogV2ViVUlEZWxlZ2F0ZS5oICovLAogCQkJCTY1QTdENDRBMDU2OEFCMjYwMEU3
MEVGNiAvKiBXZWJVSURlbGVnYXRlUHJpdmF0ZS5oICovLAorCQkJCTY1MEY3NEUyMDlFNDg4Rjcw
MDIwMTE4QSAvKiBXZWJVbmFyY2hpdmluZ1N0YXRlLmggKi8sCisJCQkJNjUwRjc0RTMwOUU0ODhG
NzAwMjAxMThBIC8qIFdlYlVuYXJjaGl2aW5nU3RhdGUubSAqLywKIAkJCQk1MUE4QjU3OTA0Mjgz
NEY3MDBDQTJEM0EgLyogV2ViVmlldy5oICovLAogCQkJCTUxQThCNTdBMDQyODM0RjcwMENBMkQz
QSAvKiBXZWJWaWV3Lm0gKi8sCiAJCQkJOTMwRDAyQkIwNjI3NUY2NDAwNzY3MDFFIC8qIFdlYlZp
ZXdJbnRlcm5hbC5oICovLApAQCAtMTIzMSw2ICsxMjMxLDI0IEBACiAJCQlidWlsZFBoYXNlcyA9
ICgKIAkJCQk5M0FGNTI4NzA4MjU0QjMzMDA1RDAxNTYgLyogRE9NLmggKi8sCiAJCQkJOTNBRjUy
QTcwODI1NEQ4QjAwNUQwMTU2IC8qIERPTUNvcmUuaCAqLywKKwkJCQk4NTI2RDc0RDBBOEZFRjAy
MDA5MjM0QjEgLyogRE9NQXR0ci5oICovLAorCQkJCTg1MzExRjY5MEE4RjkwOTEwMDUxMjVDOSAv
KiBET01DREFUQVNlY3Rpb24uaCAqLywKKwkJCQk4NTI2RDZCRjBBOEZFNjBCMDA5MjM0QjEgLyog
RE9NQ2hhcmFjdGVyRGF0YS5oICovLAorCQkJCTg1MzExRjcyMEE4RjkwRjYwMDUxMjVDOSAvKiBE
T01Db21tZW50LmggKi8sCisJCQkJODU2Qzg5REUwQTkwRTM4MzAwNUM2ODdCIC8qIERPTURvY3Vt
ZW50LmggKi8sCisJCQkJODVDOTA2NkYwQThGRDExQzAwQzM3RDkxIC8qIERPTURvY3VtZW50RnJh
Z21lbnQuaCAqLywKKwkJCQk4NUM5MDVGMzBBOEZDQ0IyMDBDMzdEOTEgLyogRE9NRG9jdW1lbnRU
eXBlLmggKi8sCisJCQkJODUzOUI1NjUwQTkwM0VCOTAwMzY2QzJEIC8qIERPTURPTUltcGxlbWVu
dGF0aW9uLmggKi8sCisJCQkJODVBNUM1RTEwQTkwMzJCMzAwRjkxRjJDIC8qIERPTUVsZW1lbnQu
aCAqLywKKwkJCQk4NTMxMUY3NTBBOEY5MTY4MDA1MTI1QzkgLyogRE9NRW50aXR5LmggKi8sCisJ
CQkJODUzMTFGODgwQThGOTFGRTAwNTEyNUM5IC8qIERPTUVudGl0eVJlZmVyZW5jZS5oICovLAor
CQkJCTg1MjZEN0VBMEE4RkY2NEMwMDkyMzRCMSAvKiBET01OYW1lZE5vZGVNYXAuaCAqLywKKwkJ
CQk4NTZDOEE5MzBBOTBGNTRGMDA1QzY4N0IgLyogRE9NTm9kZS5oICovLAorCQkJCTg1QTg1QjU5
MEE5MDJDMzIwMEE1Q0YzQSAvKiBET01Ob2RlTGlzdC5oICovLAorCQkJCTg1MzExRkU5MEE4Rjk4
QjkwMDUxMjVDOSAvKiBET01Ob3RhdGlvbi5oICovLAorCQkJCTg1NkM4QjdCMEE5MTI5QjgwMDVD
Njg3QiAvKiBET01PYmplY3QuaCAqLywKKwkJCQk4NTMxMjAxMzBBOEY5QTUyMDA1MTI1QzkgLyog
RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggKi8sCisJCQkJODUyNkQ2NDEwQThGREI4NDAwOTIz
NEIxIC8qIERPTVRleHQuaCAqLywKIAkJCQk5M0FGNTJBOTA4MjU0RDhGMDA1RDAxNTYgLyogRE9N
Q1NTLmggKi8sCiAJCQkJOTNBRjUyQTUwODI1NEQ4NzAwNUQwMTU2IC8qIERPTUV2ZW50cy5oICov
LAogCQkJCTkzQUY1MkEzMDgyNTREODEwMDVEMDE1NiAvKiBET01FeHRlbnNpb25zLmggKi8sCkBA
IC0xMzIyLDYgKzEzNDAsMjk0IEBACiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwogCQkJc2hlbGxT
Y3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9M
REVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9I
RUFERVJTX0RJUi9ET01YUGF0aC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVB
REVSU19GT0xERVJfUEFUSC9ET01YUGF0aC5oXCIiOwogCQl9OworCQk4NTI2RDY0MTBBOEZEQjg0
MDA5MjM0QjEgLyogRE9NVGV4dC5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWls
ZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAor
CQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNf
RElSKS9ET01UZXh0LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01UZXh0Lmg7CisJCQlvdXRwdXRQ
YXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERF
Ul9QQVRIKS9ET01UZXh0LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0g
Im1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRI
XCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19E
SVIvRE9NVGV4dC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xE
RVJfUEFUSC9ET01UZXh0LmhcIiI7CisJCX07CisJCTg1MjZENkJGMEE4RkU2MEIwMDkyMzRCMSAv
KiBET01DaGFyYWN0ZXJEYXRhLmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxk
UGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJ
CQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19E
SVIpL0RPTUNoYXJhY3RlckRhdGEuaCIsCisJCQkpOworCQkJbmFtZSA9IERPTUNoYXJhY3RlckRh
dGEuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVC
TElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUNoYXJhY3RlckRhdGEuaCIsCisJCQkpOworCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAv
YmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8k
UFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwi
JFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01DaGFyYWN0ZXJEYXRhLmhcIiA+IFwiJFRB
UkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTUNoYXJhY3RlckRh
dGEuaFwiIjsKKwkJfTsKKwkJODUyNkQ3NEQwQThGRUYwMjAwOTIzNEIxIC8qIERPTUF0dHIuaCAq
LyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0g
KAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NQXR0ci5oIiwKKwkJCSk7
CisJCQluYW1lID0gRE9NQXR0ci5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VU
X0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NQXR0ci5oIiwKKwkJ
CSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxs
UGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJ
TERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dl
YktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUF0dHIuaFwiID4gXCIkVEFS
R0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NQXR0ci5oXCIiOwor
CQl9OworCQk4NTI2RDdFQTBBOEZGNjRDMDA5MjM0QjEgLyogRE9NTmFtZWROb2RlTWFwLmggKi8g
PSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgK
KwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTU5hbWVkTm9kZU1hcC5oIiwK
KwkJCSk7CisJCQluYW1lID0gRE9NTmFtZWROb2RlTWFwLmg7CisJCQlvdXRwdXRQYXRocyA9ICgK
KwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9E
T01OYW1lZE5vZGVNYXAuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAi
bWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhc
Ilxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJ
Ui9ET01OYW1lZE5vZGVNYXAuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURF
UlNfRk9MREVSX1BBVEgvRE9NTmFtZWROb2RlTWFwLmhcIiI7CisJCX07CisJCTg1MzExRjY5MEE4
RjkwOTEwMDUxMjVDOSAvKiBET01DREFUQVNlY3Rpb24uaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJ
VkFURV9IRUFERVJTX0RJUikvRE9NQ0RBVEFTZWN0aW9uLmgiLAorCQkJKTsKKwkJCW5hbWUgPSBE
T01DREFUQVNlY3Rpb24uaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlM
RF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUNEQVRBU2VjdGlvbi5oIiwK
KwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNo
ZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRf
QlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3Jl
L1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUNEQVRBU2VjdGlvbi5o
XCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01D
REFUQVNlY3Rpb24uaFwiIjsKKwkJfTsKKwkJODUzMTFGNzIwQThGOTBGNjAwNTEyNUM5IC8qIERP
TUNvbW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlp
bnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NQ29t
bWVudC5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NQ29tbWVudC5oOworCQkJb3V0cHV0UGF0aHMg
PSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFU
SCkvRE9NQ29tbWVudC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJt
a2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwi
XG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElS
L0RPTUNvbW1lbnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9M
REVSX1BBVEgvRE9NQ29tbWVudC5oXCIiOworCQl9OworCQk4NTMxMUY3NTBBOEY5MTY4MDA1MTI1
QzkgLyogRE9NRW50aXR5LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhh
c2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkp
OworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIp
L0RPTUVudGl0eS5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NRW50aXR5Lmg7CisJCQlvdXRwdXRQ
YXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERF
Ul9QQVRIKS9ET01FbnRpdHkuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQg
PSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BB
VEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJT
X0RJUi9ET01FbnRpdHkuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNf
Rk9MREVSX1BBVEgvRE9NRW50aXR5LmhcIiI7CisJCX07CisJCTg1MzExRjg4MEE4RjkxRkUwMDUx
MjVDOSAvKiBET01FbnRpdHlSZWZlcmVuY2UuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2Ny
aXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxl
cyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9I
RUFERVJTX0RJUikvRE9NRW50aXR5UmVmZXJlbmNlLmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01F
bnRpdHlSZWZlcmVuY2UuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlM
RF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUVudGl0eVJlZmVyZW5jZS5o
IiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJ
CXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJH
RVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJD
b3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUVudGl0eVJlZmVy
ZW5jZS5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFU
SC9ET01FbnRpdHlSZWZlcmVuY2UuaFwiIjsKKwkJfTsKKwkJODUzMTFGRTkwQThGOThCOTAwNTEy
NUM5IC8qIERPTU5vdGF0aW9uLmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxk
UGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJ
CQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19E
SVIpL0RPTU5vdGF0aW9uLmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01Ob3RhdGlvbi5oOworCQkJ
b3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVS
U19GT0xERVJfUEFUSCkvRE9NTm90YXRpb24uaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hl
bGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNf
Rk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFU
RV9IRUFERVJTX0RJUi9ET01Ob3RhdGlvbi5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJM
SUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01Ob3RhdGlvbi5oXCIiOworCQl9OworCQk4NTMxMjAx
MzBBOEY5QTUyMDA1MTI1QzkgLyogRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggKi8gPSB7CisJ
CQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQki
JChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5o
IiwKKwkJCSk7CisJCQluYW1lID0gRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmg7CisJCQlvdXRw
dXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZP
TERFUl9QQVRIKS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIsCisJCQkpOworCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3No
OworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElD
X0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNP
UkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaFwiID4gXCIk
VEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmhcIiI7CisJCX07CisJCTg1MzlCNTY1MEE5MDNFQjkwMDM2NkMyRCAvKiBE
T01ET01JbXBsZW1lbnRhdGlvbi5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWls
ZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAor
CQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNf
RElSKS9ET01ET01JbXBsZW1lbnRhdGlvbi5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NRE9NSW1w
bGVtZW50YXRpb24uaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9E
SVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTURPTUltcGxlbWVudGF0aW9uLmgi
LAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJ
c2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdF
VF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNv
cmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NRE9NSW1wbGVtZW50
YXRpb24uaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BB
VEgvRE9NRE9NSW1wbGVtZW50YXRpb24uaFwiIjsKKwkJfTsKKwkJODU2Qzg5REUwQTkwRTM4MzAw
NUM2ODdCIC8qIERPTURvY3VtZW50LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1
aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAo
CisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVS
U19ESVIpL0RPTURvY3VtZW50LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01Eb2N1bWVudC5oOwor
CQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVB
REVSU19GT0xERVJfUEFUSCkvRE9NRG9jdW1lbnQuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJ
c2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURF
UlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJ
VkFURV9IRUFERVJTX0RJUi9ET01Eb2N1bWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQ
VUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01Eb2N1bWVudC5oXCIiOworCQl9OworCQk4NTZD
OEE5MzBBOTBGNTRGMDA1QzY4N0IgLyogRE9NTm9kZS5oICovID0geworCQkJaXNhID0gUEJYU2hl
bGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJ
CWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklW
QVRFX0hFQURFUlNfRElSKS9ET01Ob2RlLmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01Ob2RlLmg7
CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19I
RUFERVJTX0ZPTERFUl9QQVRIKS9ET01Ob2RlLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNo
ZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJT
X0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVIvRE9NTm9kZS5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNf
SEVBREVSU19GT0xERVJfUEFUSC9ET01Ob2RlLmhcIiI7CisJCX07CisJCTg1NkM4QjdCMEE5MTI5
QjgwMDVDNjg3QiAvKiBET01PYmplY3QuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9
ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFE
RVJTX0RJUikvRE9NT2JqZWN0LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01PYmplY3QuaDsKKwkJ
CW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURF
UlNfRk9MREVSX1BBVEgpL0RPTU9iamVjdC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVs
bFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19G
T0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRF
X0hFQURFUlNfRElSL0RPTU9iamVjdC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNf
SEVBREVSU19GT0xERVJfUEFUSC9ET01PYmplY3QuaFwiIjsKKwkJfTsKKwkJODVBNUM1RTEwQTkw
MzJCMzAwRjkxRjJDIC8qIERPTUVsZW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2Ny
aXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxl
cyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9I
RUFERVJTX0RJUikvRE9NRWxlbWVudC5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NRWxlbWVudC5o
OworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNf
SEVBREVSU19GT0xERVJfUEFUSCkvRE9NRWxlbWVudC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJ
CQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVB
REVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9Q
UklWQVRFX0hFQURFUlNfRElSL0RPTUVsZW1lbnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8k
UFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NRWxlbWVudC5oXCIiOworCQl9OworCQk4NUE4
NUI1OTBBOTAyQzMyMDBBNUNGM0EgLyogRE9NTm9kZUxpc3QuaCAqLyA9IHsKKwkJCWlzYSA9IFBC
WFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVf
UFJJVkFURV9IRUFERVJTX0RJUikvRE9NTm9kZUxpc3QuaCIsCisJCQkpOworCQkJbmFtZSA9IERP
TU5vZGVMaXN0Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElS
KS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01Ob2RlTGlzdC5oIiwKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9
IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElS
LyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8g
XCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTU5vZGVMaXN0LmhcIiA+IFwiJFRBUkdF
VF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTU5vZGVMaXN0LmhcIiI7
CisJCX07CisJCTg1QzkwNUYzMEE4RkNDQjIwMEMzN0Q5MSAvKiBET01Eb2N1bWVudFR5cGUuaCAq
LyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0g
KAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NRG9jdW1lbnRUeXBlLmgi
LAorCQkJKTsKKwkJCW5hbWUgPSBET01Eb2N1bWVudFR5cGUuaDsKKwkJCW91dHB1dFBhdGhzID0g
KAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgp
L0RPTURvY3VtZW50VHlwZS5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9
ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFU
SFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNf
RElSL0RPTURvY3VtZW50VHlwZS5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVB
REVSU19GT0xERVJfUEFUSC9ET01Eb2N1bWVudFR5cGUuaFwiIjsKKwkJfTsKKwkJODVDOTA2NkYw
QThGRDExQzAwQzM3RDkxIC8qIERPTURvY3VtZW50RnJhZ21lbnQuaCAqLyA9IHsKKwkJCWlzYSA9
IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNP
UkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NRG9jdW1lbnRGcmFnbWVudC5oIiwKKwkJCSk7CisJ
CQluYW1lID0gRE9NRG9jdW1lbnRGcmFnbWVudC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJ
IiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NRG9j
dW1lbnRGcmFnbWVudC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJt
a2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwi
XG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElS
L0RPTURvY3VtZW50RnJhZ21lbnQuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hF
QURFUlNfRk9MREVSX1BBVEgvRE9NRG9jdW1lbnRGcmFnbWVudC5oXCIiOworCQl9OwogCQk5MzM5
MzIzRTA4MjVBNjQyMDBBQURBNkIgLyogbnBydW50aW1lLmggKi8gPSB7CiAJCQlpc2EgPSBQQlhT
aGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owo=
</data>
<flag name="review"
          id="3225"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>10242</attachid>
            <date>2006-08-26 11:46:35 -0700</date>
            <delta_ts>2006-08-26 11:46:35 -0700</delta_ts>
            <desc>the generated files for DOMCore</desc>
            <filename>DOMCoreGenerated.zip</filename>
            <type>application/zip</type>
            <size>35592</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAAJB1GjUAAAAAAAAAAAAAAAARABAARE9NQ29yZUdlbmVyYXRlZC9VWAwAe5bwRJCW
8ET1AfUBUEsDBBQACAAIAJB1GjUAAAAAAAAAAAAAAAAaABAARE9NQ29yZUdlbmVyYXRlZC8uRFNf
U3RvcmVVWAwAtJbwRJCW8ET1AfUB7ZrNbtNQEIXnOlmEtonS0oIEG7NjhWDB3i0uUiT+RLNCQiJN
Q1spjas2lWCBlFfgIXgItn0LHoJngLE9Se615yYpm6D0fJFzrDTneHzn2pbjEpHZuzp6RhQSUY1y
bW6QSk2WEoFoajbsJxry64Ke0Emrr2cBAAAAYMmYXGrryy0DAPAfkp4fQtFIdJSrkb8HolXL0xQN
RSPRUa5GvheIVkVrok3RUDQSHeUqJy0jNx9GtmzkDsU0RUPR6Ea7DMCtIuTlDsX0ll7Trn3/nnQP
+8kh5YfzB14e/cnIXGslxxmduR7TKHg2xfOCdZfavBxQj7rsP6WEBuWtmutCwtbchFIVWeXf1IwT
6nDlnczf47WY14e8lOtoFDLuLpBRHo/rQsrGJCVJv83+AXv1sf9l+eoen94BzRmzs0tX/m1mtdrO
htepjrh5bnl3PN6X2cgdz6iiUUi6t3CSOvpO1qYnq01f6ZzX1T6Y78pM8ieoHXEypnuUvrfYcU59
9o6zOrOPDifr/g2y9K79VmbnvpOh98j21T0+vSO2c33iHGSVDnkc1S4ELbVO26WOvOPbVnzvudrP
2XGcVt3VZkFatZOzs2COOuLBD2VGvuFOpeN2xGsJv/f4sw73Uh17J2FrboLaBSejPsnIna94ny59
56WKUc4RZafaDcdrb3XurPdudYE5XvloeR+I9x13Ksn6dMmvU3Yf8/EzyKq/4CN71jWqUch8+A+Z
alec1PEVus15X7zd+KlcoacOvQu2BwAAAACrTyWXMP39f9///B8AsMKYanwQ79HkgWCJ9Lf2kJdP
YwPNfhAQ5P8w9Fg+e0pTXyQ6ynVpDwNw/4/7/1t+/w8AAAAAAAAAAAAAAFhV/gJQSwcIpB0H940C
AAAEPAAAUEsDBAoAAAAAAKR1GjUAAAAAAAAAAAAAAAAJABAAX19NQUNPU1gvVVgMALSW8ES0lvBE
9QH1AVBLAwQKAAAAAACkdRo1AAAAAAAAAAAAAAAAGgAQAF9fTUFDT1NYL0RPTUNvcmVHZW5lcmF0
ZWQvVVgMALSW8ES0lvBE9QH1AVBLAwQUAAgACACQdRo1AAAAAAAAAAAAAAAAJQAQAF9fTUFDT1NY
L0RPTUNvcmVHZW5lcmF0ZWQvLl8uRFNfU3RvcmVVWAwAtJbwRJCW8ET1AfUBY2AVY2dgYsAEIDFO
IDYCYgUoPwhZgQMWTSAAAFBLBwgNjiN3HAAAAFIAAABQSwMEFAAIAAgAM2IaNQAAAAAAAAAAAAAA
ABoAEABET01Db3JlR2VuZXJhdGVkL0RPTUF0dHIuaFVYDAC0lvBEIXTwRPUB9QG1VE1v2zgUvPtX
PHQPjQOt3S0WPcSLRWmJtgnIopaU7PWtisQkBCTRkCin+ff7SCuw2wY9FNgAthly3ryZ4cf8dgK3
EJrjS6cfnyzchFP4+OHDn4H7/gTkeKwVLjfHwaouANaWMwBS1+DhPXSqV91JVbM3aT6BLJpB1bBX
utWP8FdfNLNnP/782BS6npWm+RtLXbVQle5tp+8Hq00LRVvB0CvQLfRm6ErlZ+51W3Qv8GC6pg/g
WdsnMJ3/NYN1LI2p9IMuC8cRQNEpOKqu0daqCo6dOekKB/apsPilkKeuzbNuH6E0baVdUe9YXF2j
7J0b/zH7TloP5uFVU2kqRA69xSRsgVoda3FvTm5pTMOR4F9rrC5VgAjdQ418jubS1tv7VhM2LetC
N6rz8X78UQg2vErkVQj6rAYU9/9ogbPLkaky5dCo1havmzbH/TC43kFT4JnRRd1fgvcb5oivbczG
A5BtmATJV9meCAo4TgXfsYhGsDwASdOYQsi3aZ5RgScxCWfw5QuRCHz/HkgS4efgaOi/qaBSAhfA
tmnMsB4JBUkyRqUvjPOIJesAlnkGCc8gZluWISzjAYqgjuTHSuAr2FIRbvBfsmQxyw6+64pliWu3
wn4EUiIyFuYxEY4lzUXKJQXnJ2IyjAnb0ghvEEuwMdAdTTKQGxLHb/vjniXkSSYYiuVCwpKiXLJE
rG+YHJBY0DBzFZdRiLGhzDgAmdKQ4eCcDEVbRBwCFw7SSvpPjjhch4hsyRpd3vw8H+9K8DAXdOvE
YygyX8qMZSgb1pxHPnhJxY6FVC4g5tJHl0saYJOMBKMrZMHoEIHwZS6ZD5ElaF7kacZ4MoUN32NE
qJRgdeTT5on3jLvEhd9tpHZ5+P0IYL+huCRcvj414uKQmF6YXcOwJYaZufqLX0joOmZrmoTUAbgj
2jNJp7h9TDoAOzffkwPw3HtHjHM2CvnmAAd+e4GtgEQ75vSPeDwRko0HyMcXbsb0Z4BE88nkN90c
TWfhXcS3CT4ws6d3MJ/DEV+l1gJew76fTD77X0BIKKW0L7WKFE51/iIurpZprdwFXWCJbvFGPhT4
NOA8sbaDOxh7TCbYwU25S6n6ye9wkyBt5+7+7bQtGrVwc0vO42l/VCU+sqpafAc7FfVwxp2Mrqa9
sjs3c/frmIt+nDbPrequ7Ki2etPUzTigX61qe/egTUeuN6JC3t5NLc58/wFQSwcIzv4yK40DAAAR
BwAAUEsDBBQACAAIADNiGjUAAAAAAAAAAAAAAAAbABAARE9NQ29yZUdlbmVyYXRlZC9ET01BdHRy
Lm1tVVgMALSW8EQhdPBE9QH1AYVUXW/qRhB996+Y3r5AxEdyo6pqaKPrEJJrFTDCphGqrtBij8NW
yy7aXZOiqv+9s2sDgdKUF+yZM3POnJ119yoA+qUrbqDgAoH+N0xbUAXYFcILLn/l9LZBCUaVOkPY
aPUHZrZzVrhiBpZIsFeUqJnFHJa7w0t7yWXO5avpbEQHHmMYxymM4sfoaf5dcOwk+FIzvXMqCo1I
lIV9Yxp7sFMlZEyCxpwbq/mytCTWApN5V2nfYa1yXuxcsJQ5aq/fol6b/TDP4xkMa4ZnL0zApFwK
nvn6Ic9QGgQaZOOiZlXN4EqfnJqkVgNPihiY5Ur2ADnlKwFb1IZi8HlPWHdsgdLQYNYNoclLV9gk
5TsQZI3e13UuG3GcNwcufd8VnQc9UEca9o0LQc5DabAoRcv3IDS8ROnXeJZCOJ7DSzidhuN03iO0
XSnK4harXny9EZxa02CaSbsj7b7FaDDtf6Wa8CEaRuncjfAUpeNBksBTPIUQJuE0jfqzYTiFyWw6
iZNBByBB3Ftde3rJ7oPVBXVdK3I0R8u4MLUFczpsQzJFTmu1RTr0DPmWRDLI1Gb3/+e5J/DdmFDy
1Q9OVUdve2BqsX5/+/FkHo2fO8PogeaICpDKtuBNc9ozq3yjjxahBZHMOi344SdIkSxFmAhGt6UN
Sela3N5eV0fzoIx18FEI159vbm7aN7fXP7ZgloSd4KobBN/TgSi6gJ8yJQv+2ll9OoYe41ForXax
k2AkaY0kE5SAbhckYk5mOXMpuciYsT/fHwvqFg7pDh/XKK2fATLBjDkC+0kyKi1bCkzsTuAjUl57
5Ikqgn2YJw0EOQ8NKuKT8KUY2WhpknVCl0B6O4IvZ7JrW4KgDQ36YPVpoe7uXASumgvmMn956zXa
UtN3zJVllS1n8PvGwbBDZqxydJkFr11uNnvB355snFSqiEeyNZ7S/G5QFOD5v7XvXb5xKHyI42HT
bDDjBd29j+oOoMYl1i0T5Ye0HnAs3SqeNw3a31z47r86hUkymKYNH6JSHzvYMfgzQ/8F6ztfMINf
4LrnIWfCa5aqTYuQzQqmGTcYS7cCWivd8IlK3nEtSJF6oxtdv56N+A63wOrhha733amC9w0azW/v
SC5sLBEaF/o30yXwwpxFLtB7yJ73C8o8+AdQSwcI6tRbpl4DAABtBwAAUEsDBBQACAAIADNiGjUA
AAAAAAAAAAAAAAAiABAARE9NQ29yZUdlbmVyYXRlZC9ET01DREFUQVNlY3Rpb24uaFVYDAC0lvBE
IXTwRPUB9QG1VE1v2zgUvPtXPHQPbQpBbouih3axKE3RNgFZVEkqXt+qSExCQBINiUraf99HRkHS
D+xtDVimzXnzZuaRXr9ewWug7vx9tDe3Hl7RC3j35s37JDw/ADmfO4Pb/Xn2ZkyAD00KQLoOInyC
0UxmvDNt+keaD6DqfjYdHI0d7A38PdV9eh/Xn2/62nZp4/p/sDRUS9PayY/2avbWDVAPLcyTATvA
5OaxMfGXKzvU43e4dmM/JXBv/S24MX662QeW3rX22jZ14EigHg2czdhb700L59Hd2RYX/rb2+DDI
03Xu3g430LihtaFoCiyhrjf+Y1i/TX+RNoG7ftTUuBaR8+QxCV+j1sBaX7m7sLWkEUjwNThvG5Mg
wk7QIV+geWob7f2sCZs2XW17M8Z43/0uBBs+S+RRCPpsZxT3/2iBB5cLU+uauTeDrx+HtsZ5ONwf
oa/xzNi6m56CjwMLxM9tpMsB0HuuQImtPhLJANelFJc8YxlsTkDKMmdAxaGsNJN4EguawtevRCHw
5UsgRYbvU6Bh/5aSKQVCAj+UOcd6JJSk0JypWJhXGS92CWwqDYXQkPMD1wjTIkERLJD8XgliCwcm
6R6/kg3PuT7Frluui9Bui/0IlERqTqucyMBSVrIUikHwk3FFc8IPLMMbxAtsDOySFRrUnuT5n/2J
yEJFoSVHsUIq2DCUSzaIjQ2LExJLRnWoeFpRjA1l5gmoklGOi4dkGNoi8pSEcJBWsS8V4nAfMnIg
O3T56r/zia6koJVkhyAeQ1HVRmmuUTbshMhi8IrJS06Z+gS5UDG6SrEEm2iSLK6QBaNDBMI3leIx
RF6geVmVmoviAvbiiBGhUoLVWUxbFNEzTknIOG2kDnnEeSRw3DPckiHfmBoJcShMj+rnMGyJYepQ
/+QXCrbL+Y4VlAWACERHrtgFjo+rAOAPzY/kBKKK3hETnC1CfjrASRwv8C2Q7JIH/QseT4TiywGK
8dH9kn4KSLRerf6y/dmNHl5k4qDNN5/evoD1Gs74rzR4wGs4TavV6rMd8H5d13jREUdDtso08Rp+
hKUSUWZoVz8AUEsHCHNlNFsfAwAA5gUAAFBLAwQUAAgACAAzYho1AAAAAAAAAAAAAAAAIwAQAERP
TUNvcmVHZW5lcmF0ZWQvRE9NQ0RBVEFTZWN0aW9uLm1tVVgMALSW8EQhdPBE9QH1AYVTTY+bMBC9
8yum20u7SkiyUVVVuZR8LmoCERBFORoYgivHRrZJxL/fgSQbabVquQDjmTfvvRkPnh2gJym5gYIL
BHpXTFtQBdgSYY/pH05/FUowqtYZQqXVX8ys+6GwZAZSpLQjStTMYg5p8/7TT7nMuTwatxIuzEMI
wgQ24dxfHr44DyTBU81007IoNCK1LOyFaZxAo2rImASNOTdW87S2RNYCk/lA6Q7hpHJeNG2wljnq
jr9FfTJ3MatgB+tbh1VHTMC2TgXPuvo1z1AaBBJStVFTXjW0pcuWTXxjA0tFHZjlSk4AOZ1fCZxR
G4rBy73hDbEHSsM3ZlsRmrxsC78T8wYEWaPvde7nRjz05sBlh1vSPOiDEEnshQtBzkNtsKhFr8Og
bNj7yWu4S8ALDrD3osgLksOEsm2p6BTPeMXip0pwgiZhmknbEPcOYrOIZq9U4039tZ8cWglLPwkW
cQzLMAIPtl6U+LPd2otgu4u2YbxwAWLEu9U3Tz+z+93qglBPihzN0TIuzM2CAw3bEE2R01qdkYae
IT8TSQaZqpr/z/PeoENjQsljJ5yqHt5OwNzIdvs7C7cHP1i5a39KOvwCpLI9uGhOe2ZVB/SvReiB
LzO3Bz9+QYJkKcJWMLotfYjrFmI8Hl5HM1XGtukbD4Yvo9GoPxoPf/ZgF3uu8zxwnK80EEUX8ClT
suBHt3x6hObhZjb3Ei+m+9cuDJ05zu92gnhCaTsi8CGJElDmzhtQSwcIkgC9+i8CAADpAwAAUEsD
BBQACAAIADNiGjUAAAAAAAAAAAAAAAAjABAARE9NQ29yZUdlbmVyYXRlZC9ET01DaGFyYWN0ZXJE
YXRhLmhVWAwAtJbwRCJ08ET1AfUBtVXRbts2FH3XV1y0D40Dze6KoQ/JMISWaJuALGqiFM9vZSTa
JiCJhkQl6N/vknbmpGmHbcAMWKbIc88991ySnl0HcA2ROX7t9f5g4SqawKePH38J3fMzkOOxUbjc
Hker+hBYV00BSNOAhw/Qq0H1j6qefpfmMwjZjqqBjdKd3sOvg2ynT358t2+lbqaVaX/DUBedq1oP
ttcPo9WmA9nVMA4KdAeDGftK+ZkH3cn+K+xM3w4hPGl7ANP7XzNax9KaWu90JR1HCLJXcFR9q61V
NRx786hrHNiDtPhQyNM05kl3e6hMV2sXNDgWF9cqe+PGP0+/kTaA2T1rqkyNyHGw6ISVqNWxygfz
6JbObjgS/HTG6kqFiNADNMjnaC5pfXmvNWHSqpG6Vb2399NbIZjwhSPPQrDOekRx/48WOFV5ZqpN
Nbaqs/K5aTPsh8H1HlqJe0bLZrgY7xvmiF+WMT1vgGLFBAi+KDYkp4DjLOf3LKYxzLdAsiyhEPF1
VhY0x52YRlP48oUIBH74ACSN8bt1NPSPLKdCAM+BrbOEYTwS5iQtGBU+MCljli5DmJcFpLyAhK1Z
gbCChyiCOpK3kcAXsKZ5tMJXMmcJK7Y+64IVqUu3wHwEMpIXLCoTkjuWrMwzLii4emImooSwNY3x
BLEUEwO9p2kBYkWS5Pv1cc8S8bTIGYrluYA5RblkjlifMN0icU6jwkVcRhHahjKTEERGI4aDkzMU
yyL5NnTmIK2gv5eIw3WIyZosscqrv/fHV5XzqMzp2olHU0Q5FwUrUDYsOY+98YLm9yyi4hYSLrx1
paAhJilIeK4KWdA6RCB8XgrmTWQpFp+XWcF4OoEV36BFqJRgdOzd5qmvGbvEc99tpHZ++H6EsFlR
XMqdv9414uwQ6F5UvIRhSjSzcPGXeiGly4QtaRpRB+COaMMEnWD7mHAAdkq+IVvgpa8dMa6ys5BX
Gzj07QW2ABLfM6f/jMcdIdh5A3n7otXZ/Skg0SwI3uv2aHoL72K+TvGCmR7ewWwGR7yVOgt4DIch
CII73eH52kk86IiLDrKXFU7E0kq4gXNoEGAgsaezpobgJ7hKhcBXPNLXkxqxt27u0eh6Mijrgm/+
I2LsBr3vVD1pVLe3h1ufejF21elWfZ15GB8GPz7x/RVrdjtM8mKiMmNnLwrk8ai6+o0I2e8vGN3h
f5L9AfGPgmrVKKv+pRq8ahv0/x9FvU0d3GEpwZ9QSwcIiBGidZgDAACCBwAAUEsDBBQACAAIADNi
GjUAAAAAAAAAAAAAAAAkABAARE9NQ29yZUdlbmVyYXRlZC9ET01DaGFyYWN0ZXJEYXRhLm1tVVgM
ALSW8EQidPBE9QH1Aa1VbW8iNxD+vr9iev0CES/JRVXV0Ea3ISS3KgHELopQVUVmdxZcGRvZXlJU
3X+/sZf3Cz1OCl9gPTPPPM8zs6Z5EQB9khk3kHOBQN8Lpi2oHOwM4Rknf3J6WqAEowqdIiy0+gdT
2zgqnDEDE6S0KUrUzGIGk9X2oT7hMuNyahoL0YD7PvT6CTz176OH8U/BDknwiWZ65VjkGpFa5vaV
aWzBShWQMgkaM26s5pPCElkLTGZNpT3CXGU8X7nDQmaoPX+Lem42Yh57I+iuOzx6YgIGxUTw1Nd3
eYrSIJCQhTs1s1KDK31wbOI1G3hQ1IFZrmQLkFO8JLBEbegMPm4arhFroDRUmHUiNHnpCqvEfAWC
rNGbusbbRuz0ZsClx53RPOgHIZLYVy4EOQ+FwbwQNY9B2fAcJZ/7owTC3hiew+Ew7CXjFmXbmaIo
LrHE4vOF4ARNwjSTdkXcPcRTZ9j+TDXhXdSNkrGT8BAlvU4cw0N/CCEMwmEStUfdcAiD0XDQjzsN
gBhxY/Xa07fs3lqdE+pckaMZWsaFWVswpmEboikyWqsl0tBT5EsiySBVi9X357lp4NGYUHLqhVPV
ztsWmDVZv7/t/mAc9R4b3eiOdEQ5SGVr8Ko57ZlVHuj/FqEGkUwbNfjlN0iQLEUYCEZvSx3iwkFc
X1+Wo7lTxrr0pxAuP15dXdWvri9/rcEoDhvBRTMIfqaBKHoBP6RK5nzamH3YHd33n9ozpllKW3PP
LHPBg2gkKSKZoAA0myARM3LNuUzBl5QZ+/vtruAYy5W4dcA5SutVQSqYMbsK0mQJbR7TRkrPLfh0
VHHMMQjqUKFrpE1jvrk5CMFF9SU9yP3PW6TRFpruG4eYlqxPAdxWtsK2KT2VoYu88LUb1Wor+OJ5
9OKSOXXOvun3l0GRwyGjv+u3LrGyRVgqnlUNWhe8OYEXxnFnmFTcCdX5oy25zr8p+gug7VhiCn/A
ZcunnGi/7uXRalRQLbM14wb7ktR3tFa64gMlxUIaPpWYVQXKqZ2dJbJMrbxllCkmxv8uJW/RVZ4T
t72DlF4Gu+52ht5dC+JmCmEpdMqDfQqVsnENfL/vWbInvexyMEi2oD+27JtZMj09X8cJzjvoCsGd
NznPidO9pe0Js9+Z5K7X1tUfI5uhQIvvvBmnXsRtrx9bgT26GhfuVj6L77ubvdf8WMB5pn+ihQq+
AlBLBwhwUQgGhAMAALIJAABQSwMEFAAIAAgANGIaNQAAAAAAAAAAAAAAAB0AEABET01Db3JlR2Vu
ZXJhdGVkL0RPTUNvbW1lbnQuaFVYDAC0lvBEI3TwRPUB9QG1VF1v0zAUfe+vuIIHGIpSQIgHQAg3
cVtLaRxsZ6VveIm3WkriKnE28e+59jptfIg3KjV163PPPedcu8tXC3gFmTv9GO3N0cPL7ALevn79
LgnP90BOp87gdn+avRkTYEOTApCugwifYDSTGW9Nm/6V5j1I3c+mg72xg72BT5Pu07u4/nLTa9ul
jes/Y2moFqa1kx/t1eytG0APLcyTATvA5OaxMfGXKzvo8Qdcu7GfEriz/ghujJ9u9oGld629to0O
HAno0cDJjL313rRwGt2tbXHhj9rjwyBP17k7O9xA44bWhqIpsIS63vgPYf0m/U3aBO76QVPjWkTO
k8ckvEatgVVfuduwdU4jkOBrcN42JkGEnaBDvkDz2Dba+1UTNm06bXszxnjf/ikEGz5J5EEI+mxn
FPd/tMC9yzNT65q5N4PXD0Nb4jwc7o/QazwzVnfTY/BxYIH4qY30fADUlkmQfK32RFDAdSX4Jctp
DqsDkKoqKGR8V9WKCjyJZZbC9+9EIvDFCyBlju9DoKHfKkGlBC6A7aqCYT0SClIqRmUsLOqclZsE
VrWCkiso2I4phCmeoAgaSP6sBL6GHRXZFr+SFSuYOsSua6bK0G6N/QhURCiW1QURgaWqRcUlheAn
ZzIrCNvRHG8QK7Ex0EtaKpBbUhR/98cjS8ZLJRiK5ULCiqJcskJsbFgekFjQTIWKx1WGsaHMIgFZ
0Yzh4j4ZiraIOCQhHKSV9GuNONyHnOzIBl2+/Hc+0ZXgWS3oLojHUGS9kooplA0bzvMYvKTikmVU
foSCyxhdLWmCTRRJzq6QBaNDBMJXtWQxRFaieVFXivHyArZ8jxGhUoLVeUybl9EzTomLOG2kDnnE
eSSw31LcEiHfmBoJcUhML1NPYdgSw1Sh/tEvlHRTsA0tMxoAPBDtmaQXOD4mA4DdN9+TA/A6ekdM
cHYW8ssBTuJ4ga2B5Jcs6D/j8URIdj5AMb5se04/BSRaLhbPbX9yo4dnOd9lRz3qBi9Srr1Oj89g
uYQT/j0NHvA+TtNisfhiB9y/1njjQ4Hrw32ED/B7NSLN0C5+AlBLBwgrEOWqIAMAAPMFAABQSwME
FAAIAAgAM2IaNQAAAAAAAAAAAAAAAB4AEABET01Db3JlR2VuZXJhdGVkL0RPTUNvbW1lbnQubW1V
WAwAtJbwRCJ08ET1AfUBhVNNj9owEL3nV0y3l3YFARZVVcWl4XOjAkFJEOLoJBPiytiR7bDKv+84
wCJVqzaXxDOeN++9mQyePaAnrbiBkgsEetdMW1Al2ArhgNkvTqcaJRjV6Byh1uo35tb/q7BiBjKk
ayeUqJnFArL2/dDPuCy4PBm/Fj7MI9hGKWyiebg8fvIeSIJnmunWsSg1IrUs7RvTOIFWNZAzCRoL
bqzmWWOJrAUmi4HSHcJZFbxsXbCRBeqOv0V9Nncxq+0e1rcOq46YgF2TCZ539WueozQIJKR2UVNd
NbjSpWOT3NjAUlEHZrmSE0BO+SuBC2pDMXi5N7wh9kBp+MKsE6HJS1f4lZi3IMgafa/zPzbiobcA
LjvciuZBH4RIYt+4EOQ8NAbLRvQ6DLoNhzB9jfYpBNsjHII4DrbpcUK3baUoixe8YvFzLThBkzDN
pG2JewexWcSzV6oJpuE6TI9OwjJMt4skgWUUQwC7IE7D2X4dxLDbx7soWfgACeLd6punH9n9bnVJ
qGdFjhZoGRfmZsGRhm2IpihorS5IQ8+RX4gkg1zV7f/neW/QoTGh5KkTTlUPbydgbmS7/Z1Fu2O4
XfnrcEo6whKksj1405z2zKoO6F+L0INQ5n4Pvv2AFMlShJ1g9Lf0IWkcxHg8vI5mqox11zcBDF9G
o1F/NB5+78E+CXzveeB5n2kgin7Ap1zJkp/86ukRmkebmTqfUVoX9ryfbnjozh0HeOQph7Lw/gBQ
SwcIMKckNioCAADfAwAAUEsDBBQACAAIADRiGjUAAAAAAAAAAAAAAAAeABAARE9NQ29yZUdlbmVy
YXRlZC9ET01Eb2N1bWVudC5oVVgMALSW8EQkdPBE9QH1Ae1WS2/bOBC++1cMuofGgdfpFose0qKI
LDMJAVnyinLS3MpIjE1Ar5Uop/73O6RkWZLjNsVubxsgtjSPb2a+GY55cT6Cc7CzfFfI9UbBmT2G
9+/e/TnRnx/AyvNYoDrJKyWKCdA0nAJYcQzGvIRClKLYimj6IswHYDypRAz3QqZyDZ9KnkyfzfPV
OuEynoZZ8hldtbcvIlmqQj5WSmYp8DSCqhQgUyizqgiFkTzKlBc7eMqKpJzAs1QbyArznVVKoyRZ
JJ9kyDXGBHghIBdFIpUSEeRFtpURPqgNV/ghECeOs2eZriHM0khqp1KjaL9EqEv9/Md0kFoJ2dM+
pzCL0LIqFTKhOOaqUfljttWqhg0Ngn9ppmQoJmghS4gRT8Mcwpry+jlh0DDmMhGFoff9cSIYsMPI
PhGsM6owuV+TC9RVNkhRFlaJSBXfN+0C+5GhvoCE48xIHpcH4k3DNHC3jGkzAMEtZcC86+De8gng
89L37uiczGH2ANZy6RCwvcVyFRAfJ9G1p/D1q8XQ8O1bsNw5/j9oGPJl6RPGwPOBLpYORX8E9C03
oIQZR2c1p+7NBGarAFwvAIcuaIBmgTfBJIgGOfYE7xoWxLdv8dWaUYcGDybqNQ1cHe4a41mwtPyA
2ivH8jXKcuUvPUZA1zOnzHYsuiBzPEHUxcBA7ogbALu1HOfl+jyDYntu4FNM1vMZzAima83Q1gR0
HxDYJ3agPQ5PNtKGaToTYEtiU3yomSFYluU/TDQ5CMvIXyu0Qz3MrYV1g1WefZ8fU5Xv2SufLHTy
SApbzVhAA0wbbjxvbohnxL+jNmEfwfGYoW7FyASDBNakqQpRkDq0QPPZilFDInWxeH+1DKjnjuHW
u0eKMFMLveeGbc81NWOXPN90G6E1H6YfE7i/JajyNb+GNUvTwZA9O+iaYUgkM9D+h3rBJTcOvSGu
TbSBp4HuKSNjbB9l2oDWwe+tB/BWpna00ZU1ifQGeGLaC/QarPkd1fk39jgRjDYDZOizbxv2p4BA
F6PRbzLJs0LBm7m3cHHBTDdv4OICctxKqQI8hmU5Gl2Zb0AT6xHPEg/VnRTPH7typYruu63pZyLU
Z64nZ4ypXSzmAkUFP1JniT7gXdG8OfTXBV+f0gW7XHTlJBZDU5IqqXa+eBJYWNi33g5saZLXAEf5
aYaG7w6ul65sWWShKEtcZDRFsqojDnyernsohhG2EUINsQLxrff+ZcnVhnzLCx2gj2pUviirWHvg
FlRZmMWtxmWoy+KtwDaNrmSK6/KJ497usAiX+5JGIxwB3VK9NUU5+h3OBmzD+Ri3sTK819o+aaiX
AxZrs6Y1tb+Ba5ulg15XaVj/Mg7Nw0Lgjm/eL89cnKNC/1icjxVfuzxpExkOTOt7PEm1gya5NdIv
moJehIgrvrduRrR1aN5P23dOwsGpIzzp+eIgtRAvage8FGtxOjHd3xatbXbPPO3QOjhAh4705Sf9
90cFxZhV08dytgvq7g07OnStBwo3Vd2coVREtXzmec44EiI/nrfeALnsKNEyx/Ow8mlP8XfFY7zj
IXwnn5eZ+1eQP2DntdhxFvK4i3so/wA729Go5yVqOY1ar22Psu1wvsW2Xbq1g1lprUOz4Jr5P974
dTYe7qICb2pGe9lPVsT9gHkpqigjsRqMBI+y/Ggi6uvy3nKwMg9VtaJ+aR2xjODT8f78PC7aTYoh
ThnVUQ6SboYpfvldkP7+NgzzuOKD49jN7QCGV2nVLq0fpXx5VqWlXKd4Py43eG7GeoVfHseX6f6n
ZHQl0ujkT0Z34WKnx7+o6a/Owczq+OfH+NUBzGyPvzf2r4YyHOyh+ncAPcWtoPwJTH0v20N272p6
94snjh1tbm6vBTRjMf7/LP0nZ8mw/g9QSwcIW5UWfYYFAAAHEQAAUEsDBBQACAAIADRiGjUAAAAA
AAAAAAAAAAAfABAARE9NQ29yZUdlbmVyYXRlZC9ET01Eb2N1bWVudC5tbVVYDAC0lvBEJHTwRPUB
9QHtWW1v47gR/u5fwdsCB3nhOLu3KA517hbrvO0ZTezAcpoLjMCgpbHNVqZcinLWKO6/d0jqjRLt
bC4J+qX54Igz5Mwzr6So4/ctgn+TFUvIgkVA8P+GCkniBZErIHcw/zvD0QY4SeJUBEA2Iv4nBLJb
W7iiCZkDTlsCB0ElhGS+KwZHc8ZDxpdJdxN1yfmIDEcTcj06H1ze/9AqJUVsLqjYKRQLAYAqF/KR
CjghuzglAeVEQMgSKdg8lQhWEsrD41hoCes4ZIudIqY8BKHxSxDrJDfm6/CWXGUavmpgEblJ5xEL
9PorFgBPgKAhG0VNVsYGtfRSofEzNOQyRg1UspifEGDINwC2IBKkkZ9yhZnEDokF8ahURgj0pVrY
RuQ7EqFrRL6u63ZEaW9IGNdyVxgPfECJaOwjiyL0PEkTWKRRR8vA2eRuMPltdDsh/eE9ueuPx/3h
5P4EZ8tVjFzYgpHF1puIoWg0TFAud4hdi7i+GJ/9hmv6p4OrweRemXA5mAwvfJ9cjsakT27648ng
7PaqPyY3t+ObkX/RJcQHyF2d+dTl7sLVC5S6jtGjIUjKoiRzwT0GO0GYUYhptQUMegBsiyApCeLN
7ul45gq0NBrFfKkNx1Wlb09IkoHV+Xs2urkfDL92rwanaMdgQXgsO+RRMMwzGWtBhxKhQwY86HbI
X/9GJoAuBXITUayWI+KnSsSnTx9MaE7jRKrp133y4aePHz8effz04ecOufX73db741brLxiQGAvw
XRDzBVt2V+9K0vno+jwO0jVwqegWY8AxlTiNkEGOjwkHCNFhysHInAU0kb98riwoxajZKglAjbUt
JIhokpST+1IKC8fZeX/S97EJqKy1GL5/nUo6j8CXuwjOASUJ6pp2mB+vcxurJjZwIG0vFMXz/QbJ
LVn5z3LBPrdfCrp0Csj4k90G6rwLI7dB5pLJ3RgWIIAHzVVYoDJxUyuxtnPgoA0291LETUzDOGwA
UbQr7EF1+o2IA0gSbOoDjh0qdYZgTPmyIVHH3l8BNO2bwLeGon8weGxM1MR9frjDzSZ+rFN/v6Fy
5SS65RwM+b54u4J9KNI6oBalEQNnALC7SCzutY97A7e7xNOBaUalDElDUyMk2mUX3zZCKalJ1ryh
P4YkjnBba/KQk0ame32pdZ1KGbVaR8TDs8cZ7g29Xk4l79uzMJ/xH91NBchU4NFEiQhMl3Ms++wV
PbDgKq8qzoxlwW+3T1p/aMW1eka1qFXik610Wp9XgFOjO9xvetMEokVJfzj6nEny2g8VbXZloj7b
M021tQWzBklrZ82C9+qILBxZ8hqDNT+jNBHkU2dgHvabW5Vjm92fY3rSQKpaVjphQTE31Kipz5o7
o5XRPs2lNFurneqoNynbUVNvbfYsscZ7dFckenscHAjAs1827nlD3xQyciRdDuk6z7UiXy++BaBP
jmcqcSEgv5IPJ3pKVS5CV/WFzGcEycLiZfo7qKPdXYKJmfYKZQmMuJIrRCw85J9U3WVUO4oo76CF
2XXG/roqlhZ4c8pBW+rLvdKSAp3qawUiNVAdwYoEnuxoE5peN5P4exBCLtFTUhzqs5NIgSAbfweA
fOUsMA8HYWST96KoHJ9KKBXiPjzfl5e2eDs5Ld6sOjpsUGWituoVEtW5YxbucHJrJStQ/8tctQeD
7TP3pNnGRT7oRacgz9jRIa/kVnVeL7yoBvot1nITf26nMzJtr2jajOLvQZsLBB5/nf5WO9eVXd2m
v8zghpJai6+xZ2ATDrd8e+5r+SU/sKK5KCfbV5LT3cTsLPXdruKSSpcrhMx49rTHFJcKLxPr6Hjm
3Nc2h1LT8utUCA39dDS6wlMJbJ4VMCPKjpKmaUP2GFHC8aZVEGbRA5YkwniNlHUfQIZ+I0mTDQ3g
djywGP9OacQWDLH9D08oQ9+rAuwQC9Wb9a2399Fr9LY3d84Txf29XorigEbD16/8hv2FIkcvKKuh
FHW6G4QW0iwzB+GffgmyhXuFQBvL1qrLbf0sqC5s9Yvl88pu6yq6rQG9fbLg1Ayv0PwK2aNvHgor
9ajpVjNpJtS/g/j0RNfZ3nHBaII82oIQLDTXkz07ByCyPb5JIA3ji8jxeuKSb14NK5T92WCh8Kao
uEghbPWFXte+RcN409i2zJeZt9+lCuXeNPsYlG9PL06M2qVSWQgFya6GCpmF5JdcQnn19LktsqfM
L2xBvJxEfvyR/DAtRiy5hvUcxGhxpm6+e9oZGMMt1ISam/GHh7aWqP6mQ7/ws7G6N/T1xwgWlAx1
U0dl78u7ulEkSAWevWS0I2EMifroQB5j8S/zuSJIExmvydAnOdTk3UMZQifC91yTi/GvJnvccwsf
nbSekTuNWNlpVGfPvm0swuGWU0zzyhh3yLRmlZFZmvLiFNyXRAZVSamWncr9sZ1k1W3M6fI68IPO
KKd506qyrOwcja9yx6r3DBqltPbKVS2d0pYg5rK4A3mqonpeyhO25BCqz3RCttWVZq+pn3Hz+P8K
fIsKzN3sqL6MZZLNDPYkWp4idrVVsqFo8d9RglIfEqZ52C39L6vQL8DD1n8BUEsHCFal5z6EBwAA
rSAAAFBLAwQUAAgACAA1Yho1AAAAAAAAAAAAAAAAJgAQAERPTUNvcmVHZW5lcmF0ZWQvRE9NRG9j
dW1lbnRGcmFnbWVudC5oVVgMALSW8EQldPBE9QH1AbVUTW/bOBS8+1c8dA9tCkHuFoseuouitETb
BGRRJam4vlWxGIeAPgxJTtB/3yGjIOm22NsasE2b8+bNzCO1fLugt5T05++DO91N9Ca5ovfv3v0V
+c8PxM7nxmK7PV8mO0QkumNMxJqGAnykwY52uLd1/FuaD6Sr9mIb2lvXuRP9M1Zt/BDWn09t5Zr4
2LefUOqrla3dOA3u5jK5vqOqq+kyWnIdjf1lONrwz43rquE73fZDO0b04KY76ofw3V8mz9L2tbt1
x8pzRFQNls52aN002ZrOQ3/vaiymu2rChwVP0/QPrjvRse9q54tGz+LrWjt99Os/439JG6m/fdJ0
7GsgL+OEJKYKWj1rddPf+605DU+CV9dP7mgjINxIDfg8zXPbYO9nTWh6bCrX2iHE+/5XIWj4IpEn
IfBZXyDu/9FCjy5npro/XlrbTdXT0JaYR4/9gdoKZ8ZVzfgcfBiYJ35pI54PgNkKTVquzZ4pTlgX
Sl6LlKe0OhArioxTIndFabjCScyTmL59YxrA16+J5SneB0/DvxaKa01SkdgVmUA9CBXLjeA6FGZl
KvJNRKvSUC4NZWInDGBGRhDBPcmvlSTXtOMq2eInW4lMmEPouhYm9+3W6MeoYMqIpMyY8ixFqQqp
OXk/qdBJxsSOp7hBIkdj4tc8N6S3LMt+708GlkTmRgmIlUrTikMuWwEbGuYHECueGF/xvEoQG2Rm
EemCJwKLx2Q4bDF1iHw4oNX8Swkc9illO7aByzf/nU9wpWRSKr7z4hGKLlfaCAPZtJEyDcFrrq5F
wvXflEkdois1j9DEsGh2BRZEBwTgq1KLEKLIYV6VhREyv6Kt3CMiKGWoTkPaMg+eMSWpwrRB7fMI
84hov+XYUj7fkBrzcWikl5iXMLREmMbXP/ulnG8yseF5wj1AeqK90PwK4xPaA8Rj8z07kCyDd2C8
s1nITwc4CuMlsSaWXguvf8bjRGgxH6AQX7Kd048JRMvF4g/Xnvtholep3OV4wMR3r2i5pDOeSt1E
uIbjuFgsPrsO9+u2wkUHLp3v4XqoTv6bPtJcDaTt6sUPUEsHCAGMYYEgAwAA6gUAAFBLAwQUAAgA
CAA1Yho1AAAAAAAAAAAAAAAAJwAQAERPTUNvcmVHZW5lcmF0ZWQvRE9NRG9jdW1lbnRGcmFnbWVu
dC5tbVVYDAC0lvBEJXTwRPUB9QGFU02P2jAQvedXTLeXdgVZWFRVFZdml4+NCiRKghBHJ5kQV8aO
bAeUf99xgEWqVm0ujsczb957Yz89ekBfVnMDFRcItDZMW1AV2Bphh/kvTrsGJRjV6gKh0eo3Ftb/
q7BmBnKktANK1MxiCXn3vhnmXJZcHozfCB9mEWyiDNbRLFzsP3l3JMFzzXTnWFQakVpW9sw0TqFT
LRRMgsaSG6t53loia4HJ8knpHuGoSl51LtjKEnXP36I+mpuY5WYLq2uHZU9MQNzmghd9/YoXKA0C
CWlc1NQXDa504dikVzawUNSBWa7kFJDT+YXACbWhGDzfGl4RB6A0fGHWidDkpSv8Ssw7EGSNvtX5
Hxtx11sClz1uTfOgH0IksWcuBDkPrcGqFYMeg7JhF2Zv0TaDYLOHXZAkwSbbTynb1opO8YQXLH5s
BCdoEqaZtB1x7yHW8+T1jWqCl3AVZnsnYRFmm3mawiJKIIA4SLLwdbsKEoi3SRylcx8gRbxZffX0
I7vfra4I9ajI0RIt48JcLdjTsA3RFCVdqxPS0AvkJyLJoFBN9/953hr0aEwoeeiFU9Xd2ymYK9n+
/r5G8T7cLP1V+EI6wgqksgM4a073zKoe6F8XYQChLPwBfPsBGZKlCLFg9FqGkLYOYjIZXUbzoox1
6esARs/j8Xg4noy+D2CbBr73+OR5n2kgih7gQ6FkxQ9+/XAPzaL1TBXtEaVdaHZwqzv3vJ9uiuj2
PRn4IJGSUJbeH1BLBwhkcYZjMAIAAPEDAABQSwMEFAAIAAgANWIaNQAAAAAAAAAAAAAAACIAEABE
T01Db3JlR2VuZXJhdGVkL0RPTURvY3VtZW50VHlwZS5oVVgMALSW8EQmdPBE9QH1AbVUTW/jNhC9
+1cMtodNAtXeLoo9bIpiaYm2CciiSlJxfVtZYhIC+oJIJci/75BWkGyy7a0GLFGcmTfvPX6srhZw
BXE/PI3m7t7BRXwJnz99+j3yzy9AhqHRGG6HyekxAtZVSwDSNBDSLYza6vFB18ufwnwBWbaTbuCg
TWfu4A9btsvHMP5215amWVZ9+yeW+mqha2PdaE6TM30HZVfDZDWYDmw/jZUOMyfTleMT3PZjayN4
NO4e+jG8+8l5lLavza2pSo8RQTlqGPTYGud0DcPYP5gaB+6+dPjQiNM0/aPp7qDqu9r4IutRfF2r
3Vc//m35hpqF/vaZU9XXmDlZh064Erl61PLUP/jQ7IYHwV/XO1PpCDOMhQbxPMxL2yDvR07YtGpK
0+ox2Pv5PRFs+MqRZyKos56Q3P/DBc4qZ6S6r6ZWd658XrQVrkeP8RHaEveMKRv7YnxYMA/8WsZy
3gBqxyRIvlEHIijgOBf8hiU0gfURSJ6nFGK+zwtFBe7ELF7C9+9EYuLHj0CyBP9HD0P/zgWVErgA
ts9ThvUIKEimGJWhMC0Slm0jWBcKMq4gZXumME3xCElQD/K+EvgG9lTEO/wka5YydQxdN0xlvt0G
+xHIiVAsLlIiPEpeiJxLCl5PwmScEranCZ4glmFjoDc0UyB3JE1/ro8HlJhnSjAky4WENUW6ZI25
oWF2RGBBY+UrXkYx2oY00whkTmOGg7MzFGURcYy8OQgr6V8F5mEcErInW1R58d/+BFWCx4Wge08e
TZHFWiqmkDZsOU+C8ZKKGxZTeQ0pl8G6QtIImygSzaoQBa3DDExfF5IFE1mG4kWRK8azS9jxA1qE
TAlWJ8FtngXNuEpchNVGaO9HWI8IDjuKIeH9Da4Rb4dE92L1Og1bopnK17/ohYxuU7alWUx9AvdA
BybpJS4fkz6BnZsfyBF4EbRjjlc2E/lhA0dheYFtgCQ3zPOf83FHSDZvoGBfvJvdXwICrRaLX0w7
9KODDwnfZ3jBLO8/wGoFA95KnQM8htYuFt/CG3xK2era5+3L4RoDpsNzd1viBYDBZD6f6mnQ8BVm
xMUC8Yg7H0FtF7/CRSYlfuJJv7rsEPDaz70BxxAi4RWh7b+E8V4JF8E5/gpymE6NqVj9dt4+Wafb
9/NBQ1c2cjpZ7bwq3dWLfwBQSwcI77SuuXADAACuBgAAUEsDBBQACAAIADViGjUAAAAAAAAAAAAA
AAAjABAARE9NQ29yZUdlbmVyYXRlZC9ET01Eb2N1bWVudFR5cGUubW1VWAwAtJbwRCZ08ET1AfUB
rVRNb+JIEL37V9TOXiACk0y0Gk1YRXE+yFgDBmGjCK2iqLHLoVdNt9XdTmSt5r9PtcEEEJnJYbmY
7qp69d6rsnsnHtAvWXIDORcI9CyYtqBysEuEB1x853QqUIJRpU4RCq3+xdT6B4VLZmCBlPaMEjWz
mMGi2h66Cy4zLp+NXwgfbscQjRMYjW/DwfwP7w1J8IVmunIsco1ILXP7yjT2oVIlpEyCxowbq/mi
tETWApNZT+kaYaUynlfuspQZ6pq/Rb0yjZj7aAbDTYf7mpiASbkQPK3rhzxFaRBISOFuzXKtwZUO
HJt4wwYGijowy5XsA3KKrwm8oDZ0B5+bhhvEDigNLWadCE1eusI2Ma9AkDW6qfOPG/GmNwMua9wl
zYP+ECKJfeVCkPNQGsxL0akxKBsewuTbeJZAEM3hIZhOgyiZ9ynbLhVF8QXXWHxVCE7QJEwzaSvi
XkOM7qY336gmuA6HYTJ3EgZhEt3FMQzGUwhgEkyT8GY2DKYwmU0n4/jOB4gRG6s3nh6ze2t1Tqgr
RY5maBkXZmPBnIZtiKbIaK1ekIaeIn8hkgxSVVS/n2fToEZjQsnnWjhVvXnbB7MhW+/vzXgyD6N7
fxhek44wB6lsB141pz2zqgb61SJ0IJSp34G/vkKCZCnCRDB6W7oQlw7i/Px0PZprZaxLHwVw+vns
7Kx7dn76pQOzOPC9k57n/UkDUfQCfkqVzPmzv/z0dnU7Ht2qtFyhtElVoIvtBUNJ6ySZoAD0eiAR
MzLNmUzBp5QZ+/flTsE+lKtwy4DurtYEqWDG7HWI2AqzSGU4YsUetXcDZIMlBquYlljWcryrgzYH
sjyvCy368NzQYlxc7EbgpP2U7Wb+V1uq0Zaavk8OLl3LfKf8srU1YpvhSLvIE9+41273vR81iShe
s6a+kvTtt/vHoMhhj89j99LltbYAB44RDmVyy9EcYB0mPsmd0wOt7sXxdg1cq/34fk/a5Nro/6vp
Fm+n645V9cczDbOP2NXkto55bipjcfUxoCb3KFAz2bhcGLQfgduv2IBeocy8n1BLBwgLlpnmEwMA
ADIHAABQSwMEFAAIAAgANGIaNQAAAAAAAAAAAAAAACcAEABET01Db3JlR2VuZXJhdGVkL0RPTURP
TUltcGxlbWVudGF0aW9uLmhVWAwAtJbwRCN08ET1AfUBtVXbbuM2EH33Vwy2DxsHqrNdLPYhKYrQ
Eh0TkEWVpOL6bRWJiVno4kpUUv99h4wT23GwBXoxYIuey5kzZ0jq4nwE5xC2m21nHtYWzsIxfP70
6Uvgfr8C2Wwqje56M1jdBcCaYgJAqgp8eA+d7nX3qMvJuzBfQeb1oCtYatOYB/i5z+vJk19fP9S5
qSZFW/+CqS5b6NL0tjN3gzVtA3lTwtBrMA307dAV2lvuTJN3W7hvu7oP4MnYNbSdf7aDdSh1W5p7
U+QOI4C807DRXW2s1SVsuvbRlLiw69zij0acqmqfTPMARduUxiX1DsXl1dpeuvVPkzfUemjvXzgV
bYmRQ29RCZsjV4ea37WPzrVTw4Hgp2mtKXSAEaaHCvEczL6sb++YExYtqtzUuvPyfj4lggUPFHkh
gn2WA5L7f7jAc5c7pLIthlo3Nn8Z2gXOo0V/B3WOe8bkVb8X3g/MAR+2MdltADVnEiSfqSURFHCd
Cn7LIhrBdAUkTWMKIV+kmaICd2ISTuDbNyIx8ONHIEmE35WDob+lgkoJXABbpDHDfAQUJFGMSp8Y
ZxFLbgKYZgoSriBmC6YwTPEASVAHcpoJfAYLKsI5/iVTFjO18lVnTCWu3AzrEUiJUCzMYiIcSpqJ
lEsKrp+IyTAmbEEjPEEswcJAb2miQM5JHL/fH/coIU+UYEiWCwlTinTJFGN9wWSFwIKGymXsVyHK
hjTjAGRKQ4aLZ2UotkXEKnDiIKykv2YYh36IyILcYJdn39fHdyV4mAm6cORRFJlNpWIKacMN55EX
XlJxy0IqryDm0kuXSRpgEUWCXVeIgtJhBIZPM8m8iCzB5kWWKsaTMcz5EiVCpgSzI682T3zPOCUu
/LQR2unh5xHAck7RJZy+XjXi5JCoXqgOw7Akiqlc/r5fSOhNzG5oElIXwB3Qkkk6xvEx6QLYc/El
WQHPfO8Y4zrbETnawIEfL7AZkOiWOf67eNwRku02kJcvnO/UnwACXYxGP5h603YWPkR8we9+14Wd
rD/AxQVs8F5qLOBB7PvR6No/AYNCKaXdVlqutbZXB45odzrfs6ntRh/a52oR7+NH16bB43uf4z2C
Tlbji2B/zi/hldpohMRmQ1M8X54/wtmU83i8zvuZzu3Q6cuzBNl17hI5H9+/Y3vUXY+5Vy73DT/0
Fh2m6EPjUfIfQ17hha/LJK+PPZvhrjIFK4+M/ba3umbl22InhY6yGsTuNyhFJtj3qp+yx+vRep2f
yx0N6rXmkfUI3xpbHXdV4xsgf4E7HNkr2qHxFMxNVjfl38z37MSEHMf/dRP/iAj90+rG7Zd+/G9U
8LX/AlBLBwg30FDu5QMAAP4IAABQSwMEFAAIAAgANGIaNQAAAAAAAAAAAAAAACgAEABET01Db3Jl
R2VuZXJhdGVkL0RPTURPTUltcGxlbWVudGF0aW9uLm1tVVgMALSW8EQjdPBE9QH1Ab1WXW/qRhB9
96+Y3r6YyJDkRlXV0EaXkJBYJRhhowhFEVrscdjK7NLddVJa9b93bAzYhnA/dFVeYGd2zpxzZr3m
9MQC+gRzriHmCQJ9L5kyIGMwc4RHnP3OabVEAVqmKkRYKvkHhqZVK5wzDTOkbS8oUDGDEcxW20Vz
xkXExYtuLZMW3Hgw8AJ48G7c3uQHa4eU8JliapWxiBUitYzNG1PYhpVMIWQCFEZcG8VnqSGyBpiI
TqXKERYy4vEqC6YiQpXzN6gWeiPmbjCGftHhLieWwDCdJTzM6/s8RKERSMgyi+r5WkNW2svY+AUb
6EnqwAyXog3IKb8m8IpKUww+bhoWiA5IBTYzmQhFXmaFDWK+goSsUZu61mEjdnoj4CLHndM86Ach
ktg3niTkPKQa4zRxcgzaDY9ucO+NA+gMJvDYGY06g2DSpt1mLimLr7jG4otlwgmahCkmzIq45xAP
t6PuPdV0rt2+G0wyCT03GNz6PvS8EXRg2BkFbnfc74xgOB4NPf+2BeAjbqwuPD1k99bqmFAXkhyN
0DCe6MKCCQ1bE80komP1ijT0EPkrkWQQyuXq8/PcNMjRWCLFSy6cqnbetkEXZPPz2/WGE3dw1+q7
16TDjUFI48Cb4nTOjMyBjh0EB1wRthz46RcIkCxFGCaMnpYm+GkGcXFxth7NtdQm2/7QgbOP5+fn
zfOLs58dGPudlnVyalk/0kAkPYAfQili/tKaf9iFbrwHN8NeoDB51yxbTQs6UIIllIDTUxCIEdmW
2UzJaci0+fXqOF5WxitBCBOm9ZGqnpLCVIh2fd83qwT9OaKpS6BkPXQjwzSDey8erJZYz90HD/1D
sZIFpdzBBu+hZzAHK2imhsxc+PREinw21qeaWXvuWFYT7FfJo0aELElkaP2THwQegz3lBdlGHso+
2znR1dulR+Py8rDfcHJVKm9e0Y2Hsd1o50BPOl3SxVI0fG5b/+5YxJwK+N/4/9HYdNzy+CxmYxrt
2bimq9CkSnwjvU3/a8/rN+iF1UNGaHhpD/z1RKlzfCBWXNBVCk8akxj2iT43r3bQdgHnbC75LYfa
6aYuoaK9WA5WSPyZkokxXdUDtqhm8rdV6EaVoF5pgws3Kkhvfbr9K8T8DdSVEQKG8Bucrae1x4iU
6jQxtOOpnptGpdUjXa2XR+zYF2ZXxDiwUeDAhrZD1BqtFzR243lNTzGu0RPE5FYpqWzKt8vzWJM9
YO+etRWfBBHQS7qqxyP3mN/78yILDP36JoPfM3dn7NeZapdlOFCz96mgWh3b83fwuHLRb42uRCum
Gm6S6uFd0B869lUe1npWjawmp5Xll1laKbFzwg7kLL+DX+U3y9aucnDfrdqtUweZlldfprBcsRa4
U0VMP6GIrP8AUEsHCE1ICP0TBAAAGQwAAFBLAwQUAAgACAA1Yho1AAAAAAAAAAAAAAAAHQAQAERP
TUNvcmVHZW5lcmF0ZWQvRE9NRWxlbWVudC5oVVgMALSW8EQmdPBE9QH1AbVVTW/bOBC9+1cMuofG
gdbpFkUPyWJRWqJjArLoFaW4vlWRaIeAJHolKtn8+x3S8tqO81G0aIDYtPjmzZs35OjifADn4OvN
Y6PWdwbO/CF8/PDhk2c/PwPZbEqJ29WmM7LxgNX5CICUJTh4C41sZXMvi9GzNJ9BZFUnS1hIVas1
/Nlm1ejBrb+sq0yVo1xXf2GojY5loVrTqNvOKF1DVhfQtRJUDa3umly6J7eqzppHWOmmaj14UOYO
dOO+dWcsS6ULtVJ5Zjk8yBoJG9lUyhhZwKbR96rAhbnLDH5I5ClL/aDqNeS6LpQNai2LjaukubTr
P0ZPpLWgVztNuS4Q2bUGnTAZarWs2a2+t1u9G5YE/2ptVC49RKgWSuSzNPu0rrxjTZg0LzNVycbZ
+/FUCCY8cGQnBOssOhT3a7TAtsqeqdB5V8naZLumXWA/NO43UGV4ZlRWtnvjXcMs8WEZo/4AJFMm
QPBJsiAxBVzPY37DAhrAeAlkPg8p+Hw2TxMa40mM/BF8+0YEAt+/BxIF+L+0NPTrPKZCAI+BzeYh
w3gkjEmUMCpcYJgGLLr2YJwmEPEEQjZjCcIS7qEIaklOI4FPYEZjf4o/yZiFLFm6rBOWRDbdBPMR
mJM4YX4aktiyzNN4zgUFW0/AhB8SNqMB3iAWYWKgNzRKQExJGD5fH3csPo+SmKFYHgsYU5RLxoh1
CaMlEsfUT2zEfuWjbSgz9EDMqc9wsXWGYlkkXnrWHKQV9O8UcbgPAZmRa6zy7HV/XFUx99OYzqx4
NEWkY5GwBGXDNeeBM17Q+Ib5VFxByIWzLhXUwyQJ8fqqkAWtQwTCx6lgzkQWYfFxOk8Yj4Yw5Qu0
CJUSjA6c2zxyNWOXeOy6jdTWD9cPDxZTilux9de5RqwdAt3zk0MYpkQzExu/rxcieh2yaxr51AK4
JVowQYfYPiYsgG2TL8gSeOpqR4ytrBdydIA9115gEyDBDbP6ezyeCMH6A+Ts86e9+yNAoovB4DdV
bXRj4F3AZxEOmNHdO7i4gA1OpdoAXsO2HQy+uG9ACDGmuTr47QshzGMpA4mPGncxD7ctY4jX7wo5
VI1XdJXhrMANWkp7k+FyhxoMMKtltxdVtoPf4SxC6sbOg/OhydZRVskrh5p0db6dnsegtTT/E1we
btQuFMH3WhXD9jXY0YP7rOwOAhtZ4Xx7I0Xv0RM5tsK38O0Jfr9Xy4et80cRTwQ9DdJlcRi068VW
Wt+AdvyYbL19Xt4L9kbiBN5usLVpzI42Sp1nZfSi/d9L80+XlfimlcWJ0Ndb9GMy3/bqh3lfOBo/
y/f06Fi+5w/PmPNweJe1b5ziE9hPNHyFb+12//O27JqD05A3+NpntdE3Sj5cbhNjs9f1Al/fid68
BGWrSEp8zfchubTTZffQjhtZFy8NnbP9GucXq0tVSzfFhr2tz0w167J9dPW9zPRfI+vWjqkJ+zr8
5QU7Vf8BUEsHCIZZWMxPBAAAYgsAAFBLAwQUAAgACAA1Yho1AAAAAAAAAAAAAAAAHgAQAERPTUNv
cmVHZW5lcmF0ZWQvRE9NRWxlbWVudC5tbVVYDAC0lvBEJnTwRPUB9QHFV21v4kYQ/s6vmF6/mBMh
yUVV1aQ9HXk9qwQQJo2i0yla7DFstezS3TUpqvrfO7s2LzaQ0FzU5gOB2ZlnnnlmPLYP39eA/gZj
biDlAoH+T5m2oFKwY4R7HP7K6dcUJRiV6RhhqtXvGNtmJXDMDAyR3EYoUTOLCQznyx8HQy4TLkem
ORVNuOxCpzuA2+5leP3wXW2FJPhQMz13LFKNSClT+8Q0nsFcZRAzCRoTbqzmw8wSWQtMJodKe4SJ
Sng6d8ZMJqg9f4t6YhbF3HTuoF1kuPHEBPSyoeCxj2/zGKVBoEKmzmrGeQ0u9NqxiQo2cK0oA7Nc
yTNATuc5gRlqQzb4sEhYIDZAaQiYdUVo0tIF1on5HARJoxdxze1CrOpNgEuPO6Z+0BdCpGKfuBCk
PGQG00w0PAZ5w304+Ny9G0Cr8wD3rX6/1Rk8nJG3HSs6xRnmWHwyFZygqTDNpJ0Tdw9xe9W/+Ewx
rfOwHQ4eXAnX4aBzFUVw3e1DC3qt/iC8uGu3+tC76/e60VUTIEJcSF1ouk3updQpoU4UKZqgZVyY
QoIHarYhmiKhsZohNT1GPiOSDGI1nb/cz0UCj8aEkiNfOEWttD0DU5D183vR7T2EnZtmOzynOsIU
pLINeNKc5swqD/TcIDQglHGzAT/8BAMkSRF6gtHVcgBR5iBOTo7y1pwrY537bQuOPhwfHx8cnxz9
2IC7qNWsvT+s1b6nhii6AN/FSqZ81By/W5kuu7dXAicorTOX7KGkSZJM0AEcHoJETEgvpy8dPsbM
2J8/rgJWKM7ZjYD/7SuBWDBjVr4ta3WJxUUU3WaWDQVGdi7wEilA+9Cq27PnxGsDmmwUVjV1VIJt
ugpK9q1G0txSzZOIrhjptat9qlS30rBWO4CAFtwFDeDpaWGE9/VHLM7/8g3TaDNN28/Fx7mSm0Ef
g6XMy0PH0J088qI39fpZ7W+ftRPlDCmbZaMOm2A52ReDIoUFka8HHwuvYImQK1UVmPCMM1XQdjg/
morlnq6R043c3iuof91CfoTW9dBvp9P1A/lySeuxgfNf1jZTPKmb56BLhhkT2SLZqjN/xugX7YXr
AsbwCxydeZfN+qpEGuAhGxRWz2M04wa70s2O1koH/mCNrMaJmuGLUryGXQW6ILgPs+ICq7TJTeVL
rVpEPjL63D4UVci8g00yr03KioHZYLA6k/jkvu2v0TKUCJtMWDrZh3KVQ/ClyJwHffWqLivYKe6a
UHn6zWorPasWrETynxS8hUbwpUj+djUvFnE+Z8VGNOfzQb6y9pi1JcKjLL7tnLkN+K1zt2NDdaIN
MmZKN+m7flg6ECpmYo+lXMYO1vEasATZvdb25fNHxgRP6SFtQ8+3XH0bFZTSfvNOfK34b7Azd/dm
70X6wpB/62R940XwzPDt3MjVBf4GJfzbe8ZraFeXuKP9/99KqJI3vpmcd7vtOr1Tv/rxaj22/Hi1
Af3We7GMvd9eTFWcmQJ3A9AfBuWAocj0Ln93VnE3sVZC0FuS+o3j02kuAu23kX/oHajpLqxyYLAe
8lyGMO34V7AiE72N0jvAwrhfroV3UA7Os35CmdT+AVBLBwjUEl01owQAAL4RAABQSwMEFAAIAAgA
NmIaNQAAAAAAAAAAAAAAABwAEABET01Db3JlR2VuZXJhdGVkL0RPTUVudGl0eS5oVVgMALSW8EQn
dPBE9QH1AbVUwW7bOBS86yse2kOTQCt3i6KHZrEoLdE2AVnUklS8vlWRmISAJBoSlSB/v4+MgqRN
0dsGiE2L8+bNzCO1uojgAlJ7ehzN7Z2Ds/QcPn38+Dn2n1+AnE6dxu3+NDs9xsCGJgEgXQcBPsGo
Jz3e6zb5Jc0XkHU/6w4O2gzmFv6a6j55COtvt31tuqSx/d9Y6quFbs3kRnM9O2MHqIcW5kmDGWCy
89jo8OTaDPX4CDd27KcYHoy7AzuGbzs7z9Lb1tyYpvYcMdSjhpMee+OcbuE02nvT4sLd1Q4/NPJ0
nX0wwy00dmiNL5o8i6/rtfvq138mP0mbwN48a2psi8h5cpiEq1GrZ62v7b3fWtLwJPg3WGcaHSPC
TNAhn6d5aRvs/agJmzZdbXo9hng/vRWCDV8l8iwEfbYzivt/tMCTy4Wptc3c68HVz0Nb4Tws7o/Q
13hmTN1NL8GHgXni1zaS5QCoHZMg+UYdiKCA61LwK5bRDNZHIGWZU0j5vqwUFXgSizSB79+JROCH
D0CKDP+Pnob+WwoqJXABbF/mDOuRUJBCMSpDYV5lrNjGsK4UFFxBzvZMIUzxGEVQT/K2EvgG9lSk
O/xJ1ixn6hi6bpgqfLsN9iNQEqFYWuVEeJayEiWXFLyfjMk0J2xPM7xBrMDGQK9ooUDuSJ7/2h8P
LCkvlGAolgsJa4pyyRqxoWFxRGJBU+UrXlYpxoYy8xhkSVOGi6dkKNoi4hj7cJBW0n8qxOE+ZGRP
tujy7Pf5BFeCp5Wgey8eQ5HVWiqmUDZsOc9C8JKKK5ZSeQk5lyG6StIYmygSL66QBaNDBMLXlWQh
RFageVGVivHiHHb8gBGhUoLVWUibF8EzTomLMG2k9nmEecRw2FHcEj7fkBrxcUhML1WvYdgSw1S+
/sUvFHSbsy0tUuoB3BMdmKTnOD4mPYA9NT+QI/AqeEeMd7YI+eEAx2G8wDZAsivm9S94PBGSLQco
xJfulvQTQKJVFL03/cmODt5lfF/gCya5ewerFZzwrTQ4wGs4TVEUfTMD3q+bGi864ujgjHuEr7DU
RBFWEPd0yfQU/QFnhZT4E+/yxflpvu5Mw9rLn55Pj5PT/dvn+L4IF7yoe32JrfXQRv8BUEsHCI6y
Fi1KAwAAOwYAAFBLAwQUAAgACAA2Yho1AAAAAAAAAAAAAAAAHQAQAERPTUNvcmVHZW5lcmF0ZWQv
RE9NRW50aXR5Lm1tVVgMALSW8EQndPBE9QH1AYVUXW/aQBB896/Ypi8QgUkaVVVDFcUhIbEKBmGj
CFVVdNhruOq4Q3dnIqvqf+/6MNCkKOEF2I/Zmdm1O6ce0CdZcgM5Fwj0vWbagsrBLhEecf6d0781
SjCq0CnCWqtfmFr/VeOSGZgjlS1QomYWM5iX+z/tOZcZlwvjr4UPtyOIRgkMR7dhf/bBOyAJPtdM
lxWLXCPSyNw+M41dKFUBKZOgMePGaj4vLJG1wGTWUdohrFTG87IKFjJD7fhb1CuzE3MfTWFQT7h3
xASMi7ngqesf8BSlQSAh6ypqllsNVWu/YhPXbKCvaAKzXMkuIKf8lsAGtaEYfNoNrBFboDQ0mK1E
aPKyamwS8xIEWaN3ff5xIw56M+DS4S5pH/SDEEnsMxeCnIfCYF6IlsOgangMk4fRNIEgmsFjMJkE
UTLrUrVdKsriBrdYfLUWnKBJmGbSlsTdQQzvJr0H6gluwkGYzCoJ/TCJ7uIY+qMJBDAOJknYmw6C
CYynk/EovvMBYsSd1bWnx+zeW50T6kqRoxlaxoWpLZjRsg3RFBmd1QZp6SnyDZFkkKp1+f4+dwMc
GhNKLpxw6jp42wVTk3X32xuNZ2F07w/CG9IR5iCVbcGz5nRnVjmgtw6hBaFM/RZ8/goJkqUIY8Ho
aWlDXFQQFxdn29XcKGOr8mEAZ5/Oz8/b5xdnX1owjQPfO+143kdaiKIH8CRVMucLf3lyCN2OhnfS
cltW0RfhUNIhSSYoAZ0OSMSM7KrspeRTyoz9dnVo2INUtdUB4AqldTogFcyYQympsASziukGpWPj
Xb/q2LPyvDY06I3Ro41eXm5jcNp8wm32t9Ov0RaaXiZVc7pl9l/LVWPPep+LVIZV5onXUpvNrvfH
jYziLTua5R7cNMxeDvthUORQ8/jZvtpVNY5BmNJYXL0Hsas6CkGn46yJ2Arfhvm3soa6Rpl5fwFQ
SwcIgbMY6cgCAACYBQAAUEsDBBQACAAIADZiGjUAAAAAAAAAAAAAAAAlABAARE9NQ29yZUdlbmVy
YXRlZC9ET01FbnRpdHlSZWZlcmVuY2UuaFVYDAC0lvBEJ3TwRPUB9QG1VE1v2zgUvPtXPHQPbQrB
7haLHrqLRWmJtgnIopak4vWtikUnBPRhSHSC/PsdMg6SboveasAyLc6bNzOP0uL9jN5TOpweR3d7
5+ldekUfP3z4IwnXT8ROp9ZiuzudvR0TEv1hTsTaliJ8otFOdry3zfyHNJ9I193ZtrSzrne39NdU
d/OHuP5y29WunR+G7m+UhmplGzf50d2cvRt6qvuGzpMl19M0nMeDjXduXF+Pj3Qcxm5K6MH5OxrG
+DucfWDphsYd3aEOHAnVo6WTHTvnvW3oNA73rsHC39UeFwueth0eXH9Lh6FvXCiaAkuo66z/HNa/
z/8nbaLh+KzpMDRAniePJHwNrYG1vhnuw9YljUCCTz94d7AJEG6iFnyB5qVttPetJjQ9tLXr7Bjj
/fi9EDR8lcizEPhszhD3a7TQk8sLUzMczp3tff08tAXmMWB/pK7GmXF1O70EHwcWiF/bmF8OgNkI
TVquzI4pTliXSl6LjGe03BMry5xTKrdlZbjCSSzSOX39yjSAb98SKzJ894GG/1sqrjVJRWJb5gL1
IFSsMILrWJhXmSjWCS0rQ4U0lIutMIAZmUAEDyTfV5Jc0ZardIO/bClyYfax60qYIrRboR+jkikj
0ipnKrCUlSql5hT8ZEKnORNbnuEJEgUaE7/mhSG9YXn+Y38ysqSyMEpArFSalhxy2RLY2LDYg1jx
1ISKl1WK2CAzT0iXPBVYPCXDYYupfRLCAa3m/1TAYZ8ytmVruHz383yiKyXTSvFtEI9QdLXURhjI
prWUWQxec3UtUq7/pFzqGF2leYImhiUXV2BBdEAAvqy0iCGKAuZVVRohiyvayB0iglKG6iymLYvo
GVOSKk4b1CGPOI+EdhuOLRXyjamxEIdGeql5DUNLhGlC/YtfKvg6F2tepDwAZCDaCc2vMD6hA0A8
Nd+xPckqegcmOLsI+eYAJ3G8JFbEsmsR9F/wOBFaXA5QjC/dXNKfE4gWs9lvrjsNo6c3mdwWeMHM
797QYkEnvJV6T3gMp2k2m31xPZ6vY40HHTjee+cflT1agHDrM12KAbR9M/sPUEsHCDuM368iAwAA
6QUAAFBLAwQUAAgACAA2Yho1AAAAAAAAAAAAAAAAJgAQAERPTUNvcmVHZW5lcmF0ZWQvRE9NRW50
aXR5UmVmZXJlbmNlLm1tVVgMALSW8EQndPBE9QH1AYVTTY+bMBC98yum20u7SkiyUVVVuZR8LmoS
EBBFORoYgivHRrZJxL/fgSQbqV21XIDxzJv33owHzw7Qk5TcQMEFAr0rpi2oAmyJsMf0F6e/CiUY
VesModLqN2bW/aOwZAZSpLQjStTMYg5p8/7TT7nMuTwatxIuzAPYBglsgrm/PHxyHkiCp5rppmVR
aERqWdgL0ziBRtWQMQkac26s5mltiawFJvOB0h3CSeW8aNpgLXPUHX+L+mTuYlbbHaxvHVYdMQFh
nQqedfVrnqE0CCSkaqOmvGpoS5ctm/jGBpaKOjDLlZwAcjq/EjijNhSDl3vDG2IPlIYvzLYiNHnZ
Fn4l5g0Iskbf69yPjXjozYHLDrekedAHIZLYCxeCnIfaYFGLXodB2bD3k9dgl4C3PcDeiyJvmxwm
lG1LRad4xisWP1WCEzQJ00zahrh3EJtFNHulGm/qr/3k0EpY+sl2EcewDCLwIPSixJ/t1l4E4S4K
g3jhAsSId6tvnn5k97vVBaGeFDmao2VcmJsFBxq2IZoip7U6Iw09Q34mkgwyVTX/n+e9QYfGhJLH
TjhVPbydgLmR7fZ3FoQHf7ty1/6UdPgFSGV7cNGc9syqDuhfi9ADX2ZuD779gATJUoRQMLotfYjr
FmI8Hl5HM1XGtukbD4Yvo9GoPxoPv/dgF3uu8zxwnM80EEUX8ClTsuBHt3x6hObBZiEtt02EBWqU
GbbHjvOzHSKeUNqOC/ydRzkoc+cNUEsHCPPa1QswAgAA7wMAAFBLAwQUAAgACAA2Yho1AAAAAAAA
AAAAAAAAIgAQAERPTUNvcmVHZW5lcmF0ZWQvRE9NTmFtZWROb2RlTWFwLmhVWAwAtJbwRCh08ET1
AfUBtVRdb9s2FH3Xr7hoHxoHmt0VQx/iYggt0TYBWdRIKZ7fqkiMzUFfkKhk/fe7pJ06brpiG7AA
thny3HPPOfyYXXtwDUHbfen1/mDgKpjAh/fvf/Ht90cgXVcpXK670ajeB9YUUwBSVeDgA/RqUP2j
KqffpfkIMq9HVcFW6Ubv4dOQ19MnN77d17mupkVb/4qltlqoUg+m1/ej0W0DeVPCOCjQDQzt2BfK
zdzrJu+/wEPb14MPT9ocoO3dbzsay1K3pX7QRW45fMh7BZ3qa22MKqHr20dd4sAccoNfCnmqqn3S
zR6Ktim1LRosi62rlbmx45+n30gboH141lS0JSLHwWASJketljW/bx/t0ikNS4J/TWt0oXxE6AEq
5LM057bO3qUmbFpUua5V7+L98FoINnyRyLMQ9FmOKO7/0QJHlyemsi3GWjUmf960Ge5Hi+s91Dme
GZ1Xwzl4t2GW+KWN6ekApGsmQfJluiWCAo4Twe9YSENY7IAkSUQh4JskS6nAkxgHU/j8mUgEvnsH
JA7xs7M09PdEUCmBC2CbJGJYj4SCxCmj0hVGWcjilQ+LLIWYpxCxDUsRlnIfRVBL8roS+BI2VARr
/JcsWMTSneu6ZGls2y2xH4GEiJQFWUSEZUkykXBJwfoJmQwiwjY0xBvEYmwM9I7GKcg1iaLv++OO
JeBxKhiK5ULCgqJcskCsaxjvkFjQILUV51GAsaHMyAeZ0IDh4JgMRVtE7HwbDtJK+luGOFyHkGzI
Cl1e/Tgf50rwIBN0Y8VjKDJbyJSlKBtWnIcueEnFHQuonEPEpYsuk9THJinxT66QBaNDBMIXmWQu
RBajeZElKePxBNZ8ixGhUoLVoUubx84z7hIXbreR2ubh9sOH7ZrikrD5utSIjUNiekH6EoYtMczU
1p/9QkxXEVvROKAWwC3Rlkk6we1j0gLYsfmW7IBnzjtirLOTkIsD7LvtBbYEEt4xq/+ExxMh2ekA
ufiC9Sn9KSDRzPPe6rprewNvQr7h93+owkwPb2A2gw7fpcYAXsRh8Lxb9wsIivEVmuOEbvDGPeR4
9e1kXqvSrmzyDm7gK5fnIRMxx+unBu8nuBqbQe8bVU4q1ezNYe4gy7Epjg8iIk5N4HqyV8YxM6Pq
m6tYSiTC9+F60uDs/BI7XGDP83m//wbZqxrfqX9MrB3mq2zdlOrP+d/rjOUrwqHDmDLBLhaqtsir
+Mc+LNe/cPIfWnu3qim9vwBQSwcIudT1UJ4DAACaBwAAUEsDBBQACAAIADZiGjUAAAAAAAAAAAAA
AAAjABAARE9NQ29yZUdlbmVyYXRlZC9ET01OYW1lZE5vZGVNYXAubW1VWAwAtJbwRCh08ET1AfUB
xVZtb+JGEP7uXzG9fjERmOSiqmpooyOE5KwDgzAoQlEULfYYtlp20e6aHK363ztezGuS3vV6d+VD
EnZ2nrcZW6mfeECf4YwbyLhAoN8Lpi2oDOwM4Q4nHzh9W6AEo3KdICy0+h0TGxw1zpiBCdK1KUrU
zGIKk9X2S23CZcrl1AQLEcB1D6LeELq96/Bm/IO3QxJ8opleFSoyjUiUmX1iGhuwUjkkTILGlBur
+SS3JNYCk2ldaYcwVynPVsVhLlPUTr9FPTcbM7fRCDolw60TJqCfTwRPXH+HJygNAhlZFKdmtvZQ
tN4UauJSDdwoYmCWK9kA5FRfC1iiNnQGbzeEJWIVlAaf2cKEpiyLxgopX4GgaPSmL3g5iJ3fFLh0
uDOaB/1BiGT2iQtByUNuMMtF1WHQbbgLh+97oyE0ozHcNQeDZjQcN+i2nSmq4hLXWHy+EJygyZhm
0q5Iu4Potget99TTvAo74XBcWLgJh1E7juGmN4Am9JuDYdgadZoD6I8G/V7cDgBixE3UZaYvxb2N
OiPUuaJEU7SMC1NGMKZhG5IpUlqrJdLQE+RLEskgUYvVp+e5IXBoTCg5dcapa5dtA0wp1u1vq9cf
h9Ft0AmvyEeYgVS2Ck+a055Z5YD+aRGqEMokqMJPv8AQKVKEvmD0tNQgzguI8/PT9WiulLHF9W4T
Tt+enZ3Vzs5Pf67CKG4G3knd836kgSh6AN8kSmZ8Gsze7I6ue92IzTGNVIpdtihqB8VQ0jpJJqgA
9TpIxJRCK0Km4mPCjP31ctdwBFV0FMuAc5TWeYJEMGMO6en6gaRnB2TbEuM8pqWVTr737gj2yIbn
1cBfKp5WUmRCqMT70yXFM/AfeWmp4o6Kz9YKvZtatDsXF/tgcHK511S7pBcBZn6l4drvTb6g562k
eWh4f+24M04N/A/81uQbni37K0iVR7mf0VqVRptr+a9UbGhyafhUYloRKKd2dgh4b1BkcMD4ULtc
3/S3EOX8SdsUrWMMLc4v/CheD5sKBcIR9KbrUdLPO3oKL15m28f0i1oloCO/8vCc3hzQ786Znpbk
22DaHxN0L9xWcQUT+A1O1/PYtpFSkwtLlc/Wui/AvyfadcdDlRh2sl0KjBvsSQJua620T/XGfjxr
7ucWNc7VEj8Z8jf2eaTCjeXreeTO2HYx6T8E/PiFy1NA+Q7g9a3ZX7AofpaoWdD7ejQIDwr0mmAi
+jpLHcX+Pk8VtuCft+mF5v9518nC99j2L53O930aXp/nfwrmHcrU+xtQSwcI90lylLkDAACYCwAA
UEsDBBQACAAIADZiGjUAAAAAAAAAAAAAAAAeABAARE9NQ29yZUdlbmVyYXRlZC9ET01Ob2RlTGlz
dC5oVVgMALSW8EQodPBE9QH1AbVUTW/bOBS8+1c8dA+NA1Vui6KHZLEoLdE2AVnUklRc36pIjM1C
H4ZEJe2/7yOtrNNtsbcNYJsR582bmUdqcT2Da4i60/feHI4WrqI5vH/79kPgvj8COZ1qjdvNabS6
D4C1ZQhA6ho8fIBeD7p/1FX4W5qPIItm1DXstGnNAf4ciiZ88utPh6YwdVh2zV9Y6qqFrsxge3M/
WtO1ULQVjIMG08LQjX2p/ZN70xb9d3jo+mYI4MnYI3S9/+1G61iarjIPpiwcRwBFr+Gk+8ZYqys4
9d2jqXBhj4XFL408dd09mfYAZddWxhUNjsXVNdreuPW78F/SBugenjWVXYXIcbCYhC1Qq2Mt7rtH
tzWl4Ujwr+2sKXWACDNAjXyO5tLW2/tZEzYt68I0uvfxvv9VCDZ8kcizEPRZjSju/9ECZ5cTU9WV
Y6NbWzwPbYHz6HC/h6bAM2OKergE7wfmiF/aCKcDoDZMguQrtSOCAq4zwe9YTGNY7oFkWUIh4tss
V1TgSUyjEL58IRKBr18DSWP87B0N/ZwJKiVwAWybJQzrkVCQVDEqfWGSxyxdB7DMFaRcQcK2TCFM
8QBFUEfyayXwFWypiDb4L1myhKm977piKnXtVtiPQEaEYlGeEOFYslxkXFJwfmImo4SwLY3xBrEU
GwO9o6kCuSFJ8nt/3LNEPFWCoVguJCwpyiVLxPqG6R6JBY2Uq7isIowNZSYByIxGDBfnZCjaImIf
uHCQVtK/c8ThPsRkS9bo8uq/8/GuBI9yQbdOPIYi86VUTKFsWHMe++AlFXcsovIWEi59dLmkATZR
JJhcIQtGhwiEL3PJfIgsRfMizxTj6Rw2fIcRoVKC1bFPm6feM06JCz9tpHZ5+HkEsNtQ3BIuX58a
cXFITC9SL2HYEsNUrv7iF1K6TtiaphF1AO6IdkzSOY6PSQdg5+Y7sgeee++Icc4mIT8d4MCPF9gK
SHzHnP4JjydCsukA+fiizZR+CEi0mM3+MM2p6y28ivmW33/VpQ2Pr2CxgBO+l1oLeBGHYTb75H8B
QSm+hW7xgWnxxj0UePWnh4m72jfwD89shizEnq+eHmZv4GpsB3NodTWvdXuwx1sPWY1teX4ZImLi
guu5sbq5uVSYttLfXF/dVrMfUEsHCI2RRNVWAwAASgYAAFBLAwQUAAgACAA2Yho1AAAAAAAAAAAA
AAAAHwAQAERPTUNvcmVHZW5lcmF0ZWQvRE9NTm9kZUxpc3QubW1VWAwAtJbwRCh08ET1AfUBtVTb
btpAEH33V0zTF4jAhEZV1VChOBcSqwQjMIpQFEWLPYatll20uyalVf+948WG3NT2pX4Bz845c+bM
rFuHHtATL7iBjAsE+l0xbUFlYBcItzj7yulthRKMynWCsNLqGybWfwFcMAMzpLQ5StTMYgqzze6l
OeMy5XJu/JXw4SKCQRTDTXQR9qbvvD2T4DPN9KZQkWlEKpnZR6axAxuVQ8IkaEy5sZrPcktiLTCZ
tpR2DEuV8mxTBHOZonb6LeqlqZq5GkygX1a4csIEDPOZ4InD93mC0iBQI6siahbbHgpor1AzLtVA
T1EFZrmSHUBO51sBa9SGYvChKlgyNkBpqDFbNKHJywJYJ+UbEGSNrnD+20bs+02BS8e7oHnQH2Kk
Zh+5EOQ85AazXDQcB2XDbRhfR5MYgsEUboPRKBjE0w5l24WiU1zjlosvV4ITNTWmmbQb0u4obi5H
59eECc7CfhhPixZ6YTy4HI+hF40ggGEwisPzST8YwXAyGkbjSx9gjFhZXXr6lt07qzNiXSpyNEXL
uDClBVMatiGZIqW1WiMNPUG+JpEMErXa/H2eVQHHxoSSc9c4ofbedsCUYt3+nkfDaTi48vvhGfUR
ZiCVbcCj5rRnVjmiPy1CA0KZ+A34+BliJEsRhoLRbWnCOC8ojo+PtqM5U8YW6TcBHH1ot9vN9vHR
pwZMxoHvHbY87z0NRNEFPEiUzPjcXxzsQxfRzUCl2KeNKOLPDkJJqySZoANotUAipmRYYTAdPiTM
2C/dPeAJTZFdLAEuUVrXCySCGfOq7DMpVcA7fYF9otHzmlBbK57WU2RCqMT76SzgGdQeeKm37kLF
s9NJH51zWoqTk4oIDrtPAM0u3W7MavWOg96ZfEWXqCxx3/F+7etmnAD8B/7PwlWNXeU3WOoPsvJk
q0SjzbX858oVdS4Nn0tM6wLl3C6ek90ZFBnsKt03u9us2g5ezob00EouT/Z09HHG7y/YqmRHeEu3
5+R1gYKm5sD1bfunKFPvN1BLBwi75NzM+AIAAFUGAABQSwMEFAAIAAgAN2IaNQAAAAAAAAAAAAAA
AB4AEABET01Db3JlR2VuZXJhdGVkL0RPTU5vdGF0aW9uLmhVWAwAtJbwRCl08ET1AfUBtVRNb9s4
FLzrVzx0D00CVW6Lood2UYSWaJuALGpJKq5vVSQmISCJhkQlyL/fR0ZB0g/sbQ3YpsV582bmkV5d
RHABqT09jub2zsFZeg4f37//FPvPz0BOp07jdn+anR5jYEOTAJCugwCfYNSTHu91m/yR5jPIup91
BwdtBnMLf091nzyE9eVtX5suaWz/DUt9tdCtmdxormdn7AD10MI8aTADTHYeGx2eXJuhHh/hxo79
FMODcXdgx/BtZ+dZetuaG9PUniOGetRw0mNvnNMtnEZ7b1pcuLva4YdGnq6zD2a4hcYOrfFFk2fx
db12X/z6Q/KLtAnszbOmxraInCeHSbgatXrW+tre+60lDU+Cr8E60+gYEWaCDvk8zUvbYO9nTdi0
6WrT6zHE+/F3IdjwVSLPQtBnO6O4/0cLPLlcmFrbzL0eXP08tBXOw+L+CH2NZ8bU3fQSfBiYJ35t
I1kOgNoxCZJv1IEICrguBb9iGc1gfQRSljmFlO/LSlGBJ7FIE/jxg0gEvn0LpMjwffQ09HspqJTA
BbB9mTOsR0JBCsWoDIV5lbFiG8O6UlBwBTnbM4UwxWMUQT3J75XAN7CnIt3hT7JmOVPH0HXDVOHb
bbAfgZIIxdIqJ8KzlJUouaTg/WRMpjlhe5rhDWIFNgZ6RQsFckfy/M/+eGBJeaEEQ7FcSFhTlEvW
iA0NiyMSC5oqX/GySjE2lJnHIEuaMlw8JUPRFhHH2IeDtJL+UyEO9yEje7JFl2f/nU9wJXhaCbr3
4jEUWa2lYgplw5bzLAQvqbhiKZVfIecyRFdJGmMTReLFFbJgdIhA+LqSLITICjQvqlIxXpzDjh8w
IlRKsDoLafMieMYpcRGmjdQ+jzCPGA47ilvC5xtSIz4Oieml6jUMW2KYyte/+IWCbnO2pUVKPYB7
ogOT9BzHx6QHsKfmB3IEXgXviPHOFiE/HeA4jBfYBkh2xbz+BY8nQrLlAIX40t2SfgJItIqiv0x/
sqODNxnfF/gHk9y9gdUKTvivNDjAazhNURRdmgHv102NFz3gliv4BZaqKMIa4p6umZ6id3BWSIk/
8TZfnJ/m6840rP36y/PpcXK698+jSz200b9QSwcIpDfAqT4DAAAhBgAAUEsDBBQACAAIADdiGjUA
AAAAAAAAAAAAAAAfABAARE9NQ29yZUdlbmVyYXRlZC9ET01Ob3RhdGlvbi5tbVVYDAC0lvBEKXTw
RPUB9QGFVF1v2kAQfPev2KYvJAITElVVQxXFISGxCjbCRhGqquiw13DVcYfuzkRW1f/etbEhiVDD
C7AfszOza3fPHKBPvOIGMi4Q6HvDtAWVgV0hPOHiB6d/G5RgVK4ThI1WvzGx7rvGFTOwQCpbokTN
LKawKPZ/OgsuUy6Xxt0IF+5CCMIYxuGdP5x/cg5Igi8000XJItOINDKzL0xjHwqVQ8IkaEy5sZov
cktkLTCZdpWuENYq5VlRBnOZoq74W9Rr04h5CGYwqic8VMQETPKF4EnVP+IJSoNAQjZl1Kx2GsrW
YckmqtnAUNEEZrmSfUBO+R2BLWpDMbhoBtaIbVAaWsyWIjR5WTaeEvMCBFmjmz73uBEHvSlwWeGu
aB/0gxBJ7AsXgpyH3GCWi3aFQdXw5MeP4SwGL5jDkzedekE871O1XSnK4hZ3WHy9EZygSZhm0hbE
vYIY308Hj9Tj3fojP56XEoZ+HNxHEQzDKXgw8aaxP5iNvClMZtNJGN27ABFiY3Xt6TG791ZnhLpW
5GiKlnFhagvmtGxDNEVKZ7VFWnqCfEskGSRqU3y8z2ZAhcaEkstKOHUdvO2DqclW9zsIJ3M/eHBH
/i3p8DOQyrbhRXO6M6sqoP8dQht8mbht+PINYiRLESaC0dPSgSgvIS4vz3eruVXGluVjD84ver1e
p3d5/rUNs8hznbOu43ymhSh6AE8SJTO+dFcnh9BdOA6UreaV8TcJX9IpSSYoAd0uSMSUDCsNpuRz
woz9fn1oeAVTVpdHgGuUuyAkghlzKCYlloDWEd2hrBg5N+86XjFznA606L0xoL1eXTVRODt9lk3F
n8oJjTbX9Fopg8mO4ZG269ae/6tsimXmmdeiT0/7zt9qcBDtWNK86iFO/PTtuJ8GRQZ7Lr86101d
6xiIKYzF9ccgTV0NcoMydf4BUEsHCFKfrEW5AgAAXQUAAFBLAwQUAAgACAA3Yho1AAAAAAAAAAAA
AAAAKwAQAERPTUNvcmVHZW5lcmF0ZWQvRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmhVWAwAtJbw
RCp08ET1AfUBtVRNb9s4EL3rVwy6h8aBarfFood0UYSWaJuALGpJKq5vVSTGISCJhkQl6L/fIaMg
6Qf2sMAasE2Rb968ecPR6jKCS0js+ftgTvcOLpIFfHz//s/Y/34Ccj63Go+78+T0EAPr6yUAaVsI
8BEGPerhQTfL39J8All1k27hoE1vTvDXWHXLx7C+PnWVaZe17b5gqI8WujGjG8zt5IztoeobmEYN
pofRTkOtw86t6avhO9zZoRtjeDTuHuwQ/u3kPEtnG3Nn6spzxFANGs566IxzuoHzYB9Mgwt3Xzn8
0cjTtvbR9Ceobd8YHzR6Fh/XaXfl1x+WP0kbwd49a6ptg8hpdOiEq1CrZ61u7YM/mt3wJPjprTO1
jhFhRmiRz9O8pA3l/agJk9ZtZTo9BHs//ioEE75y5FkI1tlMKO7/0QJPVc5Mja2nTveuem7aCvth
8XyArsI7Y6p2fDE+NMwTvy5jOV8AtWMSJN+oAxEUcF0IfsNSmsL6CKQoMgoJ3xelogJvYp4s4ds3
IhH49i2QPMXv0dPQr4WgUgIXwPZFxjAeCQXJFaMyBGZlyvJtDOtSQc4VZGzPFMIUj1EE9SS/RgLf
wJ6KZIePZM0ypo4h64ap3KfbYD4CBRGKJWVGhGcpSlFwScHXkzKZZITtaYoTxHJMDPSG5grkjmTZ
7+vjgSXhuRIMxXIhYU1RLlkjNiTMj0gsaKJ8xMsqQdtQZhaDLGjCcPHkDMWyiDjG3hyklfTvEnF4
DinZky1WefHv/oSqBE9KQfdePJoiy7VUTKFs2HKeBuMlFTcsofIzZFwG60pJY0yiSDxXhSxoHSIQ
vi4lCyayHIsXZaEYzxew4we0CJUSjE6D2zwPNWOXuAjdRmrvR+hHDIcdxSPh/Q2uEW+HRPcS9RqG
KdFM5eNf6oWcbjO2pXlCPYB7ogOTdIHtY9ID2FPyAzkCL0PtiPGVzUJ+uMBxaC+wDZD0hnn9Mx5v
hGTzBQr2JbvZ/SUg0SqK/jDd2Q4O3qR8n+MLZnn/BlYrOONbqXeAYziOURRdmx7n667CQUdcMdha
jyOOKutxtKY6zOMVzBRRhATEPc2cHqN3cJFLiY842pcLVw0n7T7/tNtUrgp7D9Y0i1G7FDeu/gsi
utZ9E/0DUEsHCMz/sjtUAwAAbAYAAFBLAwQUAAgACAA3Yho1AAAAAAAAAAAAAAAALAAQAERPTUNv
cmVHZW5lcmF0ZWQvRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tVVgMALSW8EQqdPBE9QH1AZVU
72/aMBD9nr/itn2BCkK7appWtmophS4aJYgEVWiaKpNcwJOxke3QoWn/+87m11rRVeMLcL737r3n
S1onAdAnm3MDJRcI9L1k2oIqwc4R7nD6ldO/JUowqtI5wlKrH5jb8AlwzgxMkdpmKFEziwVM1/s/
zSmXBZczEy5FCNcJDJIMbpPruDd5FRyYBJ9qptdORakRaWRpH5jGNqxVBTmToLHgxmo+rSyJtcBk
0VLaMyxUwcu1K1ayQO31W9QLszNzMxhDfzvhxgsTMKymguce3+c5SoNARpauauYbDw7ac2rSrRro
KZrALFeyDcjpfCNghdpQDd7uBm4ZG6A01Jh1JjRl6YB1Ur4GQdHoHS48HsTBbwFcet453Qf9IEYy
+8CFoOShMlhWouE5qBvu4uxLMs4gGkzgLhqNokE2aVO3nSs6xRVuuPhiKThRkzHNpF2Tdk9x2x11
vhAmuor7cTZxFnpxNuimKfSSEUQwjEZZ3Bn3oxEMx6NhknZDgBRxF/U202Nx76MuiXWhKNECLePC
bCOY0GUbkikKWqsV0qXnyFckkkGuluuX73M3wLMxoeTMGyfUIds2mK1Yv7+dZDiJBzdhP74iH3EJ
UtkGPGhOe2aVJ/rXIjQglnnYgHcfIEOKFGEoGD0tTUgrR3F+frq5mitlrGu/jeD07dnZWfPs/PR9
A8ZpFAYnrSB4Qxei6AF8nStZ8lk4f30oXSe3Q61yNIYepVjSXlS5G+6aHnXFkvZKMkEH0GqBRCwo
PZc2Hd7nzNiPlwfAc5wO6tYDFyitdwm5YMb8haQFJtZFShsqvdbg8xPEc5qDoAk1er106PovLo62
wEn9fnkU+8tHqdFWmt5LblK+cfUS4WVtH8C+daAKdCf3fJtavd4Ofnt9g3TjjJRYpmdoH0/+ZlCU
cFzj9+blBlI7xkZLw/6LywEOTCvFi7pBe03Vi2d4ozTtjrKaqxDOl/aWuz9z9K+hjvOOOXyC07Zv
eUHGdqZnbRCwvkFpxg0mkrLtaq10zR+Q1M8oi+APUEsHCM8kX/IFAwAAZAYAAFBLAwQUAAgACAA3
Yho1AAAAAAAAAAAAAAAAGgAQAERPTUNvcmVHZW5lcmF0ZWQvRE9NVGV4dC5oVVgMALSW8EQqdPBE
9QH1AbVUTW/bOBS8+1c8tIcmgdbuFose0sWitETbBGRRS1Lx+lZGom0CkmhIVLL99/vIOEj6gd7W
gC1anDdvZh6lxc0MbiB156+DPZ48XKXX8OH9+z+S8PsRyPncGtzuzpM3QwKsr+cApG0hwkcYzGiG
B9PMf0rzEaTuJtPCztjeHuHPUXfzx7j+fOy0bee16/7C0lAtTGNHP9j7yVvXg+4bmEYDtofRTUNt
4p172+vhKxzc0I0JPFp/AjfEq5t8YOlcYw+21oEjAT0YOJuhs96bBs6De7ANLvxJe/wxyNO27tH2
R6hd39hQNAaWUNcZfxvWv8+/kzaCOzxrql2DyGn0mITXqDWw6nv3ELYuaQQS/PTO29okiLAjtMgX
aF7aRnvfasKmdattZ4YY74cfhWDDV4k8C0GfzYTi/h8t8OTywtS4eupM7/Xz0BY4D4f7A3Qaz4zV
7fgSfBxYIH5tY345AGrDJEi+UjsiKOC6FPyOZTSD5R5IWeYUUr4tK0UFnsQincOXL0Qi8N07IEWG
332gof+UgkoJXADbljnDeiQUpFCMyliYVxkr1gksKwUFV5CzLVMIUzxBETSQ/FgJfAVbKtIN/iVL
ljO1j11XTBWh3Qr7ESiJUCytciICS1mJkksKwU/GZJoTtqUZPkGswMZA72ihQG5Inv/cH48sKS+U
YCiWCwlLinLJErGxYbFHYkFTFSpeVinGhjLzBGRJU4aLp2Qo2iJin4RwkFbSvyvE4T5kZEvW6PLq
1/lEV4KnlaDbIB5DkdVSKqZQNqw5z2Lwkoo7llL5CXIuY3SVpAk2USS5uEIWjA4RCF9WksUQWYHm
RVUqxotr2PAdRoRKCVZnMW1eRM84JS7itJE65BHnkcBuQ3FLhHxjaiTEITG9VL2GYUsMU4X6F79Q
0HXO1rRIaQDwQLRjkl7j+JgMAPbUfEf2wKvoHTHB2UXINwc4ieMFtgKS3bGg/4LHEyHZ5QDF+NLN
Jf05INFiNntru7MbPLzJ+DY96UHX+CBl2uv56Q0sFnDG11PvAZ/HcZzNPscrIFaZf/0nvGF7xB80
vgEuN+EWvqeazZBoNfX10zvvN7h6xt5cj+fW+rC+vZr60R5701y7w2E0kd30zew/UEsHCJqGyzhK
AwAANwYAAFBLAwQUAAgACAA3Yho1AAAAAAAAAAAAAAAAGwAQAERPTUNvcmVHZW5lcmF0ZWQvRE9N
VGV4dC5tbVVYDAC0lvBEKnTwRPUB9QGFVF1v2jAUfc+vuNteoILQD03TylY1pdBGowRBUIWmqTLJ
DXgyNrIdOjTtv+/aCbBV1cYLyf0495xz7XROAqBfuuIGCi4Q6H/DtAVVgF0hPOLiC6e3DUowqtQZ
wkar75jZ8EXjihlYIJUtUaJmFnNY7A4v7QWXOZdLE25ECLcJjJIUHpLbeDB/ExyRBF9opneORaER
aWRhn5nGLuxUCRmToDHnxmq+KC2RtcBk3lHaI6xVzoudC5YyR+35W9RrsxdzN5rBsJ5w54kJGJcL
wTPfP+QZSoNAQjYualaVBtc6cGymNRsYKJrALFeyC8gpXxHYojYUg/P9wBqxBUpDg1knQpOXrrFJ
zHcgyBq97wtfN+KoNwcuPe6K9kEPhEhin7kQ5DyUBotStDwGVcNjnN4nsxSi0Rweo8kkGqXzLlXb
laIsbrHC4uuN4ARNwjSTdkfcPcRDf9K7p57oJh7G6dxJGMTpqD+dwiCZQATjaJLGvdkwmsB4Nhkn
034IMEXcW117+prdB6sLQl0rcjRHy7gwtQVzWrYhmiKnY7VFWnqGfEskGWRqs/v/PvcDPBoTSi69
cOo6etsFU5P157eXjOfx6C4cxjekIy5AKtuCZ83pnFnlgf51EFoQyyxswfuPkCJZijAWjG5LG6al
g7i4OK1Wc6OMdeUPEZyen52dtc8uTj+0YDaNwuCkEwTvaCGKLuDbTMmCL8PV22PoNnlI8Yd1sb+C
saRjJJmgBHQ6IBFzMsuZS8mnjBn76erYUEO4Srd8XKO0XgNkghnz6riXzUFw/aK3Lg6CNjToq9Gj
rV5eugicNJ+sy/z0+jXaUtPHxLVlFbcX5VeNA+tDZqRydJknXkttNrvBLz+sHkxjDJ1k654vG6U0
fCkxb6qiMLiffYDr/8jQX8Oew8UMPsNp15cc0IioKYWlzNd9zMt4pHN0+dWgKKr3b+2rw9xGNa1F
iM1vFZ5m3GAiCaKvtdINynT/9KGa4rVco8yD31BLBwhvrdSY6gIAAJEFAABQSwECFQMKAAAAAACQ
dRo1AAAAAAAAAAAAAAAAEQAMAAAAAAAAAABA7UEAAAAARE9NQ29yZUdlbmVyYXRlZC9VWAgAe5bw
RJCW8ERQSwECFQMUAAgACACQdRo1pB0H940CAAAEPAAAGgAMAAAAAAAAAABApIE/AAAARE9NQ29y
ZUdlbmVyYXRlZC8uRFNfU3RvcmVVWAgAtJbwRJCW8ERQSwECFQMKAAAAAACkdRo1AAAAAAAAAAAA
AAAACQAMAAAAAAAAAABA/UEkAwAAX19NQUNPU1gvVVgIALSW8ES0lvBEUEsBAhUDCgAAAAAApHUa
NQAAAAAAAAAAAAAAABoADAAAAAAAAAAAQP1BWwMAAF9fTUFDT1NYL0RPTUNvcmVHZW5lcmF0ZWQv
VVgIALSW8ES0lvBEUEsBAhUDFAAIAAgAkHUaNQ2OI3ccAAAAUgAAACUADAAAAAAAAAAAQKSBowMA
AF9fTUFDT1NYL0RPTUNvcmVHZW5lcmF0ZWQvLl8uRFNfU3RvcmVVWAgAtJbwRJCW8ERQSwECFQMU
AAgACAAzYho1zv4yK40DAAARBwAAGgAMAAAAAAAAAABApIEiBAAARE9NQ29yZUdlbmVyYXRlZC9E
T01BdHRyLmhVWAgAtJbwRCF08ERQSwECFQMUAAgACAAzYho16tRbpl4DAABtBwAAGwAMAAAAAAAA
AABApIEHCAAARE9NQ29yZUdlbmVyYXRlZC9ET01BdHRyLm1tVVgIALSW8EQhdPBEUEsBAhUDFAAI
AAgAM2IaNXNlNFsfAwAA5gUAACIADAAAAAAAAAAAQKSBvgsAAERPTUNvcmVHZW5lcmF0ZWQvRE9N
Q0RBVEFTZWN0aW9uLmhVWAgAtJbwRCF08ERQSwECFQMUAAgACAAzYho1kgC9+i8CAADpAwAAIwAM
AAAAAAAAAABApIE9DwAARE9NQ29yZUdlbmVyYXRlZC9ET01DREFUQVNlY3Rpb24ubW1VWAgAtJbw
RCF08ERQSwECFQMUAAgACAAzYho1iBGidZgDAACCBwAAIwAMAAAAAAAAAABApIHNEQAARE9NQ29y
ZUdlbmVyYXRlZC9ET01DaGFyYWN0ZXJEYXRhLmhVWAgAtJbwRCJ08ERQSwECFQMUAAgACAAzYho1
cFEIBoQDAACyCQAAJAAMAAAAAAAAAABApIHGFQAARE9NQ29yZUdlbmVyYXRlZC9ET01DaGFyYWN0
ZXJEYXRhLm1tVVgIALSW8EQidPBEUEsBAhUDFAAIAAgANGIaNSsQ5aogAwAA8wUAAB0ADAAAAAAA
AAAAQKSBrBkAAERPTUNvcmVHZW5lcmF0ZWQvRE9NQ29tbWVudC5oVVgIALSW8EQjdPBEUEsBAhUD
FAAIAAgAM2IaNTCnJDYqAgAA3wMAAB4ADAAAAAAAAAAAQKSBJx0AAERPTUNvcmVHZW5lcmF0ZWQv
RE9NQ29tbWVudC5tbVVYCAC0lvBEInTwRFBLAQIVAxQACAAIADRiGjVblRZ9hgUAAAcRAAAeAAwA
AAAAAAAAAECkga0fAABET01Db3JlR2VuZXJhdGVkL0RPTURvY3VtZW50LmhVWAgAtJbwRCR08ERQ
SwECFQMUAAgACAA0Yho1VqXnPoQHAACtIAAAHwAMAAAAAAAAAABApIGPJQAARE9NQ29yZUdlbmVy
YXRlZC9ET01Eb2N1bWVudC5tbVVYCAC0lvBEJHTwRFBLAQIVAxQACAAIADViGjUBjGGBIAMAAOoF
AAAmAAwAAAAAAAAAAECkgXAtAABET01Db3JlR2VuZXJhdGVkL0RPTURvY3VtZW50RnJhZ21lbnQu
aFVYCAC0lvBEJXTwRFBLAQIVAxQACAAIADViGjVkcYZjMAIAAPEDAAAnAAwAAAAAAAAAAECkgfQw
AABET01Db3JlR2VuZXJhdGVkL0RPTURvY3VtZW50RnJhZ21lbnQubW1VWAgAtJbwRCV08ERQSwEC
FQMUAAgACAA1Yho177SuuXADAACuBgAAIgAMAAAAAAAAAABApIGJMwAARE9NQ29yZUdlbmVyYXRl
ZC9ET01Eb2N1bWVudFR5cGUuaFVYCAC0lvBEJnTwRFBLAQIVAxQACAAIADViGjULlpnmEwMAADIH
AAAjAAwAAAAAAAAAAECkgVk3AABET01Db3JlR2VuZXJhdGVkL0RPTURvY3VtZW50VHlwZS5tbVVY
CAC0lvBEJnTwRFBLAQIVAxQACAAIADRiGjU30FDu5QMAAP4IAAAnAAwAAAAAAAAAAECkgc06AABE
T01Db3JlR2VuZXJhdGVkL0RPTURPTUltcGxlbWVudGF0aW9uLmhVWAgAtJbwRCN08ERQSwECFQMU
AAgACAA0Yho1TUgI/RMEAAAZDAAAKAAMAAAAAAAAAABApIEXPwAARE9NQ29yZUdlbmVyYXRlZC9E
T01ET01JbXBsZW1lbnRhdGlvbi5tbVVYCAC0lvBEI3TwRFBLAQIVAxQACAAIADViGjWGWVjMTwQA
AGILAAAdAAwAAAAAAAAAAECkgZBDAABET01Db3JlR2VuZXJhdGVkL0RPTUVsZW1lbnQuaFVYCAC0
lvBEJnTwRFBLAQIVAxQACAAIADViGjXUEl01owQAAL4RAAAeAAwAAAAAAAAAAECkgTpIAABET01D
b3JlR2VuZXJhdGVkL0RPTUVsZW1lbnQubW1VWAgAtJbwRCZ08ERQSwECFQMUAAgACAA2Yho1jrIW
LUoDAAA7BgAAHAAMAAAAAAAAAABApIE5TQAARE9NQ29yZUdlbmVyYXRlZC9ET01FbnRpdHkuaFVY
CAC0lvBEJ3TwRFBLAQIVAxQACAAIADZiGjWBsxjpyAIAAJgFAAAdAAwAAAAAAAAAAECkgd1QAABE
T01Db3JlR2VuZXJhdGVkL0RPTUVudGl0eS5tbVVYCAC0lvBEJ3TwRFBLAQIVAxQACAAIADZiGjU7
jN+vIgMAAOkFAAAlAAwAAAAAAAAAAECkgQBUAABET01Db3JlR2VuZXJhdGVkL0RPTUVudGl0eVJl
ZmVyZW5jZS5oVVgIALSW8EQndPBEUEsBAhUDFAAIAAgANmIaNfPa1QswAgAA7wMAACYADAAAAAAA
AAAAQKSBhVcAAERPTUNvcmVHZW5lcmF0ZWQvRE9NRW50aXR5UmVmZXJlbmNlLm1tVVgIALSW8EQn
dPBEUEsBAhUDFAAIAAgANmIaNbnU9VCeAwAAmgcAACIADAAAAAAAAAAAQKSBGVoAAERPTUNvcmVH
ZW5lcmF0ZWQvRE9NTmFtZWROb2RlTWFwLmhVWAgAtJbwRCh08ERQSwECFQMUAAgACAA2Yho190ly
lLkDAACYCwAAIwAMAAAAAAAAAABApIEXXgAARE9NQ29yZUdlbmVyYXRlZC9ET01OYW1lZE5vZGVN
YXAubW1VWAgAtJbwRCh08ERQSwECFQMUAAgACAA2Yho1jZFE1VYDAABKBgAAHgAMAAAAAAAAAABA
pIExYgAARE9NQ29yZUdlbmVyYXRlZC9ET01Ob2RlTGlzdC5oVVgIALSW8EQodPBEUEsBAhUDFAAI
AAgANmIaNbvk3Mz4AgAAVQYAAB8ADAAAAAAAAAAAQKSB42UAAERPTUNvcmVHZW5lcmF0ZWQvRE9N
Tm9kZUxpc3QubW1VWAgAtJbwRCh08ERQSwECFQMUAAgACAA3Yho1pDfAqT4DAAAhBgAAHgAMAAAA
AAAAAABApIE4aQAARE9NQ29yZUdlbmVyYXRlZC9ET01Ob3RhdGlvbi5oVVgIALSW8EQpdPBEUEsB
AhUDFAAIAAgAN2IaNVKfrEW5AgAAXQUAAB8ADAAAAAAAAAAAQKSB0mwAAERPTUNvcmVHZW5lcmF0
ZWQvRE9NTm90YXRpb24ubW1VWAgAtJbwRCl08ERQSwECFQMUAAgACAA3Yho1zP+yO1QDAABsBgAA
KwAMAAAAAAAAAABApIHobwAARE9NQ29yZUdlbmVyYXRlZC9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uaFVYCAC0lvBEKnTwRFBLAQIVAxQACAAIADdiGjXPJF/yBQMAAGQGAAAsAAwAAAAAAAAAAECk
gaVzAABET01Db3JlR2VuZXJhdGVkL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5tbVVYCAC0lvBE
KnTwRFBLAQIVAxQACAAIADdiGjWahss4SgMAADcGAAAaAAwAAAAAAAAAAECkgRR3AABET01Db3Jl
R2VuZXJhdGVkL0RPTVRleHQuaFVYCAC0lvBEKnTwRFBLAQIVAxQACAAIADdiGjVvrdSY6gIAAJEF
AAAbAAwAAAAAAAAAAECkgbZ6AABET01Db3JlR2VuZXJhdGVkL0RPTVRleHQubW1VWAgAtJbwRCp0
8ERQSwUGAAAAACUAJQD5DAAA+X0AAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10245</attachid>
            <date>2006-08-26 16:31:21 -0700</date>
            <delta_ts>2006-08-27 20:27:39 -0700</delta_ts>
            <desc>DOMCore autogen (addressing more of Tim&apos;s comments)</desc>
            <filename>autoCore5.diff</filename>
            <type>text/plain</type>
            <size>204688</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MDUyKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOSBAQAorMjAwNi0wOC0yNiAgU2FtIFdlaW5p
ZyAgPHNhbS53ZWluaWdAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKwogMjAwNi0wOC0yNCAgTmlrb2xhcyBaaW1tZXJtYW5uICA8emltbWVybWFubkBrZGUu
b3JnPgogCiAgICAgICAgIFJldmlld2VkLCB0d2Vha2VkIGFuZCBsYW5kZWQgYnkgYXAKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU5OTcpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIy
LDEzICsxMjIyLDExIEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9i
amVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25M
aXN0ID0gMTQ5QzI3NzEwODkwMkFGRTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYUHJvamVjdCAiSmF2YVNjcmlwdENvcmUiICovOwotCQkJY29tcGF0aWJpbGl0eVZl
cnNpb24gPSAiWGNvZGUgMi40IjsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJ
bWFpbkdyb3VwID0gMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIEphdmFTY3JpcHRDb3JlICov
OwogCQkJcHJvZHVjdFJlZkdyb3VwID0gMDM0NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1
Y3RzICovOwogCQkJcHJvamVjdERpclBhdGggPSAiIjsKIAkJCXByb2plY3RSb290ID0gIiI7Ci0J
CQlzaG91bGRDaGVja0NvbXBhdGliaWxpdHkgPSAxOwogCQkJdGFyZ2V0cyA9ICgKIAkJCQk5MzJG
NUIzRTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUgKi8sCiAJCQkJOTM1RjY5RjUw
ODI0NEZFQTAwM0QxQTQ1IC8qIGRmdGFibGVzICovLApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MDUyKQorKysgV2Vi
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMTggQEAKKzIwMDYtMDgt
MjYgIFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIHBhdGNoIGZvciBodHRwOi8vYnVnemls
bGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MjQKKyAgICAgICAgICBXZWJDb3Jl
IG5lZWRzIGF1dG9nZW5lcmF0ZWQgT2JqLUMgRE9NIGJpbmRpbmdzCisKKyAgICAgICAgICBGaXJz
dCByb3VuZCBvZiBhdXRvLWdlbmVyYXRlZCBPYmplY3RpdmUgQyBET00gYmluZGluZ3MsIHN0YXJ0
aW5nCisgICAgICAgICAgd2l0aCB0aGUgRE9NIENvcmUuCisKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTS5tbToKKyAgICAgICAgKC1bRE9NTm9kZSBkZXNj
cmlwdGlvbl0pOgorICAgICAgICAoLVtET01Ob2RlIEtKUzo6QmluZGluZ3M6Ol0pOgorICAgICAg
ICAoLVtET01Ob2RlIGRpc3BhdGNoRXZlbnQ6XSk6CisgICAgICAgICgtW0RPTU5hbWVkTm9kZU1h
cCBfaW5pdFdpdGhOYW1lZE5vZGVNYXA6XSk6CisgICAgICAgICgrW0RPTU5hbWVkTm9kZU1hcCBf
bmFtZWROb2RlTWFwV2l0aDpdKToKKyAgICAgICAgKC1bRE9NTm9kZUxpc3QgX2luaXRXaXRoTm9k
ZUxpc3Q6XSk6CisgICAgICAgICgrW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6XSk6CisgICAg
ICAgICgtW0RPTUltcGxlbWVudGF0aW9uIF9pbml0V2l0aERPTUltcGxlbWVudGF0aW9uOl0pOgor
ICAgICAgICAoK1tET01JbXBsZW1lbnRhdGlvbiBfRE9NSW1wbGVtZW50YXRpb25XaXRoOl0pOgor
ICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBfRE9NSW1wbGVtZW50YXRpb25dKToKKyAgICAg
ICAgKCtbRE9NRG9jdW1lbnRGcmFnbWVudCBfZG9jdW1lbnRGcmFnbWVudFdpdGg6XSk6CisgICAg
ICAgICgtW0RPTURvY3VtZW50RnJhZ21lbnQgX2ZyYWdtZW50XSk6CisgICAgICAgICgtW0RPTURv
Y3VtZW50IGNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb25dKToKKyAgICAgICAgKCtbRE9NRG9jdW1l
bnQgX2RvY3VtZW50V2l0aDpdKToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgX2RvY3VtZW50XSk6
CisgICAgICAgICgtW0RPTURvY3VtZW50IF9vd25lckVsZW1lbnRdKToKKyAgICAgICAgKCtbRE9N
QXR0ciBfYXR0cldpdGg6XSk6CisgICAgICAgICgtW0RPTUF0dHIgX2F0dHJdKToKKyAgICAgICAg
KCtbRE9NRG9jdW1lbnRUeXBlIF9kb2N1bWVudFR5cGVXaXRoOldlYkNvcmU6Ol0pOgorICAgICAg
ICAoLVtET01Eb2N1bWVudFR5cGUgV2ViQ29yZTo6XSk6CisgICAgICAgICgrW0RPTVRleHQgX3Rl
eHRXaXRoOldlYkNvcmU6Ol0pOgorICAgICAgICAoK1tET01Db21tZW50IF9jb21tZW50V2l0aDpX
ZWJDb3JlOjpdKToKKyAgICAgICAgKCtbRE9NQ0RBVEFTZWN0aW9uIF9DREFUQVNlY3Rpb25XaXRo
OldlYkNvcmU6Ol0pOgorICAgICAgICAoK1tET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gX3Byb2Nl
c3NpbmdJbnN0cnVjdGlvbldpdGg6V2ViQ29yZTo6XSk6CisgICAgICAgICgrW0RPTUVudGl0eVJl
ZmVyZW5jZSBfZW50aXR5UmVmZXJlbmNlV2l0aDpXZWJDb3JlOjpdKToKKyAgICAgICAgKiBiaW5k
aW5ncy9vYmpjL0RPTUNTUy5oOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NQ1NTLm1tOgor
ICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NQ29yZS5oOgorICAgICAgICAqIGJpbmRpbmdzL29i
amMvRE9NRXZlbnRzLmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01FdmVudHMubW06Cisg
ICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01FeHRlbnNpb25zLmg6CisgICAgICAgICogYmluZGlu
Z3Mvb2JqYy9ET01IVE1MLm1tOgorICAgICAgICAoK1tET01IVE1MRG9jdW1lbnQgX0hUTUxEb2N1
bWVudFdpdGg6V2ViQ29yZTo6XSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01IVE1MSW50
ZXJuYWwuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUltcGxlbWVudGF0aW9uRnJvbnQu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUludGVybmFsLmg6CisgICAgICAgICogYmlu
ZGluZ3Mvb2JqYy9ET01Ob2RlLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9N
Tm9kZS5tbTogQWRkZWQuCisgICAgICAgICgtW0RPTU5vZGUgZGVhbGxvY10pOgorICAgICAgICAo
LVtET01Ob2RlIGZpbmFsaXplXSk6CisgICAgICAgICgtW0RPTU5vZGUgbm9kZU5hbWVdKToKKyAg
ICAgICAgKC1bRE9NTm9kZSBub2RlVmFsdWVdKToKKyAgICAgICAgKC1bRE9NTm9kZSBzZXROb2Rl
VmFsdWU6XSk6CisgICAgICAgICgtW0RPTU5vZGUgbm9kZVR5cGVdKToKKyAgICAgICAgKC1bRE9N
Tm9kZSBwYXJlbnROb2RlXSk6CisgICAgICAgICgtW0RPTU5vZGUgY2hpbGROb2Rlc10pOgorICAg
ICAgICAoLVtET01Ob2RlIGZpcnN0Q2hpbGRdKToKKyAgICAgICAgKC1bRE9NTm9kZSBsYXN0Q2hp
bGRdKToKKyAgICAgICAgKC1bRE9NTm9kZSBwcmV2aW91c1NpYmxpbmddKToKKyAgICAgICAgKC1b
RE9NTm9kZSBuZXh0U2libGluZ10pOgorICAgICAgICAoLVtET01Ob2RlIGF0dHJpYnV0ZXNdKToK
KyAgICAgICAgKC1bRE9NTm9kZSBvd25lckRvY3VtZW50XSk6CisgICAgICAgICgtW0RPTU5vZGUg
aW5zZXJ0QmVmb3JlOjpdKToKKyAgICAgICAgKC1bRE9NTm9kZSByZXBsYWNlQ2hpbGQ6Ol0pOgor
ICAgICAgICAoLVtET01Ob2RlIHJlbW92ZUNoaWxkOl0pOgorICAgICAgICAoLVtET01Ob2RlIGFw
cGVuZENoaWxkOl0pOgorICAgICAgICAoLVtET01Ob2RlIGhhc0NoaWxkTm9kZXNdKToKKyAgICAg
ICAgKC1bRE9NTm9kZSBjbG9uZU5vZGU6XSk6CisgICAgICAgICgtW0RPTU5vZGUgbm9ybWFsaXpl
XSk6CisgICAgICAgICgtW0RPTU5vZGUgaXNTdXBwb3J0ZWQ6Ol0pOgorICAgICAgICAoLVtET01O
b2RlIG5hbWVzcGFjZVVSSV0pOgorICAgICAgICAoLVtET01Ob2RlIHByZWZpeF0pOgorICAgICAg
ICAoLVtET01Ob2RlIHNldFByZWZpeDpdKToKKyAgICAgICAgKC1bRE9NTm9kZSBsb2NhbE5hbWVd
KToKKyAgICAgICAgKC1bRE9NTm9kZSBoYXNBdHRyaWJ1dGVzXSk6CisgICAgICAgICgtW0RPTU5v
ZGUgaXNTYW1lTm9kZTpdKToKKyAgICAgICAgKC1bRE9NTm9kZSBpc0VxdWFsTm9kZTpdKToKKyAg
ICAgICAgKC1bRE9NTm9kZSBpc0RlZmF1bHROYW1lc3BhY2U6XSk6CisgICAgICAgICgtW0RPTU5v
ZGUgbG9va3VwUHJlZml4Ol0pOgorICAgICAgICAoLVtET01Ob2RlIGxvb2t1cE5hbWVzcGFjZVVS
STpdKToKKyAgICAgICAgKC1bRE9NTm9kZSB0ZXh0Q29udGVudF0pOgorICAgICAgICAoLVtET01O
b2RlIHNldFRleHRDb250ZW50Ol0pOgorICAgICAgICAoLVtET01Ob2RlIGJvdW5kaW5nQm94XSk6
CisgICAgICAgICgtW0RPTU5vZGUgbGluZUJveFJlY3RzXSk6CisgICAgICAgICogYmluZGluZ3Mv
b2JqYy9ET01PYmplY3QuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01PYmpl
Y3QubW06IEFkZGVkLgorICAgICAgICAoLVtET01PYmplY3QgaW5pdF0pOgorICAgICAgICAoLVtE
T01PYmplY3QgZGVhbGxvY10pOgorICAgICAgICAoLVtET01PYmplY3QgZmluYWxpemVdKToKKyAg
ICAgICAgKC1bRE9NT2JqZWN0IGNvcHlXaXRoWm9uZTpdKToKKyAgICAgICAgKC1bRE9NT2JqZWN0
IHNoZWV0XSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01Qcml2YXRlLmg6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET01SYW5nZS5oOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9N
U3R5bGVzaGVldHMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVRyYXZlcnNhbC5oOgor
ICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NVmlld3MuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9v
YmpjL0RPTVZpZXdzLm1tOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NWFBhdGguaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVhQYXRoLm1tOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JPYmpDLnBtOiBBZGRlZC4KKyAgICAgICAgKiBkb20vQXR0ci5pZGw6CisgICAgICAg
ICogZG9tL0NEQVRBU2VjdGlvbi5pZGw6IEFkZGVkLgorICAgICAgICAqIGRvbS9Db21tZW50Lmlk
bDogQWRkZWQuCisgICAgICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbDoKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAg
KiBkb20vRW50aXR5UmVmZXJlbmNlLmlkbDogQWRkZWQuCisgICAgICAgICogZG9tL05hbWVkTm9k
ZU1hcC5pZGw6IEFkZGVkLgorICAgICAgICAqIGRvbS9Ob2RlTGlzdC5pZGw6IEFkZGVkLgorICAg
ICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaWRsOgorCiAyMDA2LTA4LTI3ICBSb2Ig
QnVpcyAgPGJ1aXNAa2RlLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljLgpJbmRleDog
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMTU5OTcpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAjIENvcHlyaWdodCAoQykgMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQg
KEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+IAogIwogIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyOCw3IEBACiBWUEFUSCA9IFwKICAgICAkKFdl
YkNvcmUpIFwKICAgICAkKFdlYkNvcmUpL2JpbmRpbmdzL2pzIFwKKyAgICAkKFdlYkNvcmUpL2Jp
bmRpbmdzL29iamMgXAogICAgICQoV2ViQ29yZSkvY3NzIFwKICAgICAkKFdlYkNvcmUpL2RvbSBc
CiAgICAgJChXZWJDb3JlKS9odG1sIFwKQEAgLTQ0LDYgKzQ2LDIyIEBAIGFsbCA6IFwKICAgICBD
aGFyc2V0RGF0YS5jcHAgXAogICAgIENvbG9yRGF0YS5jIFwKICAgICBEb2NUeXBlU3RyaW5ncy5j
cHAgXAorICAgIERPTUF0dHIuaCBcCisgICAgRE9NQ0RBVEFTZWN0aW9uLmggXAorICAgIERPTUNo
YXJhY3RlckRhdGEuaCBcCisgICAgRE9NQ29tbWVudC5oIFwKKyAgICBET01ET01JbXBsZW1lbnRh
dGlvbi5oIFwKKyAgICBET01Eb2N1bWVudC5oIFwKKyAgICBET01Eb2N1bWVudEZyYWdtZW50Lmgg
XAorICAgIERPTURvY3VtZW50VHlwZS5oIFwKKyAgICBET01FbGVtZW50LmggXAorICAgIERPTUVu
dGl0eS5oIFwKKyAgICBET01FbnRpdHlSZWZlcmVuY2UuaCBcCisgICAgRE9NTmFtZWROb2RlTWFw
LmggXAorICAgIERPTU5vZGVMaXN0LmggXAorICAgIERPTU5vdGF0aW9uLmggXAorICAgIERPTVBy
b2Nlc3NpbmdJbnN0cnVjdGlvbi5oIFwKKyAgICBET01UZXh0LmggXAogICAgIEhUTUxFbnRpdHlO
YW1lcy5jIFwKICAgICBKU0F0dHIuaCBcCiAgICAgSlNDU1NQcmltaXRpdmVWYWx1ZS5oIFwKQEAg
LTI4Niw2ICszMDQsMTkgQEAga3N2Z2Nzc3ZhbHVlcy5oIDoKIAogZW5kaWYKIAorIyBuZXctc3R5
bGUgT2JqZWN0aXZlLUMgYmluZGluZ3MKKworT0JKQ19CSU5ESU5HU19TQ1JJUFRTID0gXAorICAg
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbSBcCisgICAgYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yT2JqQy5wbSBcCisgICAgYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIu
cG0gXAorICAgIGJpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtIFwKKyAgICBiaW5kaW5n
cy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIFwKKyMKKworRE9NJS5oIDogJS5pZGwgJChP
QkpDX0JJTkRJTkdTX1NDUklQVFMpCisJcGVybCAtSSQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0
cyAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgLS1kZWZp
bmVzICIkKEZFQVRVUkVfREVGSU5FUykiIC0tZ2VuZXJhdG9yIE9iakMgLS1pbmNsdWRlIGRvbSAt
LWluY2x1ZGUgaHRtbCAtLWluY2x1ZGUgeHBhdGggLS1pbmNsdWRlIGtzdmcyL3N2ZyAtLW91dHB1
dGRpciAgLiAkPAorCiAjIG5ldy1zdHlsZSBKYXZhU2NyaXB0IGJpbmRpbmdzCiAKIEpTX0JJTkRJ
TkdTX1NDUklQVFMgPSBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTU5OTcpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzU1LDYgKzM1NSwyMSBAQAogCQk4NTAz
MUI0RjBBNDRFRkM3MDBGOTkyRTAgLyogVUlFdmVudFdpdGhLZXlTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwMzFCMzkwQTQ0RUZDNzAwRjk5
MkUwIC8qIFVJRXZlbnRXaXRoS2V5U3RhdGUuaCAqLzsgfTsKIAkJODUwMzFCNTAwQTQ0RUZDNzAw
Rjk5MkUwIC8qIFdoZWVsRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODUwMzFCM0EwQTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVsRXZlbnQuY3Bw
ICovOyB9OwogCQk4NTAzMUI1MTBBNDRFRkM3MDBGOTkyRTAgLyogV2hlZWxFdmVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwMzFCM0IwQTQ0RUZD
NzAwRjk5MkUwIC8qIFdoZWVsRXZlbnQuaCAqLzsgfTsKKwkJODUwODlDQzgwQTk4QzIyNjAwQTI3
NUFBIC8qIENvbW1lbnQuaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NTA4OUNDNzBBOThDMjI2MDBBMjc1QUEgLyogQ29tbWVudC5pZGwgKi87IH07
CisJCTg1MDg5Q0NBMEE5OEMyQUIwMEEyNzVBQSAvKiBDREFUQVNlY3Rpb24uaWRsIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTA4OUNDOTBBOThDMkFC
MDBBMjc1QUEgLyogQ0RBVEFTZWN0aW9uLmlkbCAqLzsgfTsKKwkJODUwODlDQ0MwQTk4QzMzQTAw
QTI3NUFBIC8qIEVudGl0eVJlZmVyZW5jZS5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDg5Q0NCMEE5OEMzM0EwMEEyNzVBQSAvKiBFbnRpdHlS
ZWZlcmVuY2UuaWRsICovOyB9OworCQk4NTA4OUNENzBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ0RB
VEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NTA4OUNDRjBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODUwODlDRDgwQTk4QzQy
ODAwQTI3NUFBIC8qIERPTUNEQVRBU2VjdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDg5Q0QwMEE5OEM0MjcwMEEyNzVBQSAvKiBET01DREFU
QVNlY3Rpb24ubW0gKi87IH07CisJCTg1MDg5Q0Q5MEE5OEM0MjgwMEEyNzVBQSAvKiBET01Db21t
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTA4
OUNEMTBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ29tbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1MDg5Q0RBMEE5OEM0MjgwMEEyNzVBQSAv
KiBET01Db21tZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODUwODlDRDIwQTk4QzQyNzAwQTI3NUFBIC8qIERPTUNvbW1lbnQubW0gKi87IH07CisJ
CTg1MDg5Q0RCMEE5OEM0MjgwMEEyNzVBQSAvKiBET01Eb2N1bWVudEZyYWdtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTA4OUNEMzBBOThDNDI4
MDBBMjc1QUEgLyogRE9NRG9jdW1lbnRGcmFnbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1MDg5Q0RDMEE5OEM0MjgwMEEyNzVBQSAvKiBE
T01Eb2N1bWVudEZyYWdtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODUwODlDRDQwQTk4QzQyODAwQTI3NUFBIC8qIERPTURvY3VtZW50RnJhZ21l
bnQubW0gKi87IH07CisJCTg1MDg5Q0REMEE5OEM0MjgwMEEyNzVBQSAvKiBET01FbnRpdHlSZWZl
cmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1
MDg5Q0Q1MEE5OEM0MjgwMEEyNzVBQSAvKiBET01FbnRpdHlSZWZlcmVuY2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTA4OUNERTBBOThDNDI4
MDBBMjc1QUEgLyogRE9NRW50aXR5UmVmZXJlbmNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwODlDRDYwQTk4QzQyODAwQTI3NUFBIC8qIERPTUVu
dGl0eVJlZmVyZW5jZS5tbSAqLzsgfTsKKwkJODUxOERDRTkwQTlDQzgwRDAwOTFCN0E2IC8qIERP
TURPTUltcGxlbWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NTE4RENFNzBBOUNDODBDMDA5MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50YXRp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4
NTE4RENFQTBBOUNDODBEMDA5MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50YXRpb24ubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTE4RENFODBBOUNDODBE
MDA5MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50YXRpb24ubW0gKi87IH07CisJCTg1MThERDc4MEE5
Q0YzMUIwMDkxQjdBNiAvKiBET01OYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MThERDc2MEE5Q0YzMUIwMDkxQjdBNiAvKiBET01O
YW1lZE5vZGVNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk4NTE4REQ3OTBBOUNGMzFCMDA5MUI3QTYgLyogRE9NTmFtZWROb2RlTWFwLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUxOERENzcwQTlD
RjMxQjAwOTFCN0E2IC8qIERPTU5hbWVkTm9kZU1hcC5tbSAqLzsgfTsKIAkJODUyMTdFMDIwQTVF
Q0Q0NzAwREI4RDAwIC8qIFhTTEltcG9ydFJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUyMTdFMDAwQTVFQ0Q0NzAwREI4RDAwIC8qIFhTTElt
cG9ydFJ1bGUuY3BwICovOyB9OwogCQk4NTIxN0UwMzBBNUVDRDQ3MDBEQjhEMDAgLyogWFNMSW1w
b3J0UnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODUyMTdFMDEwQTVFQ0Q0NzAwREI4RDAwIC8qIFhTTEltcG9ydFJ1bGUuaCAqLzsgfTsKIAkJODU0
RkU3MzAwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU0RkU3MjYwQTIyOTdCRTAwNThEN0FEIC8q
IE5vZGVGaWx0ZXIuY3BwICovOyB9OwpAQCAtMzY3LDggKzM4MiwzNCBAQAogCQk4NTRGRTczNzBB
MjI5N0JFMDA1OEQ3QUQgLyogVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NTRGRTcyRDBBMjI5N0JFMDA1OEQ3QUQgLyogVHJhdmVyc2Fs
LmggKi87IH07CiAJCTg1NEZFNzM4MEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NEZFNzJFMEEy
Mjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmNwcCAqLzsgfTsKIAkJODU0RkU3MzkwQTIyOTdC
RTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg1NEZFNzJGMEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmgg
Ki87IH07CisJCTg1NkM4OUZDMEE5MEYwNjgwMDVDNjg3QiAvKiBET01Ob2RlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTZDODlGQTBBOTBGMDY4MDA1
QzY4N0IgLyogRE9NTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTg1NkM4OUZEMEE5MEYwNjgwMDVDNjg3QiAvKiBET01Ob2RlLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2Qzg5RkIwQTkwRjA2
ODAwNUM2ODdCIC8qIERPTU5vZGUubW0gKi87IH07CisJCTg1NkM4QUU0MEE5MTI2NDkwMDVDNjg3
QiAvKiBET01PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg1NkM4QUUyMEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3QuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTZDOEFFNTBBOTEyNjQ5
MDA1QzY4N0IgLyogRE9NT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODU2QzhBRTMwQTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5tbSAq
LzsgfTsKKwkJODVBQ0E5ODYwQTlCNTIwMzAwNjcxRTkwIC8qIERPTUNoYXJhY3RlckRhdGEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QUNBOTg0MEE5
QjUyMDMwMDY3MUU5MCAvKiBET01DaGFyYWN0ZXJEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVBQ0E5ODcwQTlCNTIwMzAwNjcxRTkwIC8q
IERPTUNoYXJhY3RlckRhdGEubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NUFDQTk4NTBBOUI1MjAzMDA2NzFFOTAgLyogRE9NQ2hhcmFjdGVyRGF0YS5t
bSAqLzsgfTsKKwkJODVBQ0E5OUMwQTlCNTc1OTAwNjcxRTkwIC8qIERPTVRleHQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QUNBOTlBMEE5QjU3NTkw
MDY3MUU5MCAvKiBET01UZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJODVBQ0E5OUQwQTlCNTc1OTAwNjcxRTkwIC8qIERPTVRleHQubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUFDQTk5QjBBOUI1
NzU5MDA2NzFFOTAgLyogRE9NVGV4dC5tbSAqLzsgfTsKKwkJODVBQ0E5QzAwQTlCNUZBNTAwNjcx
RTkwIC8qIERPTUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg1QUNBOUJFMEE5QjVGQTUwMDY3MUU5MCAvKiBET01FbGVtZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVBQ0E5QzEwQTlC
NUZBNTAwNjcxRTkwIC8qIERPTUVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NUFDQTlCRjBBOUI1RkE1MDA2NzFFOTAgLyogRE9NRWxlbWVu
dC5tbSAqLzsgfTsKKwkJODVBQ0E5RkIwQTlCNjMxMDAwNjcxRTkwIC8qIE5hbWVkTm9kZU1hcC5p
ZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QUNB
OUY5MEE5QjYzMTAwMDY3MUU5MCAvKiBOYW1lZE5vZGVNYXAuaWRsICovOyB9OworCQk4NUFDQTlG
QzBBOUI2MzEwMDA2NzFFOTAgLyogTm9kZUxpc3QuaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUFDQTlGQTBBOUI2MzEwMDA2NzFFOTAgLyogTm9k
ZUxpc3QuaWRsICovOyB9OworCQk4NUFDQUE4RDBBOUI3NTlDMDA2NzFFOTAgLyogRE9NTm9kZUxp
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QUNB
QTg5MEE5Qjc1OUMwMDY3MUU5MCAvKiBET01Ob2RlTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1QUNBQThFMEE5Qjc1OUMwMDY3MUU5MCAv
KiBET01Ob2RlTGlzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg1QUNBQThBMEE5Qjc1OUMwMDY3MUU5MCAvKiBET01Ob2RlTGlzdC5tbSAqLzsgfTsK
KwkJODVBQ0FCQjAwQTlDQUY4MDAwNjcxRTkwIC8qIERPTURvY3VtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUFDQUJBRTBBOUNBRjgwMDA2NzFF
OTAgLyogRE9NRG9jdW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk4NUFDQUJCMTBBOUNBRjgwMDA2NzFFOTAgLyogRE9NRG9jdW1lbnQubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUFDQUJBRjBB
OUNBRjgwMDA2NzFFOTAgLyogRE9NRG9jdW1lbnQubW0gKi87IH07CisJCTg1Q0E5NkI4MEE5NjIx
QTYwMDY5MENDRiAvKiBET01FbnRpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg1Q0E5NkI2MEE5NjIxQTYwMDY5MENDRiAvKiBET01FbnRpdHkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NUNBOTZC
OTBBOTYyMUE2MDA2OTBDQ0YgLyogRE9NRW50aXR5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVDQTk2QjcwQTk2MjFBNjAwNjkwQ0NGIC8qIERPTUVu
dGl0eS5tbSAqLzsgfTsKKwkJODVDQTk2RUEwQTk2MjRFOTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUNBOTZF
ODBBOTYyNEU5MDA2OTBDQ0YgLyogRE9NTm90YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NUNBOTZFQjBBOTYyNEU5MDA2OTBDQ0YgLyog
RE9NTm90YXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NUNBOTZFOTBBOTYyNEU5MDA2OTBDQ0YgLyogRE9NTm90YXRpb24ubW0gKi87IH07CisJ
CTg1Q0E5NzVDMEE5NjJFNTQwMDY5MENDRiAvKiBET01Eb2N1bWVudFR5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1Q0E5NzVBMEE5NjJFNTQwMDY5
MENDRiAvKiBET01Eb2N1bWVudFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk4NUNBOTc1RDBBOTYyRTU0MDA2OTBDQ0YgLyogRE9NRG9jdW1l
bnRUeXBlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODVDQTk3NUIwQTk2MkU1NDAwNjkwQ0NGIC8qIERPTURvY3VtZW50VHlwZS5tbSAqLzsgfTsKKwkJ
ODVEMzg5QjIwQTk5MUE3RjAwMjgyMTQ1IC8qIERPTUF0dHIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RDM4OUIwMEE5OTFBN0YwMDI4MjE0NSAvKiBE
T01BdHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJODVEMzg5QjMwQTk5MUE3RjAwMjgyMTQ1IC8qIERPTUF0dHIubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUQzODlCMTBBOTkxQTdGMDAyODIxNDUg
LyogRE9NQXR0ci5tbSAqLzsgfTsKIAkJODVFQzlBRkEwQTcxQTJDNjAwRUVFQUVEIC8qIEZvbnRE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUVD
OUFGODBBNzFBMkM2MDBFRUVBRUQgLyogRm9udERhdGEuaCAqLzsgfTsKIAkJODVFQzlBRkIwQTcx
QTJDNjAwRUVFQUVEIC8qIExhbmd1YWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NUVDOUFGOTBBNzFBMkM2MDBFRUVBRUQgLyogTGFuZ3VhZ2UuaCAq
LzsgfTsKKwkJODVGNTZBN0EwQTk4Q0UzNzAwQURCNjBBIC8qIERPTVByb2Nlc3NpbmdJbnN0cnVj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVG
NTZBNzgwQTk4Q0UzNzAwQURCNjBBIC8qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1RjU2QTdCMEE5
OENFMzcwMEFEQjYwQSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUY1NkE3OTBBOThDRTM3MDBBREI2
MEEgLyogRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tICovOyB9OwogCQk5MzAzMkNDODA5QUVD
MzQzMDBGODJBMTggLyogUGF0aENHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzMDMyQ0M3MDlBRUMzNDMwMEY4MkExOCAvKiBQYXRoQ0cuY3BwICov
OyB9OwogCQk5MzAzMkNDQTA5QUVDMzRCMDBGODJBMTggLyogUGF0aC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwMzJDQzkwOUFFQzM0QjAwRjgyQTE4
IC8qIFBhdGguaCAqLzsgfTsKIAkJOTMwNUIyNEQwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1QjI0QzA5
OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCAqLzsgfTsKQEAgLTIwNTMsNiArMjA5NCwyMSBAQAog
CQk4NTAzMUIzOTBBNDRFRkM3MDBGOTkyRTAgLyogVUlFdmVudFdpdGhLZXlTdGF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVUlFdmVudFdpdGhLZXlTdGF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTAzMUIzQTBBNDRFRkM3MDBGOTkyRTAgLyogV2hl
ZWxFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2hlZWxF
dmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1MDMxQjNCMEE0NEVGQzcw
MEY5OTJFMCAvKiBXaGVlbEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXaGVlbEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MDg5Q0M3MEE5
OEMyMjYwMEEyNzVBQSAvKiBDb21tZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ29t
bWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MDg5Q0M5MEE5OEMyQUIw
MEEyNzVBQSAvKiBDREFUQVNlY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDREFU
QVNlY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTA4OUNDQjBBOThD
MzNBMDBBMjc1QUEgLyogRW50aXR5UmVmZXJlbmNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gRW50aXR5UmVmZXJlbmNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUw
ODlDQ0YwQTk4QzQyNzAwQTI3NUFBIC8qIERPTUNEQVRBU2VjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQ0RBVEFTZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg1MDg5Q0QwMEE5OEM0MjcwMEEyNzVBQSAvKiBET01DREFUQVNlY3Rpb24u
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NQ0RBVEFTZWN0
aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTA4OUNEMTBBOThDNDI3MDBB
Mjc1QUEgLyogRE9NQ29tbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NQ29tbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTA4OUNEMjBBOThD
NDI3MDBBMjc1QUEgLyogRE9NQ29tbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBET01Db21tZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4NTA4OUNEMzBBOThDNDI4MDBBMjc1QUEgLyogRE9NRG9jdW1lbnRGcmFnbWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRG9jdW1lbnRGcmFnbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTA4OUNENDBBOThDNDI4MDBBMjc1QUEgLyogRE9N
RG9jdW1lbnRGcmFnbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBET01Eb2N1bWVudEZyYWdtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4NTA4OUNENTBBOThDNDI4MDBBMjc1QUEgLyogRE9NRW50aXR5UmVmZXJlbmNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01FbnRpdHlSZWZlcmVuY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwODlDRDYwQTk4QzQyODAwQTI3NUFBIC8qIERPTUVu
dGl0eVJlZmVyZW5jZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBET01FbnRpdHlSZWZlcmVuY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1
MThEQ0U3MEE5Q0M4MEMwMDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRE9NSW1wbGVtZW50YXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUxOERDRTgwQTlDQzgwRDAwOTFCN0E2IC8qIERPTURP
TUltcGxlbWVudGF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IERPTURPTUltcGxlbWVudGF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4NTE4REQ3NjBBOUNGMzFCMDA5MUI3QTYgLyogRE9NTmFtZWROb2RlTWFwLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01OYW1lZE5vZGVNYXAuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODUxOERENzcwQTlDRjMxQjAwOTFCN0E2IC8qIERPTU5hbWVkTm9k
ZU1hcC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01OYW1l
ZE5vZGVNYXAubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1MjE3RTAwMEE1RUNE
NDcwMERCOEQwMCAvKiBYU0xJbXBvcnRSdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBYU0xJbXBvcnRSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODUyMTdFMDEwQTVFQ0Q0NzAwREI4RDAwIC8qIFhTTEltcG9ydFJ1bGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhTTEltcG9ydFJ1bGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODU0RkU3MjYwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVGaWx0ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA2NSw4ICsyMTIxLDM1IEBACiAJCTg1
NEZFNzJEMEEyMjk3QkUwMDU4RDdBRCAvKiBUcmF2ZXJzYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRyYXZlcnNhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NTRGRTcyRTBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJlZVdhbGtlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg1NEZFNzJGMEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmVlV2Fsa2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1NkM4OUZBMEE5MEYwNjgwMDVDNjg3QiAvKiBET01Ob2Rl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTU5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODU2Qzg5RkIwQTkwRjA2ODAwNUM2ODdCIC8qIERPTU5vZGUubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NTm9kZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODU2QzhBRTIwQTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg1NkM4QUUzMEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3QubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NT2JqZWN0Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTlCN0ZCOTBBOEQyODg4MDBBNUYxRUEgLyog
Q29kZUdlbmVyYXRvck9iakMucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9
IENvZGVHZW5lcmF0b3JPYmpDLnBtOyBwYXRoID0gYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yT2JqQy5wbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk4NUFDQTk4NDBBOUI1
MjAzMDA2NzFFOTAgLyogRE9NQ2hhcmFjdGVyRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NQ2hhcmFjdGVyRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NUFDQTk4NTBBOUI1MjAzMDA2NzFFOTAgLyogRE9NQ2hhcmFjdGVyRGF0YS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01DaGFyYWN0ZXJEYXRhLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUFDQTk5QTBBOUI1NzU5MDA2NzFFOTAg
LyogRE9NVGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NVGV4dC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUFDQTk5QjBBOUI1NzU5MDA2NzFFOTAg
LyogRE9NVGV4dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBE
T01UZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUFDQTlCRTBBOUI1RkE1
MDA2NzFFOTAgLyogRE9NRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUFDQTlCRjBB
OUI1RkE1MDA2NzFFOTAgLyogRE9NRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBET01FbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NUFDQTlGOTBBOUI2MzEwMDA2NzFFOTAgLyogTmFtZWROb2RlTWFwLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gTmFtZWROb2RlTWFwLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODVBQ0E5RkEwQTlCNjMxMDAwNjcxRTkwIC8qIE5vZGVMaXN0LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gTm9kZUxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NUFDQUE4OTBBOUI3NTlDMDA2NzFFOTAgLyogRE9NTm9kZUxpc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU5vZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg1QUNBQThBMEE5Qjc1OUMwMDY3MUU5MCAvKiBET01Ob2RlTGlzdC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01Ob2RlTGlzdC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVBQ0FCQUUwQTlDQUY4MDAwNjcxRTkwIC8q
IERPTURvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01Eb2N1
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUFDQUJBRjBBOUNBRjgwMDA2
NzFFOTAgLyogRE9NRG9jdW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRE9NRG9jdW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1
Q0E5NkI2MEE5NjIxQTYwMDY5MENDRiAvKiBET01FbnRpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTUVudGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4NUNBOTZCNzBBOTYyMUE2MDA2OTBDQ0YgLyogRE9NRW50aXR5Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUVudGl0eS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODVDQTk2RTgwQTk2MjRFOTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01Ob3RhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4NUNBOTZFOTBBOTYyNEU5MDA2OTBDQ0YgLyogRE9NTm90
YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NTm90
YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1Q0E5NzVBMEE5NjJFNTQw
MDY5MENDRiAvKiBET01Eb2N1bWVudFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTURvY3VtZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
NUNBOTc1QjBBOTYyRTU0MDA2OTBDQ0YgLyogRE9NRG9jdW1lbnRUeXBlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTURvY3VtZW50VHlwZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVEMzg5QjAwQTk5MUE3RjAwMjgyMTQ1IC8qIERPTUF0
dHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUF0dHIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVEMzg5QjEwQTk5MUE3RjAwMjgyMTQ1IC8qIERPTUF0
dHIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NQXR0ci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODVFQzlBRjgwQTcxQTJDNjAwRUVFQUVE
IC8qIEZvbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250RGF0
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NUVDOUFGOTBBNzFBMkM2MDBFRUVB
RUQgLyogTGFuZ3VhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhbmd1
YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1RjU2QTc4MEE5OENFMzcwMEFE
QjYwQSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4NUY1NkE3OTBBOThDRTM3MDBBREI2MEEgLyogRE9NUHJvY2Vzc2luZ0lu
c3RydWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERP
TVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTMwMzJDQzcwOUFFQzM0MzAwRjgyQTE4IC8qIFBhdGhDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQYXRoQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzAzMkNDOTA5QUVDMzRCMDBGODJBMTggLyogUGF0aC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
MDVCMjRDMDk4RjFCNkIwMEMyODg1NSAvKiBUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzk4MSw2
ICs0MDY0LDU3IEBACiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
IAkJfTsKKwkJODU0RjEyQUMwQThFQkMxODAwMDk0MEI1IC8qIENvcmUgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTg1NkM4OUZBMEE5MEYwNjgwMDVDNjg3
QiAvKiBET01Ob2RlLmggKi8sCisJCQkJODU2Qzg5RkIwQTkwRjA2ODAwNUM2ODdCIC8qIERPTU5v
ZGUubW0gKi8sCisJCQkJODU2QzhBRTIwQTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5oICov
LAorCQkJCTg1NkM4QUUzMEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3QubW0gKi8sCisJCQkp
OworCQkJbmFtZSA9IENvcmU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk4
NUIyMzIyNjBBOEJGM0ExMDBGREY0N0IgLyogRGVyaXZlZCBTb3VyY2VzICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk4NUQzODlCMDBBOTkxQTdGMDAyODIx
NDUgLyogRE9NQXR0ci5oICovLAorCQkJCTg1RDM4OUIxMEE5OTFBN0YwMDI4MjE0NSAvKiBET01B
dHRyLm1tICovLAorCQkJCTg1MDg5Q0NGMEE5OEM0MjcwMEEyNzVBQSAvKiBET01DREFUQVNlY3Rp
b24uaCAqLywKKwkJCQk4NTA4OUNEMDBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9u
Lm1tICovLAorCQkJCTg1QUNBOTg0MEE5QjUyMDMwMDY3MUU5MCAvKiBET01DaGFyYWN0ZXJEYXRh
LmggKi8sCisJCQkJODVBQ0E5ODUwQTlCNTIwMzAwNjcxRTkwIC8qIERPTUNoYXJhY3RlckRhdGEu
bW0gKi8sCisJCQkJODUwODlDRDEwQTk4QzQyNzAwQTI3NUFBIC8qIERPTUNvbW1lbnQuaCAqLywK
KwkJCQk4NTA4OUNEMjBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ29tbWVudC5tbSAqLywKKwkJCQk4
NTE4RENFNzBBOUNDODBDMDA5MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50YXRpb24uaCAqLywKKwkJ
CQk4NTE4RENFODBBOUNDODBEMDA5MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50YXRpb24ubW0gKi8s
CisJCQkJODVBQ0FCQUUwQTlDQUY4MDAwNjcxRTkwIC8qIERPTURvY3VtZW50LmggKi8sCisJCQkJ
ODVBQ0FCQUYwQTlDQUY4MDAwNjcxRTkwIC8qIERPTURvY3VtZW50Lm1tICovLAorCQkJCTg1MDg5
Q0QzMEE5OEM0MjgwMEEyNzVBQSAvKiBET01Eb2N1bWVudEZyYWdtZW50LmggKi8sCisJCQkJODUw
ODlDRDQwQTk4QzQyODAwQTI3NUFBIC8qIERPTURvY3VtZW50RnJhZ21lbnQubW0gKi8sCisJCQkJ
ODVDQTk3NUEwQTk2MkU1NDAwNjkwQ0NGIC8qIERPTURvY3VtZW50VHlwZS5oICovLAorCQkJCTg1
Q0E5NzVCMEE5NjJFNTQwMDY5MENDRiAvKiBET01Eb2N1bWVudFR5cGUubW0gKi8sCisJCQkJODVB
Q0E5QkUwQTlCNUZBNTAwNjcxRTkwIC8qIERPTUVsZW1lbnQuaCAqLywKKwkJCQk4NUFDQTlCRjBB
OUI1RkE1MDA2NzFFOTAgLyogRE9NRWxlbWVudC5tbSAqLywKKwkJCQk4NUNBOTZCNjBBOTYyMUE2
MDA2OTBDQ0YgLyogRE9NRW50aXR5LmggKi8sCisJCQkJODVDQTk2QjcwQTk2MjFBNjAwNjkwQ0NG
IC8qIERPTUVudGl0eS5tbSAqLywKKwkJCQk4NTA4OUNENTBBOThDNDI4MDBBMjc1QUEgLyogRE9N
RW50aXR5UmVmZXJlbmNlLmggKi8sCisJCQkJODUwODlDRDYwQTk4QzQyODAwQTI3NUFBIC8qIERP
TUVudGl0eVJlZmVyZW5jZS5tbSAqLywKKwkJCQk4NTE4REQ3NjBBOUNGMzFCMDA5MUI3QTYgLyog
RE9NTmFtZWROb2RlTWFwLmggKi8sCisJCQkJODUxOERENzcwQTlDRjMxQjAwOTFCN0E2IC8qIERP
TU5hbWVkTm9kZU1hcC5tbSAqLywKKwkJCQk4NUFDQUE4OTBBOUI3NTlDMDA2NzFFOTAgLyogRE9N
Tm9kZUxpc3QuaCAqLywKKwkJCQk4NUFDQUE4QTBBOUI3NTlDMDA2NzFFOTAgLyogRE9NTm9kZUxp
c3QubW0gKi8sCisJCQkJODVDQTk2RTgwQTk2MjRFOTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9uLmgg
Ki8sCisJCQkJODVDQTk2RTkwQTk2MjRFOTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9uLm1tICovLAor
CQkJCTg1RjU2QTc4MEE5OENFMzcwMEFEQjYwQSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
aCAqLywKKwkJCQk4NUY1NkE3OTBBOThDRTM3MDBBREI2MEEgLyogRE9NUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLm1tICovLAorCQkJCTg1QUNBOTlBMEE5QjU3NTkwMDY3MUU5MCAvKiBET01UZXh0Lmgg
Ki8sCisJCQkJODVBQ0E5OUIwQTlCNTc1OTAwNjcxRTkwIC8qIERPTVRleHQubW0gKi8sCisJCQkp
OworCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOworCQkJcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYkNvcmU7CisJCQlzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOworCQl9OwogCQk5
MzAzMkNDQzA5QUVDMzYyMDBGODJBMTggLyogY2cgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKApAQCAtNDk2Niw5ICs1MTAwLDkgQEAKIAkJQkMxQTM3OTQwOTdDNkZD
NDAwMTlGM0Q4IC8qIG9iamMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAotCQkJCTFDQUYzNDdFMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCAq
LywKLQkJCQkxQ0FGMzQ3RjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tICov
LAotCQkJCTFDQUYzNDgwMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3RQcml2YXRl
LmggKi8sCisJCQkJODVCMjMyMjYwQThCRjNBMTAwRkRGNDdCIC8qIERlcml2ZWQgU291cmNlcyAq
LywKKwkJCQk4NTRGMTJBQzBBOEVCQzE4MDAwOTQwQjUgLyogQ29yZSAqLywKKwkJCQk4NTlCN0ZC
OTBBOEQyODg4MDBBNUYxRUEgLyogQ29kZUdlbmVyYXRvck9iakMucG0gKi8sCiAJCQkJQkMxQTM3
OTcwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTS5oICovLAogCQkJCUJDMUEzNzk4MDk3QzcxNUYwMDE5
RjNEOCAvKiBET00ubW0gKi8sCiAJCQkJQkMxQTM3OTkwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTUNv
cmUuaCAqLywKQEAgLTQ5OTgsNiArNTEzMiw5IEBACiAJCQkJMUExRDEzN0UwQTUzMjU1MjAwNjRC
RjVGIC8qIERPTVhQYXRoLmggKi8sCiAJCQkJMUExRDEzN0YwQTUzMjU1MjAwNjRCRjVGIC8qIERP
TVhQYXRoLm1tICovLAogCQkJCTFBMUQxM0M5MEE1MzI5MDkwMDY0QkY1RiAvKiBET01YUGF0aElu
dGVybmFsLmggKi8sCisJCQkJMUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9i
amVjdC5oICovLAorCQkJCTFDQUYzNDdGMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmpl
Y3QubW0gKi8sCisJCQkJMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVj
dFByaXZhdGUuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gb2JqYzsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC01NDc4LDYgKzU2MTUsNyBAQAogCQkJCTg1MDMxQjI3MEE0NEVGQzcwMEY5
OTJFMCAvKiBCZWZvcmVVbmxvYWRFdmVudC5oICovLAogCQkJCTY1NTBCNjkzMDk5REYwMjcwMDkw
RDc4MSAvKiBDREFUQVNlY3Rpb24uY3BwICovLAogCQkJCTY1NTBCNjk0MDk5REYwMjcwMDkwRDc4
MSAvKiBDREFUQVNlY3Rpb24uaCAqLywKKwkJCQk4NTA4OUNDOTBBOThDMkFCMDBBMjc1QUEgLyog
Q0RBVEFTZWN0aW9uLmlkbCAqLywKIAkJCQk2NTUwQjY5NTA5OURGMDI3MDA5MEQ3ODEgLyogQ2hh
cmFjdGVyRGF0YS5jcHAgKi8sCiAJCQkJNjU1MEI2OTYwOTlERjAyNzAwOTBENzgxIC8qIENoYXJh
Y3RlckRhdGEuaCAqLywKIAkJCQk5M0VFQzFFNjA5QzI4Nzc3MDBDNTE1RDEgLyogQ2hhcmFjdGVy
RGF0YS5pZGwgKi8sCkBAIC01NDg4LDYgKzU2MjYsNyBAQAogCQkJCTg1MDMxQjJBMEE0NEVGQzcw
MEY5OTJFMCAvKiBDbGlwYm9hcmRFdmVudC5oICovLAogCQkJCTY1NTBCNjk3MDk5REYwMjcwMDkw
RDc4MSAvKiBDb21tZW50LmNwcCAqLywKIAkJCQk2NTUwQjY5ODA5OURGMDI3MDA5MEQ3ODEgLyog
Q29tbWVudC5oICovLAorCQkJCTg1MDg5Q0M3MEE5OEMyMjYwMEEyNzVBQSAvKiBDb21tZW50Lmlk
bCAqLywKIAkJCQlBODE4NzIxNDA5NzdEM0MwMDA1ODI2RDkgLyogQ29udGFpbmVyTm9kZS5jcHAg
Ki8sCiAJCQkJQTgxODcyMTEwOTc3RDNDMDAwNTgyNkQ5IC8qIENvbnRhaW5lck5vZGUuaCAqLywK
IAkJCQlBOEM0QTdGODA5RDU2MzI3MDAwM0FDOEQgLyogQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFy
YXRpb24uY3BwICovLApAQCAtNTUxNiw2ICs1NjU1LDcgQEAKIAkJCQk5M0VFQzFFQjA5QzI4Nzc3
MDBDNTE1RDEgLyogRW50aXR5LmlkbCAqLywKIAkJCQlBOEVBN0VCOTBBMTk0NUQwMDBBOEVGNUYg
LyogRW50aXR5UmVmZXJlbmNlLmNwcCAqLywKIAkJCQlBOEVBN0VCODBBMTk0NUQwMDBBOEVGNUYg
LyogRW50aXR5UmVmZXJlbmNlLmggKi8sCisJCQkJODUwODlDQ0IwQTk4QzMzQTAwQTI3NUFBIC8q
IEVudGl0eVJlZmVyZW5jZS5pZGwgKi8sCiAJCQkJODUwMzFCMkIwQTQ0RUZDNzAwRjk5MkUwIC8q
IEV2ZW50LmNwcCAqLywKIAkJCQk4NTAzMUIyQzBBNDRFRkM3MDBGOTkyRTAgLyogRXZlbnQuaCAq
LywKIAkJCQkxNEU4MzZEMjA5Rjg1MTIwMDBCODVBRTQgLyogRXZlbnQuaWRsICovLApAQCAtNTU0
NCw2ICs1Njg0LDcgQEAKIAkJCQlBOEM0QTdGMDA5RDU2MzI3MDAwM0FDOEQgLyogTmFtZWRNYXBw
ZWRBdHRyTWFwLmNwcCAqLywKIAkJCQlBOEM0QTdFRjA5RDU2MzI3MDAwM0FDOEQgLyogTmFtZWRN
YXBwZWRBdHRyTWFwLmggKi8sCiAJCQkJQTgxODcyMTgwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVk
Tm9kZU1hcC5oICovLAorCQkJCTg1QUNBOUY5MEE5QjYzMTAwMDY3MUU5MCAvKiBOYW1lZE5vZGVN
YXAuaWRsICovLAogCQkJCUE4MTg3MjE5MDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lTm9kZUxpc3Qu
Y3BwICovLAogCQkJCUE4MTg3MjEzMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lTm9kZUxpc3QuaCAq
LywKIAkJCQlBOEM0QTdFRTA5RDU2MzI3MDAwM0FDOEQgLyogTm9kZS5jcHAgKi8sCkBAIC01NTU5
LDYgKzU3MDAsNyBAQAogCQkJCTFBNzUwRDg3MEE5MEUzOTQwMDBGRjIxNSAvKiBOb2RlSXRlcmF0
b3IuaWRsICovLAogCQkJCUE4MTg3MjE2MDk3N0QzQzAwMDU4MjZEOSAvKiBOb2RlTGlzdC5jcHAg
Ki8sCiAJCQkJQTgxODcyMTAwOTc3RDNDMDAwNTgyNkQ5IC8qIE5vZGVMaXN0LmggKi8sCisJCQkJ
ODVBQ0E5RkEwQTlCNjMxMDAwNjcxRTkwIC8qIE5vZGVMaXN0LmlkbCAqLywKIAkJCQlBOEVBN0VC
NzBBMTk0NUQwMDBBOEVGNUYgLyogTm90YXRpb24uY3BwICovLAogCQkJCUE4RUE3RUI2MEExOTQ1
RDAwMEE4RUY1RiAvKiBOb3RhdGlvbi5oICovLAogCQkJCTkzRUVDMUY0MDlDMjg3NzcwMEM1MTVE
MSAvKiBOb3RhdGlvbi5pZGwgKi8sCkBAIC02MzgxLDYgKzY1MjMsMTEgQEAKIAkJCQlCQ0FBOTBB
MDBBN0VCMDNBMDA4QjEyMjkgLyogUGxhdGZvcm1TY3JvbGxCYXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg1RUM5QUZBMEE3MUEyQzYwMEVFRUFFRCAvKiBGb250RGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODVFQzlBRkIwQTcxQTJDNjAwRUVFQUVEIC8qIExhbmd1YWdlLmggaW4gSGVhZGVycyAq
LywKKwkJCQk4NTZDODlGQzBBOTBGMDY4MDA1QzY4N0IgLyogRE9NTm9kZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJODU2QzhBRTQwQTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJODVDQTk2QjgwQTk2MjFBNjAwNjkwQ0NGIC8qIERPTUVudGl0eS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJODVDQTk2RUEwQTk2MjRFOTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9uLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk4NUNBOTc1QzBBOTYyRTU0MDA2OTBDQ0YgLyogRE9NRG9jdW1l
bnRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI3RkM2OTBBOEI5MkVDMDBEOUQzN0IgLyog
WFBhdGhFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjdGQzZDMEE4QjkyRUMwMEQ5
RDM3QiAvKiBYUGF0aEV4cHJlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjdGQzZGMEE4
QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb25Ob2RlLmggaW4gSGVhZGVycyAqLywKQEAg
LTY0MDEsNiArNjU0OCwxOSBAQAogCQkJCTFBQ0U1M0Y3MEE4RDE5NDcwMDIyOTQ3RCAvKiBKU1hN
TFNlcmlhbGl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNzUwRDVEMEE5MERFRTEwMDBGRjIx
NSAvKiBKU1RyZWVXYWxrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNzUwRDhFMEE5MEU1MjEw
MDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODUwODlDRDcw
QTk4QzQyODAwQTI3NUFBIC8qIERPTUNEQVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
ODUwODlDRDkwQTk4QzQyODAwQTI3NUFBIC8qIERPTUNvbW1lbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTg1MDg5Q0RCMEE5OEM0MjgwMEEyNzVBQSAvKiBET01Eb2N1bWVudEZyYWdtZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQk4NTA4OUNERDBBOThDNDI4MDBBMjc1QUEgLyogRE9NRW50aXR5UmVm
ZXJlbmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUY1NkE3QTBBOThDRTM3MDBBREI2MEEgLyog
RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUQzODlCMjBB
OTkxQTdGMDAyODIxNDUgLyogRE9NQXR0ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODVBQ0E5ODYw
QTlCNTIwMzAwNjcxRTkwIC8qIERPTUNoYXJhY3RlckRhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTg1QUNBOTlDMEE5QjU3NTkwMDY3MUU5MCAvKiBET01UZXh0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4NUFDQTlDMDBBOUI1RkE1MDA2NzFFOTAgLyogRE9NRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJODVBQ0FBOEQwQTlCNzU5QzAwNjcxRTkwIC8qIERPTU5vZGVMaXN0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQk4NUFDQUJCMDBBOUNBRjgwMDA2NzFFOTAgLyogRE9NRG9jdW1lbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTg1MThEQ0U5MEE5Q0M4MEQwMDkxQjdBNiAvKiBET01ET01JbXBsZW1l
bnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJODUxOERENzgwQTlDRjMxQjAwOTFCN0E2IC8q
IERPTU5hbWVkTm9kZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU3NDI5MTcwQTlDMkQwQjAw
QzUyQzk3IC8qIEljb25EYXRhQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NzQyOTE4MEE5
QzJEMEIwMEM1MkM5NyAvKiBTUUxTdGF0ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NzQy
OTE5MEE5QzJEMEIwMEM1MkM5NyAvKiBTUUxUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBA
IC02NDk1LDYgKzY2NTUsMTEgQEAKIAkJCQkxQ0Q0NDE4RjBBNENFNzZGMDBBMDA3QUIgLyogbm9y
dGhTb3V0aFJlc2l6ZUN1cnNvci50aWZmIGluIFJlc291cmNlcyAqLywKIAkJCQkxQ0Q0NDE5MDBB
NENFNzZGMDBBMDA3QUIgLyogbm9ydGhXZXN0U291dGhFYXN0UmVzaXplQ3Vyc29yLnRpZmYgaW4g
UmVzb3VyY2VzICovLAogCQkJCTFBNzUwRDg4MEE5MEUzOTQwMDBGRjIxNSAvKiBOb2RlSXRlcmF0
b3IuaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQk4NTA4OUNDODBBOThDMjI2MDBBMjc1QUEgLyog
Q29tbWVudC5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCTg1MDg5Q0NBMEE5OEMyQUIwMEEyNzVB
QSAvKiBDREFUQVNlY3Rpb24uaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQk4NTA4OUNDQzBBOThD
MzNBMDBBMjc1QUEgLyogRW50aXR5UmVmZXJlbmNlLmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJ
ODVBQ0E5RkIwQTlCNjMxMDAwNjcxRTkwIC8qIE5hbWVkTm9kZU1hcC5pZGwgaW4gUmVzb3VyY2Vz
ICovLAorCQkJCTg1QUNBOUZDMEE5QjYzMTAwMDY3MUU5MCAvKiBOb2RlTGlzdC5pZGwgaW4gUmVz
b3VyY2VzICovLAogCQkJCTUxMTUwOTVDMEE5Q0UwNDcwMDkwMTAxMyAvKiB1cmxJY29uLnRpZmYg
aW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwpAQCAtNzI1Myw2ICs3NDE4LDExIEBACiAJCQkJQkNBQTkwQzMwQTdFQkE2MDAw
OEIxMjI5IC8qIFNjcm9sbEJhci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0IwRkQ4QTBBNzU5
QkVEMDA4MEFENDQgLyogU3RyaW5nSW1wbE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzQjBG
RDhCMEE3NTlCRUQwMDgwQUQ0NCAvKiBTdHJpbmdNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk4
NTZDODlGRDBBOTBGMDY4MDA1QzY4N0IgLyogRE9NTm9kZS5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTg1NkM4QUU1MEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3QubW0gaW4gU291cmNlcyAqLywK
KwkJCQk4NUNBOTZCOTBBOTYyMUE2MDA2OTBDQ0YgLyogRE9NRW50aXR5Lm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJODVDQTk2RUIwQTk2MjRFOTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9uLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJODVDQTk3NUQwQTk2MkU1NDAwNjkwQ0NGIC8qIERPTURvY3VtZW50VHlw
ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdGQzY4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0
aEV2YWx1YXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RkM2QjBBOEI5MkVDMDBEOUQz
N0IgLyogWFBhdGhFeHByZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdGQzZFMEE4
QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb25Ob2RlLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtNzI3NSw2ICs3NDQ1LDE5IEBACiAJCQkJMUE3NTBEOEQwQTkwRTUyMTAwMEZGMjE1IC8qIEpT
Tm9kZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNzUwREQ0MEE5MEU3MjkwMDBG
RjIxNSAvKiBKU05vZGVJdGVyYXRvckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTc1
MEUzNDBBOTBGODlGMDAwRkYyMTUgLyogSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTg1MDg5Q0Q4MEE5OEM0MjgwMEEyNzVBQSAvKiBET01DREFUQVNlY3Rpb24ubW0g
aW4gU291cmNlcyAqLywKKwkJCQk4NTA4OUNEQTBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ29tbWVu
dC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1MDg5Q0RDMEE5OEM0MjgwMEEyNzVBQSAvKiBET01E
b2N1bWVudEZyYWdtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODUwODlDREUwQTk4QzQyODAw
QTI3NUFBIC8qIERPTUVudGl0eVJlZmVyZW5jZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1RjU2
QTdCMEE5OENFMzcwMEFEQjYwQSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0gaW4gU291
cmNlcyAqLywKKwkJCQk4NUQzODlCMzBBOTkxQTdGMDAyODIxNDUgLyogRE9NQXR0ci5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTg1QUNBOTg3MEE5QjUyMDMwMDY3MUU5MCAvKiBET01DaGFyYWN0ZXJE
YXRhLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODVBQ0E5OUQwQTlCNTc1OTAwNjcxRTkwIC8qIERP
TVRleHQubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NUFDQTlDMTBBOUI1RkE1MDA2NzFFOTAgLyog
RE9NRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1QUNBQThFMEE5Qjc1OUMwMDY3MUU5
MCAvKiBET01Ob2RlTGlzdC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1QUNBQkIxMEE5Q0FGODAw
MDY3MUU5MCAvKiBET01Eb2N1bWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1MThEQ0VBMEE5
Q0M4MEQwMDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTg1MThERDc5MEE5Q0YzMUIwMDkxQjdBNiAvKiBET01OYW1lZE5vZGVNYXAubW0gaW4gU291
cmNlcyAqLywKIAkJCQk1MTg2QzA1NjBBOUMyMTQ3MDAzNEZFOTQgLyogSWNvbkRhdGFDYWNoZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQkocmV2aXNpb24gMTU5OTcpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEphbWVzIEcuIFNwZXRo
IChzcGV0aEBlbmQuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNh
bS53ZWluaWdAZ21haWwuY29tKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OCwxNyArMjksMTcgQEAKICNpbXBvcnQgIkRPTS5oIgogCiAjaW1wb3J0ICJDREFUQVNlY3Rpb24u
aCIKLSNpbXBvcnQgImNzc2hlbHBlci5oIgogI2ltcG9ydCAiQ1NTU3R5bGVTaGVldC5oIgogI2lt
cG9ydCAiQ29tbWVudC5oIgogI2ltcG9ydCAiRE9NRXZlbnRzSW50ZXJuYWwuaCIKKyNpbXBvcnQg
IkRPTUhUTUwuaCIKICNpbXBvcnQgIkRPTUltcGxlbWVudGF0aW9uRnJvbnQuaCIKICNpbXBvcnQg
IkRPTUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Qcml2YXRlLmgiCisjaW1wb3J0ICJEZXByZWNh
dGVkVmFsdWVMaXN0LmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiRG9jdW1lbnRG
cmFnbWVudC5oIgogI2ltcG9ydCAiRG9jdW1lbnRUeXBlLmgiCi0jaW1wb3J0ICJFbnRpdHkuaCIK
ICNpbXBvcnQgIkVudGl0eVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRXZlbnQuaCIKICNpbXBvcnQg
IkV2ZW50TGlzdGVuZXIuaCIKQEAgLTQ3LDM3ICs0OCw1NyBAQAogI2ltcG9ydCAiSFRNTERvY3Vt
ZW50LmgiCiAjaW1wb3J0ICJIVE1MTmFtZXMuaCIKICNpbXBvcnQgIkhUTUxQbHVnSW5FbGVtZW50
LmgiCisjaW1wb3J0ICJJbnRSZWN0LmgiCiAjaW1wb3J0ICJOb2RlRmlsdGVyLmgiCiAjaW1wb3J0
ICJOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCiAjaW1wb3J0ICJOb2RlSXRlcmF0b3IuaCIKICNpbXBv
cnQgIk5vZGVMaXN0LmgiCi0jaW1wb3J0ICJOb3RhdGlvbi5oIgogI2ltcG9ydCAiUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmgiCiAjaW1wb3J0ICJRdWFsaWZpZWROYW1lLmgiCiAjaW1wb3J0ICJSYW5n
ZS5oIgogI2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKKyNpbXBvcnQgIlRleHQuaCIKICNpbXBvcnQg
IlRyZWVXYWxrZXIuaCIKICNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKKyNpbXBv
cnQgImNzc2hlbHBlci5oIgorCisvLyBGcm9tIG9sZCBET01Db3JlLmgKKyNpbXBvcnQgIkRPTU5v
ZGUuaCIKKyNpbXBvcnQgIkRPTU9iamVjdC5oIgorCisvLyBHZW5lcmF0ZWQgT2JqZWN0aXZlLUMg
QmluZGluZ3MKKyNpbXBvcnQgIkRPTUF0dHIuaCIKKyNpbXBvcnQgIkRPTUNEQVRBU2VjdGlvbi5o
IgorI2ltcG9ydCAiRE9NQ2hhcmFjdGVyRGF0YS5oIgorI2ltcG9ydCAiRE9NQ29tbWVudC5oIgor
I2ltcG9ydCAiRE9NRE9NSW1wbGVtZW50YXRpb24uaCIKKyNpbXBvcnQgIkRPTURvY3VtZW50Lmgi
CisjaW1wb3J0ICJET01Eb2N1bWVudEZyYWdtZW50LmgiCisjaW1wb3J0ICJET01Eb2N1bWVudFR5
cGUuaCIKKyNpbXBvcnQgIkRPTUVsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUVudGl0eS5oIgorI2lt
cG9ydCAiRE9NRW50aXR5UmVmZXJlbmNlLmgiCisjaW1wb3J0ICJET01OYW1lZE5vZGVNYXAuaCIK
KyNpbXBvcnQgIkRPTU5vZGVMaXN0LmgiCisjaW1wb3J0ICJET01Ob3RhdGlvbi5oIgorI2ltcG9y
dCAiRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCisjaW1wb3J0ICJET01UZXh0LmgiCisKICNp
bXBvcnQgPG9iamMvb2JqYy1jbGFzcy5oPgogCiB1c2luZyBXZWJDb3JlOjpBdG9taWNTdHJpbmc7
CiB1c2luZyBXZWJDb3JlOjpBdG9taWNTdHJpbmdJbXBsOwogdXNpbmcgV2ViQ29yZTo6QXR0cjsK
LXVzaW5nIFdlYkNvcmU6OkNoYXJhY3RlckRhdGE7Ci11c2luZyBXZWJDb3JlOjpEZXByZWNhdGVk
VmFsdWVMaXN0OwogdXNpbmcgV2ViQ29yZTo6RG9jdW1lbnQ7CiB1c2luZyBXZWJDb3JlOjpEb2N1
bWVudEZyYWdtZW50OwotdXNpbmcgV2ViQ29yZTo6RG9jdW1lbnRUeXBlOwogdXNpbmcgV2ViQ29y
ZTo6RE9NSW1wbGVtZW50YXRpb25Gcm9udDsKIHVzaW5nIFdlYkNvcmU6OkVsZW1lbnQ7Ci11c2lu
ZyBXZWJDb3JlOjpFbnRpdHk7CiB1c2luZyBXZWJDb3JlOjpFdmVudDsKIHVzaW5nIFdlYkNvcmU6
OkV2ZW50TGlzdGVuZXI7CiB1c2luZyBXZWJDb3JlOjpFeGNlcHRpb25Db2RlOwogdXNpbmcgV2Vi
Q29yZTo6SFRNTERvY3VtZW50OwogdXNpbmcgV2ViQ29yZTo6SFRNTEVsZW1lbnQ7CiB1c2luZyBX
ZWJDb3JlOjpGcmFtZU1hYzsKLXVzaW5nIFdlYkNvcmU6OkludFJlY3Q7CiB1c2luZyBXZWJDb3Jl
OjpLVVJMOwogdXNpbmcgV2ViQ29yZTo6TmFtZWROb2RlTWFwOwogdXNpbmcgV2ViQ29yZTo6Tm9k
ZTsKQEAgLTg1LDMyICsxMDYsMTUgQEAgdXNpbmcgV2ViQ29yZTo6Tm9kZUZpbHRlcjsKIHVzaW5n
IFdlYkNvcmU6Ok5vZGVGaWx0ZXJDb25kaXRpb247CiB1c2luZyBXZWJDb3JlOjpOb2RlSXRlcmF0
b3I7CiB1c2luZyBXZWJDb3JlOjpOb2RlTGlzdDsKLXVzaW5nIFdlYkNvcmU6Ok5vdGF0aW9uOwot
dXNpbmcgV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOwogdXNpbmcgV2ViQ29yZTo6UXVh
bGlmaWVkTmFtZTsKIHVzaW5nIFdlYkNvcmU6OlJhbmdlOwogdXNpbmcgV2ViQ29yZTo6UmVuZGVy
SW1hZ2U7CiB1c2luZyBXZWJDb3JlOjpSZW5kZXJPYmplY3Q7CiB1c2luZyBXZWJDb3JlOjpTdHJp
bmc7Ci11c2luZyBXZWJDb3JlOjpUZXh0OwogdXNpbmcgV2ViQ29yZTo6VHJlZVdhbGtlcjsKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkhUTUxOYW1lczsKIAotQGludGVyZmFjZSBET01BdHRy
IChXZWJDb3JlSW50ZXJuYWwpCi0rIChET01BdHRyICopX2F0dHJXaXRoOihBdHRyICopaW1wbDsK
LS0gKEF0dHIgKilfYXR0cjsKLUBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudFR5cGUgKFdl
YkNvcmVJbnRlcm5hbCkKLS0gKERvY3VtZW50VHlwZSAqKV9kb2N1bWVudFR5cGU7Ci1AZW5kCi0K
LUBpbnRlcmZhY2UgRE9NSW1wbGVtZW50YXRpb24gKFdlYkNvcmVJbnRlcm5hbCkKLSsgKERPTUlt
cGxlbWVudGF0aW9uICopX0RPTUltcGxlbWVudGF0aW9uV2l0aDooRE9NSW1wbGVtZW50YXRpb25G
cm9udCAqKWltcGw7Ci0tIChET01JbXBsZW1lbnRhdGlvbkZyb250ICopX0RPTUltcGxlbWVudGF0
aW9uOwotQGVuZAotCiBjbGFzcyBPYmpDRXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBFdmVudExpc3Rl
bmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgT2JqQ0V2ZW50TGlzdGVuZXIgKmZpbmQoaWQgPERP
TUV2ZW50TGlzdGVuZXI+KTsKQEAgLTEzMSw0MiArMTM1LDEwIEBAIHR5cGVkZWYgSGFzaE1hcDxB
dG9taWNTdHJpbmdJbXBsKiwgQ2xhc3MKIHN0YXRpYyBPYmpDQ2xhc3NNYXAqIGVsZW1lbnRDbGFz
c01hcDsKIHN0YXRpYyBMaXN0ZW5lck1hcCogbGlzdGVuZXJNYXA7CiAKKwogLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTU9iamVjdAogCi1AaW1wbGVtZW50YXRpb24g
RE9NT2JqZWN0Ci0KLS8vIFByZXZlbnQgY3JlYXRpb24gb2YgRE9NIG9iamVjdHMgYnkgY2xpZW50
cyB3aG8ganVzdCAiW1t4eHggYWxsb2NdIGluaXRdIi4KLS0gKGlkKWluaXQKLXsKLSAgICBbTlNF
eGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1hdDpAIitbJUAgaW5pdF06IHNo
b3VsZCBuZXZlciBiZSB1c2VkIiwgTlNTdHJpbmdGcm9tQ2xhc3MoW3NlbGYgY2xhc3NdKV07Ci0g
ICAgW3NlbGYgcmVsZWFzZV07Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAodm9pZClkZWFsbG9j
Ci17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICByZW1vdmVET01XcmFwcGVyKF9pbnRl
cm5hbCk7Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6
ZQotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgcmVtb3ZlRE9NV3JhcHBlcihfaW50
ZXJuYWwpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChpZCljb3B5V2l0
aFpvbmU6KE5TWm9uZSAqKXpvbmUKLXsKLSAgICByZXR1cm4gW3NlbGYgcmV0YWluXTsKLX0KLQot
QGVuZAotCiBAaW1wbGVtZW50YXRpb24gRE9NT2JqZWN0IChXZWJDb3JlSW50ZXJuYWwpCiAKIC0g
KGlkKV9pbml0CkBAIC0xNzYsMjcxICsxNDgsMTAgQEAgc3RhdGljIExpc3RlbmVyTWFwKiBsaXN0
ZW5lck1hcDsKIAogQGVuZAogCisKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAvLyBET01Ob2RlCiAKLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlCi0KLS0gKHZvaWQpZGVhbGxv
YwotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZSAqPihfaW50
ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZv
aWQpZmluYWxpemUKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5v
ZGUgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsK
LX0KLQotLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgotewotICAgIGlmICghX2ludGVybmFsKSB7
Ci0gICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQDogbnVsbD4i
LAotICAgICAgICAgICAgW1tzZWxmIGNsYXNzXSBkZXNjcmlwdGlvbl0sIHNlbGZdOwotICAgIH0K
LSAgICBOU1N0cmluZyAqdmFsdWUgPSBbc2VsZiBub2RlVmFsdWVdOwotICAgIGlmICh2YWx1ZSkg
ewotICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUAgWyVAXTog
JXAgJyVAJz4iLAotICAgICAgICAgICAgW1tzZWxmIGNsYXNzXSBkZXNjcmlwdGlvbl0sIFtzZWxm
IG5vZGVOYW1lXSwgX2ludGVybmFsLCB2YWx1ZV07Ci0gICAgfQotICAgIHJldHVybiBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQCBbJUBdOiAlcD4iLAotICAgICAgICBbW3NlbGYgY2xh
c3NdIGRlc2NyaXB0aW9uXSwgW3NlbGYgbm9kZU5hbWVdLCBfaW50ZXJuYWxdOwotfQotCi0tIChO
U1N0cmluZyAqKW5vZGVOYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bm9kZU5hbWUo
KTsKLX0KLQotLSAoTlNTdHJpbmcgKilub2RlVmFsdWUKLXsKLSAgICAvLyBEb2N1bWVudGF0aW9u
IHNheXMgd2UgY2FuIHJhaXNlIGEgRE9NU1RSSU5HX1NJWkVfRVJSLgotICAgIC8vIEhvd2V2ZXIs
IHRoZSBsb3dlciBsYXllciBkb2VzIG5vdCByZXBvcnQgdGhhdCBlcnJvciB1cCB0byB1cy4KLSAg
ICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2RlVmFsdWUoKTsKLX0KLQotLSAodm9pZClzZXROb2Rl
VmFsdWU6KE5TU3RyaW5nICopc3RyaW5nCi17Ci0gICAgQVNTRVJUKHN0cmluZyk7Ci0gICAgCi0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX25vZGVdLT5zZXROb2RlVmFsdWUo
c3RyaW5nLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodW5zaWduZWQg
c2hvcnQpbm9kZVR5cGUKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2RlVHlwZSgpOwot
fQotCi0tIChET01Ob2RlICopcGFyZW50Tm9kZQotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9k
ZVdpdGg6W3NlbGYgX25vZGVdLT5wYXJlbnROb2RlKCldOwotfQotCi0tIChET01Ob2RlTGlzdCAq
KWNoaWxkTm9kZXMKLXsKLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3Nl
bGYgX25vZGVdLT5jaGlsZE5vZGVzKCkuZ2V0KCldOwotfQotCi0tIChET01Ob2RlICopZmlyc3RD
aGlsZAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5maXJz
dENoaWxkKCldOwotfQotCi0tIChET01Ob2RlICopbGFzdENoaWxkCi17Ci0gICAgcmV0dXJuIFtE
T01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPmxhc3RDaGlsZCgpXTsKLX0KLQotLSAoRE9N
Tm9kZSAqKXByZXZpb3VzU2libGluZwotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6
W3NlbGYgX25vZGVdLT5wcmV2aW91c1NpYmxpbmcoKV07Ci19Ci0KLS0gKERPTU5vZGUgKiluZXh0
U2libGluZwotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5u
ZXh0U2libGluZygpXTsKLX0KLQotLSAoRE9NTmFtZWROb2RlTWFwICopYXR0cmlidXRlcwotewot
ICAgIC8vIERPTSBsZXZlbCAyIGNvcmUgc3BlY2lmaWNhdGlvbiBzYXlzOiAKLSAgICAvLyBBIE5h
bWVkTm9kZU1hcCBjb250YWluaW5nIHRoZSBhdHRyaWJ1dGVzIG9mIHRoaXMgbm9kZSAoaWYgaXQg
aXMgYW4gRWxlbWVudCkgb3IgbnVsbCBvdGhlcndpc2UuCi0gICAgcmV0dXJuIG5pbDsKLX0KLQot
LSAoRE9NRG9jdW1lbnQgKilvd25lckRvY3VtZW50Ci17Ci0gICAgcmV0dXJuIFtET01Eb2N1bWVu
dCBfZG9jdW1lbnRXaXRoOltzZWxmIF9ub2RlXS0+ZG9jdW1lbnQoKV07Ci19Ci0KLS0gKERPTU5v
ZGUgKilpbnNlcnRCZWZvcmU6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilyZWZDaGls
ZAotewotICAgIEFTU0VSVChuZXdDaGlsZCk7Ci0gICAgQVNTRVJUKHJlZkNoaWxkKTsKLQotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChbc2VsZiBfbm9kZV0tPmluc2VydEJlZm9y
ZShbbmV3Q2hpbGQgX25vZGVdLCBbcmVmQ2hpbGQgX25vZGVdLCBlYykpCi0gICAgICAgIHJldHVy
biBuZXdDaGlsZDsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBuaWw7Ci19
Ci0KLS0gKERPTU5vZGUgKilyZXBsYWNlQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5v
ZGUgKilvbGRDaGlsZAotewotICAgIEFTU0VSVChuZXdDaGlsZCk7Ci0gICAgQVNTRVJUKG9sZENo
aWxkKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChbc2VsZiBfbm9kZV0t
PnJlcGxhY2VDaGlsZChbbmV3Q2hpbGQgX25vZGVdLCBbb2xkQ2hpbGQgX25vZGVdLCBlYykpCi0g
ICAgICAgIHJldHVybiBvbGRDaGlsZDsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJl
dHVybiBuaWw7Ci19Ci0KLS0gKERPTU5vZGUgKilyZW1vdmVDaGlsZDooRE9NTm9kZSAqKW9sZENo
aWxkCi17Ci0gICAgQVNTRVJUKG9sZENoaWxkKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIGlmIChbc2VsZiBfbm9kZV0tPnJlbW92ZUNoaWxkKFtvbGRDaGlsZCBfbm9kZV0sIGVj
KSkKLSAgICAgICAgcmV0dXJuIG9sZENoaWxkOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0g
ICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoRE9NTm9kZSAqKWFwcGVuZENoaWxkOihET01Ob2RlICop
bmV3Q2hpbGQKLXsKLSAgICBBU1NFUlQobmV3Q2hpbGQpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgaWYgKFtzZWxmIF9ub2RlXS0+YXBwZW5kQ2hpbGQoW25ld0NoaWxkIF9ub2Rl
XSwgZWMpKQotICAgICAgICByZXR1cm4gbmV3Q2hpbGQ7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVj
KTsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChCT09MKWhhc0NoaWxkTm9kZXMKLXsKLSAgICBy
ZXR1cm4gW3NlbGYgX25vZGVdLT5oYXNDaGlsZE5vZGVzKCk7Ci19Ci0KLS0gKERPTU5vZGUgKilj
bG9uZU5vZGU6KEJPT0wpZGVlcAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX25vZGVdLT5jbG9uZU5vZGUoZGVlcCkuZ2V0KCldOwotfQotCi0tICh2b2lkKW5vcm1hbGl6
ZQotewotICAgIFtzZWxmIF9ub2RlXS0+bm9ybWFsaXplKCk7Ci19Ci0KLS0gKEJPT0wpaXNTdXBw
b3J0ZWQ6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbgotewotICAgIEFT
U0VSVChmZWF0dXJlKTsKLSAgICBBU1NFUlQodmVyc2lvbik7Ci0KLSAgICByZXR1cm4gW3NlbGYg
X25vZGVdLT5pc1N1cHBvcnRlZChmZWF0dXJlLCB2ZXJzaW9uKTsKLX0KLQotLSAoTlNTdHJpbmcg
KiluYW1lc3BhY2VVUkkKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5uYW1lc3BhY2VVUkko
KTsKLX0KLQotLSAoTlNTdHJpbmcgKilwcmVmaXgKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVd
LT5wcmVmaXgoKTsKLX0KLQotLSAodm9pZClzZXRQcmVmaXg6KE5TU3RyaW5nICopcHJlZml4Ci17
Ci0gICAgQVNTRVJUKHByZWZpeCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBT
dHJpbmcgcHJlZml4U3RyKHByZWZpeCk7Ci0gICAgW3NlbGYgX25vZGVdLT5zZXRQcmVmaXgocHJl
Zml4U3RyLmltcGwoKSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKE5T
U3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bG9jYWxOYW1l
KCk7Ci19Ci0KLS0gKEJPT0wpaGFzQXR0cmlidXRlcwotewotICAgIHJldHVybiBbc2VsZiBfbm9k
ZV0tPmhhc0F0dHJpYnV0ZXMoKTsKLX0KLQotLSAoQk9PTClpc1NhbWVOb2RlOihET01Ob2RlICop
b3RoZXIKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc1NhbWVOb2RlKFtvdGhlciBfbm9k
ZV0pOwotfQotCi0tIChCT09MKWlzRXF1YWxOb2RlOihET01Ob2RlICopb3RoZXIKLXsKLSAgICBy
ZXR1cm4gW3NlbGYgX25vZGVdLT5pc0VxdWFsTm9kZShbb3RoZXIgX25vZGVdKTsKLX0KLQotLSAo
Qk9PTClpc0RlZmF1bHROYW1lc3BhY2U6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJCi17Ci0gICAg
cmV0dXJuIFtzZWxmIF9ub2RlXS0+aXNEZWZhdWx0TmFtZXNwYWNlKG5hbWVzcGFjZVVSSSk7Ci19
Ci0KLS0gKE5TU3RyaW5nICopbG9va3VwUHJlZml4OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSQot
ewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmxvb2t1cFByZWZpeChuYW1lc3BhY2VVUkkpOwot
fQotCi0tIChOU1N0cmluZyAqKWxvb2t1cE5hbWVzcGFjZVVSSTooTlNTdHJpbmcgKilwcmVmaXgK
LXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5sb29rdXBOYW1lc3BhY2VVUkkocHJlZml4KTsK
LX0KLQotLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudAotewotICAgIHJldHVybiBbc2VsZiBfbm9k
ZV0tPnRleHRDb250ZW50KCk7Ci19Ci0KLS0gKHZvaWQpc2V0VGV4dENvbnRlbnQ6KE5TU3RyaW5n
ICopdGV4dAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9ub2RlXS0+
c2V0VGV4dENvbnRlbnQodGV4dCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0K
LS0gKE5TUmVjdClib3VuZGluZ0JveAotewotICAgIFdlYkNvcmU6OlJlbmRlck9iamVjdCAqcmVu
ZGVyZXIgPSBbc2VsZiBfbm9kZV0tPnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyKQotICAg
ICAgICByZXR1cm4gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7Ci0gICAgcmV0
dXJuIE5TWmVyb1JlY3Q7Ci19Ci0KLS0gKE5TQXJyYXkgKilsaW5lQm94UmVjdHMKLXsKLSAgICBX
ZWJDb3JlOjpSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gW3NlbGYgX25vZGVdLT5yZW5kZXJlcigp
OwotICAgIGlmIChyZW5kZXJlcikgewotICAgICAgICBOU011dGFibGVBcnJheSAqcmVzdWx0cyA9
IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAgICAgICBEZXByZWNhdGVkVmFsdWVM
aXN0PEludFJlY3Q+IHJlY3RzID0gcmVuZGVyZXItPmxpbmVCb3hSZWN0cygpOwotICAgICAgICBp
ZiAoIXJlY3RzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgZm9yIChEZXByZWNhdGVkVmFsdWVM
aXN0PEludFJlY3Q+OjpDb25zdEl0ZXJhdG9yIGl0ID0gcmVjdHMuYmVnaW4oKTsgaXQgIT0gcmVj
dHMuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICAgICAgW3Jlc3VsdHMgYWRkT2JqZWN0OltOU1Zh
bHVlIHZhbHVlV2l0aFJlY3Q6Kml0XV07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFtyZXN1
bHRzIGF1dG9yZWxlYXNlXTsKLSAgICB9Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotQGVuZAotCiBz
dGF0aWMgdm9pZCBhZGRFbGVtZW50Q2xhc3MoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnLCBDbGFz
cyBvYmpDQ2xhc3MpCiB7CiAgICAgZWxlbWVudENsYXNzTWFwLT5zZXQodGFnLmxvY2FsTmFtZSgp
LmltcGwoKSwgb2JqQ0NsYXNzKTsKQEAgLTUyOSw2ICsyNDAsMjIgQEAgc3RhdGljIENsYXNzIGVs
ZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogCiBAaW1wbGVtZW50YXRpb24gRE9NTm9kZSAoV2Vi
Q29yZUludGVybmFsKQogCisvLyBGSVhNRTogc2hvdWxkIHRoaXMgZ28gaW4gdGhlIG1haW4gaW1w
bGVtZW50YXRpb24/CistIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCit7CisgICAgaWYgKCFfaW50
ZXJuYWwpIHsKKyAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVA
OiBudWxsPiIsCisgICAgICAgICAgICBbW3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9uXSwgc2VsZl07
CisgICAgfQorICAgIE5TU3RyaW5nICp2YWx1ZSA9IFtzZWxmIG5vZGVWYWx1ZV07CisgICAgaWYg
KHZhbHVlKSB7CisgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwl
QCBbJUBdOiAlcCAnJUAnPiIsCisgICAgICAgICAgICBbW3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9u
XSwgW3NlbGYgbm9kZU5hbWVdLCBfaW50ZXJuYWwsIHZhbHVlXTsKKyAgICB9CisgICAgcmV0dXJu
IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAIFslQF06ICVwPiIsCisgICAgICAgIFtb
c2VsZiBjbGFzc10gZGVzY3JpcHRpb25dLCBbc2VsZiBub2RlTmFtZV0sIF9pbnRlcm5hbF07Cit9
CisKIC0gKGlkKV9pbml0V2l0aE5vZGU6KE5vZGUgKilpbXBsCiB7CiAgICAgQVNTRVJUKGltcGwp
OwpAQCAtNjA5LDEwICszMzYsMTAgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBB
dG9taWNTdAogCiAtIChjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICopX2V4ZWN1dGlv
bkNvbnRleHQKIHsKLSAgICBpZiAoTm9kZSAqbiA9IFtzZWxmIF9ub2RlXSkKKyAgICBpZiAoTm9k
ZSAqbiA9IFtzZWxmIF9ub2RlXSkgewogICAgICAgICBpZiAoRnJhbWVNYWMgKmYgPSBNYWMobi0+
ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpCiAgICAgICAgICAgICByZXR1cm4gZi0+ZXhlY3V0aW9uQ29u
dGV4dEZvckRPTSgpOwotCisgICAgfQogICAgIHJldHVybiAwOwogfQogCkBAIC02MjcsNiArMzU0
LDcgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogCiBAZW5kCiAK
Ky8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBhdXRvLWdlbmVuZXJhdGUgaW4gRE9NTm9kZS5tbQog
QGltcGxlbWVudGF0aW9uIERPTU5vZGUgKERPTUV2ZW50VGFyZ2V0KQogCiAtICh2b2lkKWFkZEV2
ZW50TGlzdGVuZXI6KE5TU3RyaW5nICopdHlwZSA6KGlkIDxET01FdmVudExpc3RlbmVyPilsaXN0
ZW5lciA6KEJPT0wpdXNlQ2FwdHVyZQpAQCAtNjU0LDgyNiArMzgyLDIwNSBAQCBzdGF0aWMgQ2xh
c3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAgICAgICAgIHJhaXNlRE9NRXhjZXB0aW9u
KERPTV9OT1RfU1VQUE9SVEVEX0VSUik7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBCT09MIHJlc3VsdCA9IEV2ZW50VGFyZ2V0Tm9kZUNhc3QoW3NlbGYgX25vZGVdKS0+ZGlzcGF0
Y2hFdmVudChbZXZlbnQgX2V2ZW50XSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotLy8gRE9NTmFtZWROb2RlTWFwCi0KLUBpbXBsZW1lbnRhdGlvbiBET01OYW1l
ZE5vZGVNYXAKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAg
ICAgICBET01fY2FzdDxOYW1lZE5vZGVNYXAgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9
Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgaWYg
KF9pbnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxOYW1lZE5vZGVNYXAgKj4oX2ludGVybmFs
KS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQotLSAoTmFtZWRO
b2RlTWFwICopX25hbWVkTm9kZU1hcAotewotICAgIHJldHVybiBET01fY2FzdDxOYW1lZE5vZGVN
YXAgKj4oX2ludGVybmFsKTsKLX0KLQotLSAoRE9NTm9kZSAqKWdldE5hbWVkSXRlbTooTlNTdHJp
bmcgKiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0gICAgcmV0dXJuIFtET01Ob2RlIF9u
b2RlV2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+Z2V0TmFtZWRJdGVtKG5hbWUpLmdldCgpXTsK
LX0KLQotLSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbTooRE9NTm9kZSAqKWFyZwotewotICAgIEFT
U0VSVChhcmcpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0
ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5zZXROYW1lZEl0ZW0o
W2FyZyBfbm9kZV0sIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNl
cHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUgKilyZW1vdmVOYW1l
ZEl0ZW06KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLQotICAgIGludCBl
eGNlcHRpb24gPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpb
c2VsZiBfbmFtZWROb2RlTWFwXS0+cmVtb3ZlTmFtZWRJdGVtKG5hbWUsIGV4Y2VwdGlvbikuZ2V0
KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS0gKERPTU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleAotewotICAgIHJldHVybiBb
RE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPml0ZW0oaW5kZXgpLmdldCgp
XTsKLX0KLQotLSAodW5zaWduZWQpbGVuZ3RoCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9uYW1lZE5v
ZGVNYXBdLT5sZW5ndGgoKTsKLX0KLQotLSAoRE9NTm9kZSAqKWdldE5hbWVkSXRlbU5TOihOU1N0
cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgaWYgKCFu
YW1lc3BhY2VVUkkgfHwgIWxvY2FsTmFtZSkgewotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0K
LQotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPmdl
dE5hbWVkSXRlbU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKS5nZXQoKV07Ci19Ci0KLS0gKERP
TU5vZGUgKilzZXROYW1lZEl0ZW1OUzooRE9NTm9kZSAqKWFyZwotewotICAgIEFTU0VSVChhcmcp
OwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5v
ZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5zZXROYW1lZEl0ZW1OUyhbYXJnIF9u
b2RlXSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbU5T
OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAg
QVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICBpbnQg
ZXhjZXB0aW9uID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6
W3NlbGYgX25hbWVkTm9kZU1hcF0tPnJlbW92ZU5hbWVkSXRlbU5TKG5hbWVzcGFjZVVSSSwgbG9j
YWxOYW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9u
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01O
YW1lZE5vZGVNYXAgKFdlYkNvcmVJbnRlcm5hbCkKLQotLSAoaWQpX2luaXRXaXRoTmFtZWROb2Rl
TWFwOihOYW1lZE5vZGVNYXAgKilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1
cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAq
PihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwp
OwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01OYW1lZE5vZGVNYXAgKilfbmFtZWROb2Rl
TWFwV2l0aDooTmFtZWROb2RlTWFwICopaW1wbAotewotICAgIGlmICghaW1wbCkKLSAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0
YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQotICAg
ICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICAK
LSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTmFtZWROb2RlTWFwOmltcGxdIGF1
dG9yZWxlYXNlXTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotLy8gRE9NTm9kZUxpc3QKLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGVMaXN0Ci0KLS0g
KHZvaWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8
Tm9kZUxpc3QgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGRlYWxs
b2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAg
ICAgICBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAg
ICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChOb2RlTGlzdCAqKV9ub2RlTGlzdAotewotICAg
IHJldHVybiBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50ZXJuYWwpOwotfQotCi0tIChET01Ob2Rl
ICopaXRlbToodW5zaWduZWQpaW5kZXgKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRo
OltzZWxmIF9ub2RlTGlzdF0tPml0ZW0oaW5kZXgpXTsKLX0KLQotLSAodW5zaWduZWQpbGVuZ3Ro
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlTGlzdF0tPmxlbmd0aCgpOwotfQotCi1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlTGlzdCAoV2ViQ29yZUludGVybmFsKQotCi0tIChpZClf
aW5pdFdpdGhOb2RlTGlzdDooTm9kZUxpc3QgKilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwpOwot
Ci0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJ
bnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNl
bGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01Ob2RlTGlzdCAqKV9ub2Rl
TGlzdFdpdGg6KE5vZGVMaXN0ICopaW1wbAotewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5j
ZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQotICAgICAg
ICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAg
ICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTm9kZUxpc3Q6aW1wbF0gYXV0b3JlbGVh
c2VdOwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0v
LyBET01JbXBsZW1lbnRhdGlvbgotCi1AaW1wbGVtZW50YXRpb24gRE9NSW1wbGVtZW50YXRpb24K
LQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAgICAgRE9NX2Nh
c3Q8RE9NSW1wbGVtZW50YXRpb25Gcm9udCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIFtz
dXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJu
YWwpCi0gICAgICAgIERPTV9jYXN0PERPTUltcGxlbWVudGF0aW9uRnJvbnQgKj4oX2ludGVybmFs
KS0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChCT09MKWhhc0ZlYXR1
cmU6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbgotewotICAgIEFTU0VS
VChmZWF0dXJlKTsKLSAgICBBU1NFUlQodmVyc2lvbik7Ci0KLSAgICByZXR1cm4gW3NlbGYgX0RP
TUltcGxlbWVudGF0aW9uXS0+aGFzRmVhdHVyZShmZWF0dXJlLCB2ZXJzaW9uKTsKLX0KLQotLSAo
RE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBlOihOU1N0cmluZyAqKXF1YWxpZmll
ZE5hbWUgOihOU1N0cmluZyAqKXB1YmxpY0lkIDooTlNTdHJpbmcgKilzeXN0ZW1JZAotewotICAg
IEFTU0VSVChxdWFsaWZpZWROYW1lKTsKLSAgICBBU1NFUlQocHVibGljSWQpOwotICAgIEFTU0VS
VChzeXN0ZW1JZCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8RG9j
dW1lbnRUeXBlPiBpbXBsID0gW3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+Y3JlYXRlRG9jdW1l
bnRUeXBlKHF1YWxpZmllZE5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCwgZWMpOwotICAgIHJhaXNl
T25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURvY3VtZW50VHlwZSAq
PihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQoKV0pOwotfQotCi0tIChET01Eb2N1bWVudCAq
KWNyZWF0ZURvY3VtZW50OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVh
bGlmaWVkTmFtZSA6KERPTURvY3VtZW50VHlwZSAqKWRvY3R5cGUKLXsKLSAgICBBU1NFUlQobmFt
ZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7Ci0KLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBSZWZQdHI8RG9jdW1lbnQ+IGltcGwgPSBbc2VsZiBfRE9NSW1wbGVt
ZW50YXRpb25dLT5jcmVhdGVEb2N1bWVudChuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIFtk
b2N0eXBlIF9kb2N1bWVudFR5cGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmlt
cGwuZ2V0KCldKTsKLX0KLQotLSAoRE9NSFRNTERvY3VtZW50ICopY3JlYXRlSFRNTERvY3VtZW50
OihOU1N0cmluZyAqKXRpdGxlCi17Ci0gICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gaW1wbCA9IFtz
ZWxmIF9ET01JbXBsZW1lbnRhdGlvbl0tPmNyZWF0ZUhUTUxEb2N1bWVudCh0aXRsZSk7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PERPTUhUTUxEb2N1bWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6
aW1wbC5nZXQoKV0pOwotfQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NSW1wbGVtZW50YXRp
b24gKERPTUltcGxlbWVudGF0aW9uQ1NTKQotCi0tIChET01DU1NTdHlsZVNoZWV0ICopY3JlYXRl
Q1NTU3R5bGVTaGVldDooTlNTdHJpbmcgKil0aXRsZSA6KE5TU3RyaW5nICopbWVkaWEKLXsKLSAg
ICBBU1NFUlQodGl0bGUpOwotICAgIEFTU0VSVChtZWRpYSk7Ci0KLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBET01DU1NTdHlsZVNoZWV0ICpyZXN1bHQgPSBbRE9NQ1NTU3R5bGVTaGVl
dCBfQ1NTU3R5bGVTaGVldFdpdGg6W3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+Y3JlYXRlQ1NT
U3R5bGVTaGVldCh0aXRsZSwgbWVkaWEsIGVjKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1AZW5kCi0gCi1AaW1wbGVtZW50YXRpb24g
RE9NSW1wbGVtZW50YXRpb24gKFdlYkNvcmVJbnRlcm5hbCkKLQotLSAoaWQpX2luaXRXaXRoRE9N
SW1wbGVtZW50YXRpb246KERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilpbXBsCi17Ci0gICAgQVNT
RVJUKGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2Fz
dDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRE
T01XcmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01JbXBs
ZW1lbnRhdGlvbiAqKV9ET01JbXBsZW1lbnRhdGlvbldpdGg6KERPTUltcGxlbWVudGF0aW9uRnJv
bnQgKilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAot
ICAgIGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBl
cihpbXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hl
ZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxm
IGFsbG9jXSBfaW5pdFdpdGhET01JbXBsZW1lbnRhdGlvbjppbXBsXSBhdXRvcmVsZWFzZV07Ci19
Ci0KLS0gKERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilfRE9NSW1wbGVtZW50YXRpb24KLXsKLSAg
ICByZXR1cm4gRE9NX2Nhc3Q8RE9NSW1wbGVtZW50YXRpb25Gcm9udCAqPihfaW50ZXJuYWwpOwot
fQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01E
b2N1bWVudEZyYWdtZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudEZyYWdtZW50Ci0K
LUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50RnJhZ21lbnQgKFdlYkNvcmVJbnRl
cm5hbCkKLQotKyAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50V2l0aDoo
RG9jdW1lbnRGcmFnbWVudCAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9j
dW1lbnRGcmFnbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwotfQotCi0tIChEb2N1
bWVudEZyYWdtZW50ICopX2ZyYWdtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3Vt
ZW50RnJhZ21lbnQgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotQGVuZAot
Ci0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NRG9jdW1lbnQKLQot
QGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50Ci0KLS0gKERPTU5vZGUgKilhZG9wdE5vZGU6KERP
TU5vZGUgKilzb3VyY2UKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2Rl
ICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+YWRvcHROb2Rl
KFtzb3VyY2UgX25vZGVdLCBlYykuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRG9jdW1lbnRUeXBlICopZG9jdHlwZQotewot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudFR5cGUgKj4oW0RPTU5vZGUgX25vZGVX
aXRoOltzZWxmIF9kb2N1bWVudF0tPmRvY3R5cGUoKV0pOwotfQotCi0tIChET01JbXBsZW1lbnRh
dGlvbiAqKWltcGxlbWVudGF0aW9uCi17Ci0gICAgcmV0dXJuIFtET01JbXBsZW1lbnRhdGlvbiBf
RE9NSW1wbGVtZW50YXRpb25XaXRoOmltcGxlbWVudGF0aW9uRnJvbnQoW3NlbGYgX2RvY3VtZW50
XSldOwotfQotCi0tIChET01FbGVtZW50ICopZG9jdW1lbnRFbGVtZW50Ci17Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1
bWVudF0tPmRvY3VtZW50RWxlbWVudCgpXSk7Ci19Ci0KLS0gKERPTUVsZW1lbnQgKiljcmVhdGVF
bGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWUKLXsKLSAgICBBU1NFUlQodGFnTmFtZSk7Ci0KLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01FbGVtZW50ICpyZXN1bHQgPSBzdGF0aWNf
Y2FzdDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5j
cmVhdGVFbGVtZW50KHRhZ05hbWUsIGVjKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWNy
ZWF0ZURvY3VtZW50RnJhZ21lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1l
bnRGcmFnbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRl
RG9jdW1lbnRGcmFnbWVudCgpLmdldCgpXSk7Ci19Ci0KLS0gKERPTVRleHQgKiljcmVhdGVUZXh0
Tm9kZTooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxET01UZXh0ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRd
LT5jcmVhdGVUZXh0Tm9kZShkYXRhKS5nZXQoKV0pOwotfQotCi0tIChET01Db21tZW50ICopY3Jl
YXRlQ29tbWVudDooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxET01Db21tZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBf
ZG9jdW1lbnRdLT5jcmVhdGVDb21tZW50KGRhdGEpLmdldCgpXSk7Ci19Ci0KLS0gKERPTUNEQVRB
U2VjdGlvbiAqKWNyZWF0ZUNEQVRBU2VjdGlvbjooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNT
RVJUKGRhdGEpOwotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTUNEQVRBU2VjdGlvbiAq
cmVzdWx0ID0gc3RhdGljX2Nhc3Q8RE9NQ0RBVEFTZWN0aW9uICo+KFtET01Ob2RlIF9ub2RlV2l0
aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDREFUQVNlY3Rpb24oZGF0YSwgZXhjZXB0aW9uKS5n
ZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLS0gKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKWNyZWF0ZVByb2Nlc3NpbmdJ
bnN0cnVjdGlvbjooTlNTdHJpbmcgKil0YXJnZXQgOihOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBB
U1NFUlQodGFyZ2V0KTsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7
Ci0gICAgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxET01Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVu
dF0tPmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbih0YXJnZXQsIGRhdGEsIGV4Y2VwdGlvbiku
Z2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi0tIChET01BdHRyICopY3JlYXRlQXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUK
LXsKLSAgICBBU1NFUlQobmFtZSk7Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0
ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUF0
dHJpYnV0ZShuYW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhj
ZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01FbnRpdHlSZWZlcmVuY2Ug
KiljcmVhdGVFbnRpdHlSZWZlcmVuY2U6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChu
YW1lKTsKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01FbnRpdHlSZWZlcmVuY2UgKnJl
c3VsdCA9IHN0YXRpY19jYXN0PERPTUVudGl0eVJlZmVyZW5jZSAqPihbRE9NTm9kZSBfbm9kZVdp
dGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRW50aXR5UmVmZXJlbmNlKG5hbWUsIGV4Y2VwdGlv
bikuZ2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lOihOU1N0
cmluZyAqKXRhZ25hbWUKLXsKLSAgICBBU1NFUlQodGFnbmFtZSk7Ci0gICAgcmV0dXJuIFtET01O
b2RlTGlzdCBfbm9kZUxpc3RXaXRoOltzZWxmIF9kb2N1bWVudF0tPmdldEVsZW1lbnRzQnlUYWdO
YW1lKHRhZ25hbWUpLmdldCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKWltcG9ydE5vZGU6KERPTU5v
ZGUgKilpbXBvcnRlZE5vZGUgOihCT09MKWRlZXAKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3Vt
ZW50XS0+aW1wb3J0Tm9kZShbaW1wb3J0ZWROb2RlIF9ub2RlXSwgZGVlcCwgZWMpLmdldCgpXTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERP
TUVsZW1lbnQgKiljcmVhdGVFbGVtZW50TlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNT
dHJpbmcgKilxdWFsaWZpZWROYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAg
QVNTRVJUKHF1YWxpZmllZE5hbWUpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
RE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNy
ZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGVjKS5nZXQoKV07Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRWxlbWVu
dCAqPihyZXN1bHQpOwotfQotCi0tIChET01BdHRyICopY3JlYXRlQXR0cmlidXRlTlM6KE5TU3Ry
aW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lCi17Ci0gICAgQVNT
RVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotCi0gICAgaW50
IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRo
OltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgcXVhbGlm
aWVkTmFtZSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlv
bik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50
c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxO
YW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7
Ci0KLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX2RvY3VtZW50
XS0+Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkuZ2V0KCld
OwotfQotCi0tIChET01FbGVtZW50ICopZ2V0RWxlbWVudEJ5SWQ6KE5TU3RyaW5nICopZWxlbWVu
dElkCi17Ci0gICAgQVNTRVJUKGVsZW1lbnRJZCk7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RE9NRWxlbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Z2V0RWxl
bWVudEJ5SWQoZWxlbWVudElkKV0pOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01E
b2N1bWVudCAoRE9NRG9jdW1lbnRSYW5nZSkKLQotLSAoRE9NUmFuZ2UgKiljcmVhdGVSYW5nZQot
ewotICAgIHJldHVybiBbRE9NUmFuZ2UgX3JhbmdlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVh
dGVSYW5nZSgpLmdldCgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1l
bnQgKERPTURvY3VtZW50Q1NTKQotCi0tIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopZ2V0T3Zl
cnJpZGVTdHlsZTooRE9NRWxlbWVudCAqKWVsdCA6KE5TU3RyaW5nICopcHNldWRvRWx0Ci17Ci0g
ICAgRWxlbWVudCAqZWxlbWVudCA9IFtlbHQgX2VsZW1lbnRdOwotICAgIFN0cmluZyBwc2V1ZG9F
bHRTdHJpbmcocHNldWRvRWx0KTsKLSAgICByZXR1cm4gW0RPTUNTU1N0eWxlRGVjbGFyYXRpb24g
X3N0eWxlRGVjbGFyYXRpb25XaXRoOltzZWxmIF9kb2N1bWVudF0tPmdldE92ZXJyaWRlU3R5bGUo
ZWxlbWVudCwgcHNldWRvRWx0U3RyaW5nLmltcGwoKSldOwotfQotCi1AZW5kCi0KLUBpbXBsZW1l
bnRhdGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRTdHlsZSkKLQotLSAoRE9NU3R5bGVTaGVl
dExpc3QgKilzdHlsZVNoZWV0cwotewotICAgIHJldHVybiBbRE9NU3R5bGVTaGVldExpc3QgX3N0
eWxlU2hlZXRMaXN0V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5zdHlsZVNoZWV0cygpXTsKLX0KLQot
QGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50RXh0ZW5zaW9u
cykKLQotLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKWNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRp
b24KLXsKLSAgICByZXR1cm4gW0RPTUNTU1N0eWxlRGVjbGFyYXRpb24gX3N0eWxlRGVjbGFyYXRp
b25XaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24oKS5nZXQo
KV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChXZWJDb3JlSW50
ZXJuYWwpCi0KLSsgKERPTURvY3VtZW50ICopX2RvY3VtZW50V2l0aDooRG9jdW1lbnQgKilpbXBs
Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURvY3VtZW50ICo+KFtET01Ob2RlIF9ub2Rl
V2l0aDppbXBsXSk7Ci19Ci0KLS0gKERvY3VtZW50ICopX2RvY3VtZW50Ci17Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PERvY3VtZW50ICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19
Ci0KLS0gKERPTUVsZW1lbnQgKilfb3duZXJFbGVtZW50Ci17Ci0gICAgcmV0dXJuIFtET01FbGVt
ZW50IF9lbGVtZW50V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5vd25lckVsZW1lbnQoKV07Ci19Ci0K
LUBlbmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUNoYXJh
Y3RlckRhdGEKLQotQGltcGxlbWVudGF0aW9uIERPTUNoYXJhY3RlckRhdGEKLQotLSAoQ2hhcmFj
dGVyRGF0YSAqKV9jaGFyYWN0ZXJEYXRhCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENoYXJh
Y3RlckRhdGEgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJp
bmcgKilkYXRhCi17Ci0gICAgLy8gRG9jdW1lbnRhdGlvbiBzYXlzIHdlIGNhbiByYWlzZSBhIERP
TVNUUklOR19TSVpFX0VSUi4KLSAgICAvLyBIb3dldmVyLCB0aGUgbG93ZXIgbGF5ZXIgZG9lcyBu
b3QgcmVwb3J0IHRoYXQgZXJyb3IgdXAgdG8gdXMuCi0gICAgcmV0dXJuIFtzZWxmIF9jaGFyYWN0
ZXJEYXRhXS0+ZGF0YSgpOwotfQotCi0tICh2b2lkKXNldERhdGE6KE5TU3RyaW5nICopZGF0YQot
ewotICAgIEFTU0VSVChkYXRhKTsKLSAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPnNldERhdGEoZGF0YSwgZWMpOwotICAgIHJhaXNlT25E
T01FcnJvcihlYyk7Ci19Ci0KLS0gKHVuc2lnbmVkKWxlbmd0aAotewotICAgIHJldHVybiBbc2Vs
ZiBfY2hhcmFjdGVyRGF0YV0tPmxlbmd0aCgpOwotfQotCi0tIChOU1N0cmluZyAqKXN1YnN0cmlu
Z0RhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKWNvdW50Ci17Ci0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgTlNTdHJpbmcgKnJlc3VsdCA9IFtzZWxmIF9jaGFyYWN0ZXJEYXRh
XS0+c3Vic3RyaW5nRGF0YShvZmZzZXQsIGNvdW50LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKWFwcGVuZERhdGE6KE5TU3Ry
aW5nICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7Ci0gICAgCi0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5hcHBlbmREYXRhKGFyZywgZWMpOwot
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpaW5zZXJ0RGF0YToodW5zaWdu
ZWQpb2Zmc2V0IDooTlNTdHJpbmcgKilhcmcKLXsKLSAgICBBU1NFUlQoYXJnKTsKLSAgICAKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPmluc2Vy
dERhdGEob2Zmc2V0LCBhcmcsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0t
ICh2b2lkKWRlbGV0ZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKSBjb3VudAotewot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+ZGVs
ZXRlRGF0YShvZmZzZXQsIGNvdW50LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0K
LQotLSAodm9pZClyZXBsYWNlRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpY291bnQg
OihOU1N0cmluZyAqKWFyZwotewotICAgIEFTU0VSVChhcmcpOwotCi0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5yZXBsYWNlRGF0YShvZmZzZXQs
IGNvdW50LCBhcmcsIGVjKTsKKyAgICBCT09MIHJlc3VsdCA9IEV2ZW50VGFyZ2V0Tm9kZUNhc3Qo
W3NlbGYgX25vZGVdKS0+ZGlzcGF0Y2hFdmVudChbZXZlbnQgX2V2ZW50XSwgZWMpOwogICAgIHJh
aXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogQGVuZAogCi0vLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NQXR0cgogCi1AaW1wbGVtZW50
YXRpb24gRE9NQXR0cgorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIERP
TU5hbWVkTm9kZU1hcAogCi0tIChOU1N0cmluZyAqKW5hbWUKLXsKLSAgICByZXR1cm4gW3NlbGYg
X2F0dHJdLT5ub2RlTmFtZSgpOwotfQorQGltcGxlbWVudGF0aW9uIERPTU5hbWVkTm9kZU1hcCAo
V2ViQ29yZUludGVybmFsKQogCi0tIChCT09MKXNwZWNpZmllZAorLSAoaWQpX2luaXRXaXRoTmFt
ZWROb2RlTWFwOihOYW1lZE5vZGVNYXAgKilpbXBsCiB7Ci0gICAgcmV0dXJuIFtzZWxmIF9hdHRy
XS0+c3BlY2lmaWVkKCk7Ci19CisgICAgQVNTRVJUKGltcGwpOwogCi0tIChOU1N0cmluZyAqKXZh
bHVlCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9hdHRyXS0+bm9kZVZhbHVlKCk7CisgICAgW3N1cGVy
IF9pbml0XTsKKyAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihp
bXBsKTsKKyAgICBpbXBsLT5yZWYoKTsKKyAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwor
ICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKXNldFZhbHVlOihOU1N0cmluZyAqKXZhbHVl
CisrIChET01OYW1lZE5vZGVNYXAgKilfbmFtZWROb2RlTWFwV2l0aDooTmFtZWROb2RlTWFwICop
aW1wbAogewotICAgIEFTU0VSVCh2YWx1ZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBbc2VsZiBfYXR0cl0tPnNldFZhbHVlKHZhbHVlLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVy
cm9yKGVjKTsKKyAgICBpZiAoIWltcGwpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAg
aWQgY2FjaGVkSW5zdGFuY2U7CisgICAgY2FjaGVkSW5zdGFuY2UgPSBnZXRET01XcmFwcGVyKGlt
cGwpOworICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKKyAgICAgICAgcmV0dXJuIFtbY2FjaGVkSW5z
dGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgCisgICAgcmV0dXJuIFtbW3NlbGYgYWxs
b2NdIF9pbml0V2l0aE5hbWVkTm9kZU1hcDppbXBsXSBhdXRvcmVsZWFzZV07CiB9CiAKLS0gKERP
TUVsZW1lbnQgKilvd25lckVsZW1lbnQKLXsKLSAgICByZXR1cm4gW0RPTUVsZW1lbnQgX2VsZW1l
bnRXaXRoOltzZWxmIF9hdHRyXS0+b3duZXJFbGVtZW50KCldOwotfQorQGVuZAogCi0tIChET01D
U1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGUKLXsKLSAgICByZXR1cm4gW0RPTUNTU1N0eWxlRGVj
bGFyYXRpb24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOiBbc2VsZiBfYXR0cl0tPnN0eWxlKCldOwot
fQogCi1AZW5kCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRE9NTm9k
ZUxpc3QKIAotQGltcGxlbWVudGF0aW9uIERPTUF0dHIgKFdlYkNvcmVJbnRlcm5hbCkKK0BpbXBs
ZW1lbnRhdGlvbiBET01Ob2RlTGlzdCAoV2ViQ29yZUludGVybmFsKQogCi0rIChET01BdHRyICop
X2F0dHJXaXRoOihBdHRyICopaW1wbAorLSAoaWQpX2luaXRXaXRoTm9kZUxpc3Q6KE5vZGVMaXN0
ICopaW1wbAogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01BdHRyICo+KFtET01Ob2RlIF9u
b2RlV2l0aDppbXBsXSk7CisgICAgQVNTRVJUKGltcGwpOworCisgICAgW3N1cGVyIF9pbml0XTsK
KyAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKKyAg
ICBpbXBsLT5yZWYoKTsKKyAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOworICAgIHJldHVy
biBzZWxmOwogfQogCi0tIChBdHRyICopX2F0dHIKKysgKERPTU5vZGVMaXN0ICopX25vZGVMaXN0
V2l0aDooTm9kZUxpc3QgKilpbXBsCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEF0dHIgKj4o
RE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKKyAgICBpZiAoIWltcGwpCisgICAgICAgIHJl
dHVybiBuaWw7CisgICAgCisgICAgaWQgY2FjaGVkSW5zdGFuY2U7CisgICAgY2FjaGVkSW5zdGFu
Y2UgPSBnZXRET01XcmFwcGVyKGltcGwpOworICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKKyAgICAg
ICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgCisg
ICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aE5vZGVMaXN0OmltcGxdIGF1dG9yZWxl
YXNlXTsKIH0KIAogQGVuZAogCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ly8gRE9NRWxlbWVudAogCi1AaW1wbGVtZW50YXRpb24gRE9NRWxlbWVudAorLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIERPTUltcGxlbWVudGF0aW9uCisgCitAaW1wbGVt
ZW50YXRpb24gRE9NSW1wbGVtZW50YXRpb24gKFdlYkNvcmVJbnRlcm5hbCkKIAotLSAoTlNTdHJp
bmcgKil0YWdOYW1lCistIChpZClfaW5pdFdpdGhET01JbXBsZW1lbnRhdGlvbjooRE9NSW1wbGVt
ZW50YXRpb25Gcm9udCAqKWltcGwKIHsKLSAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5ub2Rl
TmFtZSgpOwotfQorICAgIEFTU0VSVChpbXBsKTsKIAotLSAoRE9NTmFtZWROb2RlTWFwICopYXR0
cmlidXRlcwotewotICAgIHJldHVybiBbRE9NTmFtZWROb2RlTWFwIF9uYW1lZE5vZGVNYXBXaXRo
OltzZWxmIF9lbGVtZW50XS0+YXR0cmlidXRlcygpXTsKKyAgICBbc3VwZXIgX2luaXRdOworICAg
IF9pbnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOworICAgIGlt
cGwtPnJlZigpOworICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7CisgICAgcmV0dXJuIHNl
bGY7CiB9CiAKLS0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUKKysg
KERPTUltcGxlbWVudGF0aW9uICopX0RPTUltcGxlbWVudGF0aW9uV2l0aDooRE9NSW1wbGVtZW50
YXRpb25Gcm9udCAqKWltcGwKIHsKLSAgICBBU1NFUlQobmFtZSk7Ci0gICAgcmV0dXJuIFtzZWxm
IF9lbGVtZW50XS0+Z2V0QXR0cmlidXRlKG5hbWUpOworICAgIGlmICghaW1wbCkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICAKKyAgICBpZCBjYWNoZWRJbnN0YW5jZTsKKyAgICBjYWNoZWRJbnN0
YW5jZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7CisgICAgaWYgKGNhY2hlZEluc3RhbmNlKQorICAg
ICAgICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICAK
KyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoRE9NSW1wbGVtZW50YXRpb246aW1w
bF0gYXV0b3JlbGVhc2VdOwogfQogCi0tICh2b2lkKXNldEF0dHJpYnV0ZTooTlNTdHJpbmcgKilu
YW1lIDooTlNTdHJpbmcgKil2YWx1ZQorLSAoRE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKV9ET01J
bXBsZW1lbnRhdGlvbgogewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBBU1NFUlQodmFsdWUpOwot
Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5zZXRBdHRyaWJ1
dGUobmFtZSwgdmFsdWUsIGV4Y2VwdGlvbik7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlv
bik7CisgICAgcmV0dXJuIERPTV9jYXN0PERPTUltcGxlbWVudGF0aW9uRnJvbnQgKj4oX2ludGVy
bmFsKTsKIH0KIAotLSAodm9pZClyZW1vdmVBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZQotewot
ICAgIEFTU0VSVChuYW1lKTsKK0BlbmQKIAotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIFtz
ZWxmIF9lbGVtZW50XS0+cmVtb3ZlQXR0cmlidXRlKG5hbWUsIGV4Y2VwdGlvbik7Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci19CiAKLS0gKERPTUF0dHIgKilnZXRBdHRyaWJ1dGVO
b2RlOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7CisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRE9NRG9jdW1lbnRGcmFnbWVudAogCi0gICAgcmV0
dXJuIFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0ZU5vZGUo
bmFtZSkuZ2V0KCldOwotfQorQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50RnJhZ21lbnQgKFdl
YkNvcmVJbnRlcm5hbCkKIAotLSAoRE9NQXR0ciAqKXNldEF0dHJpYnV0ZU5vZGU6KERPTUF0dHIg
KiluZXdBdHRyCisrIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21lbnRXaXRo
OihEb2N1bWVudEZyYWdtZW50ICopaW1wbAogewotICAgIEFTU0VSVChuZXdBdHRyKTsKLQotICAg
IGludCBleGNlcHRpb24gPSAwOwotICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRy
V2l0aDpbc2VsZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZU5vZGUoW25ld0F0dHIgX2F0dHJdLCBl
eGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudEZyYWdtZW50
ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7CiB9CiAKLS0gKERPTUF0dHIgKilyZW1vdmVB
dHRyaWJ1dGVOb2RlOihET01BdHRyICopb2xkQXR0cgorLSAoRG9jdW1lbnRGcmFnbWVudCAqKV9m
cmFnbWVudAogewotICAgIEFTU0VSVChvbGRBdHRyKTsKLQotICAgIGludCBleGNlcHRpb24gPSAw
OwotICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVu
dF0tPnJlbW92ZUF0dHJpYnV0ZU5vZGUoW29sZEF0dHIgX2F0dHJdLCBleGNlcHRpb24pLmdldCgp
XTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudEZyYWdtZW50ICo+KERPTV9jYXN0PE5vZGUg
Kj4oX2ludGVybmFsKSk7CiB9CiAKLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05h
bWU6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKK0BlbmQKIAotICAgIHJl
dHVybiBbRE9NTm9kZUxpc3QgX25vZGVMaXN0V2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEVsZW1l
bnRzQnlUYWdOYW1lKG5hbWUpLmdldCgpXTsKLX0KIAotLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1
dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewot
ICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIERPTURvY3VtZW50CiAKLSAgICByZXR1
cm4gW3NlbGYgX2VsZW1lbnRdLT5nZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFt
ZSk7Ci19CisvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgYXV0by1nZW5lbmVyYXRlIGluIERPTURv
Y3VtZW50Lm1tCitAaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50RXh0ZW5z
aW9ucykKIAotLSAodm9pZClzZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkg
OihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXZhbHVlCistIChET01DU1NT
dHlsZURlY2xhcmF0aW9uICopY3JlYXRlQ1NTU3R5bGVEZWNsYXJhdGlvbgogewotICAgIEFTU0VS
VChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsKLSAgICBBU1NFUlQo
dmFsdWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5z
ZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIHZhbHVlLCBleGNlcHRp
b24pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOworICAgIHJldHVybiBbRE9NQ1NT
U3R5bGVEZWNsYXJhdGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6W3NlbGYgX2RvY3VtZW50XS0+
Y3JlYXRlQ1NTU3R5bGVEZWNsYXJhdGlvbigpLmdldCgpXTsKIH0KIAotLSAodm9pZClyZW1vdmVB
dHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFt
ZQotewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwor
QGVuZAogCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5yZW1v
dmVBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgZXhjZXB0aW9uKTsKLSAgICBy
YWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLX0KK0BpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVu
dCAoV2ViQ29yZUludGVybmFsKQogCi0tIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9kZU5TOihO
U1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCisrIChET01Eb2N1
bWVudCAqKV9kb2N1bWVudFdpdGg6KERvY3VtZW50ICopaW1wbAogewotICAgIEFTU0VSVChuYW1l
c3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtET01BdHRy
IF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0ZU5vZGVOUyhuYW1lc3BhY2VV
UkksIGxvY2FsTmFtZSkuZ2V0KCldOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVu
dCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwogfQogCi0tIChET01BdHRyICopc2V0QXR0
cmlidXRlTm9kZU5TOihET01BdHRyICopbmV3QXR0cgorLSAoRG9jdW1lbnQgKilfZG9jdW1lbnQK
IHsKLSAgICBBU1NFUlQobmV3QXR0cik7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBE
T01BdHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2VsZW1lbnRdLT5zZXRB
dHRyaWJ1dGVOb2RlTlMoW25ld0F0dHIgX2F0dHJdLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICBy
YWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxEb2N1bWVudCAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwog
fQogCi0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICop
bmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKKy0gKERPTUVsZW1lbnQgKilfb3du
ZXJFbGVtZW50CiB7Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2Fs
TmFtZSk7Ci0KLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX2Vs
ZW1lbnRdLT5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKS5n
ZXQoKV07CisgICAgcmV0dXJuIFtET01FbGVtZW50IF9lbGVtZW50V2l0aDpbc2VsZiBfZG9jdW1l
bnRdLT5vd25lckVsZW1lbnQoKV07CiB9CiAKLS0gKEJPT0wpaGFzQXR0cmlidXRlOihOU1N0cmlu
ZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7CitAZW5kCiAKLSAgICByZXR1cm4gW3NlbGYg
X2VsZW1lbnRdLT5oYXNBdHRyaWJ1dGUobmFtZSk7Ci19CiAKLS0gKEJPT0wpaGFzQXR0cmlidXRl
TlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAg
ICBBU1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQobG9jYWxOYW1lKTsKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBET01BdHRyCiAKLSAgICByZXR1cm4gW3Nl
bGYgX2VsZW1lbnRdLT5oYXNBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7Ci19
CitAaW1wbGVtZW50YXRpb24gRE9NQXR0ciAoV2ViQ29yZUludGVybmFsKQogCi0tICh2b2lkKWZv
Y3VzCisrIChET01BdHRyICopX2F0dHJXaXRoOihBdHRyICopaW1wbAogewotICAgIFtzZWxmIF9l
bGVtZW50XS0+Zm9jdXMoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NQXR0ciAqPihbRE9N
Tm9kZSBfbm9kZVdpdGg6aW1wbF0pOwogfQogCi0tICh2b2lkKWJsdXIKKy0gKEF0dHIgKilfYXR0
cgogewotICAgIFtzZWxmIF9lbGVtZW50XS0+Ymx1cigpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxBdHRyICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7CiB9CiAKIEBlbmQKIAotQGlt
cGxlbWVudGF0aW9uIERPTUVsZW1lbnQgKERPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZSkKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBET01Eb2N1bWVudFR5cGUKKworQGlt
cGxlbWVudGF0aW9uIERPTURvY3VtZW50VHlwZSAoV2ViQ29yZUludGVybmFsKQorCisrIChET01E
b2N1bWVudFR5cGUgKilfZG9jdW1lbnRUeXBlV2l0aDooV2ViQ29yZTo6RG9jdW1lbnRUeXBlICop
aW1wbDsKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnRUeXBlICo+KFtET01O
b2RlIF9ub2RlV2l0aDppbXBsXSk7Cit9CiAKLS0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilz
dHlsZQorLSAoV2ViQ29yZTo6RG9jdW1lbnRUeXBlICopX2RvY3VtZW50VHlwZTsKIHsKLSAgICBy
ZXR1cm4gW0RPTUNTU1N0eWxlRGVjbGFyYXRpb24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOltzZWxm
IF9lbGVtZW50XS0+c3R5bGUoKV07CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRv
Y3VtZW50VHlwZSAqPihET01fY2FzdDxXZWJDb3JlOjpOb2RlICo+KF9pbnRlcm5hbCkpOwogfQog
CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBET01FbGVtZW50IChET01FbGVtZW50RXh0ZW5zaW9u
cykKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBET01FbGVtZW50CisK
Ky8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBhdXRvLWdlbmVuZXJhdGUgaW4gRE9NRWxlbWVudC5t
bQorQGltcGxlbWVudGF0aW9uIERPTUVsZW1lbnQgKERPTUVsZW1lbnRBcHBLaXRFeHRlbnNpb25z
KQogCiAtIChOU0ltYWdlKilpbWFnZQogewpAQCAtMTQ4NiwxNiArNTkzLDYgQEAgc3RhdGljIENs
YXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogICAgIHJldHVybiBuaWw7CiB9CiAKLS0g
KHZvaWQpc2Nyb2xsSW50b1ZpZXc6KEJPT0wpYWxpZ25Ub3AKLXsKLSAgICBbc2VsZiBfZWxlbWVu
dF0tPnNjcm9sbEludG9WaWV3KGFsaWduVG9wKTsKLX0KLQotLSAodm9pZClzY3JvbGxJbnRvVmll
d0lmTmVlZGVkOihCT09MKWNlbnRlcklmTmVlZGVkCi17Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5z
Y3JvbGxJbnRvVmlld0lmTmVlZGVkKGNlbnRlcklmTmVlZGVkKTsKLX0KLQogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gRE9NRWxlbWVudCAoV2ViQ29yZUludGVybmFsKQpAQCAtMTU2MSwxNzMgKzY1
OCw3MiBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAKIEBlbmQK
IAorCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRE9NVGV4dAogCi1A
aW1wbGVtZW50YXRpb24gRE9NVGV4dAotCi0tIChUZXh0ICopX3RleHQKLXsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8VGV4dCAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQorQGlt
cGxlbWVudGF0aW9uIERPTVRleHQgKFdlYkNvcmVJbnRlcm5hbCkKIAotLSAoRE9NVGV4dCAqKXNw
bGl0VGV4dDoodW5zaWduZWQpb2Zmc2V0CisrIChET01UZXh0ICopX3RleHRXaXRoOihXZWJDb3Jl
OjpUZXh0ICopaW1wbAogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUg
KnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfdGV4dF0tPnNwbGl0VGV4dChvZmZz
ZXQsIGVjKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RE9NVGV4dCAqPihyZXN1bHQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01UZXh0ICo+
KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7CiB9CiAKIEBlbmQKIAotLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUNvbW1lbnQKLQotQGltcGxlbWVudGF0aW9uIERP
TUNvbW1lbnQKLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ly8gRE9NQ0RBVEFTZWN0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBET01DREFUQVNlY3Rpb24KLQot
QGVuZAogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NRG9jdW1l
bnRUeXBlCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudFR5cGUKLQotLSAoTlNTdHJpbmcg
KiluYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9kb2N1bWVudFR5cGVdLT5wdWJsaWNJZCgpOwot
fQotCi0tIChET01OYW1lZE5vZGVNYXAgKillbnRpdGllcwotewotICAgIHJldHVybiBbRE9NTmFt
ZWROb2RlTWFwIF9uYW1lZE5vZGVNYXBXaXRoOltzZWxmIF9kb2N1bWVudFR5cGVdLT5lbnRpdGll
cygpXTsKLX0KLQotLSAoRE9NTmFtZWROb2RlTWFwICopbm90YXRpb25zCi17Ci0gICAgcmV0dXJu
IFtET01OYW1lZE5vZGVNYXAgX25hbWVkTm9kZU1hcFdpdGg6W3NlbGYgX2RvY3VtZW50VHlwZV0t
Pm5vdGF0aW9ucygpXTsKLX0KLQotLSAoTlNTdHJpbmcgKilwdWJsaWNJZAotewotICAgIHJldHVy
biBbc2VsZiBfZG9jdW1lbnRUeXBlXS0+cHVibGljSWQoKTsKLX0KKy8vIERPTUNvbW1lbnQKIAot
LSAoTlNTdHJpbmcgKilzeXN0ZW1JZAotewotICAgIHJldHVybiBbc2VsZiBfZG9jdW1lbnRUeXBl
XS0+c3lzdGVtSWQoKTsKLX0KK0BpbXBsZW1lbnRhdGlvbiBET01Db21tZW50IChXZWJDb3JlSW50
ZXJuYWwpCiAKLS0gKE5TU3RyaW5nICopaW50ZXJuYWxTdWJzZXQKKysgKERPTUNvbW1lbnQgKilf
Y29tbWVudFdpdGg6KFdlYkNvcmU6OkNvbW1lbnQgKilpbXBsCiB7Ci0gICAgcmV0dXJuIFtzZWxm
IF9kb2N1bWVudFR5cGVdLT5pbnRlcm5hbFN1YnNldCgpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxET01Db21tZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7CiB9CiAKIEBlbmQKIAot
QGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50VHlwZSAoV2ViQ29yZUludGVybmFsKQotCi0tIChE
b2N1bWVudFR5cGUgKilfZG9jdW1lbnRUeXBlCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERv
Y3VtZW50VHlwZSAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCiAK
IC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Ob3RhdGlvbgotCi1A
aW1wbGVtZW50YXRpb24gRE9NTm90YXRpb24KLQotLSAoTm90YXRpb24gKilfbm90YXRpb24KLXsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Tm90YXRpb24gKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50
ZXJuYWwpKTsKLX0KKy8vIERPTUNEQVRBU2VjdGlvbgogCi0tIChOU1N0cmluZyAqKXB1YmxpY0lk
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub3RhdGlvbl0tPnB1YmxpY0lkKCk7Ci19CitAaW1wbGVt
ZW50YXRpb24gRE9NQ0RBVEFTZWN0aW9uIChXZWJDb3JlSW50ZXJuYWwpCiAKLS0gKE5TU3RyaW5n
ICopc3lzdGVtSWQKKysgKERPTUNEQVRBU2VjdGlvbiAqKV9DREFUQVNlY3Rpb25XaXRoOihXZWJD
b3JlOjpDREFUQVNlY3Rpb24gKilpbXBsOwogewotICAgIHJldHVybiBbc2VsZiBfbm90YXRpb25d
LT5zeXN0ZW1JZCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01DREFUQVNlY3Rpb24gKj4o
W0RPTU5vZGUgX25vZGVXaXRoOmltcGxdKTsKIH0KIAogQGVuZAogCi0vLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NRW50aXR5Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01F
bnRpdHkKLQotLSAoRW50aXR5ICopX2VudGl0eQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxF
bnRpdHkgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KIAotLSAoTlNTdHJpbmcg
KilwdWJsaWNJZAotewotICAgIHJldHVybiBbc2VsZiBfZW50aXR5XS0+cHVibGljSWQoKTsKLX0K
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBET01Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24KIAotLSAoTlNTdHJpbmcgKilzeXN0ZW1JZAotewotICAgIHJldHVybiBbc2VsZiBf
ZW50aXR5XS0+c3lzdGVtSWQoKTsKLX0KK0BpbXBsZW1lbnRhdGlvbiBET01Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24gKFdlYkNvcmVJbnRlcm5hbCkKIAotLSAoTlNTdHJpbmcgKilub3RhdGlvbk5hbWUK
KysgKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKV9wcm9jZXNzaW5nSW5zdHJ1Y3Rpb25XaXRo
OihXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKilpbXBsOwogewotICAgIHJldHVybiBb
c2VsZiBfZW50aXR5XS0+bm90YXRpb25OYW1lKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERP
TVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwogfQog
CiBAZW5kCiAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01FbnRp
dHlSZWZlcmVuY2UKLQotQGltcGxlbWVudGF0aW9uIERPTUVudGl0eVJlZmVyZW5jZQotCi1AZW5k
CiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBET01Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24KIAotQGltcGxlbWVudGF0aW9uIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbgot
Ci0tIChQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKilfcHJvY2Vzc2luZ0luc3RydWN0aW9uCi17Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqPihET01fY2FzdDxO
b2RlICo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChOU1N0cmluZyAqKXRhcmdldAotewotICAgIHJl
dHVybiBbc2VsZiBfcHJvY2Vzc2luZ0luc3RydWN0aW9uXS0+dGFyZ2V0KCk7Ci19Ci0KLS0gKE5T
U3RyaW5nICopZGF0YQotewotICAgIHJldHVybiBbc2VsZiBfcHJvY2Vzc2luZ0luc3RydWN0aW9u
XS0+ZGF0YSgpOwotfQorQGltcGxlbWVudGF0aW9uIERPTUVudGl0eVJlZmVyZW5jZSAoV2ViQ29y
ZUludGVybmFsKQogCi0tICh2b2lkKXNldERhdGE6KE5TU3RyaW5nICopZGF0YQorKyAoRE9NRW50
aXR5UmVmZXJlbmNlICopX2VudGl0eVJlZmVyZW5jZVdpdGg6KFdlYkNvcmU6OkVudGl0eVJlZmVy
ZW5jZSAqKWltcGw7CiB7Ci0gICAgQVNTRVJUKGRhdGEpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgW3NlbGYgX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbl0tPnNldERhdGEoZGF0YSwg
ZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERP
TUVudGl0eVJlZmVyZW5jZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwogfQogCiBAZW5k
CiAKKwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTVJhbmdlCiAK
QEAgLTE5ODYsOSArOTgyLDkgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9t
aWNTdAogCiBAZW5kCiAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBET01Ob2RlRmlsdGVyCiAKIEBp
bXBsZW1lbnRhdGlvbiBET01Ob2RlRmlsdGVyCiAKQEAgLTIwNDMsNiArMTAzOSw5IEBAIHN0YXRp
YyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIEBlbmQKIAogCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRE9NTm9kZUl0ZXJhdG9yCisKIEBpbXBsZW1l
bnRhdGlvbiBET01Ob2RlSXRlcmF0b3IKIAogLSAoaWQpX2luaXRXaXRoTm9kZUl0ZXJhdG9yOihO
b2RlSXRlcmF0b3IgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgpAQCAt
MjE0Niw2ICsxMTQ1LDEwIEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWlj
U3QKIAogQGVuZAogCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBE
T01UcmVlV2Fsa2VyCisKIEBpbXBsZW1lbnRhdGlvbiBET01UcmVlV2Fsa2VyCiAKIC0gKGlkKV9p
bml0V2l0aFRyZWVXYWxrZXI6KFRyZWVXYWxrZXIgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVG
aWx0ZXI+KWZpbHRlcgpAQCAtMjI3NCw3ICsxMjc3LDExIEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50
Q2xhc3MoY29uc3QgQXRvbWljU3QKIAogQGVuZAogCi1jbGFzcyBPYmpDTm9kZUZpbHRlckNvbmRp
dGlvbiA6IHB1YmxpYyBOb2RlRmlsdGVyQ29uZGl0aW9uIAorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8gT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24KKworY2xhc3MgT2Jq
Q05vZGVGaWx0ZXJDb25kaXRpb24gOiBwdWJsaWMgTm9kZUZpbHRlckNvbmRpdGlvbgogewogcHVi
bGljOgogICAgIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKGlkIDxET01Ob2RlRmlsdGVyPik7CkBA
IC0yMzA3LDYgKzEzMTQsMTEgQEAgc2hvcnQgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb246OmFjY2Vw
dE5vZAogICAgIHJldHVybiBbbV9maWx0ZXIgYWNjZXB0Tm9kZTpbRE9NTm9kZSBfbm9kZVdpdGg6
bm9kZV1dOwogfQogCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBE
T01Eb2N1bWVudCAoRE9NRG9jdW1lbnRUcmF2ZXJzYWwpCisKKy8vIEZJWE1FOiB0aGlzIHNob3Vs
ZCBiZSBhdXRvLWdlbmVuZXJhdGUgaW4gRE9NRG9jdW1lbnQubW0KIEBpbXBsZW1lbnRhdGlvbiBE
T01Eb2N1bWVudCAoRE9NRG9jdW1lbnRUcmF2ZXJzYWwpCiAKIC0gKERPTU5vZGVJdGVyYXRvciAq
KWNyZWF0ZU5vZGVJdGVyYXRvcjooRE9NTm9kZSAqKXJvb3QgOih1bnNpZ25lZCl3aGF0VG9TaG93
IDooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlciA6KEJPT0wpZXhwYW5kRW50aXR5UmVmZXJlbmNl
cwpAQCAtMjMzMyw2ICsxMzQ1LDEwIEBAIHNob3J0IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uOjph
Y2NlcHROb2QKIAogQGVuZAogCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLyBPYmpDRXZlbnRMaXN0ZW5lcgorCiBPYmpDRXZlbnRMaXN0ZW5lciogT2JqQ0V2ZW50TGlz
dGVuZXI6OmZpbmQoaWQgPERPTUV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKQogewogICAgIGlmIChM
aXN0ZW5lck1hcCogbWFwID0gbGlzdGVuZXJNYXApCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NQ1NTLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTUy5o
CShyZXZpc2lvbiAxNTk5NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DU1MuaAkod29y
a2luZyBjb3B5KQpAQCAtMjMsNiArMjMsMTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKKyNp
bXBvcnQgPFdlYkNvcmUvRE9NQ29yZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01ET01JbXBsZW1l
bnRhdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9ET01FbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9ET01TdHlsZXNoZWV0cy5oPgogCiBAY2xhc3MgRE9NQ291bnRlcjsKQEAgLTMz
LDYgKzM4LDEwIEBACiBAY2xhc3MgRE9NUmVjdDsKIEBjbGFzcyBET01SR0JDb2xvcjsKIAorQGlu
dGVyZmFjZSBET01Eb2N1bWVudCAoRE9NVmlld0NTUykKKy0gKERPTUNTU1N0eWxlRGVjbGFyYXRp
b24gKilnZXRDb21wdXRlZFN0eWxlOihET01FbGVtZW50ICopZWx0IDooTlNTdHJpbmcgKilwc2V1
ZG9FbHQ7CitAZW5kCisKIEBpbnRlcmZhY2UgRE9NQ1NTUnVsZUxpc3QgOiBET01PYmplY3QKIC0g
KHVuc2lnbmVkKWxlbmd0aDsKIC0gKERPTUNTU1J1bGUgKilpdGVtOih1bnNpZ25lZClpbmRleDsK
QEAgLTE4NSwxMCArMTk0LDYgQEAgZW51bSB7CiAtIChOU1N0cmluZyAqKXNlcGFyYXRvcjsKIEBl
bmQKIAotQGludGVyZmFjZSBET01FbGVtZW50IChET01FbGVtZW50Q1NTSW5saW5lU3R5bGUpCi0t
IChET01DU1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGU7Ci1AZW5kCi0KIEBpbnRlcmZhY2UgRE9N
Q1NTU3R5bGVEZWNsYXJhdGlvbiAoRE9NQ1NTMlByb3BlcnRpZXMpCiAtIChOU1N0cmluZyAqKWF6
aW11dGg7CiAtICh2b2lkKXNldEF6aW11dGg6KE5TU3RyaW5nICopYXppbXV0aDsKQEAgLTQ0Miwx
NSArNDQ3LDMgQEAgZW51bSB7CiAtICh1bnNpZ25lZClpbnNlcnRSdWxlOihOU1N0cmluZyAqKXJ1
bGUgOih1bnNpZ25lZClpbmRleDsKIC0gKHZvaWQpZGVsZXRlUnVsZToodW5zaWduZWQpaW5kZXg7
CiBAZW5kCi0KLUBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgKERPTVZpZXdDU1MpCi0tIChET01DU1NT
dHlsZURlY2xhcmF0aW9uICopZ2V0Q29tcHV0ZWRTdHlsZTooRE9NRWxlbWVudCAqKWVsdCA6KE5T
U3RyaW5nICopcHNldWRvRWx0OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTURvY3VtZW50IChET01E
b2N1bWVudENTUykKLS0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilnZXRPdmVycmlkZVN0eWxl
OihET01FbGVtZW50ICopZWx0IDooTlNTdHJpbmcgKilwc2V1ZG9FbHQ7Ci1AZW5kCi0KLUBpbnRl
cmZhY2UgRE9NSW1wbGVtZW50YXRpb24gKERPTUltcGxlbWVudGF0aW9uQ1NTKQotLSAoRE9NQ1NT
U3R5bGVTaGVldCAqKWNyZWF0ZUNTU1N0eWxlU2hlZXQ6KE5TU3RyaW5nICopdGl0bGUgOihOU1N0
cmluZyAqKW1lZGlhOwotQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTUy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLm1tCShyZXZpc2lv
biAxNTk5NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DU1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI0ODMsMjYgKzI0ODMsNiBAQCB2b2lkIHJlbW92ZVdyYXBwZXJGb3JSR0IoUkdCQTMy
IHZhbHVlKQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1AaW1wbGVt
ZW50YXRpb24gRE9NT2JqZWN0IChET01MaW5rU3R5bGUpCi0KLS0gKERPTVN0eWxlU2hlZXQgKilz
aGVldAotewotICAgIFN0eWxlU2hlZXQgKnNoZWV0OwotCi0gICAgaWYgKFtzZWxmIGlzS2luZE9m
Q2xhc3M6W0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiBjbGFzc11dKQotICAgICAgICBzaGVldCA9
IHN0YXRpY19jYXN0PFByb2Nlc3NpbmdJbnN0cnVjdGlvbio+KFsoRE9NUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uICopc2VsZiBfbm9kZV0pLT5zaGVldCgpOwotICAgIGVsc2UgaWYgKFtzZWxmIGlzS2lu
ZE9mQ2xhc3M6W0RPTUhUTUxMaW5rRWxlbWVudCBjbGFzc11dKQotICAgICAgICBzaGVldCA9IHN0
YXRpY19jYXN0PEhUTUxMaW5rRWxlbWVudCo+KFsoRE9NSFRNTExpbmtFbGVtZW50ICopc2VsZiBf
bm9kZV0pLT5zaGVldCgpOwotICAgIGVsc2UgaWYgKFtzZWxmIGlzS2luZE9mQ2xhc3M6W0RPTUhU
TUxTdHlsZUVsZW1lbnQgY2xhc3NdXSkKLSAgICAgICAgc2hlZXQgPSBzdGF0aWNfY2FzdDxIVE1M
U3R5bGVFbGVtZW50Kj4oWyhET01IVE1MU3R5bGVFbGVtZW50ICopc2VsZiBfbm9kZV0pLT5zaGVl
dCgpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBbRE9NU3R5
bGVTaGVldCBfRE9NU3R5bGVTaGVldFdpdGg6c2hlZXRdOwotfQotCi1AZW5kCi0KIEBpbXBsZW1l
bnRhdGlvbiBET01Eb2N1bWVudCAoRE9NVmlld0NTUykKIAogLSAoRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiAqKWdldENvbXB1dGVkU3R5bGU6KERPTUVsZW1lbnQgKillbHQgOihOU1N0cmluZyAqKXBz
ZXVkb0VsdApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNvcmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ29yZS5oCShyZXZpc2lvbiAxNTk5NykKKysr
IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Db3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBX
ZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yMywyMTggKzI0LDIxIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW1wb3J0
IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdC5oPgotCi1AY2xhc3MgRE9NRG9jdW1lbnQ7IAotQGNs
YXNzIERPTURvY3VtZW50VHlwZTsKLUBjbGFzcyBET01FbGVtZW50OwotQGNsYXNzIERPTU5hbWVk
Tm9kZU1hcDsKLUBjbGFzcyBET01Ob2RlTGlzdDsKLQotdHlwZWRlZiBzdHJ1Y3QgRE9NT2JqZWN0
SW50ZXJuYWwgRE9NT2JqZWN0SW50ZXJuYWw7Ci0KLUBpbnRlcmZhY2UgRE9NT2JqZWN0IDogV2Vi
U2NyaXB0T2JqZWN0IDxOU0NvcHlpbmc+Ci17Ci0gICAgRE9NT2JqZWN0SW50ZXJuYWwgKl9pbnRl
cm5hbDsKLX0KLUBlbmQKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgRE9NVGltZVN0YW1w
OwotCi1leHRlcm4gTlNTdHJpbmcgKiBjb25zdCBET01FeGNlcHRpb247Ci0KLWVudW0gewotICAg
IC8vCi0gICAgLy8gRE9NIGV4Y2VwdGlvbiBjb2RlcwotICAgIC8vCi0gICAgRE9NX0lOREVYX1NJ
WkVfRVJSICAgICAgICAgICAgICAgID0gMSwKLSAgICBET01fRE9NU1RSSU5HX1NJWkVfRVJSICAg
ICAgICAgICAgPSAyLAotICAgIERPTV9ISUVSQVJDSFlfUkVRVUVTVF9FUlIgICAgICAgICA9IDMs
Ci0gICAgRE9NX1dST05HX0RPQ1VNRU5UX0VSUiAgICAgICAgICAgID0gNCwKLSAgICBET01fSU5W
QUxJRF9DSEFSQUNURVJfRVJSICAgICAgICAgPSA1LAotICAgIERPTV9OT19EQVRBX0FMTE9XRURf
RVJSICAgICAgICAgICA9IDYsCi0gICAgRE9NX05PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiAg
ID0gNywKLSAgICBET01fTk9UX0ZPVU5EX0VSUiAgICAgICAgICAgICAgICAgPSA4LAotICAgIERP
TV9OT1RfU1VQUE9SVEVEX0VSUiAgICAgICAgICAgICA9IDksCi0gICAgRE9NX0lOVVNFX0FUVFJJ
QlVURV9FUlIgICAgICAgICAgID0gMTAsCi0gICAgRE9NX0lOVkFMSURfU1RBVEVfRVJSICAgICAg
ICAgICAgID0gMTEsCi0gICAgRE9NX1NZTlRBWF9FUlIgICAgICAgICAgICAgICAgICAgID0gMTIs
Ci0gICAgRE9NX0lOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiAgICAgID0gMTMsCi0gICAgRE9NX05B
TUVTUEFDRV9FUlIgICAgICAgICAgICAgICAgID0gMTQsCi0gICAgRE9NX0lOVkFMSURfQUNDRVNT
X0VSUiAgICAgICAgICAgID0gMTUKLX07Ci0KLUBpbnRlcmZhY2UgRE9NSW1wbGVtZW50YXRpb24g
OiBET01PYmplY3QKLS0gKEJPT0wpaGFzRmVhdHVyZTooTlNTdHJpbmcgKilmZWF0dXJlIDooTlNT
dHJpbmcgKil2ZXJzaW9uOwotLSAoRE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBl
OihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXB1YmxpY0lkIDooTlNTdHJp
bmcgKilzeXN0ZW1JZDsKLS0gKERPTURvY3VtZW50ICopY3JlYXRlRG9jdW1lbnQ6KE5TU3RyaW5n
ICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooRE9NRG9jdW1lbnRU
eXBlICopZG9jdHlwZTsKLUBlbmQKLQotZW51bSB7Ci0gICAgLy8KLSAgICAvLyBET00gbm9kZSB0
eXBlcwotICAgIC8vCi0gICAgRE9NX0VMRU1FTlRfTk9ERSAgICAgICAgICAgICAgICAgID0gMSwK
LSAgICBET01fQVRUUklCVVRFX05PREUgICAgICAgICAgICAgICAgPSAyLAotICAgIERPTV9URVhU
X05PREUgICAgICAgICAgICAgICAgICAgICA9IDMsCi0gICAgRE9NX0NEQVRBX1NFQ1RJT05fTk9E
RSAgICAgICAgICAgID0gNCwKLSAgICBET01fRU5USVRZX1JFRkVSRU5DRV9OT0RFICAgICAgICAg
PSA1LAotICAgIERPTV9FTlRJVFlfTk9ERSAgICAgICAgICAgICAgICAgICA9IDYsCi0gICAgRE9N
X1BST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSAgID0gNywKLSAgICBET01fQ09NTUVOVF9OT0RF
ICAgICAgICAgICAgICAgICAgPSA4LAotICAgIERPTV9ET0NVTUVOVF9OT0RFICAgICAgICAgICAg
ICAgICA9IDksCi0gICAgRE9NX0RPQ1VNRU5UX1RZUEVfTk9ERSAgICAgICAgICAgID0gMTAsCi0g
ICAgRE9NX0RPQ1VNRU5UX0ZSQUdNRU5UX05PREUgICAgICAgID0gMTEsCi0gICAgRE9NX05PVEFU
SU9OX05PREUgICAgICAgICAgICAgICAgID0gMTIKLX07Ci0KLUBpbnRlcmZhY2UgRE9NTm9kZSA6
IERPTU9iamVjdAotLSAoTlNTdHJpbmcgKilub2RlTmFtZTsKLS0gKE5TU3RyaW5nICopbm9kZVZh
bHVlOwotLSAodm9pZClzZXROb2RlVmFsdWU6KE5TU3RyaW5nICopc3RyaW5nOwotLSAodW5zaWdu
ZWQgc2hvcnQpbm9kZVR5cGU7Ci0tIChET01Ob2RlICopcGFyZW50Tm9kZTsKLS0gKERPTU5vZGVM
aXN0ICopY2hpbGROb2RlczsKLS0gKERPTU5vZGUgKilmaXJzdENoaWxkOwotLSAoRE9NTm9kZSAq
KWxhc3RDaGlsZDsKLS0gKERPTU5vZGUgKilwcmV2aW91c1NpYmxpbmc7Ci0tIChET01Ob2RlICop
bmV4dFNpYmxpbmc7Ci0tIChET01OYW1lZE5vZGVNYXAgKilhdHRyaWJ1dGVzOwotLSAoRE9NRG9j
dW1lbnQgKilvd25lckRvY3VtZW50OwotLSAoRE9NTm9kZSAqKWluc2VydEJlZm9yZTooRE9NTm9k
ZSAqKW5ld0NoaWxkIDooRE9NTm9kZSAqKXJlZkNoaWxkOwotLSAoRE9NTm9kZSAqKXJlcGxhY2VD
aGlsZDooRE9NTm9kZSAqKW5ld0NoaWxkIDooRE9NTm9kZSAqKW9sZENoaWxkOwotLSAoRE9NTm9k
ZSAqKXJlbW92ZUNoaWxkOihET01Ob2RlICopb2xkQ2hpbGQ7Ci0tIChET01Ob2RlICopYXBwZW5k
Q2hpbGQ6KERPTU5vZGUgKiluZXdDaGlsZDsKLS0gKEJPT0wpaGFzQ2hpbGROb2RlczsKLS0gKERP
TU5vZGUgKiljbG9uZU5vZGU6KEJPT0wpZGVlcDsKLS0gKHZvaWQpbm9ybWFsaXplOwotLSAoQk9P
TClpc1N1cHBvcnRlZDooTlNTdHJpbmcgKilmZWF0dXJlIDooTlNTdHJpbmcgKil2ZXJzaW9uOwot
LSAoTlNTdHJpbmcgKiluYW1lc3BhY2VVUkk7Ci0tIChOU1N0cmluZyAqKXByZWZpeDsKLS0gKHZv
aWQpc2V0UHJlZml4OihOU1N0cmluZyAqKXByZWZpeDsKLS0gKE5TU3RyaW5nICopbG9jYWxOYW1l
OwotLSAoQk9PTCloYXNBdHRyaWJ1dGVzOwotLSAoQk9PTClpc1NhbWVOb2RlOihET01Ob2RlICop
b3RoZXI7Ci0tIChCT09MKWlzRXF1YWxOb2RlOihET01Ob2RlICopb3RoZXI7Ci0tIChOU1N0cmlu
ZyAqKXRleHRDb250ZW50OwotLSAodm9pZClzZXRUZXh0Q29udGVudDooTlNTdHJpbmcgKil0ZXh0
OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTU5vZGVMaXN0IDogRE9NT2JqZWN0Ci0tIChET01Ob2Rl
ICopaXRlbToodW5zaWduZWQpaW5kZXg7Ci0tICh1bnNpZ25lZClsZW5ndGg7Ci1AZW5kCi0KLUBp
bnRlcmZhY2UgRE9NTmFtZWROb2RlTWFwIDogRE9NT2JqZWN0Ci0tIChET01Ob2RlICopZ2V0TmFt
ZWRJdGVtOihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01Ob2RlICopc2V0TmFtZWRJdGVtOihET01O
b2RlICopYXJnOwotLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1l
OwotLSAoRE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4OwotLSAodW5zaWduZWQpbGVuZ3Ro
OwotLSAoRE9NTm9kZSAqKWdldE5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6
KE5TU3RyaW5nICopbG9jYWxOYW1lOwotLSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbU5TOihET01O
b2RlICopYXJnOwotLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5h
bWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotQGVuZAotCi1AaW50ZXJmYWNlIERP
TUNoYXJhY3RlckRhdGEgOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKWRhdGE7Ci0tICh2b2lkKXNl
dERhdGE6KE5TU3RyaW5nICopZGF0YTsKLS0gKHVuc2lnbmVkKWxlbmd0aDsKLS0gKE5TU3RyaW5n
ICopc3Vic3RyaW5nRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpY291bnQ7Ci0tICh2
b2lkKWFwcGVuZERhdGE6KE5TU3RyaW5nICopYXJnOwotLSAodm9pZClpbnNlcnREYXRhOih1bnNp
Z25lZClvZmZzZXQgOihOU1N0cmluZyAqKWFyZzsKLS0gKHZvaWQpZGVsZXRlRGF0YToodW5zaWdu
ZWQpb2Zmc2V0IDoodW5zaWduZWQpIGNvdW50OwotLSAodm9pZClyZXBsYWNlRGF0YToodW5zaWdu
ZWQpb2Zmc2V0IDoodW5zaWduZWQpY291bnQgOihOU1N0cmluZyAqKWFyZzsKLUBlbmQKLQotQGlu
dGVyZmFjZSBET01BdHRyIDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKiluYW1lOwotLSAoQk9PTClz
cGVjaWZpZWQ7Ci0tIChOU1N0cmluZyAqKXZhbHVlOwotLSAodm9pZClzZXRWYWx1ZTooTlNTdHJp
bmcgKil2YWx1ZTsKLS0gKERPTUVsZW1lbnQgKilvd25lckVsZW1lbnQ7Ci1AZW5kCi0KLUBpbnRl
cmZhY2UgRE9NRWxlbWVudCA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopdGFnTmFtZTsKLS0gKE5T
U3RyaW5nICopZ2V0QXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWU7Ci0tICh2b2lkKXNldEF0dHJp
YnV0ZTooTlNTdHJpbmcgKiluYW1lIDooTlNTdHJpbmcgKil2YWx1ZTsKLS0gKHZvaWQpcmVtb3Zl
QXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9k
ZTooTlNTdHJpbmcgKiluYW1lOwotLSAoRE9NQXR0ciAqKXNldEF0dHJpYnV0ZU5vZGU6KERPTUF0
dHIgKiluZXdBdHRyOwotLSAoRE9NQXR0ciAqKXJlbW92ZUF0dHJpYnV0ZU5vZGU6KERPTUF0dHIg
KilvbGRBdHRyOwotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZTooTlNTdHJp
bmcgKiluYW1lOwotLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1l
c3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKHZvaWQpc2V0QXR0cmlidXRlTlM6
KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNT
dHJpbmcgKil2YWx1ZTsKLS0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFt
ZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tIChET01BdHRyICopZ2V0QXR0cmli
dXRlTm9kZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1l
OwotLSAoRE9NQXR0ciAqKXNldEF0dHJpYnV0ZU5vZGVOUzooRE9NQXR0ciAqKW5ld0F0dHI7Ci0t
IChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNw
YWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tIChCT09MKWhhc0F0dHJpYnV0ZTooTlNT
dHJpbmcgKiluYW1lOwotLSAoQk9PTCloYXNBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3Bh
Y2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKHZvaWQpZm9jdXM7Ci0tICh2b2lkKWJs
dXI7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NVGV4dCA6IERPTUNoYXJhY3RlckRhdGEKLS0gKERP
TVRleHQgKilzcGxpdFRleHQ6KHVuc2lnbmVkKW9mZnNldDsKLUBlbmQKLQotQGludGVyZmFjZSBE
T01Db21tZW50IDogRE9NQ2hhcmFjdGVyRGF0YQotQGVuZAotCi1AaW50ZXJmYWNlIERPTUNEQVRB
U2VjdGlvbiA6IERPTVRleHQKLUBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudFR5cGUgOiBE
T01Ob2RlCi0tIChOU1N0cmluZyAqKW5hbWU7Ci0tIChET01OYW1lZE5vZGVNYXAgKillbnRpdGll
czsKLS0gKERPTU5hbWVkTm9kZU1hcCAqKW5vdGF0aW9uczsKLS0gKE5TU3RyaW5nICopcHVibGlj
SWQ7Ci0tIChOU1N0cmluZyAqKXN5c3RlbUlkOwotLSAoTlNTdHJpbmcgKilpbnRlcm5hbFN1YnNl
dDsKLUBlbmQKLQotQGludGVyZmFjZSBET01Ob3RhdGlvbiA6IERPTU5vZGUKLS0gKE5TU3RyaW5n
ICopcHVibGljSWQ7Ci0tIChOU1N0cmluZyAqKXN5c3RlbUlkOwotQGVuZAotCi1AaW50ZXJmYWNl
IERPTUVudGl0eSA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopcHVibGljSWQ7Ci0tIChOU1N0cmlu
ZyAqKXN5c3RlbUlkOwotLSAoTlNTdHJpbmcgKilub3RhdGlvbk5hbWU7Ci1AZW5kCi0KLUBpbnRl
cmZhY2UgRE9NRW50aXR5UmVmZXJlbmNlIDogRE9NTm9kZQotQGVuZAotCi1AaW50ZXJmYWNlIERP
TVByb2Nlc3NpbmdJbnN0cnVjdGlvbiA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopdGFyZ2V0Owot
LSAoTlNTdHJpbmcgKilkYXRhOwotLSAodm9pZClzZXREYXRhOihOU1N0cmluZyAqKWRhdGE7Ci1A
ZW5kCi0KLUBpbnRlcmZhY2UgRE9NRG9jdW1lbnRGcmFnbWVudCA6IERPTU5vZGUKLUBlbmQKLQot
QGludGVyZmFjZSBET01Eb2N1bWVudCA6IERPTU5vZGUKLS0gKERPTURvY3VtZW50VHlwZSAqKWRv
Y3R5cGU7Ci0tIChET01JbXBsZW1lbnRhdGlvbiAqKWltcGxlbWVudGF0aW9uOwotLSAoRE9NRWxl
bWVudCAqKWRvY3VtZW50RWxlbWVudDsKLS0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50OihO
U1N0cmluZyAqKXRhZ05hbWU7Ci0tIChET01Eb2N1bWVudEZyYWdtZW50ICopY3JlYXRlRG9jdW1l
bnRGcmFnbWVudDsKLS0gKERPTVRleHQgKiljcmVhdGVUZXh0Tm9kZTooTlNTdHJpbmcgKilkYXRh
OwotLSAoRE9NQ29tbWVudCAqKWNyZWF0ZUNvbW1lbnQ6KE5TU3RyaW5nICopZGF0YTsKLS0gKERP
TUNEQVRBU2VjdGlvbiAqKWNyZWF0ZUNEQVRBU2VjdGlvbjooTlNTdHJpbmcgKilkYXRhOwotLSAo
RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICopY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uOihO
U1N0cmluZyAqKXRhcmdldCA6KE5TU3RyaW5nICopZGF0YTsKLS0gKERPTUF0dHIgKiljcmVhdGVB
dHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTUVudGl0eVJlZmVyZW5jZSAqKWNyZWF0
ZUVudGl0eVJlZmVyZW5jZTooTlNTdHJpbmcgKiluYW1lOwotLSAoRE9NTm9kZUxpc3QgKilnZXRF
bGVtZW50c0J5VGFnTmFtZTooTlNTdHJpbmcgKil0YWduYW1lOwotLSAoRE9NTm9kZSAqKWltcG9y
dE5vZGU6KERPTU5vZGUgKilpbXBvcnRlZE5vZGUgOihCT09MKWRlZXA7Ci0tIChET01FbGVtZW50
ICopY3JlYXRlRWxlbWVudE5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICop
cXVhbGlmaWVkTmFtZTsKLS0gKERPTUF0dHIgKiljcmVhdGVBdHRyaWJ1dGVOUzooTlNTdHJpbmcg
KiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWU7Ci0tIChET01Ob2RlTGlz
dCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNT
dHJpbmcgKilsb2NhbE5hbWU7Ci0tIChET01FbGVtZW50ICopZ2V0RWxlbWVudEJ5SWQ6KE5TU3Ry
aW5nICopZWxlbWVudElkOwotLSAoRE9NTm9kZSAqKWFkb3B0Tm9kZTooRE9NTm9kZSAqKXNvdXJj
ZTsKLUBlbmQKKyNpbXBvcnQgPFdlYkNvcmUvRE9NQXR0ci5oPgorI2ltcG9ydCA8V2ViQ29yZS9E
T01DREFUQVNlY3Rpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NQ2hhcmFjdGVyRGF0YS5oPgor
I2ltcG9ydCA8V2ViQ29yZS9ET01Db21tZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTURPTUlt
cGxlbWVudGF0aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTURvY3VtZW50Lmg+CisjaW1wb3J0
IDxXZWJDb3JlL0RPTURvY3VtZW50RnJhZ21lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRG9j
dW1lbnRUeXBlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvRE9NRW50aXR5Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUVudGl0eVJlZmVyZW5jZS5o
PgorI2ltcG9ydCA8V2ViQ29yZS9ET01OYW1lZE5vZGVNYXAuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
RE9NTm9kZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Ob2RlTGlzdC5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9ET01Ob3RhdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0RPTVRleHQuaD4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FdmVudHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZlbnRzLmgJKHJldmlzaW9uIDE1
OTk3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsNiArMjQsOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAor
I2ltcG9ydCA8V2ViQ29yZS9ET01Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Ob2Rl
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01W
aWV3cy5oPgogCiBAY2xhc3MgRE9NRXZlbnQ7CkBAIC02NSwxMCArNjksNiBAQCBlbnVtIHsKIC0g
KHZvaWQpaW5pdEV2ZW50OihOU1N0cmluZyAqKWV2ZW50VHlwZUFyZyA6KEJPT0wpY2FuQnViYmxl
QXJnIDooQk9PTCljYW5jZWxhYmxlQXJnOwogQGVuZAogCi1AaW50ZXJmYWNlIERPTURvY3VtZW50
IChET01Eb2N1bWVudEV2ZW50KQotLSAoRE9NRXZlbnQgKiljcmVhdGVFdmVudDooTlNTdHJpbmcg
KilldmVudFR5cGU7Ci1AZW5kCi0KIEBpbnRlcmZhY2UgRE9NVUlFdmVudCA6IERPTUV2ZW50CiAt
IChET01BYnN0cmFjdFZpZXcgKil2aWV3OwogLSAoaW50KWRldGFpbDsKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01FdmVudHMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTUV2ZW50cy5tbQkocmV2aXNpb24gMTU5OTcpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NRXZlbnRzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgsMTUgKzM3OCwzIEBAIEFM
TE9XX0RPTV9DQVNUKEV2ZW50KQogfQogCiBAZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1
bWVudCAoRE9NRG9jdW1lbnRFdmVudCkKLQotLSAoRE9NRXZlbnQgKiljcmVhdGVFdmVudDooTlNT
dHJpbmcgKilldmVudFR5cGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQ
dHI8RXZlbnQ+IGV2ZW50ID0gW3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRXZlbnQoZXZlbnRUeXBl
LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gW0RPTUV2ZW50IF9l
dmVudFdpdGg6ZXZlbnQuZ2V0KCldOwotfQotCi1AZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NRXh0ZW5zaW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01FeHRlbnNpb25zLmgJKHJldmlzaW9uIDE1OTk3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUV4dGVuc2lvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndl
aW5pZ0BnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIy
ICsyNCwyOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2ltcG9ydCA8V2ViQ29yZS9ET01B
dHRyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUNTUy5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01E
T01JbXBsZW1lbnRhdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Eb2N1bWVudC5oPgorI2lt
cG9ydCA8V2ViQ29yZS9ET01FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUwuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvRE9NTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01SYW5nZS5o
PgogCiBAY2xhc3MgTlNDb2xvcjsKIEBjbGFzcyBOU0ltYWdlOwotCi1AaW50ZXJmYWNlIERPTUlt
cGxlbWVudGF0aW9uIChET01JbXBsZW1lbnRhdGlvbkV4dGVuc2lvbnMpCi0tIChET01IVE1MRG9j
dW1lbnQgKiljcmVhdGVIVE1MRG9jdW1lbnQ6KE5TU3RyaW5nICopdGl0bGU7Ci1AZW5kCitAY2xh
c3MgRE9NSFRNTENvbGxlY3Rpb247CiAKIEBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgKERPTURvY3Vt
ZW50Q1NTRXh0ZW5zaW9ucykKIC0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKiljcmVhdGVDU1NT
dHlsZURlY2xhcmF0aW9uOwogLSAoRE9NQ1NTUnVsZUxpc3QgKilnZXRNYXRjaGVkQ1NTUnVsZXM6
KERPTUVsZW1lbnQgKillbHQgOihOU1N0cmluZyAqKXBzZXVkb0VsdDsKIEBlbmQKIAorQGludGVy
ZmFjZSBET01FbGVtZW50IChET01FbGVtZW50QXBwS2l0RXh0ZW5zaW9ucykKKy0gKE5TSW1hZ2Ug
KilpbWFnZTsKK0BlbmQKKwogQGludGVyZmFjZSBET01IVE1MRG9jdW1lbnQgKERPTUhUTUxEb2N1
bWVudEV4dGVuc2lvbnMpCiAtIChET01Eb2N1bWVudEZyYWdtZW50ICopY3JlYXRlRG9jdW1lbnRG
cmFnbWVudFdpdGhNYXJrdXBTdHJpbmc6KE5TU3RyaW5nICopbWFya3VwU3RyaW5nIGJhc2VVUkw6
KE5TVVJMICopYmFzZVVSTDsKIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKiljcmVhdGVEb2N1bWVu
dEZyYWdtZW50V2l0aFRleHQ6KE5TU3RyaW5nICopdGV4dDsKQEAgLTU4LDIyICs2NSw2IEBACiAt
ICh2b2lkKXNldENvbnRlbnRFZGl0YWJsZTooTlNTdHJpbmcgKiljb250ZW50RWRpdGFibGU7CiAt
IChCT09MKWlzQ29udGVudEVkaXRhYmxlOwogLSAoTlNTdHJpbmcgKil0aXRsZURpc3BsYXlTdHJp
bmc7Ci0KLS0gKGludClvZmZzZXRMZWZ0OwotLSAoaW50KW9mZnNldFRvcDsKLS0gKGludClvZmZz
ZXRXaWR0aDsKLS0gKGludClvZmZzZXRIZWlnaHQ7Ci0tIChET01IVE1MRWxlbWVudCAqKW9mZnNl
dFBhcmVudDsKLQotLSAoaW50KWNsaWVudFdpZHRoOwotLSAoaW50KWNsaWVudEhlaWdodDsKLQot
LSAoaW50KXNjcm9sbExlZnQ7Ci0tICh2b2lkKXNldFNjcm9sbExlZnQ6KGludClzY3JvbGw7Ci0t
IChpbnQpc2Nyb2xsVG9wOwotLSAodm9pZClzZXRTY3JvbGxUb3A6KGludClzY3JvbGw7Ci0tIChp
bnQpc2Nyb2xsV2lkdGg7Ci0tIChpbnQpc2Nyb2xsSGVpZ2h0OwogQGVuZAogCiBAaW50ZXJmYWNl
IERPTUhUTUxFbWJlZEVsZW1lbnQgOiBET01IVE1MRWxlbWVudApAQCAtOTYsMzAgKzg3LDE1IEBA
CiAtIChOU0NvbG9yICopY29sb3I7CiBAZW5kCiAKLUBpbnRlcmZhY2UgRE9NQXR0ciAoRE9NQXR0
ckV4dGVuc2lvbnMpCi0tIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGU7Ci1AZW5kCi0K
IEBpbnRlcmZhY2UgRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlv
bkV4dGVuc2lvbnMpCiAtIChOU1N0cmluZyAqKWdldFByb3BlcnR5U2hvcnRoYW5kOihOU1N0cmlu
ZyAqKXByb3BlcnR5TmFtZTsKIC0gKEJPT0wpaXNQcm9wZXJ0eUltcGxpY2l0OihOU1N0cmluZyAq
KXByb3BlcnR5TmFtZTsKIEBlbmQKIAotQGludGVyZmFjZSBET01Ob2RlIChET01Ob2RlRXh0ZW5z
aW9ucykKLS0gKE5TUmVjdClib3VuZGluZ0JveDsKLS0gKE5TQXJyYXkgKilsaW5lQm94UmVjdHM7
Ci1AZW5kCi0KIEBpbnRlcmZhY2UgRE9NUmFuZ2UgKERPTVJhbmdlRXh0ZW5zaW9ucykKIC0gKE5T
U3RyaW5nICopdGV4dDsKIEBlbmQKIAotQGludGVyZmFjZSBET01FbGVtZW50IChET01FbGVtZW50
RXh0ZW5zaW9ucykKLS0gKE5TSW1hZ2UgKilpbWFnZTsKLS0gKHZvaWQpc2Nyb2xsSW50b1ZpZXc6
KEJPT0wpYWxpZ25Ub3A7Ci0tICh2b2lkKXNjcm9sbEludG9WaWV3SWZOZWVkZWQ6KEJPT0wpY2Vu
dGVySWZOZWVkZWQ7Ci1AZW5kCi0KIEBpbnRlcmZhY2UgRE9NSFRNTElucHV0RWxlbWVudCAoRE9N
SFRNTElucHV0RWxlbWVudEV4dGVuc2lvbnMpCiAtIChOU1N0cmluZyAqKWFsdERpc3BsYXlTdHJp
bmc7CiAtIChOU1VSTCAqKWFic29sdXRlSW1hZ2VVUkw7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NSFRNTC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
SFRNTC5tbQkocmV2aXNpb24gMTU5OTcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRN
TC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDE2LDcxICs0MTYsNiBAQCB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwogICAgIHJldHVybiBbc2VsZiBfSFRNTEVsZW1lbnRdLT5pc0NvbnRlbnRFZGl0
YWJsZSgpOwogfQogCi0tIChpbnQpb2Zmc2V0TGVmdAotewotICAgIHJldHVybiBbc2VsZiBfSFRN
TEVsZW1lbnRdLT5vZmZzZXRMZWZ0KCk7Ci19Ci0KLS0gKGludClvZmZzZXRUb3AKLXsKLSAgICBy
ZXR1cm4gW3NlbGYgX0hUTUxFbGVtZW50XS0+b2Zmc2V0VG9wKCk7Ci19Ci0KLS0gKGludClvZmZz
ZXRXaWR0aAotewotICAgIHJldHVybiBbc2VsZiBfSFRNTEVsZW1lbnRdLT5vZmZzZXRXaWR0aCgp
OwotfQotCi0tIChpbnQpb2Zmc2V0SGVpZ2h0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9IVE1MRWxl
bWVudF0tPm9mZnNldEhlaWdodCgpOwotfQotCi0tIChET01IVE1MRWxlbWVudCAqKW9mZnNldFBh
cmVudAotewotICAgIHJldHVybiBbRE9NSFRNTEVsZW1lbnQgX2VsZW1lbnRXaXRoOnN0YXRpY19j
YXN0PEhUTUxFbGVtZW50Kj4oW3NlbGYgX0hUTUxFbGVtZW50XS0+b2Zmc2V0UGFyZW50KCkpXTsK
LX0KLQotLSAoaW50KWNsaWVudFdpZHRoCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9IVE1MRWxlbWVu
dF0tPmNsaWVudFdpZHRoKCk7Ci19Ci0KLS0gKGludCljbGllbnRIZWlnaHQKLXsKLSAgICByZXR1
cm4gW3NlbGYgX0hUTUxFbGVtZW50XS0+Y2xpZW50SGVpZ2h0KCk7Ci19Ci0KLS0gKGludClzY3Jv
bGxMZWZ0OwotewotICAgIHJldHVybiBbc2VsZiBfSFRNTEVsZW1lbnRdLT5zY3JvbGxMZWZ0KCk7
Ci19Ci0KLS0gKHZvaWQpc2V0U2Nyb2xsTGVmdDooaW50KXNjcm9sbAotewotICAgIFtzZWxmIF9I
VE1MRWxlbWVudF0tPnNldFNjcm9sbExlZnQoc2Nyb2xsKTsKLX0KLQotLSAoaW50KXNjcm9sbFRv
cAotewotICAgIHJldHVybiBbc2VsZiBfSFRNTEVsZW1lbnRdLT5zY3JvbGxUb3AoKTsKLX0KLQot
LSAodm9pZClzZXRTY3JvbGxUb3A6KGludClzY3JvbGwKLXsKLSAgICBbc2VsZiBfSFRNTEVsZW1l
bnRdLT5zZXRTY3JvbGxUb3Aoc2Nyb2xsKTsKLX0KLQotLSAoaW50KXNjcm9sbFdpZHRoCi17Ci0g
ICAgcmV0dXJuIFtzZWxmIF9IVE1MRWxlbWVudF0tPnNjcm9sbFdpZHRoKCk7Ci19Ci0KLS0gKGlu
dClzY3JvbGxIZWlnaHQKLXsKLSAgICByZXR1cm4gW3NlbGYgX0hUTUxFbGVtZW50XS0+c2Nyb2xs
SGVpZ2h0KCk7Ci19Ci0KIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIERPTUhUTUxEb2N1bWVudApA
QCAtNjI3LDYgKzU2MiwxNSBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBAZW5kCiAK
K0BpbXBsZW1lbnRhdGlvbiBET01IVE1MRG9jdW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKKworKyAo
RE9NSFRNTERvY3VtZW50ICopX0hUTUxEb2N1bWVudFdpdGg6KFdlYkNvcmU6OkhUTUxEb2N1bWVu
dCAqKWltcGw7Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUhUTUxEb2N1bWVudCAqPihb
RE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOworfQorCitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBE
T01IVE1MSHRtbEVsZW1lbnQKIAogLSAoSFRNTEh0bWxFbGVtZW50ICopX0hUTUxIdG1sRWxlbWVu
dApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxJbnRlcm5hbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MSW50ZXJuYWwuaAkocmV2aXNpb24g
MTU5OTcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTEludGVybmFsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDkgKzI2LDE0IEBACiAjaW1wb3J0ICJET01IVE1MLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBIVE1MRG9jdW1lbnQ7CiAgICAgY2xhc3MgSFRNTE9w
dGlvbnNDb2xsZWN0aW9uOwogfQogCiBAaW50ZXJmYWNlIERPTUhUTUxPcHRpb25zQ29sbGVjdGlv
biAoV2ViQ29yZUludGVybmFsKQogKyAoRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uICopX29wdGlv
bnNDb2xsZWN0aW9uV2l0aDooV2ViQ29yZTo6SFRNTE9wdGlvbnNDb2xsZWN0aW9uICopaW1wbDsK
IEBlbmQKKworQGludGVyZmFjZSBET01IVE1MRG9jdW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKKysg
KERPTUhUTUxEb2N1bWVudCAqKV9IVE1MRG9jdW1lbnRXaXRoOihXZWJDb3JlOjpIVE1MRG9jdW1l
bnQgKilpbXBsOworQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUltcGxlbWVu
dGF0aW9uRnJvbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW1w
bGVtZW50YXRpb25Gcm9udC5oCShyZXZpc2lvbiAxNTk5NykKKysrIFdlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01JbXBsZW1lbnRhdGlvbkZyb250LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTUzLDYgKzU0LDYgQEAgcHVibGljOgogCiBET01JbXBsZW1l
bnRhdGlvbkZyb250KiBpbXBsZW1lbnRhdGlvbkZyb250KERvY3VtZW50Kik7CiAKLX0gLy9uYW1l
c3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gRE9NSW1w
bGVtZW50YXRpb25Gcm9udF9oCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJu
YWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaAko
cmV2aXNpb24gMTU5OTcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAwNiBKYW1lcyBHLiBTcGV0aCAoc3BldGhAZW5kLmNvbSkKKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMjUgKzI3LDUyIEBACiAKICNpbXBvcnQgIkRP
TS5oIgogCisjaW1wb3J0ICJET01BdHRyLmgiCisjaW1wb3J0ICJET01DREFUQVNlY3Rpb24uaCIK
KyNpbXBvcnQgIkRPTUNvbW1lbnQuaCIKKyNpbXBvcnQgIkRPTURPTUltcGxlbWVudGF0aW9uLmgi
CisjaW1wb3J0ICJET01Eb2N1bWVudC5oIgorI2ltcG9ydCAiRE9NRG9jdW1lbnRGcmFnbWVudC5o
IgorI2ltcG9ydCAiRE9NRG9jdW1lbnRUeXBlLmgiCisjaW1wb3J0ICJET01FbGVtZW50LmgiCisj
aW1wb3J0ICJET01FbnRpdHlSZWZlcmVuY2UuaCIKKyNpbXBvcnQgIkRPTU5hbWVkTm9kZU1hcC5o
IgorI2ltcG9ydCAiRE9NTm9kZS5oIgorI2ltcG9ydCAiRE9NTm9kZUxpc3QuaCIKKyNpbXBvcnQg
IkRPTU9iamVjdC5oIgorI2ltcG9ydCAiRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCisjaW1w
b3J0ICJET01UZXh0LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBBdHRyOwor
ICAgIGNsYXNzIENEQVRBU2VjdGlvbjsKICAgICBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwog
ICAgIGNsYXNzIENTU1N0eWxlU2hlZXQ7Ci0gICAgY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKKyAg
ICBjbGFzcyBDb21tZW50OworICAgIGNsYXNzIERPTUltcGxlbWVudGF0aW9uRnJvbnQ7CiAgICAg
Y2xhc3MgRG9jdW1lbnQ7CisgICAgY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKICAgICBjbGFzcyBE
b2N1bWVudFR5cGU7CiAgICAgY2xhc3MgRWxlbWVudDsKLSAgICBjbGFzcyBOb2RlRmlsdGVyOwor
ICAgIGNsYXNzIEVudGl0eVJlZmVyZW5jZTsKKyAgICBjbGFzcyBOYW1lZE5vZGVNYXA7CiAgICAg
Y2xhc3MgTm9kZTsKKyAgICBjbGFzcyBOb2RlRmlsdGVyOwogICAgIGNsYXNzIE5vZGVJdGVyYXRv
cjsKLSAgICBjbGFzcyBOYW1lZE5vZGVNYXA7CiAgICAgY2xhc3MgTm9kZUxpc3Q7CisgICAgY2xh
c3MgUHJvY2Vzc2luZ0luc3RydWN0aW9uOwogICAgIGNsYXNzIFJhbmdlOwogICAgIGNsYXNzIFN0
eWxlU2hlZXRMaXN0OworICAgIGNsYXNzIFRleHQ7CiAgICAgY2xhc3MgVHJlZVdhbGtlcjsKIAog
ICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiB9CiAKK0BpbnRlcmZhY2UgRE9NT2JqZWN0
IChXZWJDb3JlSW50ZXJuYWwpCistIChpZClfaW5pdDsKK0BlbmQKKwogQGludGVyZmFjZSBET01O
b2RlIChXZWJDb3JlSW50ZXJuYWwpCiArIChET01Ob2RlICopX25vZGVXaXRoOihXZWJDb3JlOjpO
b2RlICopaW1wbDsKIC0gKFdlYkNvcmU6Ok5vZGUgKilfbm9kZTsKQEAgLTU4LDExICs4Niw0NiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiArIChET01Ob2RlTGlzdCAqKV9ub2RlTGlzdFdpdGg6KFdl
YkNvcmU6Ok5vZGVMaXN0ICopaW1wbDsKIEBlbmQKIAorQGludGVyZmFjZSBET01UZXh0IChXZWJD
b3JlSW50ZXJuYWwpCisrIChET01UZXh0ICopX3RleHRXaXRoOihXZWJDb3JlOjpUZXh0ICopaW1w
bDsKK0BlbmQKKworQGludGVyZmFjZSBET01Db21tZW50IChXZWJDb3JlSW50ZXJuYWwpCisrIChE
T01Db21tZW50ICopX2NvbW1lbnRXaXRoOihXZWJDb3JlOjpDb21tZW50ICopaW1wbDsKK0BlbmQK
KworQGludGVyZmFjZSBET01DREFUQVNlY3Rpb24gKFdlYkNvcmVJbnRlcm5hbCkKKysgKERPTUNE
QVRBU2VjdGlvbiAqKV9DREFUQVNlY3Rpb25XaXRoOihXZWJDb3JlOjpDREFUQVNlY3Rpb24gKilp
bXBsOworQGVuZAorCitAaW50ZXJmYWNlIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAoV2ViQ29y
ZUludGVybmFsKQorKyAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICopX3Byb2Nlc3NpbmdJbnN0
cnVjdGlvbldpdGg6KFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKWltcGw7CitAZW5k
CisKK0BpbnRlcmZhY2UgRE9NRW50aXR5UmVmZXJlbmNlIChXZWJDb3JlSW50ZXJuYWwpCisrIChE
T01FbnRpdHlSZWZlcmVuY2UgKilfZW50aXR5UmVmZXJlbmNlV2l0aDooV2ViQ29yZTo6RW50aXR5
UmVmZXJlbmNlICopaW1wbDsKK0BlbmQKKwogQGludGVyZmFjZSBET01FbGVtZW50IChXZWJDb3Jl
SW50ZXJuYWwpCiArIChET01FbGVtZW50ICopX2VsZW1lbnRXaXRoOihXZWJDb3JlOjpFbGVtZW50
ICopaW1wbDsKIC0gKFdlYkNvcmU6OkVsZW1lbnQgKilfZWxlbWVudDsKIEBlbmQKIAorQGludGVy
ZmFjZSBET01BdHRyIChXZWJDb3JlSW50ZXJuYWwpCisrIChET01BdHRyICopX2F0dHJXaXRoOihX
ZWJDb3JlOjpBdHRyICopaW1wbDsKKy0gKFdlYkNvcmU6OkF0dHIgKilfYXR0cjsKK0BlbmQKKwor
QGludGVyZmFjZSBET01Eb2N1bWVudFR5cGUgKFdlYkNvcmVJbnRlcm5hbCkKKysgKERPTURvY3Vt
ZW50VHlwZSAqKV9kb2N1bWVudFR5cGVXaXRoOihXZWJDb3JlOjpEb2N1bWVudFR5cGUgKilpbXBs
OworLSAoV2ViQ29yZTo6RG9jdW1lbnRUeXBlICopX2RvY3VtZW50VHlwZTsKK0BlbmQKKworQGlu
dGVyZmFjZSBET01JbXBsZW1lbnRhdGlvbiAoV2ViQ29yZUludGVybmFsKQorKyAoRE9NSW1wbGVt
ZW50YXRpb24gKilfRE9NSW1wbGVtZW50YXRpb25XaXRoOihXZWJDb3JlOjpET01JbXBsZW1lbnRh
dGlvbkZyb250ICopaW1wbDsKKy0gKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uRnJvbnQgKilf
RE9NSW1wbGVtZW50YXRpb247CitAZW5kCisKIEBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgKFdlYkNv
cmVJbnRlcm5hbCkKICsgKERPTURvY3VtZW50ICopX2RvY3VtZW50V2l0aDooV2ViQ29yZTo6RG9j
dW1lbnQgKilpbXBsOwogLSAoV2ViQ29yZTo6RG9jdW1lbnQgKilfZG9jdW1lbnQ7CkBAIC04Nywx
MCArMTUwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogKyAoRE9NVHJlZVdhbGtlciAqKV90cmVl
V2Fsa2VyV2l0aDooV2ViQ29yZTo6VHJlZVdhbGtlciAqKWltcGwgZmlsdGVyOihpZCA8RE9NTm9k
ZUZpbHRlcj4pZmlsdGVyOwogQGVuZAogCi1AaW50ZXJmYWNlIERPTU9iamVjdCAoV2ViQ29yZUlu
dGVybmFsKQotLSAoaWQpX2luaXQ7Ci1AZW5kCi0KIEBpbnRlcmZhY2UgRE9NQ1NTU3R5bGVEZWNs
YXJhdGlvbiAoV2ViQ29yZUludGVybmFsKQogKyAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKV9z
dHlsZURlY2xhcmF0aW9uV2l0aDooV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbiAqKWltcGw7
CiAtIChXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uICopX3N0eWxlRGVjbGFyYXRpb247Cklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NTm9kZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWlu
aWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgorCitA
Y2xhc3MgRE9NRG9jdW1lbnQ7IAorQGNsYXNzIERPTU5hbWVkTm9kZU1hcDsKK0BjbGFzcyBET01O
b2RlTGlzdDsKKworLy8gRE9NIG5vZGUgdHlwZXMKK2VudW0geworICAgIERPTV9FTEVNRU5UX05P
REUgICAgICAgICAgICAgICAgICA9IDEsCisgICAgRE9NX0FUVFJJQlVURV9OT0RFICAgICAgICAg
ICAgICAgID0gMiwKKyAgICBET01fVEVYVF9OT0RFICAgICAgICAgICAgICAgICAgICAgPSAzLAor
ICAgIERPTV9DREFUQV9TRUNUSU9OX05PREUgICAgICAgICAgICA9IDQsCisgICAgRE9NX0VOVElU
WV9SRUZFUkVOQ0VfTk9ERSAgICAgICAgID0gNSwKKyAgICBET01fRU5USVRZX05PREUgICAgICAg
ICAgICAgICAgICAgPSA2LAorICAgIERPTV9QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUgICA9
IDcsCisgICAgRE9NX0NPTU1FTlRfTk9ERSAgICAgICAgICAgICAgICAgID0gOCwKKyAgICBET01f
RE9DVU1FTlRfTk9ERSAgICAgICAgICAgICAgICAgPSA5LAorICAgIERPTV9ET0NVTUVOVF9UWVBF
X05PREUgICAgICAgICAgICA9IDEwLAorICAgIERPTV9ET0NVTUVOVF9GUkFHTUVOVF9OT0RFICAg
ICAgICA9IDExLAorICAgIERPTV9OT1RBVElPTl9OT0RFICAgICAgICAgICAgICAgICA9IDEyCit9
OworCitAaW50ZXJmYWNlIERPTU5vZGUgOiBET01PYmplY3QKKy0gKE5TU3RyaW5nICopbm9kZU5h
bWU7CistIChOU1N0cmluZyAqKW5vZGVWYWx1ZTsKKy0gKHZvaWQpc2V0Tm9kZVZhbHVlOihOU1N0
cmluZyAqKXN0cmluZzsKKy0gKHVuc2lnbmVkIHNob3J0KW5vZGVUeXBlOworLSAoRE9NTm9kZSAq
KXBhcmVudE5vZGU7CistIChET01Ob2RlTGlzdCAqKWNoaWxkTm9kZXM7CistIChET01Ob2RlICop
Zmlyc3RDaGlsZDsKKy0gKERPTU5vZGUgKilsYXN0Q2hpbGQ7CistIChET01Ob2RlICopcHJldmlv
dXNTaWJsaW5nOworLSAoRE9NTm9kZSAqKW5leHRTaWJsaW5nOworLSAoRE9NTmFtZWROb2RlTWFw
ICopYXR0cmlidXRlczsKKy0gKERPTURvY3VtZW50ICopb3duZXJEb2N1bWVudDsKKy0gKERPTU5v
ZGUgKilpbnNlcnRCZWZvcmU6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilyZWZDaGls
ZDsKKy0gKERPTU5vZGUgKilyZXBsYWNlQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5v
ZGUgKilvbGRDaGlsZDsKKy0gKERPTU5vZGUgKilyZW1vdmVDaGlsZDooRE9NTm9kZSAqKW9sZENo
aWxkOworLSAoRE9NTm9kZSAqKWFwcGVuZENoaWxkOihET01Ob2RlICopbmV3Q2hpbGQ7CistIChC
T09MKWhhc0NoaWxkTm9kZXM7CistIChET01Ob2RlICopY2xvbmVOb2RlOihCT09MKWRlZXA7Cist
ICh2b2lkKW5vcm1hbGl6ZTsKKy0gKEJPT0wpaXNTdXBwb3J0ZWQ6KE5TU3RyaW5nICopZmVhdHVy
ZSA6KE5TU3RyaW5nICopdmVyc2lvbjsKKy0gKE5TU3RyaW5nICopbmFtZXNwYWNlVVJJOworLSAo
TlNTdHJpbmcgKilwcmVmaXg7CistICh2b2lkKXNldFByZWZpeDooTlNTdHJpbmcgKilwcmVmaXg7
CistIChOU1N0cmluZyAqKWxvY2FsTmFtZTsKKy0gKEJPT0wpaGFzQXR0cmlidXRlczsKKy0gKEJP
T0wpaXNTYW1lTm9kZTooRE9NTm9kZSAqKW90aGVyOworLSAoQk9PTClpc0VxdWFsTm9kZTooRE9N
Tm9kZSAqKW90aGVyOworLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudDsKKy0gKHZvaWQpc2V0VGV4
dENvbnRlbnQ6KE5TU3RyaW5nICopdGV4dDsKK0BlbmQKKworQGludGVyZmFjZSBET01Ob2RlIChE
T01Ob2RlRXh0ZW5zaW9ucykKKy0gKE5TUmVjdClib3VuZGluZ0JveDsKKy0gKE5TQXJyYXkgKils
aW5lQm94UmVjdHM7CitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZS5tbQkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlLm1tCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDI5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2
IEphbWVzIEcuIFNwZXRoIDxzcGV0aEBlbmQuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNh
bXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIkRPTU5vZGUuaCIKKworI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIgLy8g
bmVlZGVkIGZvciBET01fY2FzdDw+CisjaW1wb3J0ICJOb2RlLmgiIC8vIGltcGxlbWVudGF0aW9u
IGNsYXNzCisKKyNpbXBvcnQgIkF0b21pY1N0cmluZy5oIgorI2ltcG9ydCAiRE9NRG9jdW1lbnQu
aCIKKyNpbXBvcnQgIkRPTU5hbWVkTm9kZU1hcC5oIgorI2ltcG9ydCAiRE9NTm9kZUxpc3QuaCIK
KyNpbXBvcnQgIkRlcHJlY2F0ZWRWYWx1ZUxpc3QuaCIKKyNpbXBvcnQgIkludFJlY3QuaCIKKyNp
bXBvcnQgIk5hbWVkQXR0ck1hcC5oIgorI2ltcG9ydCAiTmFtZWROb2RlTWFwLmgiCisjaW1wb3J0
ICJOb2RlTGlzdC5oIgorI2ltcG9ydCAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbXBvcnQgIlJlbmRl
ck9iamVjdC5oIgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKworQGltcGxlbWVudGF0aW9u
IERPTU5vZGUKKworLSAodm9pZClkZWFsbG9jCit7CisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAg
ICAgRE9NX2Nhc3Q8V2ViQ29yZTo6Tm9kZSAqPihfaW50ZXJuYWwpLT5kZXJlZigpOworICAgIFtz
dXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClmaW5hbGl6ZQoreworICAgIGlmIChfaW50ZXJu
YWwpCisgICAgICAgIERPTV9jYXN0PFdlYkNvcmU6Ok5vZGUgKj4oX2ludGVybmFsKS0+ZGVyZWYo
KTsKKyAgICBbc3VwZXIgZmluYWxpemVdOworfQorCistIChOU1N0cmluZyAqKW5vZGVOYW1lCit7
CisgICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bm9kZU5hbWUoKTsKK30KKworLSAoTlNTdHJpbmcg
Kilub2RlVmFsdWUKK3sKKyAgICAvLyBEb2N1bWVudGF0aW9uIHNheXMgd2UgY2FuIHJhaXNlIGEg
RE9NU1RSSU5HX1NJWkVfRVJSLgorICAgIC8vIEhvd2V2ZXIsIHRoZSBsb3dlciBsYXllciBkb2Vz
IG5vdCByZXBvcnQgdGhhdCBlcnJvciB1cCB0byB1cy4KKyAgICByZXR1cm4gW3NlbGYgX25vZGVd
LT5ub2RlVmFsdWUoKTsKK30KKworLSAodm9pZClzZXROb2RlVmFsdWU6KE5TU3RyaW5nICopc3Ry
aW5nCit7CisgICAgQVNTRVJUKHN0cmluZyk7CisgICAgCisgICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgW3NlbGYgX25vZGVdLT5zZXROb2RlVmFsdWUoc3RyaW5nLCBlYyk7
CisgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKworLSAodW5zaWduZWQgc2hvcnQpbm9kZVR5
cGUKK3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2RlVHlwZSgpOworfQorCistIChET01O
b2RlICopcGFyZW50Tm9kZQoreworICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYg
X25vZGVdLT5wYXJlbnROb2RlKCldOworfQorCistIChET01Ob2RlTGlzdCAqKWNoaWxkTm9kZXMK
K3sKKyAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX25vZGVdLT5j
aGlsZE5vZGVzKCkuZ2V0KCldOworfQorCistIChET01Ob2RlICopZmlyc3RDaGlsZAoreworICAg
IHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5maXJzdENoaWxkKCldOwor
fQorCistIChET01Ob2RlICopbGFzdENoaWxkCit7CisgICAgcmV0dXJuIFtET01Ob2RlIF9ub2Rl
V2l0aDpbc2VsZiBfbm9kZV0tPmxhc3RDaGlsZCgpXTsKK30KKworLSAoRE9NTm9kZSAqKXByZXZp
b3VzU2libGluZworeworICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVd
LT5wcmV2aW91c1NpYmxpbmcoKV07Cit9CisKKy0gKERPTU5vZGUgKiluZXh0U2libGluZworewor
ICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5uZXh0U2libGluZygp
XTsKK30KKworLSAoRE9NTmFtZWROb2RlTWFwICopYXR0cmlidXRlcworeworICAgIHJldHVybiBb
RE9NTmFtZWROb2RlTWFwIF9uYW1lZE5vZGVNYXBXaXRoOltzZWxmIF9ub2RlXS0+YXR0cmlidXRl
cygpXTsKK30KKworLSAoRE9NRG9jdW1lbnQgKilvd25lckRvY3VtZW50Cit7CisgICAgcmV0dXJu
IFtET01Eb2N1bWVudCBfZG9jdW1lbnRXaXRoOltzZWxmIF9ub2RlXS0+ZG9jdW1lbnQoKV07Cit9
CisKKy0gKERPTU5vZGUgKilpbnNlcnRCZWZvcmU6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5v
ZGUgKilyZWZDaGlsZAoreworICAgIEFTU0VSVChuZXdDaGlsZCk7CisgICAgQVNTRVJUKHJlZkNo
aWxkKTsKKworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlmIChbc2Vs
ZiBfbm9kZV0tPmluc2VydEJlZm9yZShbbmV3Q2hpbGQgX25vZGVdLCBbcmVmQ2hpbGQgX25vZGVd
LCBlYykpCisgICAgICAgIHJldHVybiBuZXdDaGlsZDsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKERPTU5vZGUgKilyZXBsYWNlQ2hpbGQ6KERPTU5v
ZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilvbGRDaGlsZAoreworICAgIEFTU0VSVChuZXdDaGls
ZCk7CisgICAgQVNTRVJUKG9sZENoaWxkKTsKKworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIGlmIChbc2VsZiBfbm9kZV0tPnJlcGxhY2VDaGlsZChbbmV3Q2hpbGQgX25v
ZGVdLCBbb2xkQ2hpbGQgX25vZGVdLCBlYykpCisgICAgICAgIHJldHVybiBvbGRDaGlsZDsKKyAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKERPTU5vZGUg
KilyZW1vdmVDaGlsZDooRE9NTm9kZSAqKW9sZENoaWxkCit7CisgICAgQVNTRVJUKG9sZENoaWxk
KTsKKworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlmIChbc2VsZiBf
bm9kZV0tPnJlbW92ZUNoaWxkKFtvbGRDaGlsZCBfbm9kZV0sIGVjKSkKKyAgICAgICAgcmV0dXJu
IG9sZENoaWxkOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIG5pbDsKK30K
KworLSAoRE9NTm9kZSAqKWFwcGVuZENoaWxkOihET01Ob2RlICopbmV3Q2hpbGQKK3sKKyAgICBB
U1NFUlQobmV3Q2hpbGQpOworCisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgaWYgKFtzZWxmIF9ub2RlXS0+YXBwZW5kQ2hpbGQoW25ld0NoaWxkIF9ub2RlXSwgZWMpKQor
ICAgICAgICByZXR1cm4gbmV3Q2hpbGQ7CisgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICBy
ZXR1cm4gbmlsOworfQorCistIChCT09MKWhhc0NoaWxkTm9kZXMKK3sKKyAgICByZXR1cm4gW3Nl
bGYgX25vZGVdLT5oYXNDaGlsZE5vZGVzKCk7Cit9CisKKy0gKERPTU5vZGUgKiljbG9uZU5vZGU6
KEJPT0wpZGVlcAoreworICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVd
LT5jbG9uZU5vZGUoZGVlcCkuZ2V0KCldOworfQorCistICh2b2lkKW5vcm1hbGl6ZQoreworICAg
IFtzZWxmIF9ub2RlXS0+bm9ybWFsaXplKCk7Cit9CisKKy0gKEJPT0wpaXNTdXBwb3J0ZWQ6KE5T
U3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbgoreworICAgIEFTU0VSVChmZWF0
dXJlKTsKKyAgICBBU1NFUlQodmVyc2lvbik7CisKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5p
c1N1cHBvcnRlZChmZWF0dXJlLCB2ZXJzaW9uKTsKK30KKworLSAoTlNTdHJpbmcgKiluYW1lc3Bh
Y2VVUkkKK3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5uYW1lc3BhY2VVUkkoKTsKK30KKwor
LSAoTlNTdHJpbmcgKilwcmVmaXgKK3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5wcmVmaXgo
KTsKK30KKworLSAodm9pZClzZXRQcmVmaXg6KE5TU3RyaW5nICopcHJlZml4Cit7CisgICAgQVNT
RVJUKHByZWZpeCk7CisKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBX
ZWJDb3JlOjpTdHJpbmcgcHJlZml4U3RyKHByZWZpeCk7CisgICAgW3NlbGYgX25vZGVdLT5zZXRQ
cmVmaXgocHJlZml4U3RyLmltcGwoKSwgZWMpOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7Cit9
CisKKy0gKE5TU3RyaW5nICopbG9jYWxOYW1lCit7CisgICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+
bG9jYWxOYW1lKCk7Cit9CisKKy0gKEJPT0wpaGFzQXR0cmlidXRlcworeworICAgIHJldHVybiBb
c2VsZiBfbm9kZV0tPmhhc0F0dHJpYnV0ZXMoKTsKK30KKworLSAoQk9PTClpc1NhbWVOb2RlOihE
T01Ob2RlICopb3RoZXIKK3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc1NhbWVOb2RlKFtv
dGhlciBfbm9kZV0pOworfQorCistIChCT09MKWlzRXF1YWxOb2RlOihET01Ob2RlICopb3RoZXIK
K3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc0VxdWFsTm9kZShbb3RoZXIgX25vZGVdKTsK
K30KKworLSAoQk9PTClpc0RlZmF1bHROYW1lc3BhY2U6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJ
Cit7CisgICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aXNEZWZhdWx0TmFtZXNwYWNlKG5hbWVzcGFj
ZVVSSSk7Cit9CisKKy0gKE5TU3RyaW5nICopbG9va3VwUHJlZml4OihOU1N0cmluZyAqKW5hbWVz
cGFjZVVSSQoreworICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmxvb2t1cFByZWZpeChuYW1lc3Bh
Y2VVUkkpOworfQorCistIChOU1N0cmluZyAqKWxvb2t1cE5hbWVzcGFjZVVSSTooTlNTdHJpbmcg
KilwcmVmaXgKK3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5sb29rdXBOYW1lc3BhY2VVUkko
cHJlZml4KTsKK30KKworLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudAoreworICAgIHJldHVybiBb
c2VsZiBfbm9kZV0tPnRleHRDb250ZW50KCk7Cit9CisKKy0gKHZvaWQpc2V0VGV4dENvbnRlbnQ6
KE5TU3RyaW5nICopdGV4dAoreworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIFtzZWxmIF9ub2RlXS0+c2V0VGV4dENvbnRlbnQodGV4dCwgZWMpOworICAgIHJhaXNlT25E
T01FcnJvcihlYyk7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERPTU5vZGUgKERPTU5v
ZGVFeHRlbnNpb25zKQorCistIChOU1JlY3QpYm91bmRpbmdCb3gKK3sKKyAgICBXZWJDb3JlOjpS
ZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gW3NlbGYgX25vZGVdLT5yZW5kZXJlcigpOworICAgIGlm
IChyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCgpOworICAgIHJldHVybiBOU1plcm9SZWN0OworfQorCistIChOU0FycmF5ICopbGluZUJv
eFJlY3RzCit7CisgICAgV2ViQ29yZTo6UmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9u
b2RlXS0+cmVuZGVyZXIoKTsKKyAgICBpZiAocmVuZGVyZXIpIHsKKyAgICAgICAgTlNNdXRhYmxl
QXJyYXkgKnJlc3VsdHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKyAgICAgICAg
V2ViQ29yZTo6RGVwcmVjYXRlZFZhbHVlTGlzdDxXZWJDb3JlOjpJbnRSZWN0PiByZWN0cyA9IHJl
bmRlcmVyLT5saW5lQm94UmVjdHMoKTsKKyAgICAgICAgaWYgKCFyZWN0cy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgIGZvciAoV2ViQ29yZTo6RGVwcmVjYXRlZFZhbHVlTGlzdDxXZWJDb3JlOjpJ
bnRSZWN0Pjo6Q29uc3RJdGVyYXRvciBpdCA9IHJlY3RzLmJlZ2luKCk7IGl0ICE9IHJlY3RzLmVu
ZCgpOyArK2l0KQorICAgICAgICAgICAgICAgIFtyZXN1bHRzIGFkZE9iamVjdDpbTlNWYWx1ZSB2
YWx1ZVdpdGhSZWN0OippdF1dOworICAgICAgICB9CisgICAgICAgIHJldHVybiBbcmVzdWx0cyBh
dXRvcmVsZWFzZV07CisgICAgfQorICAgIHJldHVybiBuaWw7Cit9CisKK0BlbmQKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NT2JqZWN0LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NT2JqZWN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5p
Z0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0Lmg+
CisKK0BjbGFzcyBET01TdHlsZVNoZWV0OworCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBE
T01UaW1lU3RhbXA7CisKK2V4dGVybiBOU1N0cmluZyAqIGNvbnN0IERPTUV4Y2VwdGlvbjsKKwor
Ly8gRE9NIGV4Y2VwdGlvbiBjb2RlcworZW51bSB7CisgICAgRE9NX0lOREVYX1NJWkVfRVJSICAg
ICAgICAgICAgICAgID0gMSwKKyAgICBET01fRE9NU1RSSU5HX1NJWkVfRVJSICAgICAgICAgICAg
PSAyLAorICAgIERPTV9ISUVSQVJDSFlfUkVRVUVTVF9FUlIgICAgICAgICA9IDMsCisgICAgRE9N
X1dST05HX0RPQ1VNRU5UX0VSUiAgICAgICAgICAgID0gNCwKKyAgICBET01fSU5WQUxJRF9DSEFS
QUNURVJfRVJSICAgICAgICAgPSA1LAorICAgIERPTV9OT19EQVRBX0FMTE9XRURfRVJSICAgICAg
ICAgICA9IDYsCisgICAgRE9NX05PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiAgID0gNywKKyAg
ICBET01fTk9UX0ZPVU5EX0VSUiAgICAgICAgICAgICAgICAgPSA4LAorICAgIERPTV9OT1RfU1VQ
UE9SVEVEX0VSUiAgICAgICAgICAgICA9IDksCisgICAgRE9NX0lOVVNFX0FUVFJJQlVURV9FUlIg
ICAgICAgICAgID0gMTAsCisgICAgRE9NX0lOVkFMSURfU1RBVEVfRVJSICAgICAgICAgICAgID0g
MTEsCisgICAgRE9NX1NZTlRBWF9FUlIgICAgICAgICAgICAgICAgICAgID0gMTIsCisgICAgRE9N
X0lOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiAgICAgID0gMTMsCisgICAgRE9NX05BTUVTUEFDRV9F
UlIgICAgICAgICAgICAgICAgID0gMTQsCisgICAgRE9NX0lOVkFMSURfQUNDRVNTX0VSUiAgICAg
ICAgICAgID0gMTUKK307CisKKwordHlwZWRlZiBzdHJ1Y3QgRE9NT2JqZWN0SW50ZXJuYWwgRE9N
T2JqZWN0SW50ZXJuYWw7CisKK0BpbnRlcmZhY2UgRE9NT2JqZWN0IDogV2ViU2NyaXB0T2JqZWN0
IDxOU0NvcHlpbmc+Cit7CisgICAgRE9NT2JqZWN0SW50ZXJuYWwgKl9pbnRlcm5hbDsKK30KK0Bl
bmQKKworQGludGVyZmFjZSBET01PYmplY3QgKERPTUxpbmtTdHlsZSkKKy0gKERPTVN0eWxlU2hl
ZXQgKilzaGVldDsKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01PYmplY3Qu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU9iamVjdC5tbQkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01PYmplY3QubW0JKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNiBKYW1lcyBHLiBTcGV0aCA8c3BldGhAZW5kLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJET01PYmplY3QuaCIKKworI2ltcG9ydCAiRE9NSW50ZXJuYWwu
aCIKKworI2ltcG9ydCAiRE9NQ1NTLmgiIC8vIGZvciBET01TdHlsZVNoZWV0CisjaW1wb3J0ICJE
T01DU1NJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NSFRNTC5oIiAvLyBmb3IgRE9NSFRNTExpbmtF
bGVtZW50IGFuZCBET01IVE1MU3R5bGVFbGVtZW50CisjaW1wb3J0ICJET01Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uaCIKKyNpbXBvcnQgIkhUTUxMaW5rRWxlbWVudC5oIgorI2ltcG9ydCAiSFRNTFN0
eWxlRWxlbWVudC5oIgorI2ltcG9ydCAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCisjaW1wb3J0
ICJTdHlsZVNoZWV0LmgiCisKK0BpbXBsZW1lbnRhdGlvbiBET01PYmplY3QKKworLy8gUHJldmVu
dCBjcmVhdGlvbiBvZiBET00gb2JqZWN0cyBieSBjbGllbnRzIHdobyBqdXN0ICJbW3h4eCBhbGxv
Y10gaW5pdF0iLgorLSAoaWQpaW5pdAoreworICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0dlbmVy
aWNFeGNlcHRpb24gZm9ybWF0OkAiK1slQCBpbml0XTogc2hvdWxkIG5ldmVyIGJlIHVzZWQiLCBO
U1N0cmluZ0Zyb21DbGFzcyhbc2VsZiBjbGFzc10pXTsKKyAgICBbc2VsZiByZWxlYXNlXTsKKyAg
ICByZXR1cm4gbmlsOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBpZiAoX2ludGVybmFs
KQorICAgICAgICByZW1vdmVET01XcmFwcGVyKF9pbnRlcm5hbCk7CisgICAgW3N1cGVyIGRlYWxs
b2NdOworfQorCistICh2b2lkKWZpbmFsaXplCit7CisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAg
ICAgcmVtb3ZlRE9NV3JhcHBlcihfaW50ZXJuYWwpOworICAgIFtzdXBlciBmaW5hbGl6ZV07Cit9
CisKKy0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQoreworICAgIHJldHVybiBbc2Vs
ZiByZXRhaW5dOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBET01PYmplY3QgKERPTUxp
bmtTdHlsZSkKKworLSAoRE9NU3R5bGVTaGVldCAqKXNoZWV0Cit7CisgICAgV2ViQ29yZTo6U3R5
bGVTaGVldCAqc2hlZXQ7CisKKyAgICBpZiAoW3NlbGYgaXNLaW5kT2ZDbGFzczpbRE9NUHJvY2Vz
c2luZ0luc3RydWN0aW9uIGNsYXNzXV0pCisgICAgICAgIHNoZWV0ID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKj4oWyhET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24g
KilzZWxmIF9ub2RlXSktPnNoZWV0KCk7CisgICAgZWxzZSBpZiAoW3NlbGYgaXNLaW5kT2ZDbGFz
czpbRE9NSFRNTExpbmtFbGVtZW50IGNsYXNzXV0pCisgICAgICAgIHNoZWV0ID0gc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Kj4oWyhET01IVE1MTGlua0VsZW1lbnQgKilzZWxm
IF9ub2RlXSktPnNoZWV0KCk7CisgICAgZWxzZSBpZiAoW3NlbGYgaXNLaW5kT2ZDbGFzczpbRE9N
SFRNTFN0eWxlRWxlbWVudCBjbGFzc11dKQorICAgICAgICBzaGVldCA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQqPihbKERPTUhUTUxTdHlsZUVsZW1lbnQgKilzZWxmIF9u
b2RlXSktPnNoZWV0KCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0
dXJuIFtET01TdHlsZVNoZWV0IF9ET01TdHlsZVNoZWV0V2l0aDpzaGVldF07Cit9CisKK0BlbmQK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Qcml2YXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVByaXZhdGUuaAkocmV2aXNpb24gMTU5OTcpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vpbmln
IDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjQsOSArMjUsMTEgQEAKICAqLwogCiAjaW1wb3J0IDxXZWJDb3JlL0RPTUNTUy5oPgorI2lt
cG9ydCA8V2ViQ29yZS9ET01FbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUV2ZW50cy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU5vZGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NUmFuZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRE9NRXZl
bnRzLmg+CiAKIEBpbnRlcmZhY2UgRE9NUmFuZ2UgKFdlYlByaXZhdGUpCiAvLyB1c2VzIHNhbWUg
YWxnb3JpdGhtIGFzIGlubmVyVGV4dApAQCAtODcsNCArOTAsMyBAQAogQGludGVyZmFjZSBET01X
aGVlbEV2ZW50KFB1YmxpY1BlbmRpbmcpCiAtICh2b2lkKWluaXRXaGVlbEV2ZW50OihCT09MKWhv
cml6b250YWwgOihpbnQpd2hlZWxEZWx0YSA6KERPTUFic3RyYWN0VmlldyAqKXZpZXdBcmcgOihp
bnQpc2NyZWVuWEFyZyA6KGludClzY3JlZW5ZQXJnIDooaW50KWNsaWVudFggOihpbnQpY2xpZW50
WSA6KEJPT0wpY3RybEtleUFyZyA6KEJPT0wpYWx0S2V5QXJnIDooQk9PTClzaGlmdEtleUFyZyA6
KEJPT0wpbWV0YUtleUFyZzsKIEBlbmQKLQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TVJhbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVJhbmdlLmgJ
KHJldmlzaW9uIDE1OTk3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVJhbmdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0IEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCw2ICsyNSw4IEBACiAgKi8KIAogI2ltcG9ydCA8V2Vi
Q29yZS9ET01Db3JlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTURvY3VtZW50Lmg+CisjaW1wb3J0
IDxXZWJDb3JlL0RPTU9iamVjdC5oPgogCiBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBET01SYW5n
ZUV4Y2VwdGlvbjsKIApAQCAtNzEsNyArNzQsMyBAQCBlbnVtIHsKIC0gKE5TU3RyaW5nICopdG9T
dHJpbmc7CiAtICh2b2lkKWRldGFjaDsKIEBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudCAo
RE9NRG9jdW1lbnRSYW5nZSkKLS0gKERPTVJhbmdlICopY3JlYXRlUmFuZ2U7Ci1AZW5kCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NU3R5bGVzaGVldHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NU3R5bGVzaGVldHMuaAkocmV2aXNpb24gMTU5OTcpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NU3R5bGVzaGVldHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVs
IFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI0LDYgKzI1LDggQEAKICAqLwogCiAjaW1wb3J0IDxXZWJDb3JlL0RPTUNvcmUu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9N
T2JqZWN0Lmg+CiAKIEBjbGFzcyBET01NZWRpYUxpc3Q7CiBAY2xhc3MgRE9NU3R5bGVTaGVldDsK
QEAgLTU0LDExICs1NywzIEBAIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IERPTUV2ZW50RXhjZXB0
aW8KIC0gKHZvaWQpZGVsZXRlTWVkaXVtOihOU1N0cmluZyAqKW9sZE1lZGl1bTsKIC0gKHZvaWQp
YXBwZW5kTWVkaXVtOihOU1N0cmluZyAqKW5ld01lZGl1bTsKIEBlbmQKLQotQGludGVyZmFjZSBE
T01PYmplY3QgKERPTUxpbmtTdHlsZSkKLS0gKERPTVN0eWxlU2hlZXQgKilzaGVldDsKLUBlbmQK
LQotQGludGVyZmFjZSBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRTdHlsZSkKLS0gKERPTVN0eWxl
U2hlZXRMaXN0ICopc3R5bGVTaGVldHM7Ci1AZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NVHJhdmVyc2FsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TVRyYXZlcnNhbC5oCShyZXZpc2lvbiAxNTk5NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01UcmF2ZXJzYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5j
b20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDYgKzI1LDggQEAKICAq
LwogCiAjaW1wb3J0IDxXZWJDb3JlL0RPTUNvcmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRG9j
dW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CiAKIEBjbGFzcyBET01Ob2Rl
RmlsdGVyOwogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVmlld3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVmlld3MuaAkocmV2aXNpb24gMTU5OTcp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVmlld3MuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdl
aW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI0LDExICsyNSw5IEBACiAgKi8KIAogI2ltcG9ydCA8V2ViQ29yZS9ET01Db3JlLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0RPTURvY3VtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU9i
amVjdC5oPgogCiBAaW50ZXJmYWNlIERPTUFic3RyYWN0VmlldyA6IERPTU9iamVjdAogLSAoRE9N
RG9jdW1lbnQgKilkb2N1bWVudDsKIEBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudCAoRE9N
RG9jdW1lbnRWaWV3KQotLSAoRE9NQWJzdHJhY3RWaWV3ICopZGVmYXVsdFZpZXc7Ci1AZW5kCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVmlld3MubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTVZpZXdzLm1tCShyZXZpc2lvbiAxNTk5NykKKysrIFdlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01WaWV3cy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzksMTIgKzc5
LDMgQEAgQUxMT1dfRE9NX0NBU1QoRE9NV2luZG93KQogfQogCiBAZW5kCi0KLUBpbXBsZW1lbnRh
dGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRWaWV3KQotCi0tIChET01BYnN0cmFjdFZpZXcg
KilkZWZhdWx0VmlldwotewotICAgIHJldHVybiBbRE9NQWJzdHJhY3RWaWV3IF9hYnN0cmFjdFZp
ZXdXaXRoOltzZWxmIF9kb2N1bWVudF0tPmRlZmF1bHRWaWV3KCldOwotfQotCi1AZW5kCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NWFBhdGguaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NWFBhdGguaAkocmV2aXNpb24gMTU5OTcpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NWFBhdGguaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5p
Z0BnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDYgKzI1
LDggQEAKICAqLwogCiAjaW1wb3J0IDxXZWJDb3JlL0RPTUNvcmUuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvRE9NRG9jdW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CiAKIGV4dGVy
biBOU1N0cmluZyAqIGNvbnN0IERPTVhQYXRoRXhjZXB0aW9uOwogCkBAIC02NSw5ICs2OCwzIEBA
IGVudW0gewogQGludGVyZmFjZSBET01YUGF0aEV4cHJlc3Npb24gOiBET01PYmplY3QKIC0gKERP
TVhQYXRoUmVzdWx0ICopZXZhbHVhdGU6KERPTU5vZGUgKiljb250ZXh0Tm9kZSA6KHVuc2lnbmVk
IHNob3J0KXR5cGUgOihET01YUGF0aFJlc3VsdCAqKXJlc3VsdDsKIEBlbmQKLQotQGludGVyZmFj
ZSBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRYUGF0aCkKLS0gKERPTVhQYXRoRXhwcmVzc2lvbiAq
KWNyZWF0ZUV4cHJlc3Npb246KE5TU3RyaW5nICopZXhwcmVzc2lvbiA6KGlkIDxET01YUGF0aE5T
UmVzb2x2ZXI+KXJlc29sdmVyOwotLSAoaWQgPERPTVhQYXRoTlNSZXNvbHZlcj4pY3JlYXRlTlNS
ZXNvbHZlcjooRE9NTm9kZSAqKW5vZGVSZXNvbHZlcjsKLS0gKERPTVhQYXRoUmVzdWx0ICopZXZh
bHVhdGU6KE5TU3RyaW5nICopZXhwcmVzc2lvbiA6KERPTU5vZGUgKiljb250ZXh0Tm9kZSA6KGlk
IDxET01YUGF0aE5TUmVzb2x2ZXI+KXJlc29sdmVyIDoodW5zaWduZWQgc2hvcnQpdHlwZSA6KERP
TVhQYXRoUmVzdWx0ICopcmVzdWx0OwotQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTVhQYXRoLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0
aC5tbQkocmV2aXNpb24gMTU5OTcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NWFBhdGgu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI3MiwzNyArMjcyLDQgQEAgdXNpbmcgV2ViQ29yZTo6WFBh
dGhSZXN1bHQ7CiAKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChET01Eb2N1
bWVudFhQYXRoKQotCi0tIChET01YUGF0aEV4cHJlc3Npb24gKiljcmVhdGVFeHByZXNzaW9uOihO
U1N0cmluZyAqKWV4cHJlc3Npb24gOihpZCA8RE9NWFBhdGhOU1Jlc29sdmVyPilyZXNvbHZlcgot
ewotICAgIGlmIChyZXNvbHZlciAmJiAhW3Jlc29sdmVyIGlzTWVtYmVyT2ZDbGFzczpbRE9NTmF0
aXZlWFBhdGhOU1Jlc29sdmVyIGNsYXNzXV0pCi0gICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpO
U0dlbmVyaWNFeGNlcHRpb24gZm9ybWF0OkAiY3JlYXRlRXhwcmVzc2lvbiBjdXJyZW50bHkgZG9l
cyBub3Qgd29yayB3aXRoIGN1c3RvbSBOUyByZXNvbHZlcnMiXTsKLSAgICAKLSAgICBET01OYXRp
dmVYUGF0aE5TUmVzb2x2ZXIgKm5hdGl2ZVJlc29sdmVyID0gKERPTU5hdGl2ZVhQYXRoTlNSZXNv
bHZlciAqKXJlc29sdmVyOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTVhQYXRo
RXhwcmVzc2lvbiAqcmVzdWx0ID0gW0RPTVhQYXRoRXhwcmVzc2lvbiBfeHBhdGhFeHByZXNzaW9u
V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVFeHByZXNzaW9uKGV4cHJlc3Npb24sIFtuYXRp
dmVSZXNvbHZlciBfeHBhdGhOU1Jlc29sdmVyXSwgZWMpLmdldCgpXTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKGlkIDxET01YUGF0aE5TUmVz
b2x2ZXI+KWNyZWF0ZU5TUmVzb2x2ZXI6KERPTU5vZGUgKilub2RlUmVzb2x2ZXIKLXsKLSAgICBy
ZXR1cm4gW0RPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciBfeHBhdGhOU1Jlc29sdmVyV2l0aDpbc2Vs
ZiBfZG9jdW1lbnRdLT5jcmVhdGVOU1Jlc29sdmVyKFtub2RlUmVzb2x2ZXIgX25vZGVdKS5nZXQo
KV07Ci19Ci0KLS0gKERPTVhQYXRoUmVzdWx0ICopZXZhbHVhdGU6KE5TU3RyaW5nICopZXhwcmVz
c2lvbiA6KERPTU5vZGUgKiljb250ZXh0Tm9kZSA6KGlkIDxET01YUGF0aE5TUmVzb2x2ZXI+KXJl
c29sdmVyIDoodW5zaWduZWQgc2hvcnQpdHlwZSA6KERPTVhQYXRoUmVzdWx0ICopcmVzdWx0Ci17
Ci0gICAgaWYgKHJlc29sdmVyICYmICFbcmVzb2x2ZXIgaXNNZW1iZXJPZkNsYXNzOltET01OYXRp
dmVYUGF0aE5TUmVzb2x2ZXIgY2xhc3NdXSkKLSAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5T
R2VuZXJpY0V4Y2VwdGlvbiBmb3JtYXQ6QCJjcmVhdGVFeHByZXNzaW9uIGN1cnJlbnRseSBkb2Vz
IG5vdCB3b3JrIHdpdGggY3VzdG9tIE5TIHJlc29sdmVycyJdOwotICAgIAotICAgIERPTU5hdGl2
ZVhQYXRoTlNSZXNvbHZlciAqbmF0aXZlUmVzb2x2ZXIgPSAoRE9NTmF0aXZlWFBhdGhOU1Jlc29s
dmVyICopcmVzb2x2ZXI7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NWFBhdGhS
ZXN1bHQgKl9yZXN1bHQgPSBbRE9NWFBhdGhSZXN1bHQgX3hwYXRoUmVzdWx0V2l0aDpbc2VsZiBf
ZG9jdW1lbnRdLT5ldmFsdWF0ZShleHByZXNzaW9uLCBbY29udGV4dE5vZGUgX25vZGVdLCBbbmF0
aXZlUmVzb2x2ZXIgX3hwYXRoTlNSZXNvbHZlcl0sIHR5cGUsIFtyZXN1bHQgX3hwYXRoUmVzdWx0
XSwgZWMpLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBfcmVz
dWx0OwotfQotCi1AZW5kCi0KICNlbmRpZiAvLyBYUEFUSF9TVVBQT1JUCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkocmV2aXNpb24gMTU5OTcpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkod29ya2luZyBjb3B5KQpA
QCAtNzEsNyArNzEsNiBAQCBzdWIgUHJvY2Vzc0RvY3VtZW50CiAgICR1c2VEb2N1bWVudCA9IHNo
aWZ0OwogICAKICAgbXkgJGlmYWNlTmFtZSA9ICR1c2VHZW5lcmF0b3I7Ci0gICRpZmFjZU5hbWUg
PX4gcy9cYihcdykvXFUkMS9nOyAjIE1ha2UgZmlyc3QgbGV0dGVyIG9mIGVhY2ggd29yZCB1cHBl
cmNhc2UKICAgJGlmYWNlTmFtZSA9ICJDb2RlR2VuZXJhdG9yJGlmYWNlTmFtZSI7CiAKICAgIyBE
eW5hbWljYWxseSBsb2FkIGV4dGVybmFsIGNvZGUgZ2VuZXJhdGlvbiBwZXJsIG1vZHVsZS4uLgpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2Jq
Qy5wbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MzEgQEAKKyMgCisjIEtET00gSURMIHBhcnNl
cgorIworIyBDb3B5cmlnaHQgKEMpIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtk
ZS5vcmc+CisjIENvcHlyaWdodCAoQykgMjAwNiBBbmRlcnMgQ2FybHNzb24gPGFuZGVyc2NhQG1h
Yy5jb20+IAorIyBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0Bn
bWFpbC5jb20+CisjIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorIwor
IyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKKyMgCisjIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisjIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyMgCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMgCisjIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyMgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisjIEJvc3RvbiwgTUEgMDIx
MTEtMTMwNywgVVNBLgorIworCitwYWNrYWdlIENvZGVHZW5lcmF0b3JPYmpDOworCit1c2UgRmls
ZTo6c3RhdDsKKworbXkgJG1vZHVsZSA9ICIiOworbXkgJG91dHB1dERpciA9ICIiOworbXkgJWlt
cGxJbmNsdWRlcyA9ICgpOworbXkgJWhlYWRlckZvcndhcmREZWNsYXJhdGlvbnMgPSAoKTsKK215
ICVoZWFkZXJGb3J3YXJkRGVjbGFyYXRpb25zRm9yUHJvdG9jb2xzID0gKCk7CisKK215ICRleGNl
cHRpb25Jbml0ID0gIldlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOyI7CitteSAkZXhjZXB0
aW9uUmFpc2VPbkVycm9yID0gInJhaXNlT25ET01FcnJvcihlYyk7IjsKKworCisjIERlZmF1bHQg
TGljZW5jZSBUZW1wbGF0ZXMKK215ICRoZWFkZXJMaWNlbmNlVGVtcGxhdGUgPSA8PCAiRU9GIjsK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8
c2FtLndlaW5pZ1xAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworRU9GCisKK215ICRpbXBsZW1lbnRhdGlvbkxp
Y2VuY2VUZW1wbGF0ZSA9IDw8ICJFT0YiOworLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdl
bmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1
aXRlIDMzMCwKKyAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyovCitFT0YKKworIyBE
ZWZhdWx0IGNvbnN0cnVjdG9yCitzdWIgbmV3Cit7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0Owor
ICAgIG15ICRyZWZlcmVuY2UgPSB7IH07CisKKyAgICAkY29kZUdlbmVyYXRvciA9IHNoaWZ0Owor
ICAgICRvdXRwdXREaXIgPSBzaGlmdDsKKworICAgIGJsZXNzKCRyZWZlcmVuY2UsICRvYmplY3Qp
OworICAgIHJldHVybiAkcmVmZXJlbmNlOworfQorCitzdWIgZmluaXNoCit7CisgICAgbXkgJG9i
amVjdCA9IHNoaWZ0OworCisgICAgIyBDb21taXQgY2hhbmdlcyEKKyAgICAkb2JqZWN0LT5Xcml0
ZURhdGEoKTsKK30KKworIyBQYXJhbXM6ICdkb21DbGFzcycgc3RydWN0CitzdWIgR2VuZXJhdGVJ
bnRlcmZhY2UKK3sKKyAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJGRhdGFOb2RlID0g
c2hpZnQ7CisKKyAgICAjIFN0YXJ0IGFjdHVhbCBnZW5lcmF0aW9uLi4KKyAgICAkb2JqZWN0LT5H
ZW5lcmF0ZUhlYWRlcigkZGF0YU5vZGUpOworICAgICRvYmplY3QtPkdlbmVyYXRlSW1wbGVtZW50
YXRpb24oJGRhdGFOb2RlKTsKKworICAgIG15ICRuYW1lID0gJGRhdGFOb2RlLT5uYW1lOworCisg
ICAgIyBPcGVuIGZpbGVzIGZvciB3cml0aW5nLi4uCisgICAgbXkgJGhlYWRlckZpbGVOYW1lID0g
IiRvdXRwdXREaXIvRE9NJG5hbWUuaCI7CisgICAgbXkgJGltcGxGaWxlTmFtZSA9ICIkb3V0cHV0
RGlyL0RPTSRuYW1lLm1tIjsKKworICAgIG9wZW4oJElNUEwsICI+JGltcGxGaWxlTmFtZSIpIG9y
IGRpZSAiQ291bGRuJ3Qgb3BlbiBmaWxlICRpbXBsRmlsZU5hbWUiOworICAgIG9wZW4oJEhFQURF
UiwgIj4kaGVhZGVyRmlsZU5hbWUiKSBvciBkaWUgIkNvdWxkbid0IG9wZW4gZmlsZSAkaGVhZGVy
RmlsZU5hbWUiOworfQorCisjIFBhcmFtczogJ2lkbERvY3VtZW50JyBzdHJ1Y3QKK3N1YiBHZW5l
cmF0ZU1vZHVsZQoreworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBteSAkZGF0YU5vZGUg
PSBzaGlmdDsgIAorICAgIAorICAgICRtb2R1bGUgPSAkZGF0YU5vZGUtPm1vZHVsZTsgICAgCit9
CisKKworc3ViIEdldENsYXNzTmFtZQoreworICAgIG15ICRuYW1lID0gJGNvZGVHZW5lcmF0b3It
PlN0cmlwTW9kdWxlKHNoaWZ0KTsKKyAgICAKKyAgICAjIHNwZWNpYWwgY2FzZXMKKyAgICBpZiAo
JG5hbWUgZXEgImJvb2xlYW4iKSB7CisgICAgICAgIHJldHVybiAiQk9PTCI7CisgICAgfSBlbHNp
ZiAoJG5hbWUgZXEgInVuc2lnbmVkIGxvbmciKSB7CisgICAgICAgIHJldHVybiAidW5zaWduZWQi
OworICAgIH0gZWxzaWYgKCRuYW1lIGVxICJsb25nIikgeworICAgICAgICByZXR1cm4gImludCI7
CisgICAgfSBlbHNpZiAoJG5hbWUgZXEgIkRPTVN0cmluZyIpIHsKKyAgICAgICAgcmV0dXJuICJO
U1N0cmluZyI7CisgICAgfSBlbHNpZiAoJG5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKKyAgICAgICAg
cmV0dXJuICJET01BYnN0cmFjdFZpZXciOworICAgIH0gZWxzaWYgKCRuYW1lIGVxICJYUGF0aE5T
UmVzb2x2ZXIiKSB7CisgICAgICAgIHJldHVybiAiaWQgPERPTVhQYXRoTlNSZXNvbHZlcj4iOwor
ICAgIH0gZWxzaWYgKCRuYW1lIGVxICJ1bnNpZ25lZCBzaG9ydCIgCisgICAgICAgICAgICAgb3Ig
JG5hbWUgZXEgImZsb2F0IgorICAgICAgICAgICAgIG9yICRuYW1lIGVxICJ2b2lkIgorICAgICAg
ICAgICAgIG9yICRuYW1lIGVxICJET01JbXBsZW1lbnRhdGlvbiIpIHsKKyAgICAgICAgcmV0dXJu
ICRuYW1lOworICAgIH0KKworICAgICMgRGVmYXVsdCwgYXNzdW1lIG9iamVjdGl2ZS1jIHR5cGUg
aGFzIHRoZSBzYW1lIHR5cGUgbmFtZSBhcworICAgICMgaWRsIHR5cGUgcHJlZml4ZWQgd2l0aCAi
RE9NIi4KKyAgICByZXR1cm4gIkRPTSIgLiAkbmFtZTsKK30KKworc3ViIEdldEltcGxDbGFzc05h
bWUKK3sKKyAgICBteSAkbmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVsZShzaGlmdCk7
CisgICAgCisgICAgIyBzcGVjaWFsIGNhc2VzCisgICAgaWYgKCRuYW1lIGVxICJET01JbXBsZW1l
bnRhdGlvbiIpIHsKKyAgICAgICAgcmV0dXJuICJXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbkZy
b250IjsKKyAgICB9CisKKyAgICByZXR1cm4gIldlYkNvcmU6OiIgLiAkbmFtZTsKK30KKworc3Vi
IEdldFBhcmVudEltcGxDbGFzc05hbWUKK3sKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKwor
ICAgIGlmIChAeyRkYXRhTm9kZS0+cGFyZW50c30gZXEgMCkgeworICAgICAgICByZXR1cm4gIk9i
amVjdCI7CisgICAgfQorCisgICAgbXkgJHBhcmVudCA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1v
ZHVsZSgkZGF0YU5vZGUtPnBhcmVudHMoMCkpOworICAgIAorICAgICMgc3BlY2lhbCBjYXNlcwor
ICAgIGlmICgkcGFyZW50IGVxICJFdmVudFRhcmdldE5vZGUiKSB7CisgICAgICAgICRwYXJlbnQg
PSAiTm9kZSI7CisgICAgfQorCisgICAgcmV0dXJuICRwYXJlbnQ7Cit9CisKK3N1YiBHZXRPYmpD
VHlwZQoreworICAgIG15ICRuYW1lID0gR2V0Q2xhc3NOYW1lKHNoaWZ0KTsKKworICAgIGlmICgk
Y29kZUdlbmVyYXRvci0+SXNQcmltaXRpdmVUeXBlKCRuYW1lKQorICAgICAgICAgICAgb3IgJG5h
bWUgZXEgIkJPT0wiCisgICAgICAgICAgICBvciAkbmFtZSBlcSAidW5zaWduZWQiCisgICAgICAg
ICAgICBvciAkbmFtZSBlcSAiaW50IgorICAgICAgICAgICAgb3IgJG5hbWUgZXEgImlkIDxET01Y
UGF0aE5TUmVzb2x2ZXI+IikgeworICAgICAgICByZXR1cm4gJG5hbWU7CisgICAgfQorCisgICAg
IyBEZWZhdWx0LCByZXR1cm4gdHlwZSBhcyBhIHBvaW50ZXIuCisgICAgcmV0dXJuICIkbmFtZSAq
IjsKK30KKworc3ViIEdldE9iakNUeXBlTWFrZXIKK3sKKyAgICBteSAkdHlwZSA9ICRjb2RlR2Vu
ZXJhdG9yLT5TdHJpcE1vZHVsZShzaGlmdCk7CisKKyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklz
UHJpbWl0aXZlVHlwZSgkdHlwZSkgb3IgJHR5cGUgZXEgIkRPTVN0cmluZyIpIHsKKyAgICAgICAg
cmV0dXJuICIiOworICAgIH0KKworICAgIGlmICgkdHlwZSBlcSAiRE9NUkdCQ29sb3IiKSB7Cisg
ICAgICAgIHJldHVybiAiX1JHQkNvbG9yV2l0aFJHQiI7CisgICAgfQorCisgICAgbXkgJHR5cGVN
YWtlciA9ICIiOworCisgICAgaWYgKCR0eXBlIGVxICJIVE1MQ29sbGVjdGlvbiIpIHsKKyAgICAg
ICAgJHR5cGVNYWtlciA9ICJjb2xsZWN0aW9uIjsKKyAgICB9IGVsc2lmICgkdHlwZSBlcSAiSFRN
TEZvcm1FbGVtZW50IikgeworICAgICAgICAkdHlwZU1ha2VyID0gImZvcm1FbGVtZW50IjsKKyAg
ICB9IGVsc2lmICgkdHlwZSBlcSAiSFRNTERvY3VtZW50IikgeworICAgICAgICAkdHlwZU1ha2Vy
ID0gIkhUTUxEb2N1bWVudCI7CisgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkNTU1N0eWxlRGVjbGFy
YXRpb24iKSB7CisgICAgICAgICR0eXBlTWFrZXIgPSAic3R5bGVEZWNsYXJhdGlvbiI7CisgICAg
fSBlbHNpZiAoJHR5cGUgZXEgIkNTU1N0eWxlU2hlZXQiKSB7CisgICAgICAgICR0eXBlTWFrZXIg
PSAiQ1NTU3R5bGVTaGVldCI7CisgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkRPTUltcGxlbWVudGF0
aW9uIikgeworICAgICAgICAkdHlwZU1ha2VyID0gIkRPTUltcGxlbWVudGF0aW9uIjsKKyAgICB9
IGVsc2lmICgkdHlwZSBlcSAiQ0RBVEFTZWN0aW9uIikgeworICAgICAgICAkdHlwZU1ha2VyID0g
IkNEQVRBU2VjdGlvbiI7CisgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkRPTVdpbmRvdyIpIHsKKyAg
ICAgICAgJHR5cGVNYWtlciA9ICJhYnN0cmFjdFZpZXciOworICAgIH0gZWxzaWYgKCR0eXBlIGVx
ICJYUGF0aFJlc3VsdCIpIHsKKyAgICAgICAgJHR5cGVNYWtlciA9ICJ4cGF0aFJlc3VsdCI7Cisg
ICAgfSBlbHNpZiAoJHR5cGUgZXEgIlhQYXRoTlNSZXNvbHZlciIpIHsKKyAgICAgICAgJHR5cGVN
YWtlciA9ICJ4cGF0aE5TUmVzb2x2ZXIiOworICAgIH0gZWxzaWYgKCR0eXBlIGVxICJYUGF0aEV4
cHJlc3Npb24iKSB7CisgICAgICAgICR0eXBlTWFrZXIgPSAieHBhdGhFeHByZXNzaW9uIjsKKyAg
ICB9IGVsc2UgeworICAgICAgICAkdHlwZU1ha2VyID0gbGNmaXJzdCgkdHlwZSk7CisgICAgfQor
CisgICAgIyBwdXQgaW50byB0aGUgZm9ybSAiX2Zvb0JhcldpdGgiIGZvciB0eXBlIEZvb0Jhci4K
KyAgICAkdHlwZU1ha2VyID0gIl8iIC4gJHR5cGVNYWtlciAuICJXaXRoIjsKKyAgICByZXR1cm4g
JHR5cGVNYWtlcjsKK30KKworc3ViIEFkZEZvcndhcmREZWNsYXJhdGlvbnNGb3JUeXBlCit7Cisg
ICAgbXkgJHR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoc2hpZnQpOworICAgIAor
ICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNQcmltaXRpdmVUeXBlKCR0eXBlKSBvciAkdHlwZSBl
cSAiRE9NU3RyaW5nIikgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmICgk
dHlwZSBlcSAiRE9NSW1wbGVtZW50YXRpb24iKSB7CisgICAgICAgICRoZWFkZXJGb3J3YXJkRGVj
bGFyYXRpb25zeyIkdHlwZSJ9ID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICgkdHlwZSBlcSAiRE9NV2luZG93IikgeworICAgICAgICAkaGVhZGVyRm9yd2FyZERlY2xhcmF0
aW9uc3siRE9NQWJzdHJhY3RWaWV3In0gPSAxOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKCR0eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7CisgICAgICAgICMgT25seSBvbmUg
cHJvdG9jb2wgc28gZmFyLgorICAgICAgICAkaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9uc0ZvclBy
b3RvY29sc3siRE9NWFBhdGhOU1Jlc29sdmVyIn0gPSAxOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgJGhlYWRlckZvcndhcmREZWNsYXJhdGlvbnN7IkRPTSR0eXBlIn0gPSAxOworfQor
CitzdWIgQWRkSW5jbHVkZXNGb3JUeXBlCit7CisgICAgbXkgJHR5cGUgPSAkY29kZUdlbmVyYXRv
ci0+U3RyaXBNb2R1bGUoc2hpZnQpOworICAgIAorICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNQ
cmltaXRpdmVUeXBlKCR0eXBlKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KCR0eXBlIGVxICJET01TdHJpbmciKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IlBsYXRmb3Jt
U3RyaW5nLmgifSA9IDE7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAjIFRlbXAgRE9N
Q1NTLmgKKyAgICBpZiAoJHR5cGUgZXEgIkNvdW50ZXIiCisgICAgICAgICAgICBvciAkdHlwZSBl
cSAiTWVkaWFMaXN0IgorICAgICAgICAgICAgb3IgJHR5cGUgZXEgIkNTU1N0eWxlU2hlZXQiKSB7
CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUNTUy5oIn0gPSAxOworICAgICAgICAkaW1wbElu
Y2x1ZGVzeyIkdHlwZS5oIn0gPSAxOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICgk
dHlwZSBlcSAiQ1NTU3R5bGVEZWNsYXJhdGlvbiIpIHsKKyAgICAgICAgJGltcGxJbmNsdWRlc3si
RE9NQ1NTLmgifSA9IDE7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IiR0eXBlLmgifSA9IDE7Cisg
ICAgICAgICRpbXBsSW5jbHVkZXN7IkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgifSA9IDE7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCR0eXBlIGVxICJSR0JDb2xvciIgb3Ig
JHR5cGUgZXEgIlJlY3QiKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUNTUy5oIn0gPSAx
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgIyBUZW1wIERPTUhUTUwuaAorICAgIGlm
ICgkdHlwZSBlcSAiSFRNTERvY3VtZW50IikgeworICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01I
VE1MLmgifSA9IDE7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUhUTUxJbnRlcm5hbC5oIn0g
PSAxOworICAgICAgICAkaW1wbEluY2x1ZGVzeyIkdHlwZS5oIn0gPSAxOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgIyBUZW1wIERPTUV2ZW50cy5oCisgICAgaWYgKCR0eXBlIGVxICJF
dmVudCIpIHsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NRXZlbnRzLmgifSA9IDE7CisgICAg
ICAgICRpbXBsSW5jbHVkZXN7IkRPTUV2ZW50c0ludGVybmFsLmgifSA9IDE7CisgICAgICAgICRp
bXBsSW5jbHVkZXN7IiR0eXBlLmgifSA9IDE7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICAjIFRlbXAgRE9NU3R5bGVTaGVldHMuaAorICAgIGlmICgkdHlwZSBlcSAiU3R5bGVTaGVldExp
c3QiKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTVN0eWxlU2hlZXRzLmgifSA9IDE7Cisg
ICAgICAgICRpbXBsSW5jbHVkZXN7IiR0eXBlLmgifSA9IDE7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCisgICAgIyBUZW1wIERPTVZpZXdzLmgKKyAgICBpZiAoJHR5cGUgZXEgIkRPTVdp
bmRvdyIpIHsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NVmlld3MuaCJ9ID0gMTsKKyAgICAg
ICAgJGltcGxJbmNsdWRlc3siRE9NVmlld3NJbnRlcm5hbC5oIn0gPSAxOworICAgICAgICAkaW1w
bEluY2x1ZGVzeyIkdHlwZS5oIn0gPSAxOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgICMgVGVtcCBET01YUGF0aC5oCisgICAgaWYgKCR0eXBlIGVxICJYUGF0aEV4cHJlc3Npb24i
CisgICAgICAgICAgICBvciAkdHlwZSBlcSAiWFBhdGhOU1Jlc29sdmVyIgorICAgICAgICAgICAg
b3IgJHR5cGUgZXEgIlhQYXRoUmVzdWx0IikgeworICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01Y
UGF0aC5oIn0gPSAxOworICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01YUGF0aEludGVybmFsLmgi
fSA9IDE7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IiR0eXBlLmgifSA9IDE7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAjIFRlbXAgRE9NSW1wbGVtZW50YXRpb25Gcm9udC5oCisgICAg
aWYgKCR0eXBlIGVxICJET01JbXBsZW1lbnRhdGlvbiIpIHsKKyAgICAgICAgJGltcGxJbmNsdWRl
c3siRE9NSW1wbGVtZW50YXRpb25Gcm9udC5oIn0gPSAxOworICAgIH0KKworICAgICMgRGVmYXVs
dCwgaW5jbHVkZSB0aGUgc2FtZSBuYW1lZCBmaWxlICh0aGUgaW1wbGVtZW50YXRpb24pIGFuZCB0
aGUgc2FtZSBuYW1lIHByZWZpeGVkIHdpdGggIkRPTSIuIAorICAgICRpbXBsSW5jbHVkZXN7IiR0
eXBlLmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3siRE9NJHR5cGUuaCJ9ID0gMTsKK30KKwor
c3ViIEdlbmVyYXRlSGVhZGVyCit7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAgIG15ICRk
YXRhTm9kZSA9IHNoaWZ0OworCisgICAgIyBNYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCBoYXZlIG1v
cmUgdGhhbiBvbmUgcGFyZW50LgorICAgIGlmIChAeyRkYXRhTm9kZS0+cGFyZW50c30gPiAxKSB7
CisgICAgICAgIGRpZSAiQSBjbGFzcyBjYW4ndCBoYXZlIG1vcmUgdGhhbiBvbmUgcGFyZW50LiI7
CisgICAgfQorCisgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkZGF0YU5vZGUtPm5hbWU7CisgICAg
bXkgJGNsYXNzTmFtZSA9IEdldENsYXNzTmFtZSgkaW50ZXJmYWNlTmFtZSk7CisgICAgbXkgJHBh
cmVudENsYXNzTmFtZSA9ICJET00iIC4gR2V0UGFyZW50SW1wbENsYXNzTmFtZSgkZGF0YU5vZGUp
OworCisgICAgbXkgJG51bUNvbnN0YW50cyA9IEB7JGRhdGFOb2RlLT5jb25zdGFudHN9OworICAg
IG15ICRudW1BdHRyaWJ1dGVzID0gQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9OworICAgIG15ICRu
dW1GdW5jdGlvbnMgPSBAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfTsKKworICAgICMgLSBBZGQgZGVm
YXVsdCBoZWFkZXIgdGVtcGxhdGUKKyAgICBAaGVhZGVyQ29udGVudEhlYWRlciA9IHNwbGl0KCJc
ciIsICRoZWFkZXJMaWNlbmNlVGVtcGxhdGUpOworCisgICAgIyAtIElOQ0xVREVTIC0KKyAgICBw
dXNoKEBoZWFkZXJDb250ZW50SGVhZGVyLCAiXG4jaW1wb3J0IFwiJHBhcmVudENsYXNzTmFtZS5o
XCIgLy8gcGFyZW50IGNsYXNzXG5cbiIpOworCisgICAgIyAtIEFkZCBjb25zdGFudHMuCisgICAg
aWYgKCRudW1Db25zdGFudHMgPiAwKSB7CisgICAgICAgIG15IEBoZWFkZXJDb25zdGFudHMgPSAo
KTsKKyAgICAgICAgZm9yZWFjaCBteSAkY29uc3RhbnQgKEB7JGRhdGFOb2RlLT5jb25zdGFudHN9
KSB7CisKKyAgICAgICAgICAgIG15ICRjb25zdGFudE5hbWUgPSAkY29uc3RhbnQtPm5hbWU7Cisg
ICAgICAgICAgICBteSAkY29uc3RhbnRWYWx1ZSA9ICRjb25zdGFudC0+dmFsdWU7CisgICAgICAg
ICAgICBteSAkb3V0cHV0ID0gIiAgICBET01fIiAuICRjb25zdGFudE5hbWUgLiAiID0gIiAuICRj
b25zdGFudFZhbHVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb25z
dGFudHMsICRvdXRwdXQpOworICAgICAgICB9CisgICAgICAgIG15ICRjb21iaW5lZENvbnN0YW50
cyA9IGpvaW4oIixcbiIsIEBoZWFkZXJDb25zdGFudHMpOworCisgICAgICAgICMgRklYTUU6IHRo
ZSBmb3JtYXR0aW5nIG9mIHRoZSBlbnVtcyBzaG91bGQgbGluZSB1cCB0aGUgZXF1YWwgc2lnbnMu
CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbi8vIENvbnN0YW50c1xuIik7CisgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJlbnVtIHtcbiIpOworICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAkY29tYmluZWRDb25zdGFudHMpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiXG59O1xuIik7ICAgICAgICAKKyAgICB9CisgICAgCisgICAgbXkgJWhhc2hPZkNhdGFn
b3JpZXMgPSAoKTsKKyAgICAKKyAgICAjIC0gQmVnaW4gQGludGVyZmFjZSAKKyAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiXG5cQGludGVyZmFjZSAkY2xhc3NOYW1lIDogJHBhcmVudENsYXNzTmFt
ZVxuIik7CisKKyAgICAjIC0gQWRkIGF0dHJpYnV0ZSBnZXR0ZXJzL3NldHRlcnMuCisgICAgaWYg
KCRudW1BdHRyaWJ1dGVzID4gMCkgeworICAgICAgICBteSBAaGVhZGVyQXR0cmlidXRlcyA9ICgp
OworCisgICAgICAgIGZvcmVhY2ggKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgeworICAgICAg
ICAgICAgbXkgJGF0dHJpYnV0ZSA9ICRfOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT2JqQ1ByaXZhdGUi
fSkgeworICAgICAgICAgICAgICAgICMgRklYTUU6IGZvciBub3csIGp1c3Qgc2tpcCBtZXRob2Rz
IG5vdCBhcHByb3ZlZCBmb3IgQVBJIHlldAorICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIEFkZEZvcndhcmREZWNsYXJhdGlvbnNGb3JUeXBlKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7CisKKyAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVOYW1l
ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICAgICAgbXkgJGF0dHJpYnV0
ZVR5cGUgPSBHZXRPYmpDVHlwZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOworICAgICAg
ICAgICAgbXkgJGF0dHJpYnV0ZUlzUmVhZG9ubHkgPSAoJGF0dHJpYnV0ZS0+dHlwZSA9fiAvXnJl
YWRvbmx5Lyk7CisgICAgICAgICAgICBteSAkY2F0YWdvcnkgPSAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPYmpDQ2F0YWdvcnkifTsKKworICAgICAgICAgICAg
IyAtIEdFVFRFUgorICAgICAgICAgICAgbXkgJGdldHRlciA9ICItICgiIC4gJGF0dHJpYnV0ZVR5
cGUgLiAiKSIgLiAkYXR0cmlidXRlTmFtZSAuICI7XG4iOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBpZiAoJGNhdGFnb3J5KSB7CisgICAgICAgICAgICAgICAgcHVzaChAeyAkaGFzaE9mQ2F0
YWdvcmllc3skY2F0YWdvcnl9IH0sICRnZXR0ZXIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJBdHRyaWJ1dGVzLCAkZ2V0dGVyKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgCisgICAgICAgICAgICAjIC0gU0VUVEVSCisgICAgICAgICAg
ICBpZiAoISRhdHRyaWJ1dGVJc1JlYWRvbmx5KSB7CisgICAgICAgICAgICAgICAgbXkgJHNldHRl
ciA9ICItICh2b2lkKXNldCIgLiB1Y2ZpcnN0KCRhdHRyaWJ1dGVOYW1lKSAuICI6KCIgLiAkYXR0
cmlidXRlVHlwZSAuICIpIiAuICRhdHRyaWJ1dGVOYW1lIC4gIjtcbiI7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgaWYgKCRjYXRhZ29yeSkgeworICAgICAgICAgICAgICAgICAg
ICBwdXNoKEB7ICRoYXNoT2ZDYXRhZ29yaWVzeyRjYXRhZ29yeX0gfSwgJHNldHRlcik7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQXR0
cmlidXRlcywgJHNldHRlcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgaWYgKEBoZWFkZXJBdHRyaWJ1dGVzID4gMCkgeworICAgICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuLy8gQXR0cmlidXRlc1xuIik7CisgICAgICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCBAaGVhZGVyQXR0cmlidXRlcyk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAjIC0gQWRkIGZ1bmN0aW9ucy4KKyAgICBpZiAoJG51bUZ1bmN0aW9ucyA+IDAp
IHsKKyAgICAgICAgbXkgQGhlYWRlckZ1bmN0aW9ucyA9ICgpOworCisgICAgICAgIGZvcmVhY2gg
KEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CisgICAgICAgICAgICBteSAkZnVuY3Rpb24gPSAk
XzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiT2JqQ1ByaXZhdGUifSkgeworICAgICAgICAgICAgICAgICMg
RklYTUU6IGZvciBub3csIGp1c3Qgc2tpcCBtZXRob2RzIG5vdCBhcHByb3ZlZCBmb3IgQVBJIHll
dAorICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEFk
ZEZvcndhcmREZWNsYXJhdGlvbnNGb3JUeXBlKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKTsK
KworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5u
YW1lOworICAgICAgICAgICAgbXkgJHJldHVyblR5cGUgPSBHZXRPYmpDVHlwZSgkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAgICAgICBteSAkbnVtYmVyT2ZQYXJhbWV0ZXJzID0g
QHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OworICAgICAgICAgICAgbXkgJGNhdGFnb3J5ID0gJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPYmpDQ2F0YWdvcnkifTsK
KworICAgICAgICAgICAgbXkgJG91dHB1dCA9ICItICgkcmV0dXJuVHlwZSkkZnVuY3Rpb25OYW1l
IjsKKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVy
c30pIHsKKyAgICAgICAgICAgICAgICBteSAkcGFyYW1OYW1lID0gJHBhcmFtLT5uYW1lOworICAg
ICAgICAgICAgICAgIG15ICRwYXJhbVR5cGUgPSBHZXRPYmpDVHlwZSgkcGFyYW0tPnR5cGUpOwor
ICAgICAgICAgICAgICAgIEFkZEZvcndhcmREZWNsYXJhdGlvbnNGb3JUeXBlKCRwYXJhbS0+dHlw
ZSk7CisKKyAgICAgICAgICAgICAgICAkb3V0cHV0IC49ICI6KCRwYXJhbVR5cGUpJHBhcmFtTmFt
ZSAiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgIyByZW1vdmUgYW55IHRyYWlsaW5nIHNw
YWNlcy4KKyAgICAgICAgCSRvdXRwdXQgPX4gcy9ccyskLy87CisgICAgICAgICAgICAkb3V0cHV0
IC49ICI7XG4iOworICAgIAorICAgICAgICAgICAgaWYgKCRjYXRhZ29yeSkgeworICAgICAgICAg
ICAgICAgIHB1c2goQHsgJGhhc2hPZkNhdGFnb3JpZXN7JGNhdGFnb3J5fSB9LCAkb3V0cHV0KTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyRnVuY3Rp
b25zLCAkb3V0cHV0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChA
aGVhZGVyRnVuY3Rpb25zID4gMCkgeworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IlxuLy8gTWV0aG9kc1xuIik7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCBAaGVh
ZGVyRnVuY3Rpb25zKTsKKyAgICAgICAgfQorICAgIH0KKworICAgICMgLSBFbmQgQGludGVyZmFj
ZSAKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG5cQGVuZFxuIik7CisgICAgCisgICAgIyBB
ZGQgYWRkaXRpb25hbCBDYXRhZ29yaWVzIChpZiBhbnkpCisgICAgaWYgKHNjYWxhcihrZXlzKCVo
YXNoT2ZDYXRhZ29yaWVzKSkpIHsKKyAgICAgICAgCisgICAgICAgIGZvcmVhY2goc29ydChrZXlz
KCVoYXNoT2ZDYXRhZ29yaWVzKSkpIHsKKyAgICAgICAgICAgIG15ICRjYXRhZ29yeSA9ICRfOwor
CisgICAgICAgICAgICAjIC0gQmVnaW4gQGludGVyZmFjZSAKKyAgICAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICJcblxAaW50ZXJmYWNlICRjbGFzc05hbWUgKCRjYXRhZ29yeSlcbiIpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBmb3JlYWNoIChAeyAkaGFzaE9mQ2F0YWdvcmllc3sk
Y2F0YWdvcnl9IH0pIHsKKyAgICAgICAgICAgICAgICBteSAkZGVjbGFyYXRpb24gPSAkXzsKKyAg
ICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAkZGVjbGFyYXRpb24pOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAjIC0gRW5kIEBpbnRlcmZhY2UKKyAg
ICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcQGVuZFxuIik7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3N1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCit7CisgICAgbXkgJG9iamVjdCA9
IHNoaWZ0OworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworCisgICAgbXkgJGludGVyZmFjZU5h
bWUgPSAkZGF0YU5vZGUtPm5hbWU7CisgICAgbXkgJGNsYXNzTmFtZSA9IEdldENsYXNzTmFtZSgk
aW50ZXJmYWNlTmFtZSk7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSBHZXRJbXBsQ2xhc3NOYW1l
KCRpbnRlcmZhY2VOYW1lKTsKKyAgICBteSAkcGFyZW50SW1wbENsYXNzTmFtZSA9IEdldFBhcmVu
dEltcGxDbGFzc05hbWUoJGRhdGFOb2RlKTsKKworCisgICAgbXkgJG51bUF0dHJpYnV0ZXMgPSBA
eyRkYXRhTm9kZS0+YXR0cmlidXRlc307CisgICAgbXkgJG51bUZ1bmN0aW9ucyA9IEB7JGRhdGFO
b2RlLT5mdW5jdGlvbnN9OworICAgIG15ICRoYXNGdW5jdGlvbnNPckF0dHJpYnV0ZXMgPSAkbnVt
QXR0cmlidXRlcyArICRudW1GdW5jdGlvbnM7CisKKyAgICAjIC0gQWRkIGRlZmF1bHQgaGVhZGVy
IHRlbXBsYXRlLgorICAgIEBpbXBsQ29udGVudEhlYWRlciA9IHNwbGl0KCJcciIsICRpbXBsZW1l
bnRhdGlvbkxpY2VuY2VUZW1wbGF0ZSk7CisKKyAgICAjIC0gSU5DTFVERVMgLQorICAgIHB1c2go
QGltcGxDb250ZW50SGVhZGVyLCAiXG4jaW1wb3J0IFwiY29uZmlnLmhcIlxuIik7CisgICAgcHVz
aChAaW1wbENvbnRlbnRIZWFkZXIsICIjaW1wb3J0IFwiJGNsYXNzTmFtZS5oXCJcblxuIik7CisK
KyAgICBpZiAoJGhhc0Z1bmN0aW9uc09yQXR0cmlidXRlcykgeworICAgICAgICAjIE5FRURFRCBm
b3IgRE9NX0NBU1QKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIsICIjaW1wb3J0IFwi
RE9NSW50ZXJuYWwuaFwiIC8vIG5lZWRlZCBmb3IgRE9NX2Nhc3Q8PlxuIik7CisgICAgICAgIAor
ICAgICAgICAjIGluY2x1ZGUgbW9kdWxlIGRlcGVuZGFudCBpbnRlcm5hbCBpbnRlcmZhY2VzLgor
ICAgICAgICBpZiAoJG1vZHVsZSBlcSAiaHRtbCIpIHsKKyAgICAgICAgICAgICMgSFRNTCBtb2R1
bGUgaW50ZXJuYWwgaW50ZXJmYWNlcworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRIZWFk
ZXIsICIjaW1wb3J0IFwiRE9NSFRNTEludGVybmFsLmhcIlxuIik7CisgICAgICAgIH0gZWxzaWYg
KCRtb2R1bGUgZXEgImNzcyIpIHsKKyAgICAgICAgICAgICMgQ1NTIG1vZHVsZSBpbnRlcm5hbCBp
bnRlcmZhY2VzCisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudEhlYWRlciwgIiNpbXBvcnQg
XCJET01DU1NJbnRlcm5hbC5oXCJcbiIpOworICAgICAgICB9IGVsc2lmICgkbW9kdWxlIGVxICJl
dmVudHMiKSB7CisgICAgICAgICAgICAjIENTUyBtb2R1bGUgaW50ZXJuYWwgaW50ZXJmYWNlcwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIsICIjaW1wb3J0IFwiRE9NRXZlbnRz
SW50ZXJuYWwuaFwiXG4iKTsKKyAgICAgICAgfSBlbHNpZiAoJG1vZHVsZSBlcSAieHBhdGgiKSB7
CisgICAgICAgICAgICAjIENTUyBtb2R1bGUgaW50ZXJuYWwgaW50ZXJmYWNlcworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIsICIjaW1wb3J0IFwiRE9NWFBhdGhJbnRlcm5hbC5o
XCJcbiIpOworICAgICAgICB9CisKKyAgICAgICAgIyBpbmNsdWRlIEltcGxlbWVudGF0aW9uIGNs
YXNzCisgICAgICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAiI2ltcG9ydCBcIiRpbnRlcmZh
Y2VOYW1lLmhcIiAvLyBpbXBsZW1lbnRhdGlvbiBjbGFzc1xuIik7CisgICAgICAgIGlmICgkaW50
ZXJmYWNlTmFtZSBlcSAiRE9NSW1wbGVtZW50YXRpb24iKSB7CisgICAgICAgICAgICAjIEZJWE1F
OiBuZWVkZWQgdW50aWwgd2UgY2FuIHJlbW92ZSBET01JbXBsZW1lbnRhdGlvbkZyb250CisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudEhlYWRlciwgIiNpbXBvcnQgXCJET01JbXBsZW1lbnRh
dGlvbkZyb250LmhcIlxuIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAaW1wbENvbnRlbnQg
PSAoKTsKKworICAgICMgU1RBUlQgaW1wbGVtZW50YXRpb24KKyAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIlxuXEBpbXBsZW1lbnRhdGlvbiAkY2xhc3NOYW1lXG5cbiIpOworICAgIAorICAgICMgQURE
IElOVEVSTkFMIENBU1RJTkcgTUVUSE9ECisgICAgbXkgJGludGVybmFsQ2FzdGluZ05hbWUgPSAi
XyIgLiBsY2ZpcnN0KCRpbnRlcmZhY2VOYW1lKTsKKyAgICBteSAkaW1wbGVtZW50YXRpb24gPSAi
W3NlbGYgJGludGVybmFsQ2FzdGluZ05hbWVdIjsKKyAgICAKKyAgICBpZiAoJGhhc0Z1bmN0aW9u
c09yQXR0cmlidXRlcykgeworICAgICAgICBpZiAoJHBhcmVudEltcGxDbGFzc05hbWUgZXEgIk9i
amVjdCIpIHsKKyAgICAgICAgICAgICMgT25seSBnZW5lcmF0ZSAnZGVhbGxvYycgYW5kICdmaW5h
bGl6ZScgbWV0aG9kcyBmb3IgZGlyZWN0IHN1YmNsYXNzZXMgb2YgRE9NT2JqZWN0LgorCisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIi0gKHZvaWQpZGVhbGxvY1xuIik7CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKF9pbnRlcm5hbClcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIERPTV9jYXN0PCRpbXBsQ2xhc3NOYW1lICo+KF9pbnRlcm5hbCktPmRl
cmVmKCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFtzdXBlciBk
ZWFsbG9jXTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwor
CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIi0gKHZvaWQpZmluYWxpemVcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmIChfaW50ZXJuYWwpXG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICBET01fY2FzdDwkaW1wbENsYXNzTmFtZSAqPihfaW50ZXJu
YWwpLT5kZXJlZigpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBb
c3VwZXIgZmluYWxpemVdO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
blxuIik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiLSAo
JGltcGxDbGFzc05hbWUgKikkaW50ZXJuYWxDYXN0aW5nTmFtZVxuIik7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuIERPTV9jYXN0PCRpbXBsQ2xhc3NOYW1lICo+KF9pbnRlcm5hbCk7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKworICAgICAgICB9IGVs
c2UgeworICAgIAorICAgICAgICAgICAgbXkgJGludGVybmFsQmFzZVR5cGU7CisgICAgICAgICAg
ICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkNTU1ByaW1pdGl2ZVZhbHVlIikgeworICAgICAgICAg
ICAgICAgICMgRklYTUU6IHRoaXMgc2hvdWxkIGJlIGEgcmVnZXggbWF0Y2hpbmcgQ1NTLi4uVmFs
dWUuCisgICAgICAgICAgICAgICAgJGludGVybmFsQmFzZVR5cGUgPSAiV2ViQ29yZTo6Q1NTVmFs
dWUiCisgICAgICAgICAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFtZSBlcSAiQ1NTSW1wb3J0UnVs
ZSIgb3IgJGludGVyZmFjZU5hbWUgZXEgIkNTU0ZvbnRGYWNlUnVsZSIpIHsKKyAgICAgICAgICAg
ICAgICAjIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBhIHJlZ2V4IG1hdGNoaW5nIENTUy4uLlJ1bGUu
CisgICAgICAgICAgICAgICAgJGludGVybmFsQmFzZVR5cGUgPSAiV2ViQ29yZTo6Q1NTUnVsZSIK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJGludGVybmFsQmFzZVR5cGUg
PSAiV2ViQ29yZTo6Tm9kZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiLSAoJGltcGxDbGFzc05hbWUgKikkaW50ZXJuYWxDYXN0aW5nTmFtZVxuIik7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lICo+KERP
TV9jYXN0PCRpbnRlcm5hbEJhc2VUeXBlICo+KF9pbnRlcm5hbCkpO1xuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAj
IC0gQXR0cmlidXRlcworICAgIGlmICgkbnVtQXR0cmlidXRlcyA+IDApIHsKKyAgICAgICAgZm9y
ZWFjaCAoQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9KSB7CisgICAgICAgICAgICBteSAkYXR0cmli
dXRlID0gJF87CisKKyAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJPYmpDUHJpdmF0ZSJ9KSB7CisgICAgICAgICAgICAgICAgIyBGSVhN
RTogZm9yIG5vdywganVzdCBza2lwIG1ldGhvZHMgbm90IGFwcHJvdmVkIGZvciBBUEkgeWV0Cisg
ICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQWRkSW5j
bHVkZXNGb3JUeXBlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7CisKKyAgICAgICAgICAg
IG15ICRhdHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOworICAgICAg
ICAgICAgbXkgJGF0dHJpYnV0ZVR5cGUgPSBHZXRPYmpDVHlwZSgkYXR0cmlidXRlLT5zaWduYXR1
cmUtPnR5cGUpOworICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZUlzUmVhZG9ubHkgPSAoJGF0dHJp
YnV0ZS0+dHlwZSA9fiAvXnJlYWRvbmx5Lyk7CisKKyAgICAgICAgICAgICMgLSBHRVRURVIKKyAg
ICAgICAgICAgIG15ICRnZXR0ZXJTaWcgPSAiLSAoJGF0dHJpYnV0ZVR5cGUpJGF0dHJpYnV0ZU5h
bWVcbiI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICMgRXhjZXB0aW9uIGhhbmRsaW5nCisg
ICAgICAgICAgICBteSAkaGFzR2V0dGVyRXhjZXB0aW9uID0gQHskYXR0cmlidXRlLT5nZXR0ZXJF
eGNlcHRpb25zfTsKKyAgICAgICAgICAgIGlmICgkaGFzR2V0dGVyRXhjZXB0aW9uKSB7CisgICAg
ICAgICAgICAgICAgZGllICJXZSBzaG91bGQgbm90IGhhdmUgYW55IGdldHRlciBleGNlcHRpb25z
IHlldCEiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBteSAkZ2V0
dGVyQ29udGVudEhlYWQgPSAiJGltcGxlbWVudGF0aW9uLT4kYXR0cmlidXRlTmFtZSgiOworICAg
ICAgICAgICAgbXkgJGdldHRlckNvbnRlbnRUYWlsID0gIikiOworCisgICAgICAgICAgICBteSAk
YXR0cmlidXRlVHlwZVNhbnNQdHIgPSAkYXR0cmlidXRlVHlwZTsKKyAgICAgICAgICAgICRhdHRy
aWJ1dGVUeXBlU2Fuc1B0ciA9fiBzLyBcKiQvLzsgIyBSZW1vdmUgdHJhaWxpbmcgIiAqIiBmcm9t
IHBvaW50ZXIgdHlwZXMuCisgICAgICAgICAgICBteSAkdHlwZU1ha2VyID0gR2V0T2JqQ1R5cGVN
YWtlcigkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOworICAgICAgICAgICAgaWYgKCRhdHRy
aWJ1dGVUeXBlU2Fuc1B0ciBlcSAiRE9NSW1wbGVtZW50YXRpb24iKSB7CisgICAgICAgICAgICAg
ICAgIyBGSVhNRTogV2UgaGF2ZSB0byBzcGVjaWFsIGNhc2UgRE9NSW1wbGVtZW50YXRpb24gdW50
aWwgRE9NSW1wbGVtZW50YXRpb25Gcm9udCBpcyByZW1vdmVkCisgICAgICAgICAgICAgICAgJGdl
dHRlckNvbnRlbnRIZWFkID0gIlskYXR0cmlidXRlVHlwZVNhbnNQdHIgJHR5cGVNYWtlcjppbXBs
ZW1lbnRhdGlvbkZyb250KCRpbXBsZW1lbnRhdGlvbiI7CisgICAgICAgICAgICAgICAgJGdldHRl
ckNvbnRlbnRUYWlsIC49ICJdIjsKKyAgICAgICAgICAgIH0gZWxzaWYgKCR0eXBlTWFrZXIgbmUg
IiIpIHsKKyAgICAgICAgICAgICAgICAjIFN1cnJvdW5kIGdldHRlciB3aXRoIFR5cGVNYWtlcgor
ICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICJbJGF0dHJpYnV0ZVR5cGVTYW5z
UHRyICR0eXBlTWFrZXI6IiAuICRnZXR0ZXJDb250ZW50SGVhZDsKKyAgICAgICAgICAgICAgICAk
Z2V0dGVyQ29udGVudFRhaWwgLj0gIl0iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiVXNlc1Bhc3NSZWZQdHIifSkgeworICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50VGFp
bCA9ICIpLmdldCgiIC4gJGZ1bmN0aW9uQ29udGVudFRhaWw7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIG15ICRnZXR0ZXJDb250ZW50OworICAgICAgICAgICAgaWYg
KCRoYXNHZXR0ZXJFeGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudCA9
ICRnZXR0ZXJDb250ZW50SGVhZCAuICJlYyIgLiAkZ2V0dGVyQ29udGVudFRhaWw7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50ID0gJGdldHRlckNv
bnRlbnRIZWFkIC4gJGdldHRlckNvbnRlbnRUYWlsOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGdldHRlclNpZyk7CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgJGV4Y2VwdGlvbkluaXRcbiIpIGlmICRoYXNHZXR0ZXJFeGNlcHRpb247Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJGdldHRlckNvbnRlbnQ7
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRleGNlcHRpb25SYWlz
ZU9uRXJyb3JcbiIpIGlmICRoYXNHZXR0ZXJFeGNlcHRpb247CisgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIn1cblxuIik7CisKKyAgICAgICAgICAgICMgLSBTRVRURVIKKyAgICAgICAg
ICAgIGlmICghJGF0dHJpYnV0ZUlzUmVhZG9ubHkpIHsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICMgRXhjZXB0aW9uIGhhbmRsaW5nCisgICAgICAgICAgICAgICAgbXkgJGhhc1NldHRl
ckV4Y2VwdGlvbiA9IEB7JGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9uc307CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgbXkgJHNldHRlck5hbWUgPSAic2V0IiAuIHVjZmlyc3Qo
JGF0dHJpYnV0ZU5hbWUpOworICAgICAgICAgICAgICAgIG15ICRzZXR0ZXJTaWcgPSAiLSAodm9p
ZCkkc2V0dGVyTmFtZTooJGF0dHJpYnV0ZVR5cGUpJGF0dHJpYnV0ZU5hbWVcbiI7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRzZXR0ZXJTaWcp
OworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCRoYXNTZXR0ZXJFeGNlcHRpb24pIHsKKyAgICAg
ICAgICAgICAgICAgICAgIyBGSVhNRTogYXNzZXJ0cyBleHNpc3QgaW4gdGhlIGV4c2lzdGluZyBi
aW5kaW5ncywgYnV0IEkgYW0gdW5zdXJlIHdoeSB0aGV5IGFyZSAKKyAgICAgICAgICAgICAgICAg
ICAgIyB0aGVyZSBpbiB0aGUgZmlyc3QgcGxhY2U7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIEFTU0VSVCgkYXR0cmlidXRlTmFtZSk7XG5cbiIpOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAk
ZXhjZXB0aW9uSW5pdFxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICRpbXBsZW1lbnRhdGlvbi0+JHNldHRlck5hbWUoJGF0dHJpYnV0ZU5hbWUsIGVjKTtc
biIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkZXhjZXB0
aW9uUmFpc2VPbkVycm9yXG4iKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW1wbGVtZW50YXRpb24tPiRzZXR0
ZXJOYW1lKCRhdHRyaWJ1dGVOYW1lKTtcbiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAjIC0gRnVuY3Rpb25zCisgICAg
aWYgKCRudW1GdW5jdGlvbnMgPiAwKSB7CisgICAgICAgIGZvcmVhY2ggKEB7JGRhdGFOb2RlLT5m
dW5jdGlvbnN9KSB7CisgICAgICAgICAgICBteSAkZnVuY3Rpb24gPSAkXzsKKworICAgICAgICAg
ICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT2JqQ1By
aXZhdGUifSkgeworICAgICAgICAgICAgICAgICMgRklYTUU6IGZvciBub3csIGp1c3Qgc2tpcCBt
ZXRob2RzIG5vdCBhcHByb3ZlZCBmb3IgQVBJIHlldAorICAgICAgICAgICAgICAgIG5leHQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZSgkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+dHlwZSk7CisKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAgICAgICAgIG15ICRyZXR1cm5UeXBlID0gR2V0
T2JqQ1R5cGUoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpOworICAgICAgICAgICAgbXkgJGhh
c1BhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CisgICAgICAgICAgICBteSAk
cmFpc2VzRXhjZXB0aW9ucyA9IEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfTsKKworICAg
ICAgICAgICAgbXkgQHBhcmFtZXRlck5hbWVzID0gKCk7CisgICAgICAgICAgICBteSBAbmVlZHNB
c3NlcnQgPSAoKTsKKyAgICAgICAgICAgIG15ICVjdXN0b20gPSAoKTsKKworICAgICAgICAgICAg
bXkgJGZ1bmN0aW9uU2lnID0gIi0gKCRyZXR1cm5UeXBlKSRmdW5jdGlvbk5hbWUiOworICAgICAg
ICAgICAgZm9yZWFjaCAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7CisgICAgICAgICAgICAg
ICAgbXkgJHBhcmFtID0gJF87CisKKyAgICAgICAgICAgICAgICBteSAkcGFyYW1UeXBlID0gR2V0
T2JqQ1R5cGUoJHBhcmFtLT50eXBlKTsKKyAgICAgICAgICAgICAgICBBZGRJbmNsdWRlc0ZvclR5
cGUoJHBhcmFtLT50eXBlKTsKKworICAgICAgICAgICAgICAgIG15ICRwYXJhbU5hbWUgPSAkcGFy
YW0tPm5hbWU7CisKKyAgICAgICAgICAgICAgICAjIEZJWE1FOiBzaG91bGQgbW92ZSB0aGlzIG91
dCBpbnRvIGl0J3Mgb3duIGZ1Y3Rpb24gdG8gdGFrZSBjYXJlIG9mIHBvc3NpYmxlIHNwZWNpYWwg
Y2FzZXMuCisgICAgICAgICAgICAgICAgbXkgJGlkbFR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3Ry
aXBNb2R1bGUoJHBhcmFtLT50eXBlKTsKKyAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0
b3ItPklzUHJpbWl0aXZlVHlwZSgkaWRsVHlwZSkgb3IgJGlkbFR5cGUgZXEgIkRPTVN0cmluZyIp
IHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAcGFyYW1ldGVyTmFtZXMsICRwYXJhbU5hbWUp
OworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRpZGxUeXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIi
KSB7CisgICAgICAgICAgICAgICAgICAgIG15ICRpbXBsR2V0dGVyID0gIltuYXRpdmVSZXNvbHZl
ciBfeHBhdGhOU1Jlc29sdmVyXSI7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQHBhcmFtZXRl
ck5hbWVzLCAkaW1wbEdldHRlcik7CisgICAgICAgICAgICAgICAgICAgICRuZWVkc0N1c3RvbXsi
WFBhdGhOU1Jlc29sdmVyIn0gPSAkcGFyYW1OYW1lOworICAgICAgICAgICAgICAgIH0gZWxzaWYg
KCRpZGxUeXBlIGVxICJYUGF0aFJlc3VsdCIpIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGlt
cGxHZXR0ZXIgPSAiWyIgLiAkcGFyYW1OYW1lIC4gIiBfeHBhdGhSZXN1bHRdIjsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAcGFyYW1ldGVyTmFtZXMsICRpbXBsR2V0dGVyKTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBteSAkaW1wbEdldHRlciA9ICJb
IiAuICRwYXJhbU5hbWUgLiAiIF8iIC4gbGNmaXJzdCgkaWRsVHlwZSkgLiAiXSI7CisgICAgICAg
ICAgICAgICAgICAgIHB1c2goQHBhcmFtZXRlck5hbWVzLCAkaW1wbEdldHRlcik7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCEkcGFyYW0tPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJJc0luZGV4In0pIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAbmVlZHNBc3Nl
cnQsICIgICAgQVNTRVJUKCRwYXJhbU5hbWUpO1xuIik7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgJGZ1bmN0aW9uU2lnIC49ICI6KCRwYXJhbVR5cGUpJHBhcmFtTmFtZSAi
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgIyByZW1vdmUgYW55IHRyYWlsaW5nIHNwYWNl
cy4KKyAgICAgICAgCSRmdW5jdGlvblNpZyA9fiBzL1xzKyQvLzsKKworICAgICAgICAgICAgbXkg
QGZ1bmN0aW9uQ29udGVudCA9ICgpOworCisgICAgICAgICAgICBpZiAoJHJldHVyblR5cGUgZXEg
InZvaWQiKSB7CisgICAgICAgICAgICAgICAgIyBTcGVjaWFsIGNhc2UgJ3ZvaWQnIHJldHVybiB0
eXBlLgorCisgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uQ29udGVudEhlYWQgPSAiJGltcGxl
bWVudGF0aW9uLT4kZnVuY3Rpb25OYW1lKCI7CisgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9u
Q29udGVudFRhaWwgPSAiKTsiOworICAgICAgICAgICAgICAgIG15ICRjb250ZW50ID0gIiI7CisK
KyAgICAgICAgICAgICAgICBpZiAoJGhhc1BhcmFtZXRlcnMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbXkgJHBhcmFtcyA9IGpvaW4oIiwgIiwgQHBhcmFtZXRlck5hbWVzKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCRyYWlzZXNFeGNlcHRpb25zKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAkY29udGVudCA9ICRmdW5jdGlvbkNvbnRlbnRIZWFkIC4gJHBhcmFtcyAuICIsIGVjIiAuICRm
dW5jdGlvbkNvbnRlbnRUYWlsOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkZnVuY3Rpb25Db250ZW50SGVhZCAuICRwYXJh
bXMgLiAkZnVuY3Rpb25Db250ZW50VGFpbDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgkcmFpc2VzRXhjZXB0
aW9ucykgeworICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkZnVuY3Rpb25Db250
ZW50SGVhZCAuICJlYyIgLiAkZnVuY3Rpb25Db250ZW50VGFpbDsKKyAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gJGZ1bmN0aW9u
Q29udGVudEhlYWQgLiAkZnVuY3Rpb25Db250ZW50VGFpbDsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBp
ZiAoJHJhaXNlc0V4Y2VwdGlvbnMpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rp
b25Db250ZW50LCAiICAgICRleGNlcHRpb25Jbml0XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgICRjb250ZW50XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgICRleGNlcHRpb25SYWlzZU9uRXJyb3Jc
biIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QGZ1bmN0aW9uQ29udGVudCwgIiAgICAkY29udGVudFxuIik7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IG15ICRmdW5jdGlvbkNvbnRlbnRIZWFkID0gJGltcGxlbWVudGF0aW9uIC4gIi0+IiAuICRmdW5j
dGlvbk5hbWUgLiAiKCI7CisgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uQ29udGVudFRhaWwg
PSAiKSI7CisKKyAgICAgICAgICAgICAgICBteSAkdHlwZU1ha2VyID0gR2V0T2JqQ1R5cGVNYWtl
cigkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAgICAgICAgICAgdW5sZXNzICgk
dHlwZU1ha2VyIGVxICIiKSB7CisgICAgICAgICAgICAgICAgICAgIG15ICRyZXR1cm5UeXBlQ2xh
c3MgPSAiIjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50
eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAjIFNw
ZWNpYWwgY2FzZSBYUGF0aE5TUmVzb2x2ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICRyZXR1
cm5UeXBlQ2xhc3MgPSAiRE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyIjsKKyAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICMgUmVtb3ZlIHRyYWlsaW5n
ICIgKiIgZnJvbSBwb2ludGVyIHR5cGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgJHJldHVy
blR5cGVDbGFzcyA9ICRyZXR1cm5UeXBlOworICAgICAgICAgICAgICAgICAgICAgICAgJHJldHVy
blR5cGVDbGFzcyA9fiBzLyBcKiQvLzsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgICAgICMgU3Vycm91bmQgZ2V0dGVyIHdpdGggVHlwZU1ha2VyCisgICAgICAgICAg
ICAgICAgICAgICRmdW5jdGlvbkNvbnRlbnRIZWFkID0gIlskcmV0dXJuVHlwZUNsYXNzICR0eXBl
TWFrZXI6IiAuICRmdW5jdGlvbkNvbnRlbnRIZWFkOworICAgICAgICAgICAgICAgICAgICAkZnVu
Y3Rpb25Db250ZW50VGFpbCAuPSAiXSI7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVXNl
c1Bhc3NSZWZQdHIifSkgeworICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25Db250ZW50VGFp
bCA9ICIpLmdldCgiIC4gJGZ1bmN0aW9uQ29udGVudFRhaWw7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgbXkgJGNvbnRlbnQgPSAiIjsKKworICAgICAgICAgICAgICAgIGlm
ICgkaGFzUGFyYW1ldGVycykgeworICAgICAgICAgICAgICAgICAgICBteSAkcGFyYW1zID0gam9p
bigiLCAiICwgQHBhcmFtZXRlck5hbWVzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRyYWlz
ZXNFeGNlcHRpb25zKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAjIEEgdGVtcGFyYXJ5IHZh
cmlhYmxlIGlzIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gJGZ1
bmN0aW9uQ29udGVudEhlYWQgLiAkcGFyYW1zIC4gIiwgZWMiIC4gJGZ1bmN0aW9uQ29udGVudFRh
aWw7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAkY29udGVudCA9ICRmdW5jdGlvbkNvbnRlbnRIZWFkIC4gJHBhcmFtcyAuICRmdW5jdGlvbkNv
bnRlbnRUYWlsOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRyYWlzZXNFeGNlcHRpb25zKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAjIEEgdGVtcGFyYXJ5IHZhcmlhYmxlIGlzIG5lZWRlZC4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gJGZ1bmN0aW9uQ29udGVudEhlYWQgLiAiZWMi
IC4gJGZ1bmN0aW9uQ29udGVudFRhaWw7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9ICRmdW5jdGlvbkNvbnRlbnRIZWFkIC4g
JGZ1bmN0aW9uQ29udGVudFRhaWw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCRyYWlzZXNFeGNl
cHRpb25zKSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAg
ICAkZXhjZXB0aW9uSW5pdFxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9u
Q29udGVudCwgIiAgICAkcmV0dXJuVHlwZSByZXN1bHQgPSAkY29udGVudDtcbiIpOworICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgJGV4Y2VwdGlvblJhaXNl
T25FcnJvclxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwg
IiAgICByZXR1cm4gcmVzdWx0O1xuIik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgIHJldHVybiAkY29udGVu
dDtcbiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIkZnVuY3Rpb25TaWdcbiIpOworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgIyBzcGVjaWFs
IGNhc2UgdGhlIFhQYXRoTlNSZXNvbHZlcgorICAgICAgICAgICAgaWYgKGRlZmluZWQgJG5lZWRz
Q3VzdG9teyJYUGF0aE5TUmVzb2x2ZXIifSkgeworICAgICAgICAgICAgICAgIG15ICRwYXJhbU5h
bWUgPSAkbmVlZHNDdXN0b217IlhQYXRoTlNSZXNvbHZlciJ9OworICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmICgkcGFyYW1OYW1lICYmICFbJHBhcmFtTmFtZSBpc01l
bWJlck9mQ2xhc3M6W0RPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciBjbGFzc11dKVxuIik7CisgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlz
ZTpOU0dlbmVyaWNFeGNlcHRpb24gZm9ybWF0OlxAXCJjcmVhdGVFeHByZXNzaW9uIGN1cnJlbnRs
eSBkb2VzIG5vdCB3b3JrIHdpdGggY3VzdG9tIE5TIHJlc29sdmVyc1wiXTtcbiIpOworICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZl
ciAqbmF0aXZlUmVzb2x2ZXIgPSAoRE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyICopJHBhcmFtTmFt
ZTtcblxuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
KTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBAZnVuY3Rpb25Db250ZW50KTsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgIyBDbGVhciB0aGUgaGFzaAorICAgICAgICAgICAgJW5lZWRzQ3VzdG9tID0gKCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICAjIEVORCBpbXBsZW1lbnRhdGlvbgorICAgIHB1c2go
QGltcGxDb250ZW50LCAiXEBlbmRcbiIpOworfQorCisjIEludGVybmFsIGhlbHBlcgorc3ViIFdy
aXRlRGF0YQoreworICAgIGlmIChkZWZpbmVkKCRJTVBMKSkgeworICAgICAgICAjIFdyaXRlIGNv
bnRlbnQgdG8gZmlsZS4KKyAgICAgICAgcHJpbnQgJElNUEwgQGltcGxDb250ZW50SGVhZGVyOwor
ICAgICAgICAKKyAgICAgICAgZm9yZWFjaCBteSAkaW1wbEluY2x1ZGUgKHNvcnQga2V5cyglaW1w
bEluY2x1ZGVzKSkgeworICAgICAgICAgICAgcHJpbnQgJElNUEwgIiNpbXBvcnQgXCIkaW1wbElu
Y2x1ZGVcIlxuIjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHJpbnQgJElNUEwgQGlt
cGxDb250ZW50OworICAgICAgICBjbG9zZSgkSU1QTCk7CisgICAgICAgIHVuZGVmKCRJTVBMKTsK
KyAgICAgICAgCisgICAgICAgIEBpbXBsSGVhZGVyQ29udGVudCA9ICIiOworICAgICAgICBAaW1w
bENvbnRlbnQgPSAiIjsgICAgCisgICAgICAgICVpbXBsSW5jbHVkZXMgPSAoKTsKKyAgICB9Cisg
ICAgICAgIAorICAgIGlmIChkZWZpbmVkKCRIRUFERVIpKSB7CisgICAgICAgICMgV3JpdGUgY29u
dGVudCB0byBmaWxlLgorICAgICAgICBwcmludCAkSEVBREVSIEBoZWFkZXJDb250ZW50SGVhZGVy
OworICAgICAgICAKKyAgICAgICAgZm9yZWFjaCBteSAkZm9yd2FyZENsYXNzRGVjbGFyYXRpb24g
KHNvcnQga2V5cyglaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9ucykpIHsKKyAgICAgICAgICAgIHBy
aW50ICRIRUFERVIgIlxAY2xhc3MgJGZvcndhcmRDbGFzc0RlY2xhcmF0aW9uO1xuIjsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgZm9yZWFjaCBteSAkZm9yd2FyZFByb3RvY29sRGVjbGFy
YXRpb24gKHNvcnQga2V5cyglaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9uc0ZvclByb3RvY29scykp
IHsKKyAgICAgICAgICAgIHByaW50ICRIRUFERVIgIlxAcHJvdG9jb2wgJGZvcndhcmRQcm90b2Nv
bERlY2xhcmF0aW9uO1xuIjsKKyAgICAgICAgfQorCisgICAgICAgIHByaW50ICRIRUFERVIgQGhl
YWRlckNvbnRlbnQ7CisgICAgICAgIGNsb3NlKCRIRUFERVIpOworICAgICAgICB1bmRlZigkSEVB
REVSKTsKKyAgICAgICAgCisgICAgICAgIEBoZWFkZXJDb250ZW50SGVhZGVyID0gIiI7CisgICAg
ICAgIEBoZWFkZXJDb250ZW50ID0gIiI7CisgICAgICAgICVoZWFkZXJGb3J3YXJkRGVjbGFyYXRp
b25zID0gKCk7CisgICAgfQorfQorCisxOwpJbmRleDogV2ViQ29yZS9kb20vQXR0ci5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vQXR0ci5pZGwJKHJldmlzaW9uIDE1OTk3KQorKysgV2Vi
Q29yZS9kb20vQXR0ci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTM0LDcgKzM1LDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICAKICAgICAgICAg
Ly8gZXh0ZW5zaW9ucwogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NTdHlsZURlY2xh
cmF0aW9uIHN0eWxlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW09iakNDYXRhZ29yeT1E
T01BdHRyRXh0ZW5zaW9uc10gQ1NTU3R5bGVEZWNsYXJhdGlvbiBzdHlsZTsKICAgICB9OwogCiB9
CkluZGV4OiBXZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0NEQVRBU2VjdGlvbi5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9DREFU
QVNlY3Rpb24uaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRl
IDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKK21vZHVsZSBjb3Jl
IHsKKworICAgIGludGVyZmFjZSBDREFUQVNlY3Rpb24gOiBUZXh0IHsKKyAgICB9OworCit9Cklu
ZGV4OiBXZWJDb3JlL2RvbS9Db21tZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9D
b21tZW50LmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0NvbW1lbnQuaWRsCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVl
bCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKK21vZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFj
ZSBDb21tZW50IDogQ2hhcmFjdGVyRGF0YSB7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9k
b20vRE9NSW1wbGVtZW50YXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RPTUlt
cGxlbWVudGF0aW9uLmlkbAkocmV2aXNpb24gMTU5OTcpCisrKyBXZWJDb3JlL2RvbS9ET01JbXBs
ZW1lbnRhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTI4LDI0ICsyOSwyNCBAQCBtb2R1bGUgY29yZSB7CiAKICAgICAgICAgLy8gRE9NIExl
dmVsIDIKIAotICAgICAgICBEb2N1bWVudFR5cGUgY3JlYXRlRG9jdW1lbnRUeXBlKGluIERPTVN0
cmluZyBxdWFsaWZpZWROYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIERPTVN0cmluZyBwdWJsaWNJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBET01TdHJpbmcgc3lzdGVtSWQpCisgICAgICAgIFtVc2VzUGFzc1JlZlB0
cl0gRG9jdW1lbnRUeXBlIGNyZWF0ZURvY3VtZW50VHlwZShpbiBET01TdHJpbmcgcXVhbGlmaWVk
TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIERPTVN0cmluZyBwdWJsaWNJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBzeXN0ZW1JZCkKICAg
ICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICBEb2N1bWVudCBjcmVhdGVE
b2N1bWVudChpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBuYW1lc3BhY2VV
UkksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbQ29udmVydE51bGxUb051
bGxTdHJpbmddIERPTVN0cmluZyBxdWFsaWZpZWROYW1lLCAKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBEb2N1bWVudFR5cGUgZG9j
dHlwZSkKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBEb2N1bWVudCBjcmVhdGVEb2N1bWVudChp
biBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBuYW1lc3BhY2VVUkksIAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtDb252ZXJ0
TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtDb252ZXJ0TnVsbFRvTnVs
bFN0cmluZ10gRG9jdW1lbnRUeXBlIGRvY3R5cGUpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKIAogICAgICAgICAvLyBET01JbXBsZW1lbnRhdGlvbkNTUyBpbnRlcmZhY2UgZnJv
bSBET00gTGV2ZWwgMiBDU1MKIAotICAgICAgICBDU1NTdHlsZVNoZWV0IGNyZWF0ZUNTU1N0eWxl
U2hlZXQoaW4gRE9NU3RyaW5nIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gRE9NU3RyaW5nIG1lZGlhKQorICAgICAgICBbT2JqQ0NhdGFnb3J5PURP
TUltcGxlbWVudGF0aW9uQ1NTLCBVc2VzUGFzc1JlZlB0cl0gQ1NTU3R5bGVTaGVldCBjcmVhdGVD
U1NTdHlsZVNoZWV0KGluIERPTVN0cmluZyB0aXRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBET01TdHJpbmcgbWVkaWEpCiAgICAgICAgICAgICByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKIAogICAgICAgICAvLyBIVE1MRE9NSW1wbGVtZW50YXRpb24gaW50ZXJmYWNl
IGZyb20gRE9NIExldmVsIDIgSFRNTAogCi0gICAgICAgIEhUTUxEb2N1bWVudCBjcmVhdGVIVE1M
RG9jdW1lbnQoaW4gRE9NU3RyaW5nIHRpdGxlKTsKKyAgICAgICAgW09iakNDYXRhZ29yeT1ET01J
bXBsZW1lbnRhdGlvbkV4dGVuc2lvbnMsIFVzZXNQYXNzUmVmUHRyXSBIVE1MRG9jdW1lbnQgY3Jl
YXRlSFRNTERvY3VtZW50KGluIERPTVN0cmluZyB0aXRsZSk7CiAgICAgfTsKIAogfQpJbmRleDog
V2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3Vt
ZW50LmlkbAkocmV2aXNpb24gMTU5OTcpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFw
cGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8
c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI5LDE0NCArMzAs
MTQ1IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBFbGVtZW50IGRvY3VtZW50RWxlbWVudDsKICAgICAgICAgCi0gICAgICAgIEVsZW1lbnQgY3Jl
YXRlRWxlbWVudChpbiBET01TdHJpbmcgdGFnTmFtZSkKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRy
XSBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoaW4gRE9NU3RyaW5nIHRhZ05hbWUpCiAgICAgICAgICAg
ICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIAotICAgICAgICBEb2N1bWVudEZyYWdt
ZW50IGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBE
b2N1bWVudEZyYWdtZW50IGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAgICAgCi0gICAg
ICAgIFRleHQgY3JlYXRlVGV4dE5vZGUoaW4gRE9NU3RyaW5nIGRhdGEpOworICAgICAgICBbVXNl
c1Bhc3NSZWZQdHJdIFRleHQgY3JlYXRlVGV4dE5vZGUoaW4gRE9NU3RyaW5nIGRhdGEpOwogICAg
ICAgICAKLSAgICAgICAgQ29tbWVudCBjcmVhdGVDb21tZW50KGluIERPTVN0cmluZyBkYXRhKTsK
KyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBDb21tZW50IGNyZWF0ZUNvbW1lbnQoaW4gRE9NU3Ry
aW5nIGRhdGEpOwogICAgICAgICAKLSAgICAgICAgQ0RBVEFTZWN0aW9uIGNyZWF0ZUNEQVRBU2Vj
dGlvbihpbiBET01TdHJpbmcgZGF0YSkKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBDREFUQVNl
Y3Rpb24gY3JlYXRlQ0RBVEFTZWN0aW9uKGluIERPTVN0cmluZyBkYXRhKQogICAgICAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIAotICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24gY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGluIERPTVN0cmluZyB0YXJnZXQsIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIERPTVN0cmluZyBkYXRhKQorICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbiBjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oaW4gRE9NU3RyaW5nIHRhcmdl
dCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgZGF0YSkKICAgICAgICAgICAgIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgCi0gICAgICAgIEF0dHIgY3JlYXRlQXR0cmli
dXRlKGluIERPTVN0cmluZyBuYW1lKQorICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIEF0dHIgY3Jl
YXRlQXR0cmlidXRlKGluIERPTVN0cmluZyBuYW1lKQogICAgICAgICAgICAgcmFpc2VzIChET01F
eGNlcHRpb24pOwogICAgICAgICAKLSAgICAgICAgRW50aXR5UmVmZXJlbmNlIGNyZWF0ZUVudGl0
eVJlZmVyZW5jZShpbiBET01TdHJpbmcgbmFtZSkKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBF
bnRpdHlSZWZlcmVuY2UgY3JlYXRlRW50aXR5UmVmZXJlbmNlKGluIERPTVN0cmluZyBuYW1lKQog
ICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIAotICAgICAgICBOb2Rl
TGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZShpbiBET01TdHJpbmcgdGFnbmFtZSk7CisgICAgICAg
IFtVc2VzUGFzc1JlZlB0cl0gTm9kZUxpc3QgZ2V0RWxlbWVudHNCeVRhZ05hbWUoaW4gRE9NU3Ry
aW5nIHRhZ25hbWUpOwogICAgICAgICAKICAgICAgICAgLy8gRE9NIExldmVsIDIgQ29yZQogICAg
ICAgICAKLSAgICAgICAgTm9kZSBpbXBvcnROb2RlKGluIE5vZGUgaW1wb3J0ZWROb2RlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBkZWVwKQorICAgICAgICBbVXNlc1Bhc3NS
ZWZQdHJdIE5vZGUgaW1wb3J0Tm9kZShpbiBOb2RlIGltcG9ydGVkTm9kZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBkZWVwKQogICAgICAgICAg
ICAgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICAKLSAgICAgICAgRWxlbWVudCBjcmVh
dGVFbGVtZW50TlMoaW4gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpCisgICAgICAgIFtVc2Vz
UGFzc1JlZlB0cl0gRWxlbWVudCBjcmVhdGVFbGVtZW50TlMoaW4gRE9NU3RyaW5nIG5hbWVzcGFj
ZVVSSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSkKICAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0
aW9uKTsKICAgICAgICAgCi0gICAgICAgIEF0dHIgY3JlYXRlQXR0cmlidXRlTlMoaW4gRE9NU3Ry
aW5nIG5hbWVzcGFjZVVSSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01T
dHJpbmcgcXVhbGlmaWVkTmFtZSkKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBBdHRyIGNyZWF0
ZUF0dHJpYnV0ZU5TKGluIERPTVN0cmluZyBuYW1lc3BhY2VVUkksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgcXVhbGlmaWVkTmFt
ZSkKICAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgCi0gICAgICAg
IE5vZGVMaXN0IGdldEVsZW1lbnRzQnlUYWdOYW1lTlMoaW4gRE9NU3RyaW5nIG5hbWVzcGFjZVVS
SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcg
bG9jYWxOYW1lKTsKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBOb2RlTGlzdCBnZXRFbGVtZW50
c0J5VGFnTmFtZU5TKGluIERPTVN0cmluZyBuYW1lc3BhY2VVUkksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgbG9j
YWxOYW1lKTsKICAgICAgICAgCiAgICAgICAgIEVsZW1lbnQgZ2V0RWxlbWVudEJ5SWQoaW4gRE9N
U3RyaW5nIGVsZW1lbnRJZCk7CiAKICAgICAgICAgLy8gRE9NIExldmVsIDIgRXZlbnRzIChEb2N1
bWVudEV2ZW50cyBpbnRlcmZhY2UpCiAKLSAgICAgICAgRXZlbnQgY3JlYXRlRXZlbnQoaW4gRE9N
U3RyaW5nIGV2ZW50VHlwZSkKKyAgICAgICAgW09iakNDYXRhZ29yeT1ET01Eb2N1bWVudEV2ZW50
LCBVc2VzUGFzc1JlZlB0cl0gRXZlbnQgY3JlYXRlRXZlbnQoaW4gRE9NU3RyaW5nIGV2ZW50VHlw
ZSkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgICAgIC8vIERPTSBM
ZXZlbCAyIFRyYW52ZXJzYWwgYW5kIFJhbmdlIChEb2N1bWVudFJhbmdlIGludGVyZmFjZSkKIAot
ICAgICAgICBSYW5nZSBjcmVhdGVSYW5nZSgpOworICAgICAgICBbT2JqQ0NhdGFnb3J5PURPTURv
Y3VtZW50UmFuZ2UsIFVzZXNQYXNzUmVmUHRyXSBSYW5nZSBjcmVhdGVSYW5nZSgpOwogCiAgICAg
ICAgIC8vIERPTSBMZXZlbCAyIFRyYW52ZXJzYWwgYW5kIFJhbmdlIChEb2N1bWVudFRyYXZlcnNh
bCBpbnRlcmZhY2UpCiAKLSAgICAgICAgTm9kZUl0ZXJhdG9yIGNyZWF0ZU5vZGVJdGVyYXRvcihp
biBOb2RlIHJvb3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IHVuc2lnbmVkIGxvbmcgd2hhdFRvU2hvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBOb2RlRmlsdGVyIGZpbHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGVudGl0eVJlZmVyZW5jZUV4cGFuc2lvbikKKyAg
ICAgICAgW09iakNQcml2YXRlXSBOb2RlSXRlcmF0b3IgY3JlYXRlTm9kZUl0ZXJhdG9yKGluIE5v
ZGUgcm9vdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiB1bnNpZ25lZCBsb25nIHdoYXRUb1Nob3csCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBOb2RlRmlsdGVyIGZpbHRlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IGJvb2xlYW4gZW50aXR5UmVmZXJlbmNlRXhwYW5zaW9uKQogICAgICAgICAgICAgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CiAKLSAgICAgICAgVHJlZVdhbGtlciBjcmVhdGVUcmVlV2Fsa2VyKGluIE5v
ZGUgcm9vdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB1bnNpZ25l
ZCBsb25nIHdoYXRUb1Nob3csIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gTm9kZUZpbHRlciBmaWx0ZXIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gYm9vbGVhbiBlbnRpdHlSZWZlcmVuY2VFeHBhbnNpb24pCisgICAgICAgIFtPYmpDUHJp
dmF0ZV0gVHJlZVdhbGtlciBjcmVhdGVUcmVlV2Fsa2VyKGluIE5vZGUgcm9vdCwgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHVuc2lnbmVkIGxv
bmcgd2hhdFRvU2hvdywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIE5vZGVGaWx0ZXIgZmlsdGVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBlbnRpdHlSZWZlcmVuY2VFeHBh
bnNpb24pCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICAvLyBE
T00gTGV2ZWwgMiBBYnN0cmFjdCBWaWV3cyAoRG9jdW1lbnRWaWV3IGludGVyZmFjZSkKIAotICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IGRlZmF1bHRWaWV3OworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgW09iakNDYXRhZ29yeT1ET01Eb2N1bWVudFZpZXddIERPTVdpbmRv
dyBkZWZhdWx0VmlldzsKIAogICAgICAgICAvLyBET00gTGV2ZWwgMiBTdHlsZSAoRG9jdW1lbnRT
dHlsZSBpbnRlcmZhY2UpCiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFN0eWxlU2hlZXRM
aXN0IHN0eWxlU2hlZXRzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW09iakNDYXRhZ29y
eT1ET01Eb2N1bWVudFN0eWxlXSBTdHlsZVNoZWV0TGlzdCBzdHlsZVNoZWV0czsKIAogICAgICAg
ICAvLyBET00gTGV2ZWwgMiBTdHlsZSAoRG9jdW1lbnRDU1MgaW50ZXJmYWNlKQogCi0gICAgICAg
IENTU1N0eWxlRGVjbGFyYXRpb24gZ2V0T3ZlcnJpZGVTdHlsZShpbiBFbGVtZW50IGVsdCwgCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcg
cHNldWRvRWx0KTsKKyAgICAgICAgW09iakNDYXRhZ29yeT1ET01Eb2N1bWVudENTU10gQ1NTU3R5
bGVEZWNsYXJhdGlvbiBnZXRPdmVycmlkZVN0eWxlKGluIEVsZW1lbnQgZWx0LCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIERPTVN0cmluZyBwc2V1ZG9FbHQpOwogCiAgICAgICAgIC8vIERPTSBMZXZl
bCAzIENvcmUKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5n
VG89TnVsbF0gRE9NU3RyaW5nIGlucHV0RW5jb2Rpbmc7Ci0gICAgICAgIE5vZGUgYWRvcHROb2Rl
KGluIE5vZGUgc291cmNlKQorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxs
U3RyaW5nVG89TnVsbCwgT2JqQ1ByaXZhdGVdIERPTVN0cmluZyBpbnB1dEVuY29kaW5nOworICAg
ICAgICAKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBOb2RlIGFkb3B0Tm9kZShpbiBOb2RlIHNv
dXJjZSkKICAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIAogI2lmZGVmIFhQQVRI
X1NVUFBPUlQKICAgICAgICAgLy8gRE9NIExldmVsIDMgWFBhdGggKFhQYXRoRXZhbHVhdG9yIGlu
dGVyZmFjZSkKLSAgICAgICAgWFBhdGhFeHByZXNzaW9uIGNyZWF0ZUV4cHJlc3Npb24oaW4gRE9N
U3RyaW5nIGV4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIFhQYXRoTlNSZXNvbHZlciByZXNvbHZlcikKKyAgICAgICAgW09iakNDYXRhZ29yeT1E
T01Eb2N1bWVudFhQYXRoLCBVc2VzUGFzc1JlZlB0cl0gWFBhdGhFeHByZXNzaW9uIGNyZWF0ZUV4
cHJlc3Npb24oaW4gRE9NU3RyaW5nIGV4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIFhQYXRoTlNSZXNvbHZlciByZXNvbHZlcikKICAgICAgICAgICAgIHJhaXNl
cyhET01FeGNlcHRpb24pOwogCi0gICAgICAgIFhQYXRoTlNSZXNvbHZlciBjcmVhdGVOU1Jlc29s
dmVyKGluIE5vZGUgbm9kZVJlc29sdmVyKTsKKyAgICAgICAgW09iakNDYXRhZ29yeT1ET01Eb2N1
bWVudFhQYXRoLCBVc2VzUGFzc1JlZlB0cl0gWFBhdGhOU1Jlc29sdmVyIGNyZWF0ZU5TUmVzb2x2
ZXIoaW4gTm9kZSBub2RlUmVzb2x2ZXIpOwogICAgICAgICAKLSAgICAgICAgWFBhdGhSZXN1bHQg
ZXZhbHVhdGUoaW4gRE9NU3RyaW5nIGV4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIE5vZGUgY29udGV4dE5vZGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBYUGF0aE5TUmVzb2x2ZXIgcmVzb2x2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIHVuc2lnbmVkIHNob3J0IHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIFhQYXRoUmVzdWx0IGluUmVzdWx0KQorICAgICAgICBbT2JqQ0NhdGFnb3J5PURPTURvY3Vt
ZW50WFBhdGgsIFVzZXNQYXNzUmVmUHRyXSBYUGF0aFJlc3VsdCBldmFsdWF0ZShpbiBET01TdHJp
bmcgZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gTm9kZSBjb250ZXh0Tm9kZSwg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIFhQYXRoTlNSZXNvbHZlciByZXNvbHZlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gdW5zaWduZWQgc2hvcnQgdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gWFBhdGhSZXN1bHQgaW5SZXN1bHQpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKICNlbmRpZgogCiAgICAgICAgIC8vIENvbW1vbiBleHRlbnNpb25zCiAKLSAgICAgICAg
Ym9vbGVhbiBleGVjQ29tbWFuZChpbiBET01TdHJpbmcgY29tbWFuZCwgCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gYm9vbGVhbiB1c2VySW50ZXJmYWNlLCAKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBET01TdHJpbmcgdmFsdWUpOworICAgICAgICBbT2JqQ1ByaXZhdGVd
IGJvb2xlYW4gZXhlY0NvbW1hbmQoaW4gRE9NU3RyaW5nIGNvbW1hbmQsIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiB1c2VySW50ZXJmYWNlLCAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyB2
YWx1ZSk7CiAKLSAgICAgICAgYm9vbGVhbiBxdWVyeUNvbW1hbmRFbmFibGVkKGluIERPTVN0cmlu
ZyBjb21tYW5kKTsKKyAgICAgICAgW09iakNQcml2YXRlXSBib29sZWFuIHF1ZXJ5Q29tbWFuZEVu
YWJsZWQoaW4gRE9NU3RyaW5nIGNvbW1hbmQpOwogCi0gICAgICAgIGJvb2xlYW4gcXVlcnlDb21t
YW5kSW5kZXRlcm0oaW4gRE9NU3RyaW5nIGNvbW1hbmQpOworICAgICAgICBbT2JqQ1ByaXZhdGVd
IGJvb2xlYW4gcXVlcnlDb21tYW5kSW5kZXRlcm0oaW4gRE9NU3RyaW5nIGNvbW1hbmQpOwogCi0g
ICAgICAgIGJvb2xlYW4gcXVlcnlDb21tYW5kU3RhdGUoaW4gRE9NU3RyaW5nIGNvbW1hbmQpOwor
ICAgICAgICBbT2JqQ1ByaXZhdGVdIGJvb2xlYW4gcXVlcnlDb21tYW5kU3RhdGUoaW4gRE9NU3Ry
aW5nIGNvbW1hbmQpOwogCi0gICAgICAgIGJvb2xlYW4gcXVlcnlDb21tYW5kU3VwcG9ydGVkKGlu
IERPTVN0cmluZyBjb21tYW5kKTsKKyAgICAgICAgW09iakNQcml2YXRlXSBib29sZWFuIHF1ZXJ5
Q29tbWFuZFN1cHBvcnRlZChpbiBET01TdHJpbmcgY29tbWFuZCk7CiAKLSAgICAgICAgW0NvbnZl
cnROdWxsU3RyaW5nVG89RmFsc2VdIERPTVN0cmluZyBxdWVyeUNvbW1hbmRWYWx1ZShpbiBET01T
dHJpbmcgY29tbWFuZCk7CisgICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPUZhbHNlLCBPYmpD
UHJpdmF0ZV0gRE9NU3RyaW5nIHF1ZXJ5Q29tbWFuZFZhbHVlKGluIERPTVN0cmluZyBjb21tYW5k
KTsKIAogICAgICAgICAvLyBJRSBleHRlbnNpb25zCiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBVUkw7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbT2JqQ1ByaXZh
dGVdIERPTVN0cmluZyBVUkw7CiAKLSAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFN0cmlu
Z1RvPVVuZGVmaW5lZF0gRE9NU3RyaW5nIGNoYXJzZXQ7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29u
dmVydE51bGxTdHJpbmdUbz1VbmRlZmluZWQsIE9iakNQcml2YXRlXSBET01TdHJpbmcgY2hhcnNl
dDsKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5nVG89VW5k
ZWZpbmVkXSBET01TdHJpbmcgZGVmYXVsdENoYXJzZXQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBbQ29udmVydE51bGxTdHJpbmdUbz1VbmRlZmluZWQsIE9iakNQcml2YXRlXSBET01TdHJp
bmcgZGVmYXVsdENoYXJzZXQ7CiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0
TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0gRE9NU3RyaW5nIHJlYWR5U3RhdGU7CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJpbmdUbz1VbmRlZmluZWQsIE9iakNQcml2
YXRlXSBET01TdHJpbmcgcmVhZHlTdGF0ZTsKIAotICAgICAgICBFbGVtZW50IGVsZW1lbnRGcm9t
UG9pbnQoaW4gbG9uZyB4LCBpbiBsb25nIHkpOworICAgICAgICBbT2JqQ1ByaXZhdGVdIEVsZW1l
bnQgZWxlbWVudEZyb21Qb2ludChpbiBsb25nIHgsIGluIGxvbmcgeSk7CiAKICAgICAgICAgLy8g
TW96aWxsYSBleHRlbnNpb25zCiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0
TnVsbFN0cmluZ1RvPU51bGxdIERPTVN0cmluZyBjaGFyYWN0ZXJTZXQ7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJpbmdUbz1OdWxsLCBPYmpDUHJpdmF0ZV0gRE9N
U3RyaW5nIGNoYXJhY3RlclNldDsKIAogICAgICAgICAvLyBXZWJLaXQgZXh0ZW5zaW9ucwogCi0g
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJpbmdUbz1OdWxsXSBET01T
dHJpbmcgcHJlZmVycmVkU3R5bGVzaGVldFNldDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFtDb252ZXJ0TnVsbFN0cmluZ1RvPU51bGwsIE9iakNQcml2YXRlXSBET01TdHJpbmcgcHJlZmVy
cmVkU3R5bGVzaGVldFNldDsKIAotICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5n
VG89TnVsbF0gRE9NU3RyaW5nIHNlbGVjdGVkU3R5bGVzaGVldFNldDsKKyAgICAgICAgYXR0cmli
dXRlIFtDb252ZXJ0TnVsbFN0cmluZ1RvPU51bGwsIE9iakNQcml2YXRlXSBET01TdHJpbmcgc2Vs
ZWN0ZWRTdHlsZXNoZWV0U2V0OwogCiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9kb20vRWxlbWVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHJldmlzaW9uIDE1
OTk3KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM0LDE1ICszNSwxNSBAQCBtb2R1bGUgY29yZSB7CiAg
ICAgICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGluIERPTVN0cmluZyBuYW1lKQogICAgICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKLSAgICAgICAgQXR0ciBnZXRBdHRyaWJ1dGVOb2Rl
KGluIERPTVN0cmluZyBuYW1lKTsKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBBdHRyIGdldEF0
dHJpYnV0ZU5vZGUoaW4gRE9NU3RyaW5nIG5hbWUpOwogCi0gICAgICAgIEF0dHIgc2V0QXR0cmli
dXRlTm9kZShpbiBBdHRyIG5ld0F0dHIpCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gQXR0ciBz
ZXRBdHRyaWJ1dGVOb2RlKGluIEF0dHIgbmV3QXR0cikKICAgICAgICAgICAgIHJhaXNlcyhET01F
eGNlcHRpb24pOwogCi0gICAgICAgIEF0dHIgcmVtb3ZlQXR0cmlidXRlTm9kZShpbiBBdHRyIG9s
ZEF0dHIpCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gQXR0ciByZW1vdmVBdHRyaWJ1dGVOb2Rl
KGluIEF0dHIgb2xkQXR0cikKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCi0g
ICAgICAgIE5vZGVMaXN0IGdldEVsZW1lbnRzQnlUYWdOYW1lKGluIERPTVN0cmluZyBuYW1lKTsK
KyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBOb2RlTGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZShp
biBET01TdHJpbmcgbmFtZSk7CiAKICAgICAgICAgLy8gRE9NIExldmVsIDIgQ29yZQogCkBAIC01
OCwxMyArNTksMTMgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIERPTVN0cmluZyBsb2NhbE5hbWUpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKIAotICAgICAgICBOb2RlTGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKGluIFtDb252
ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgbG9jYWxOYW1lKTsKKyAg
ICAgICAgW1VzZXNQYXNzUmVmUHRyXSBOb2RlTGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKGlu
IFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERP
TVN0cmluZyBsb2NhbE5hbWUpOwogCi0gICAgICAgIEF0dHIgZ2V0QXR0cmlidXRlTm9kZU5TKGlu
IFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIGxvY2FsTmFtZSk7CisgICAg
ICAgIFtVc2VzUGFzc1JlZlB0cl0gQXR0ciBnZXRBdHRyaWJ1dGVOb2RlTlMoaW4gW0NvbnZlcnRO
dWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBsb2NhbE5hbWUp
OwogCi0gICAgICAgIEF0dHIgc2V0QXR0cmlidXRlTm9kZU5TKGluIEF0dHIgbmV3QXR0cikKKyAg
ICAgICAgW1VzZXNQYXNzUmVmUHRyXSBBdHRyIHNldEF0dHJpYnV0ZU5vZGVOUyhpbiBBdHRyIG5l
d0F0dHIpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICBib29s
ZWFuIGhhc0F0dHJpYnV0ZShpbiBET01TdHJpbmcgbmFtZSk7CkBAIC03Miw1MyArNzMsNTMgQEAg
bW9kdWxlIGNvcmUgewogICAgICAgICBib29sZWFuIGhhc0F0dHJpYnV0ZU5TKGluIFtDb252ZXJ0
TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgbG9jYWxOYW1lKTsKIAotICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgQ1NTU3R5bGVEZWNsYXJhdGlvbiBzdHlsZTsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFtPYmpDQ2F0YWdvcnk9RE9NRWxlbWVudENTU0lubGluZVN0eWxlXSBDU1NT
dHlsZURlY2xhcmF0aW9uIHN0eWxlOwogCiAgICAgICAgIC8vIENvbW1vbiBleHRlbnNpb25zCiAK
LSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgb2Zmc2V0TGVmdDsKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFtPYmpDQ2F0YWdvcnk9RE9NRWxlbWVudEV4dGVuc2lvbnNdIGxvbmcg
b2Zmc2V0TGVmdDsKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBvZmZzZXRUb3A7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbT2JqQ0NhdGFnb3J5PURPTUVsZW1lbnRFeHRl
bnNpb25zXSBsb25nIG9mZnNldFRvcDsKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9u
ZyBvZmZzZXRXaWR0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtPYmpDQ2F0YWdvcnk9
RE9NRWxlbWVudEV4dGVuc2lvbnNdIGxvbmcgb2Zmc2V0V2lkdGg7CiAKLSAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGxvbmcgb2Zmc2V0SGVpZ2h0OworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgW09iakNDYXRhZ29yeT1ET01FbGVtZW50RXh0ZW5zaW9uc10gbG9uZyBvZmZzZXRIZWlnaHQ7
CiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgb2Zmc2V0UGFyZW50OworICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgW09iakNDYXRhZ29yeT1ET01FbGVtZW50RXh0ZW5zaW9u
c10gRWxlbWVudCBvZmZzZXRQYXJlbnQ7CiAgICAgICAgIAotICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgbG9uZyBjbGllbnRXaWR0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtPYmpD
Q2F0YWdvcnk9RE9NRWxlbWVudEV4dGVuc2lvbnNdIGxvbmcgY2xpZW50V2lkdGg7CiAKLSAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgY2xpZW50SGVpZ2h0OworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgW09iakNDYXRhZ29yeT1ET01FbGVtZW50RXh0ZW5zaW9uc10gbG9uZyBjbGll
bnRIZWlnaHQ7CiAKLSAgICAgICAgYXR0cmlidXRlIGxvbmcgc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlIFtPYmpDQ2F0YWdvcnk9RE9NRWxlbWVudEV4dGVuc2lvbnNdIGxv
bmcgc2Nyb2xsTGVmdDsKIAotICAgICAgICBhdHRyaWJ1dGUgbG9uZyBzY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgIGF0dHJpYnV0ZSBbT2JqQ0NhdGFnb3J5PURPTUVsZW1lbnRFeHRlbnNpb25z
XSBsb25nIHNjcm9sbFRvcDsKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBzY3Jv
bGxXaWR0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtPYmpDQ2F0YWdvcnk9RE9NRWxl
bWVudEV4dGVuc2lvbnNdIGxvbmcgc2Nyb2xsV2lkdGg7CiAKLSAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgc2Nyb2xsSGVpZ2h0OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW09i
akNDYXRhZ29yeT1ET01FbGVtZW50RXh0ZW5zaW9uc10gbG9uZyBzY3JvbGxIZWlnaHQ7CiAKICAg
ICAgICAgdm9pZCBmb2N1cygpOwogCiAgICAgICAgIHZvaWQgYmx1cigpOwogCi0gICAgICAgIHZv
aWQgc2Nyb2xsSW50b1ZpZXcoaW4gW09wdGlvbmFsXSBib29sZWFuIGFsaWduV2l0aFRvcCk7Cisg
ICAgICAgIFtPYmpDQ2F0YWdvcnk9RE9NRWxlbWVudEV4dGVuc2lvbnNdIHZvaWQgc2Nyb2xsSW50
b1ZpZXcoaW4gW09wdGlvbmFsXSBib29sZWFuIGFsaWduV2l0aFRvcCk7CiAKICAgICAgICAgLy8g
SUUgZXh0ZW5zaW9ucwogCi0gICAgICAgIE5vZGUgaW5zZXJ0QWRqYWNlbnRFbGVtZW50KGluIERP
TVN0cmluZyBwb3NpdGlvbiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IE5vZGUgbmV3RWxlbWVudCkKKyAgICAgICAgW09iakNQcml2YXRlXSBOb2RlIGluc2VydEFkamFj
ZW50RWxlbWVudChpbiBET01TdHJpbmcgcG9zaXRpb24sIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIE5vZGUgbmV3RWxlbWVudCkKICAgICAgICAg
ICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICAKLSAgICAgICAgYm9vbGVhbiBjb250
YWlucyhpbiBFbGVtZW50IGVsZW1lbnQpOworICAgICAgICBbT2JqQ1ByaXZhdGVdIGJvb2xlYW4g
Y29udGFpbnMoaW4gRWxlbWVudCBlbGVtZW50KTsKIAogICAgICAgICAvLyBXZWJLaXQgZXh0ZW5z
aW9ucwogCi0gICAgICAgIHZvaWQgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChpbiBbT3B0aW9uYWxd
IGJvb2xlYW4gY2VudGVySWZOZWVkZWQpOworICAgICAgICBbT2JqQ0NhdGFnb3J5PURPTUVsZW1l
bnRFeHRlbnNpb25zXSB2b2lkIHNjcm9sbEludG9WaWV3SWZOZWVkZWQoaW4gW09wdGlvbmFsXSBi
b29sZWFuIGNlbnRlcklmTmVlZGVkKTsKIAotICAgICAgICB2b2lkIHNjcm9sbEJ5TGluZXMoaW4g
bG9uZyBsaW5lcyk7CisgICAgICAgIFtPYmpDUHJpdmF0ZV0gdm9pZCBzY3JvbGxCeUxpbmVzKGlu
IGxvbmcgbGluZXMpOwogCi0gICAgICAgIHZvaWQgc2Nyb2xsQnlQYWdlcyhpbiBsb25nIHBhZ2Vz
KTsKKyAgICAgICAgW09iakNQcml2YXRlXSB2b2lkIHNjcm9sbEJ5UGFnZXMoaW4gbG9uZyBwYWdl
cyk7CiAKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VudGl0eVJlZmVyZW5jZS5pZGwJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53
ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg
VVNBLgorICovCisKK21vZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFjZSBFbnRpdHlSZWZlcmVu
Y2UgOiBOb2RlIHsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5pZGwJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53
ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg
VVNBLgorICovCisKK21vZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFjZSBOYW1lZE5vZGVNYXAg
eworCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gTm9kZSBnZXROYW1lZEl0ZW0oaW4gRE9NU3Ry
aW5nIG5hbWUpOworCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gTm9kZSBzZXROYW1lZEl0ZW0o
aW4gTm9kZSBhcmcpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAg
ICBbVXNlc1Bhc3NSZWZQdHJdIE5vZGUgcmVtb3ZlTmFtZWRJdGVtKGluIERPTVN0cmluZyBuYW1l
KQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgW1VzZXNQYXNz
UmVmUHRyXSBOb2RlIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgICAgIAorICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisKKworICAgICAg
ICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAyOgorCisgICAgICAgIFtVc2VzUGFzc1JlZlB0
cl0gTm9kZSBnZXROYW1lZEl0ZW1OUyhpbiBET01TdHJpbmcgbmFtZXNwYWNlVVJJLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBsb2Nh
bE5hbWUpCisgICAgICAgICAgICAvLyBGSVhNRTogdGhlIGltcGxlbWVudGF0aW9uIGRvZXMgdGFr
ZSBhbiBleGNlcHRpb25jb2RlIHBhcmFtZXRlci4KKyAgICAgICAgICAgIC8qcmFpc2VzKERPTUV4
Y2VwdGlvbikqLzsKKworICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIE5vZGUgc2V0TmFtZWRJdGVt
TlMoaW4gTm9kZSBhcmcpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAg
ICAgICBbVXNlc1Bhc3NSZWZQdHJdIE5vZGUgcmVtb3ZlTmFtZWRJdGVtTlMoaW4gRE9NU3RyaW5n
IG5hbWVzcGFjZVVSSSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBET01TdHJpbmcgbG9jYWxOYW1lKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CisKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlTGlzdC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9kZUxpc3QuaWRsCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9kb20vTm9kZUxpc3QuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwu
Y29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ
bGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisK
K21vZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFjZSBOb2RlTGlzdCB7CisKKyAgICAgICAgTm9k
ZSBpdGVtKGluIFtJc0luZGV4XSB1bnNpZ25lZCBsb25nIGluZGV4KTsKKworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisKKyAgICB9OworCit9CkluZGV4
OiBXZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5pZGwJKHJldmlzaW9uIDE1OTk3KQorKysg
V2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWls
LmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjksNyArMzAsNyBAQCBtb2R1bGUgY29yZSB7
CiAKICAgICAgICAgLy8gaW50ZXJmYWNlIExpbmtTdHlsZSBmcm9tIERPTSBMZXZlbCAyIFN0eWxl
IFNoZWV0cwogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdHlsZVNoZWV0IHNoZWV0Owor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW09iakNQcml2YXRlXSBTdHlsZVNoZWV0IHNoZWV0
OwogCiAgICAgfTsKIApJbmRleDogV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjA1MikKKysrIFdlYktpdC9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAwNi0wOC0yNiAgU2FtIFdlaW5pZyAgPHNhbS53
ZWluaWdAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIC0gcGF0Y2ggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDYyNAorICAgICAgICAgIFdlYkNvcmUgbmVlZHMgYXV0b2dlbmVyYXRlZCBP
YmotQyBET00gYmluZGluZ3MKKworICAgICAgICAgIEZpcnN0IHJvdW5kIG9mIGF1dG8tZ2VuZXJh
dGVkIE9iamVjdGl2ZSBDIERPTSBiaW5kaW5ncywgc3RhcnRpbmcKKyAgICAgICAgICB3aXRoIHRo
ZSBET00gQ29yZS4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDA2LTA4LTI1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBUaW0gSGF0Y2hlcgpJbmRleDogV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU5OTcpCisrKyBXZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTg2NiwxOSArODY2LDE3IEBA
CiAJCTlDN0NBQkJCMDE5MEEzN0MwRUNBMTZFQSAvKiBXZWJWaWV3ICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk2NThBNDA5NTBBMTQ4NTNCMDA1RTY5ODcg
LyogV2ViRGF0YVNvdXJjZUludGVybmFsLmggKi8sCi0JCQkJNjUwRjc0RTIwOUU0ODhGNzAwMjAx
MThBIC8qIFdlYlVuYXJjaGl2aW5nU3RhdGUuaCAqLywKLQkJCQk2NTBGNzRFMzA5RTQ4OEY3MDAy
MDExOEEgLyogV2ViVW5hcmNoaXZpbmdTdGF0ZS5tICovLAotCQkJCTY1NTBCN0M1MDk5RUZBRTkw
MDkwRDc4MSAvKiBXZWJBcmNoaXZlci5oICovLAotCQkJCTY1NTBCN0M2MDk5RUZBRTkwMDkwRDc4
MSAvKiBXZWJBcmNoaXZlci5tICovLAogCQkJCUY1MkNBNkJEMDJERjlEMEYwMTg2MzVDQSAvKiBI
VE1MICovLAogCQkJCTUxRTk0QzA3MDZDMDJDQTMwMEE5QjA5RSAvKiBQREYgKi8sCiAJCQkJODM3
MzQzNUEwNjI0RUUwRDAwRjNCMjg5IC8qIFdlYkFyY2hpdmUuaCAqLywKIAkJCQk4MzczNDM1QjA2
MjRFRTBEMDBGM0IyODkgLyogV2ViQXJjaGl2ZS5tICovLAorCQkJCTY1NTBCN0M1MDk5RUZBRTkw
MDkwRDc4MSAvKiBXZWJBcmNoaXZlci5oICovLAorCQkJCTY1NTBCN0M2MDk5RUZBRTkwMDkwRDc4
MSAvKiBXZWJBcmNoaXZlci5tICovLAogCQkJCTkzM0Q2NTk5MDM0MTNGRjIwMDg2MzVDRSAvKiBX
ZWJDbGlwVmlldy5oICovLAogCQkJCTkzM0Q2NTlBMDM0MTNGRjIwMDg2MzVDRSAvKiBXZWJDbGlw
Vmlldy5tICovLAogCQkJCTM5NDQ2MDcwMDIwRjUwRUQwRUNBMTc2NyAvKiBXZWJEYXRhU291cmNl
LmggKi8sCiAJCQkJMzk0NDYwNzEwMjBGNTBFRDBFQ0ExNzY3IC8qIFdlYkRhdGFTb3VyY2UubSAq
LywKKwkJCQk2NThBNDA5NTBBMTQ4NTNCMDA1RTY5ODcgLyogV2ViRGF0YVNvdXJjZUludGVybmFs
LmggKi8sCiAJCQkJMzk0NDYwNzIwMjBGNTBFRDBFQ0ExNzY3IC8qIFdlYkRhdGFTb3VyY2VQcml2
YXRlLmggKi8sCiAJCQkJMzUwODFEQUUwMkI2RDRGNTBBQ0EyQUNBIC8qIFdlYkRvY3VtZW50Lmgg
Ki8sCiAJCQkJRUQyMUI5ODEwNTI4RjdBQTAwMzI5OUFDIC8qIFdlYkRvY3VtZW50SW50ZXJuYWwu
aCAqLywKQEAgLTkxNCw2ICs5MTIsOCBAQAogCQkJCTdFNkZFRjA3MDg5ODVBNzIwMEM0NEMzRiAv
KiBXZWJTY3JpcHREZWJ1Z0RlbGVnYXRlUHJpdmF0ZS5oICovLAogCQkJCTUxNUUyN0NDMDQ1OEM4
NjUwMENBMkQzQSAvKiBXZWJVSURlbGVnYXRlLmggKi8sCiAJCQkJNjVBN0Q0NEEwNTY4QUIyNjAw
RTcwRUY2IC8qIFdlYlVJRGVsZWdhdGVQcml2YXRlLmggKi8sCisJCQkJNjUwRjc0RTIwOUU0ODhG
NzAwMjAxMThBIC8qIFdlYlVuYXJjaGl2aW5nU3RhdGUuaCAqLywKKwkJCQk2NTBGNzRFMzA5RTQ4
OEY3MDAyMDExOEEgLyogV2ViVW5hcmNoaXZpbmdTdGF0ZS5tICovLAogCQkJCTUxQThCNTc5MDQy
ODM0RjcwMENBMkQzQSAvKiBXZWJWaWV3LmggKi8sCiAJCQkJNTFBOEI1N0EwNDI4MzRGNzAwQ0Ey
RDNBIC8qIFdlYlZpZXcubSAqLywKIAkJCQk5MzBEMDJCQjA2Mjc1RjY0MDA3NjcwMUUgLyogV2Vi
Vmlld0ludGVybmFsLmggKi8sCkBAIC0xMjMxLDYgKzEyMzEsMjQgQEAKIAkJCWJ1aWxkUGhhc2Vz
ID0gKAogCQkJCTkzQUY1Mjg3MDgyNTRCMzMwMDVEMDE1NiAvKiBET00uaCAqLywKIAkJCQk5M0FG
NTJBNzA4MjU0RDhCMDA1RDAxNTYgLyogRE9NQ29yZS5oICovLAorCQkJCTg1MjZENzREMEE4RkVG
MDIwMDkyMzRCMSAvKiBET01BdHRyLmggKi8sCisJCQkJODUzMTFGNjkwQThGOTA5MTAwNTEyNUM5
IC8qIERPTUNEQVRBU2VjdGlvbi5oICovLAorCQkJCTg1MjZENkJGMEE4RkU2MEIwMDkyMzRCMSAv
KiBET01DaGFyYWN0ZXJEYXRhLmggKi8sCisJCQkJODUzMTFGNzIwQThGOTBGNjAwNTEyNUM5IC8q
IERPTUNvbW1lbnQuaCAqLywKKwkJCQk4NTZDODlERTBBOTBFMzgzMDA1QzY4N0IgLyogRE9NRG9j
dW1lbnQuaCAqLywKKwkJCQk4NUM5MDY2RjBBOEZEMTFDMDBDMzdEOTEgLyogRE9NRG9jdW1lbnRG
cmFnbWVudC5oICovLAorCQkJCTg1QzkwNUYzMEE4RkNDQjIwMEMzN0Q5MSAvKiBET01Eb2N1bWVu
dFR5cGUuaCAqLywKKwkJCQk4NTM5QjU2NTBBOTAzRUI5MDAzNjZDMkQgLyogRE9NRE9NSW1wbGVt
ZW50YXRpb24uaCAqLywKKwkJCQk4NUE1QzVFMTBBOTAzMkIzMDBGOTFGMkMgLyogRE9NRWxlbWVu
dC5oICovLAorCQkJCTg1MzExRjc1MEE4RjkxNjgwMDUxMjVDOSAvKiBET01FbnRpdHkuaCAqLywK
KwkJCQk4NTMxMUY4ODBBOEY5MUZFMDA1MTI1QzkgLyogRE9NRW50aXR5UmVmZXJlbmNlLmggKi8s
CisJCQkJODUyNkQ3RUEwQThGRjY0QzAwOTIzNEIxIC8qIERPTU5hbWVkTm9kZU1hcC5oICovLAor
CQkJCTg1NkM4QTkzMEE5MEY1NEYwMDVDNjg3QiAvKiBET01Ob2RlLmggKi8sCisJCQkJODVBODVC
NTkwQTkwMkMzMjAwQTVDRjNBIC8qIERPTU5vZGVMaXN0LmggKi8sCisJCQkJODUzMTFGRTkwQThG
OThCOTAwNTEyNUM5IC8qIERPTU5vdGF0aW9uLmggKi8sCisJCQkJODU2QzhCN0IwQTkxMjlCODAw
NUM2ODdCIC8qIERPTU9iamVjdC5oICovLAorCQkJCTg1MzEyMDEzMEE4RjlBNTIwMDUxMjVDOSAv
KiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCAqLywKKwkJCQk4NTI2RDY0MTBBOEZEQjg0MDA5
MjM0QjEgLyogRE9NVGV4dC5oICovLAogCQkJCTkzQUY1MkE5MDgyNTREOEYwMDVEMDE1NiAvKiBE
T01DU1MuaCAqLywKIAkJCQk5M0FGNTJBNTA4MjU0RDg3MDA1RDAxNTYgLyogRE9NRXZlbnRzLmgg
Ki8sCiAJCQkJOTNBRjUyQTMwODI1NEQ4MTAwNUQwMTU2IC8qIERPTUV4dGVuc2lvbnMuaCAqLywK
QEAgLTEzMjIsNiArMTM0MCwyOTQgQEAKIAkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CiAJCQlzaGVs
bFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19G
T0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRF
X0hFQURFUlNfRElSL0RPTVhQYXRoLmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19I
RUFERVJTX0ZPTERFUl9QQVRIL0RPTVhQYXRoLmhcIiI7CiAJCX07CisJCTg1MjZENjQxMEE4RkRC
ODQwMDkyMzRCMSAvKiBET01UZXh0LmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1
aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAo
CisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVS
U19ESVIpL0RPTVRleHQuaCIsCisJCQkpOworCQkJbmFtZSA9IERPTVRleHQuaDsKKwkJCW91dHB1
dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9M
REVSX1BBVEgpL0RPTVRleHQuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQg
PSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BB
VEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJT
X0RJUi9ET01UZXh0LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZP
TERFUl9QQVRIL0RPTVRleHQuaFwiIjsKKwkJfTsKKwkJODUyNkQ2QkYwQThGRTYwQjAwOTIzNEIx
IC8qIERPTUNoYXJhY3RlckRhdGEuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVp
bGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgK
KwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJT
X0RJUikvRE9NQ2hhcmFjdGVyRGF0YS5oIiwKKwkJCSk7CisJCQluYW1lID0gRE9NQ2hhcmFjdGVy
RGF0YS5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQ
VUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NQ2hhcmFjdGVyRGF0YS5oIiwKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9
IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElS
LyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8g
XCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUNoYXJhY3RlckRhdGEuaFwiID4gXCIk
VEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NQ2hhcmFjdGVy
RGF0YS5oXCIiOworCQl9OworCQk4NTI2RDc0RDBBOEZFRjAyMDA5MjM0QjEgLyogRE9NQXR0ci5o
ICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMg
PSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01BdHRyLmgiLAorCQkJ
KTsKKwkJCW5hbWUgPSBET01BdHRyLmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJH
RVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01BdHRyLmgiLAor
CQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hl
bGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9C
VUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUv
V2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NQXR0ci5oXCIgPiBcIiRU
QVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01BdHRyLmhcIiI7
CisJCX07CisJCTg1MjZEN0VBMEE4RkY2NEMwMDkyMzRCMSAvKiBET01OYW1lZE5vZGVNYXAuaCAq
LyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0g
KAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NTmFtZWROb2RlTWFwLmgi
LAorCQkJKTsKKwkJCW5hbWUgPSBET01OYW1lZE5vZGVNYXAuaDsKKwkJCW91dHB1dFBhdGhzID0g
KAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgp
L0RPTU5hbWVkTm9kZU1hcC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9
ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFU
SFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNf
RElSL0RPTU5hbWVkTm9kZU1hcC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVB
REVSU19GT0xERVJfUEFUSC9ET01OYW1lZE5vZGVNYXAuaFwiIjsKKwkJfTsKKwkJODUzMTFGNjkw
QThGOTA5MTAwNTEyNUM5IC8qIERPTUNEQVRBU2VjdGlvbi5oICovID0geworCQkJaXNhID0gUEJY
U2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
KwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9Q
UklWQVRFX0hFQURFUlNfRElSKS9ET01DREFUQVNlY3Rpb24uaCIsCisJCQkpOworCQkJbmFtZSA9
IERPTUNEQVRBU2VjdGlvbi5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JV
SUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NQ0RBVEFTZWN0aW9uLmgi
LAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJ
c2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdF
VF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNv
cmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NQ0RBVEFTZWN0aW9u
LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RP
TUNEQVRBU2VjdGlvbi5oXCIiOworCQl9OworCQk4NTMxMUY3MjBBOEY5MEY2MDA1MTI1QzkgLyog
RE9NQ29tbWVudC5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwor
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJ
CWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01D
b21tZW50LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01Db21tZW50Lmg7CisJCQlvdXRwdXRQYXRo
cyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9Q
QVRIKS9ET01Db21tZW50LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0g
Im1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRI
XCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19E
SVIvRE9NQ29tbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19G
T0xERVJfUEFUSC9ET01Db21tZW50LmhcIiI7CisJCX07CisJCTg1MzExRjc1MEE4RjkxNjgwMDUx
MjVDOSAvKiBET01FbnRpdHkuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJ
CSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJ
UikvRE9NRW50aXR5LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01FbnRpdHkuaDsKKwkJCW91dHB1
dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9M
REVSX1BBVEgpL0RPTUVudGl0eS5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlw
dCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJf
UEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURF
UlNfRElSL0RPTUVudGl0eS5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVS
U19GT0xERVJfUEFUSC9ET01FbnRpdHkuaFwiIjsKKwkJfTsKKwkJODUzMTFGODgwQThGOTFGRTAw
NTEyNUM5IC8qIERPTUVudGl0eVJlZmVyZW5jZS5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxT
Y3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZp
bGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRF
X0hFQURFUlNfRElSKS9ET01FbnRpdHlSZWZlcmVuY2UuaCIsCisJCQkpOworCQkJbmFtZSA9IERP
TUVudGl0eVJlZmVyZW5jZS5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JV
SUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NRW50aXR5UmVmZXJlbmNl
LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwor
CQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRB
UkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dl
YkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NRW50aXR5UmVm
ZXJlbmNlLmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9Q
QVRIL0RPTUVudGl0eVJlZmVyZW5jZS5oXCIiOworCQl9OworCQk4NTMxMUZFOTBBOEY5OEI5MDA1
MTI1QzkgLyogRE9NTm90YXRpb24uaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVp
bGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgK
KwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJT
X0RJUikvRE9NTm90YXRpb24uaCIsCisJCQkpOworCQkJbmFtZSA9IERPTU5vdGF0aW9uLmg7CisJ
CQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFE
RVJTX0ZPTERFUl9QQVRIKS9ET01Ob3RhdGlvbi5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlz
aGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVS
U19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklW
QVRFX0hFQURFUlNfRElSL0RPTU5vdGF0aW9uLmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBV
QkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTU5vdGF0aW9uLmhcIiI7CisJCX07CisJCTg1MzEy
MDEzMEE4RjlBNTIwMDUxMjVDOSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCAqLyA9IHsK
KwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJ
CSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaDsKKwkJCW91
dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNf
Rk9MREVSX1BBVEgpL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIiwKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4v
c2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJM
SUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VC
Q09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oXCIgPiBc
IiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uaFwiIjsKKwkJfTsKKwkJODUzOUI1NjUwQTkwM0VCOTAwMzY2QzJEIC8q
IERPTURPTUltcGxlbWVudGF0aW9uLmggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1
aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAo
CisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVS
U19ESVIpL0RPTURPTUltcGxlbWVudGF0aW9uLmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01ET01J
bXBsZW1lbnRhdGlvbi5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxE
X0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NRE9NSW1wbGVtZW50YXRpb24u
aCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJ
CQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFS
R0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2Vi
Q29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01ET01JbXBsZW1l
bnRhdGlvbi5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJf
UEFUSC9ET01ET01JbXBsZW1lbnRhdGlvbi5oXCIiOworCQl9OworCQk4NTZDODlERTBBOTBFMzgz
MDA1QzY4N0IgLyogRE9NRG9jdW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9
ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFE
RVJTX0RJUikvRE9NRG9jdW1lbnQuaCIsCisJCQkpOworCQkJbmFtZSA9IERPTURvY3VtZW50Lmg7
CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19I
RUFERVJTX0ZPTERFUl9QQVRIKS9ET01Eb2N1bWVudC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJ
CQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVB
REVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9Q
UklWQVRFX0hFQURFUlNfRElSL0RPTURvY3VtZW50LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIv
JFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTURvY3VtZW50LmhcIiI7CisJCX07CisJCTg1
NkM4QTkzMEE5MEY1NEYwMDVDNjg3QiAvKiBET01Ob2RlLmggKi8gPSB7CisJCQlpc2EgPSBQQlhT
aGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owor
CQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BS
SVZBVEVfSEVBREVSU19ESVIpL0RPTU5vZGUuaCIsCisJCQkpOworCQkJbmFtZSA9IERPTU5vZGUu
aDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElD
X0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTU5vZGUuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJ
c2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURF
UlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJ
VkFURV9IRUFERVJTX0RJUi9ET01Ob2RlLmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJ
Q19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTU5vZGUuaFwiIjsKKwkJfTsKKwkJODU2QzhCN0IwQTkx
MjlCODAwNUM2ODdCIC8qIERPTU9iamVjdC5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3Jp
cHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVz
ID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hF
QURFUlNfRElSKS9ET01PYmplY3QuaCIsCisJCQkpOworCQkJbmFtZSA9IERPTU9iamVjdC5oOwor
CQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVB
REVSU19GT0xERVJfUEFUSCkvRE9NT2JqZWN0LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNo
ZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJT
X0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVIvRE9NT2JqZWN0LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJ
Q19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTU9iamVjdC5oXCIiOworCQl9OworCQk4NUE1QzVFMTBB
OTAzMkIzMDBGOTFGMkMgLyogRE9NRWxlbWVudC5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxT
Y3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZp
bGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRF
X0hFQURFUlNfRElSKS9ET01FbGVtZW50LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01FbGVtZW50
Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJ
Q19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01FbGVtZW50LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsK
KwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19I
RUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JF
X1BSSVZBVEVfSEVBREVSU19ESVIvRE9NRWxlbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElS
LyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01FbGVtZW50LmhcIiI7CisJCX07CisJCTg1
QTg1QjU5MEE5MDJDMzIwMEE1Q0YzQSAvKiBET01Ob2RlTGlzdC5oICovID0geworCQkJaXNhID0g
UEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09S
RV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01Ob2RlTGlzdC5oIiwKKwkJCSk7CisJCQluYW1lID0g
RE9NTm9kZUxpc3QuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9E
SVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTU5vZGVMaXN0LmgiLAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRo
ID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9E
SVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0
LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NTm9kZUxpc3QuaFwiID4gXCIkVEFS
R0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9NTm9kZUxpc3QuaFwi
IjsKKwkJfTsKKwkJODVDOTA1RjMwQThGQ0NCMjAwQzM3RDkxIC8qIERPTURvY3VtZW50VHlwZS5o
ICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMg
PSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01Eb2N1bWVudFR5cGUu
aCIsCisJCQkpOworCQkJbmFtZSA9IERPTURvY3VtZW50VHlwZS5oOworCQkJb3V0cHV0UGF0aHMg
PSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFU
SCkvRE9NRG9jdW1lbnRUeXBlLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0
ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9Q
QVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVS
U19ESVIvRE9NRG9jdW1lbnRUeXBlLmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19I
RUFERVJTX0ZPTERFUl9QQVRIL0RPTURvY3VtZW50VHlwZS5oXCIiOworCQl9OworCQk4NUM5MDY2
RjBBOEZEMTFDMDBDMzdEOTEgLyogRE9NRG9jdW1lbnRGcmFnbWVudC5oICovID0geworCQkJaXNh
ID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VC
Q09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01Eb2N1bWVudEZyYWdtZW50LmgiLAorCQkJKTsK
KwkJCW5hbWUgPSBET01Eb2N1bWVudEZyYWdtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJ
CQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01E
b2N1bWVudEZyYWdtZW50LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0g
Im1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRI
XCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19E
SVIvRE9NRG9jdW1lbnRGcmFnbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNf
SEVBREVSU19GT0xERVJfUEFUSC9ET01Eb2N1bWVudEZyYWdtZW50LmhcIiI7CisJCX07CiAJCTkz
MzkzMjNFMDgyNUE2NDIwMEFBREE2QiAvKiBucHJ1bnRpbWUuaCAqLyA9IHsKIAkJCWlzYSA9IFBC
WFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
Cg==
</data>
<flag name="review"
          id="3227"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10261</attachid>
            <date>2006-08-27 19:19:02 -0700</date>
            <delta_ts>2006-08-27 20:16:39 -0700</delta_ts>
            <desc>patch addressing more of Tim&apos;s comments as well as comments from IRC</desc>
            <filename>autoCore6.diff</filename>
            <type>text/plain</type>
            <size>207094</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjA2NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTE5IEBACisyMDA2LTA4LTI3ICBTYW0gV2VpbmlnICA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
LSBwYXRjaCBmb3IgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NjI0CisgICAgICAgICAgV2ViQ29yZSBuZWVkcyBhdXRvZ2VuZXJhdGVkIE9iai1DIERPTSBi
aW5kaW5ncworCisgICAgICAgICAgRmlyc3Qgcm91bmQgb2YgYXV0by1nZW5lcmF0ZWQgT2JqZWN0
aXZlIEMgRE9NIGJpbmRpbmdzLCBzdGFydGluZworICAgICAgICAgIHdpdGggdGhlIERPTSBDb3Jl
LgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET00ubW06
CisgICAgICAgICgtW0RPTU5vZGUgZGVzY3JpcHRpb25dKToKKyAgICAgICAgKC1bRE9NTm9kZSBL
SlM6OkJpbmRpbmdzOjpdKToKKyAgICAgICAgKC1bRE9NTm9kZSBkaXNwYXRjaEV2ZW50Ol0pOgor
ICAgICAgICAoLVtET01OYW1lZE5vZGVNYXAgX2luaXRXaXRoTmFtZWROb2RlTWFwOl0pOgorICAg
ICAgICAoK1tET01OYW1lZE5vZGVNYXAgX25hbWVkTm9kZU1hcFdpdGg6XSk6CisgICAgICAgICgt
W0RPTU5vZGVMaXN0IF9pbml0V2l0aE5vZGVMaXN0Ol0pOgorICAgICAgICAoK1tET01Ob2RlTGlz
dCBfbm9kZUxpc3RXaXRoOl0pOgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBfaW5pdFdp
dGhET01JbXBsZW1lbnRhdGlvbjpdKToKKyAgICAgICAgKCtbRE9NSW1wbGVtZW50YXRpb24gX0RP
TUltcGxlbWVudGF0aW9uV2l0aDpdKToKKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24gX0RP
TUltcGxlbWVudGF0aW9uXSk6CisgICAgICAgICgrW0RPTURvY3VtZW50RnJhZ21lbnQgX2RvY3Vt
ZW50RnJhZ21lbnRXaXRoOl0pOgorICAgICAgICAoLVtET01Eb2N1bWVudEZyYWdtZW50IF9mcmFn
bWVudF0pOgorICAgICAgICAoLVtET01Eb2N1bWVudCBjcmVhdGVDU1NTdHlsZURlY2xhcmF0aW9u
XSk6CisgICAgICAgICgrW0RPTURvY3VtZW50IF9kb2N1bWVudFdpdGg6XSk6CisgICAgICAgICgt
W0RPTURvY3VtZW50IF9kb2N1bWVudF0pOgorICAgICAgICAoLVtET01Eb2N1bWVudCBfb3duZXJF
bGVtZW50XSk6CisgICAgICAgICgrW0RPTUF0dHIgX2F0dHJXaXRoOl0pOgorICAgICAgICAoLVtE
T01BdHRyIF9hdHRyXSk6CisgICAgICAgICgrW0RPTURvY3VtZW50VHlwZSBfZG9jdW1lbnRUeXBl
V2l0aDpXZWJDb3JlOjpdKToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnRUeXBlIFdlYkNvcmU6Ol0p
OgorICAgICAgICAoK1tET01UZXh0IF90ZXh0V2l0aDpXZWJDb3JlOjpdKToKKyAgICAgICAgKCtb
RE9NQ29tbWVudCBfY29tbWVudFdpdGg6V2ViQ29yZTo6XSk6CisgICAgICAgICgrW0RPTUNEQVRB
U2VjdGlvbiBfQ0RBVEFTZWN0aW9uV2l0aDpXZWJDb3JlOjpdKToKKyAgICAgICAgKCtbRE9NUHJv
Y2Vzc2luZ0luc3RydWN0aW9uIF9wcm9jZXNzaW5nSW5zdHJ1Y3Rpb25XaXRoOldlYkNvcmU6Ol0p
OgorICAgICAgICAoK1tET01FbnRpdHlSZWZlcmVuY2UgX2VudGl0eVJlZmVyZW5jZVdpdGg6V2Vi
Q29yZTo6XSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01DU1MuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9vYmpjL0RPTUNTUy5tbToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUNvcmUu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5oOgorICAgICAgICAqIGJpbmRp
bmdzL29iamMvRE9NRXZlbnRzLm1tOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NRXh0ZW5z
aW9ucy5oOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NSFRNTC5tbToKKyAgICAgICAgKCtb
RE9NSFRNTERvY3VtZW50IF9IVE1MRG9jdW1lbnRXaXRoOldlYkNvcmU6Ol0pOgorICAgICAgICAq
IGJpbmRpbmdzL29iamMvRE9NSFRNTEludGVybmFsLmg6CisgICAgICAgICogYmluZGluZ3Mvb2Jq
Yy9ET01JbXBsZW1lbnRhdGlvbkZyb250Lmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01J
bnRlcm5hbC5oOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NTm9kZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTU5vZGUubW06IEFkZGVkLgorICAgICAgICAoLVtET01O
b2RlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bRE9NTm9kZSBmaW5hbGl6ZV0pOgorICAgICAgICAo
LVtET01Ob2RlIG5vZGVOYW1lXSk6CisgICAgICAgICgtW0RPTU5vZGUgbm9kZVZhbHVlXSk6Cisg
ICAgICAgICgtW0RPTU5vZGUgc2V0Tm9kZVZhbHVlOl0pOgorICAgICAgICAoLVtET01Ob2RlIG5v
ZGVUeXBlXSk6CisgICAgICAgICgtW0RPTU5vZGUgcGFyZW50Tm9kZV0pOgorICAgICAgICAoLVtE
T01Ob2RlIGNoaWxkTm9kZXNdKToKKyAgICAgICAgKC1bRE9NTm9kZSBmaXJzdENoaWxkXSk6Cisg
ICAgICAgICgtW0RPTU5vZGUgbGFzdENoaWxkXSk6CisgICAgICAgICgtW0RPTU5vZGUgcHJldmlv
dXNTaWJsaW5nXSk6CisgICAgICAgICgtW0RPTU5vZGUgbmV4dFNpYmxpbmddKToKKyAgICAgICAg
KC1bRE9NTm9kZSBhdHRyaWJ1dGVzXSk6CisgICAgICAgICgtW0RPTU5vZGUgb3duZXJEb2N1bWVu
dF0pOgorICAgICAgICAoLVtET01Ob2RlIGluc2VydEJlZm9yZTo6XSk6CisgICAgICAgICgtW0RP
TU5vZGUgcmVwbGFjZUNoaWxkOjpdKToKKyAgICAgICAgKC1bRE9NTm9kZSByZW1vdmVDaGlsZDpd
KToKKyAgICAgICAgKC1bRE9NTm9kZSBhcHBlbmRDaGlsZDpdKToKKyAgICAgICAgKC1bRE9NTm9k
ZSBoYXNDaGlsZE5vZGVzXSk6CisgICAgICAgICgtW0RPTU5vZGUgY2xvbmVOb2RlOl0pOgorICAg
ICAgICAoLVtET01Ob2RlIG5vcm1hbGl6ZV0pOgorICAgICAgICAoLVtET01Ob2RlIGlzU3VwcG9y
dGVkOjpdKToKKyAgICAgICAgKC1bRE9NTm9kZSBuYW1lc3BhY2VVUkldKToKKyAgICAgICAgKC1b
RE9NTm9kZSBwcmVmaXhdKToKKyAgICAgICAgKC1bRE9NTm9kZSBzZXRQcmVmaXg6XSk6CisgICAg
ICAgICgtW0RPTU5vZGUgbG9jYWxOYW1lXSk6CisgICAgICAgICgtW0RPTU5vZGUgaGFzQXR0cmli
dXRlc10pOgorICAgICAgICAoLVtET01Ob2RlIGlzU2FtZU5vZGU6XSk6CisgICAgICAgICgtW0RP
TU5vZGUgaXNFcXVhbE5vZGU6XSk6CisgICAgICAgICgtW0RPTU5vZGUgaXNEZWZhdWx0TmFtZXNw
YWNlOl0pOgorICAgICAgICAoLVtET01Ob2RlIGxvb2t1cFByZWZpeDpdKToKKyAgICAgICAgKC1b
RE9NTm9kZSBsb29rdXBOYW1lc3BhY2VVUkk6XSk6CisgICAgICAgICgtW0RPTU5vZGUgdGV4dENv
bnRlbnRdKToKKyAgICAgICAgKC1bRE9NTm9kZSBzZXRUZXh0Q29udGVudDpdKToKKyAgICAgICAg
KC1bRE9NTm9kZSBib3VuZGluZ0JveF0pOgorICAgICAgICAoLVtET01Ob2RlIGxpbmVCb3hSZWN0
c10pOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NT2JqZWN0Lmg6IEFkZGVkLgorICAgICAg
ICAqIGJpbmRpbmdzL29iamMvRE9NT2JqZWN0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bRE9NT2Jq
ZWN0IGluaXRdKToKKyAgICAgICAgKC1bRE9NT2JqZWN0IGRlYWxsb2NdKToKKyAgICAgICAgKC1b
RE9NT2JqZWN0IGZpbmFsaXplXSk6CisgICAgICAgICgtW0RPTU9iamVjdCBjb3B5V2l0aFpvbmU6
XSk6CisgICAgICAgICgtW0RPTU9iamVjdCBzaGVldF0pOgorICAgICAgICAqIGJpbmRpbmdzL29i
amMvRE9NUHJpdmF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NUmFuZ2UuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVN0eWxlc2hlZXRzLmg6CisgICAgICAgICogYmluZGlu
Z3Mvb2JqYy9ET01UcmF2ZXJzYWwuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVZpZXdz
Lmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01WaWV3cy5tbToKKyAgICAgICAgKiBiaW5k
aW5ncy9vYmpjL0RPTVhQYXRoLmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01YUGF0aC5t
bToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbTogQWRkZWQuCisgICAgICAgICogZG9tL0F0
dHIuaWRsOgorICAgICAgICAqIGRvbS9DREFUQVNlY3Rpb24uaWRsOiBBZGRlZC4KKyAgICAgICAg
KiBkb20vQ29tbWVudC5pZGw6IEFkZGVkLgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlv
bi5pZGw6CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRWxlbWVu
dC5pZGw6CisgICAgICAgICogZG9tL0VudGl0eVJlZmVyZW5jZS5pZGw6IEFkZGVkLgorICAgICAg
ICAqIGRvbS9OYW1lZE5vZGVNYXAuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBkb20vTm9kZUxpc3Qu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmlkbDoKKwog
MjAwNi0wOC0yNyAgTmlrb2xhcyBaaW1tZXJtYW5uICA8emltbWVybWFubkBrZGUub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFRpbSBILgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24g
MTYwNjcpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTEsNCArMSw1IEBACiAjIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8
c2FtLndlaW5pZ0BnbWFpbC5jb20+IAogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Nyw2ICsyOCw3IEBACiBWUEFUSCA9IFwKICAgICAkKFdlYkNvcmUpIFwKICAgICAkKFdlYkNvcmUp
L2JpbmRpbmdzL2pzIFwKKyAgICAkKFdlYkNvcmUpL2JpbmRpbmdzL29iamMgXAogICAgICQoV2Vi
Q29yZSkvY3NzIFwKICAgICAkKFdlYkNvcmUpL2RvbSBcCiAgICAgJChXZWJDb3JlKS9odG1sIFwK
QEAgLTQ0LDYgKzQ2LDIyIEBAIGFsbCA6IFwKICAgICBDaGFyc2V0RGF0YS5jcHAgXAogICAgIENv
bG9yRGF0YS5jIFwKICAgICBEb2NUeXBlU3RyaW5ncy5jcHAgXAorICAgIERPTUF0dHIuaCBcCisg
ICAgRE9NQ0RBVEFTZWN0aW9uLmggXAorICAgIERPTUNoYXJhY3RlckRhdGEuaCBcCisgICAgRE9N
Q29tbWVudC5oIFwKKyAgICBET01ET01JbXBsZW1lbnRhdGlvbi5oIFwKKyAgICBET01Eb2N1bWVu
dC5oIFwKKyAgICBET01Eb2N1bWVudEZyYWdtZW50LmggXAorICAgIERPTURvY3VtZW50VHlwZS5o
IFwKKyAgICBET01FbGVtZW50LmggXAorICAgIERPTUVudGl0eS5oIFwKKyAgICBET01FbnRpdHlS
ZWZlcmVuY2UuaCBcCisgICAgRE9NTmFtZWROb2RlTWFwLmggXAorICAgIERPTU5vZGVMaXN0Lmgg
XAorICAgIERPTU5vdGF0aW9uLmggXAorICAgIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIFwK
KyAgICBET01UZXh0LmggXAogICAgIEhUTUxFbnRpdHlOYW1lcy5jIFwKICAgICBKU0F0dHIuaCBc
CiAgICAgSlNDU1NQcmltaXRpdmVWYWx1ZS5oIFwKQEAgLTI4Nyw2ICszMDUsMTkgQEAga3N2Z2Nz
c3ZhbHVlcy5oIDoKIAogZW5kaWYKIAorIyBuZXctc3R5bGUgT2JqZWN0aXZlLUMgYmluZGluZ3MK
KworT0JKQ19CSU5ESU5HU19TQ1JJUFRTID0gXAorICAgIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvci5wbSBcCisgICAgYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbSBc
CisgICAgYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0gXAorICAgIGJpbmRpbmdzL3Njcmlw
dHMvSURMU3RydWN0dXJlLnBtIFwKKyAgICBiaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRp
bmdzLnBsIFwKKyMKKworRE9NJS5oIDogJS5pZGwgJChPQkpDX0JJTkRJTkdTX1NDUklQVFMpCisJ
cGVybCAtSSQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkKFdlYkNvcmUpL2JpbmRpbmdzL3Nj
cmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgLS1kZWZpbmVzICIkKEZFQVRVUkVfREVGSU5FUyki
IC0tZ2VuZXJhdG9yIE9iakMgLS1pbmNsdWRlIGRvbSAtLWluY2x1ZGUgaHRtbCAtLWluY2x1ZGUg
eHBhdGggLS1pbmNsdWRlIGtzdmcyL3N2ZyAtLW91dHB1dGRpciAgLiAkPAorCiAjIG5ldy1zdHls
ZSBKYXZhU2NyaXB0IGJpbmRpbmdzCiAKIEpTX0JJTkRJTkdTX1NDUklQVFMgPSBcCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTYwNjcp
CisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMzUyLDYgKzM1MiwyMSBAQAogCQk4NTAzMUI0RjBBNDRFRkM3MDBGOTkyRTAgLyog
VUlFdmVudFdpdGhLZXlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODUwMzFCMzkwQTQ0RUZDNzAwRjk5MkUwIC8qIFVJRXZlbnRXaXRoS2V5U3Rh
dGUuaCAqLzsgfTsKIAkJODUwMzFCNTAwQTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVsRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwMzFCM0Ew
QTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVsRXZlbnQuY3BwICovOyB9OwogCQk4NTAzMUI1MTBBNDRF
RkM3MDBGOTkyRTAgLyogV2hlZWxFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODUwMzFCM0IwQTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVsRXZlbnQu
aCAqLzsgfTsKKwkJODUwODlDQzgwQTk4QzIyNjAwQTI3NUFBIC8qIENvbW1lbnQuaWRsIGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTA4OUNDNzBBOThD
MjI2MDBBMjc1QUEgLyogQ29tbWVudC5pZGwgKi87IH07CisJCTg1MDg5Q0NBMEE5OEMyQUIwMEEy
NzVBQSAvKiBDREFUQVNlY3Rpb24uaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NTA4OUNDOTBBOThDMkFCMDBBMjc1QUEgLyogQ0RBVEFTZWN0aW9u
LmlkbCAqLzsgfTsKKwkJODUwODlDQ0MwQTk4QzMzQTAwQTI3NUFBIC8qIEVudGl0eVJlZmVyZW5j
ZS5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1
MDg5Q0NCMEE5OEMzM0EwMEEyNzVBQSAvKiBFbnRpdHlSZWZlcmVuY2UuaWRsICovOyB9OworCQk4
NTA4OUNENzBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTA4OUNDRjBBOThDNDI3MDBBMjc1
QUEgLyogRE9NQ0RBVEFTZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJODUwODlDRDgwQTk4QzQyODAwQTI3NUFBIC8qIERPTUNEQVRBU2Vj
dGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1
MDg5Q0QwMEE5OEM0MjcwMEEyNzVBQSAvKiBET01DREFUQVNlY3Rpb24ubW0gKi87IH07CisJCTg1
MDg5Q0Q5MEE5OEM0MjgwMEEyNzVBQSAvKiBET01Db21tZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTA4OUNEMTBBOThDNDI3MDBBMjc1QUEgLyog
RE9NQ29tbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTg1MDg5Q0RBMEE5OEM0MjgwMEEyNzVBQSAvKiBET01Db21tZW50Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwODlDRDIwQTk4QzQyNzAw
QTI3NUFBIC8qIERPTUNvbW1lbnQubW0gKi87IH07CisJCTg1MDg5Q0RCMEE5OEM0MjgwMEEyNzVB
QSAvKiBET01Eb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NTA4OUNEMzBBOThDNDI4MDBBMjc1QUEgLyogRE9NRG9jdW1lbnRG
cmFnbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTg1MDg5Q0RDMEE5OEM0MjgwMEEyNzVBQSAvKiBET01Eb2N1bWVudEZyYWdtZW50Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwODlDRDQwQTk4
QzQyODAwQTI3NUFBIC8qIERPTURvY3VtZW50RnJhZ21lbnQubW0gKi87IH07CisJCTg1MDg5Q0RE
MEE5OEM0MjgwMEEyNzVBQSAvKiBET01FbnRpdHlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDg5Q0Q1MEE5OEM0MjgwMEEyNzVBQSAv
KiBET01FbnRpdHlSZWZlcmVuY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk4NTA4OUNERTBBOThDNDI4MDBBMjc1QUEgLyogRE9NRW50aXR5UmVm
ZXJlbmNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODUwODlDRDYwQTk4QzQyODAwQTI3NUFBIC8qIERPTUVudGl0eVJlZmVyZW5jZS5tbSAqLzsgfTsK
KwkJODUxOERDRTkwQTlDQzgwRDAwOTFCN0E2IC8qIERPTURPTUltcGxlbWVudGF0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTE4RENFNzBBOUND
ODBDMDA5MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTE4RENFQTBBOUNDODBEMDA5MUI3QTYg
LyogRE9NRE9NSW1wbGVtZW50YXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NTE4RENFODBBOUNDODBEMDA5MUI3QTYgLyogRE9NRE9NSW1wbGVt
ZW50YXRpb24ubW0gKi87IH07CisJCTg1MThERDc4MEE5Q0YzMUIwMDkxQjdBNiAvKiBET01OYW1l
ZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg1MThERDc2MEE5Q0YzMUIwMDkxQjdBNiAvKiBET01OYW1lZE5vZGVNYXAuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NTE4REQ3OTBBOUNGMzFC
MDA5MUI3QTYgLyogRE9NTmFtZWROb2RlTWFwLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODUxOERENzcwQTlDRjMxQjAwOTFCN0E2IC8qIERPTU5hbWVk
Tm9kZU1hcC5tbSAqLzsgfTsKIAkJODUyMTdFMDIwQTVFQ0Q0NzAwREI4RDAwIC8qIFhTTEltcG9y
dFJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODUyMTdFMDAwQTVFQ0Q0NzAwREI4RDAwIC8qIFhTTEltcG9ydFJ1bGUuY3BwICovOyB9OwogCQk4
NTIxN0UwMzBBNUVDRDQ3MDBEQjhEMDAgLyogWFNMSW1wb3J0UnVsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUyMTdFMDEwQTVFQ0Q0NzAwREI4RDAw
IC8qIFhTTEltcG9ydFJ1bGUuaCAqLzsgfTsKIAkJODU0RkU3MzAwQTIyOTdCRTAwNThEN0FEIC8q
IE5vZGVGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODU0RkU3MjYwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0ZXIuY3BwICovOyB9OwpA
QCAtMzY0LDggKzM3OSwzNCBAQAogCQk4NTRGRTczNzBBMjI5N0JFMDA1OEQ3QUQgLyogVHJhdmVy
c2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTRG
RTcyRDBBMjI5N0JFMDA1OEQ3QUQgLyogVHJhdmVyc2FsLmggKi87IH07CiAJCTg1NEZFNzM4MEEy
Mjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NEZFNzJFMEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fs
a2VyLmNwcCAqLzsgfTsKIAkJODU0RkU3MzkwQTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxrZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NEZFNzJG
MEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmggKi87IH07CisJCTg1NkM4OUZDMEE5MEYw
NjgwMDVDNjg3QiAvKiBET01Ob2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NTZDODlGQTBBOTBGMDY4MDA1QzY4N0IgLyogRE9NTm9kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg1NkM4OUZEMEE5
MEYwNjgwMDVDNjg3QiAvKiBET01Ob2RlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODU2Qzg5RkIwQTkwRjA2ODAwNUM2ODdCIC8qIERPTU5vZGUubW0g
Ki87IH07CisJCTg1NkM4QUU0MEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NkM4QUUyMEE5MTI2NDkw
MDVDNjg3QiAvKiBET01PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk4NTZDOEFFNTBBOTEyNjQ5MDA1QzY4N0IgLyogRE9NT2JqZWN0Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU2QzhBRTMw
QTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5tbSAqLzsgfTsKKwkJODVBQ0E5ODYwQTlCNTIw
MzAwNjcxRTkwIC8qIERPTUNoYXJhY3RlckRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QUNBOTg0MEE5QjUyMDMwMDY3MUU5MCAvKiBET01DaGFy
YWN0ZXJEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJODVBQ0E5ODcwQTlCNTIwMzAwNjcxRTkwIC8qIERPTUNoYXJhY3RlckRhdGEubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUFDQTk4NTBBOUI1
MjAzMDA2NzFFOTAgLyogRE9NQ2hhcmFjdGVyRGF0YS5tbSAqLzsgfTsKKwkJODVBQ0E5OUMwQTlC
NTc1OTAwNjcxRTkwIC8qIERPTVRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg1QUNBOTlBMEE5QjU3NTkwMDY3MUU5MCAvKiBET01UZXh0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVBQ0E5OUQw
QTlCNTc1OTAwNjcxRTkwIC8qIERPTVRleHQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NUFDQTk5QjBBOUI1NzU5MDA2NzFFOTAgLyogRE9NVGV4dC5t
bSAqLzsgfTsKKwkJODVBQ0E5QzAwQTlCNUZBNTAwNjcxRTkwIC8qIERPTUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QUNBOUJFMEE5QjVG
QTUwMDY3MUU5MCAvKiBET01FbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVBQ0E5QzEwQTlCNUZBNTAwNjcxRTkwIC8qIERPTUVsZW1l
bnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUFD
QTlCRjBBOUI1RkE1MDA2NzFFOTAgLyogRE9NRWxlbWVudC5tbSAqLzsgfTsKKwkJODVBQ0E5RkIw
QTlCNjMxMDAwNjcxRTkwIC8qIE5hbWVkTm9kZU1hcC5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QUNBOUY5MEE5QjYzMTAwMDY3MUU5MCAvKiBO
YW1lZE5vZGVNYXAuaWRsICovOyB9OworCQk4NUFDQTlGQzBBOUI2MzEwMDA2NzFFOTAgLyogTm9k
ZUxpc3QuaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NUFDQTlGQTBBOUI2MzEwMDA2NzFFOTAgLyogTm9kZUxpc3QuaWRsICovOyB9OworCQk4NUFD
QUE4RDBBOUI3NTlDMDA2NzFFOTAgLyogRE9NTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QUNBQTg5MEE5Qjc1OUMwMDY3MUU5MCAvKiBE
T01Ob2RlTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTg1QUNBQThFMEE5Qjc1OUMwMDY3MUU5MCAvKiBET01Ob2RlTGlzdC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1QUNBQThBMEE5Qjc1OUMw
MDY3MUU5MCAvKiBET01Ob2RlTGlzdC5tbSAqLzsgfTsKKwkJODVBQ0FCQjAwQTlDQUY4MDAwNjcx
RTkwIC8qIERPTURvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NUFDQUJBRTBBOUNBRjgwMDA2NzFFOTAgLyogRE9NRG9jdW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NUFDQUJCMTBB
OUNBRjgwMDA2NzFFOTAgLyogRE9NRG9jdW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUFDQUJBRjBBOUNBRjgwMDA2NzFFOTAgLyogRE9NRG9j
dW1lbnQubW0gKi87IH07CisJCTg1Q0E5NkI4MEE5NjIxQTYwMDY5MENDRiAvKiBET01FbnRpdHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1Q0E5NkI2
MEE5NjIxQTYwMDY5MENDRiAvKiBET01FbnRpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NUNBOTZCOTBBOTYyMUE2MDA2OTBDQ0YgLyogRE9N
RW50aXR5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODVDQTk2QjcwQTk2MjFBNjAwNjkwQ0NGIC8qIERPTUVudGl0eS5tbSAqLzsgfTsKKwkJODVDQTk2
RUEwQTk2MjRFOTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUNBOTZFODBBOTYyNEU5MDA2OTBDQ0YgLyogRE9N
Tm90YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk4NUNBOTZFQjBBOTYyNEU5MDA2OTBDQ0YgLyogRE9NTm90YXRpb24ubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUNBOTZFOTBBOTYyNEU5MDA2
OTBDQ0YgLyogRE9NTm90YXRpb24ubW0gKi87IH07CisJCTg1Q0E5NzVDMEE5NjJFNTQwMDY5MEND
RiAvKiBET01Eb2N1bWVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg1Q0E5NzVBMEE5NjJFNTQwMDY5MENDRiAvKiBET01Eb2N1bWVudFR5cGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NUNB
OTc1RDBBOTYyRTU0MDA2OTBDQ0YgLyogRE9NRG9jdW1lbnRUeXBlLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVDQTk3NUIwQTk2MkU1NDAwNjkwQ0NG
IC8qIERPTURvY3VtZW50VHlwZS5tbSAqLzsgfTsKKwkJODVEMzg5QjIwQTk5MUE3RjAwMjgyMTQ1
IC8qIERPTUF0dHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg1RDM4OUIwMEE5OTFBN0YwMDI4MjE0NSAvKiBET01BdHRyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODVEMzg5QjMwQTk5MUE3RjAwMjgy
MTQ1IC8qIERPTUF0dHIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NUQzODlCMTBBOTkxQTdGMDAyODIxNDUgLyogRE9NQXR0ci5tbSAqLzsgfTsKIAkJ
ODVFQzlBRkEwQTcxQTJDNjAwRUVFQUVEIC8qIEZvbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUVDOUFGODBBNzFBMkM2MDBFRUVBRUQgLyog
Rm9udERhdGEuaCAqLzsgfTsKIAkJODVFQzlBRkIwQTcxQTJDNjAwRUVFQUVEIC8qIExhbmd1YWdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUVDOUFG
OTBBNzFBMkM2MDBFRUVBRUQgLyogTGFuZ3VhZ2UuaCAqLzsgfTsKKwkJODVGNTZBN0EwQTk4Q0Uz
NzAwQURCNjBBIC8qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVGNTZBNzgwQTk4Q0UzNzAwQURCNjBBIC8q
IERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTg1RjU2QTdCMEE5OENFMzcwMEFEQjYwQSAvKiBET01Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NUY1NkE3OTBBOThDRTM3MDBBREI2MEEgLyogRE9NUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLm1tICovOyB9OwogCQk5MzAzMkNDODA5QUVDMzQzMDBGODJBMTggLyogUGF0aENHLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDMyQ0M3
MDlBRUMzNDMwMEY4MkExOCAvKiBQYXRoQ0cuY3BwICovOyB9OwogCQk5MzAzMkNDQTA5QUVDMzRC
MDBGODJBMTggLyogUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTMwMzJDQzkwOUFFQzM0QjAwRjgyQTE4IC8qIFBhdGguaCAqLzsgfTsKIAkJOTMw
NUIyNEQwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1QjI0QzA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIu
aCAqLzsgfTsKQEAgLTIwNTcsNiArMjA5OCwyMSBAQAogCQk4NTAzMUIzOTBBNDRFRkM3MDBGOTky
RTAgLyogVUlFdmVudFdpdGhLZXlTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVUlFdmVudFdpdGhLZXlTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NTAzMUIzQTBBNDRFRkM3MDBGOTkyRTAgLyogV2hlZWxFdmVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2hlZWxFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg1MDMxQjNCMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVlbEV2ZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaGVlbEV2ZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MDg5Q0M3MEE5OEMyMjYwMEEyNzVBQSAvKiBDb21tZW50
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ29tbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg1MDg5Q0M5MEE5OEMyQUIwMEEyNzVBQSAvKiBDREFUQVNlY3Rpb24u
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDREFUQVNlY3Rpb24uaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4NTA4OUNDQjBBOThDMzNBMDBBMjc1QUEgLyogRW50aXR5UmVm
ZXJlbmNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRW50aXR5UmVmZXJlbmNlLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwODlDQ0YwQTk4QzQyNzAwQTI3NUFBIC8q
IERPTUNEQVRBU2VjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
Q0RBVEFTZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MDg5Q0QwMEE5
OEM0MjcwMEEyNzVBQSAvKiBET01DREFUQVNlY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NQ0RBVEFTZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4NTA4OUNEMTBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ29tbWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQ29tbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4NTA4OUNEMjBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ29tbWVu
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01Db21tZW50
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTA4OUNEMzBBOThDNDI4MDBBMjc1
QUEgLyogRE9NRG9jdW1lbnRGcmFnbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NRG9jdW1lbnRGcmFnbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4NTA4OUNENDBBOThDNDI4MDBBMjc1QUEgLyogRE9NRG9jdW1lbnRGcmFnbWVudC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01Eb2N1bWVudEZyYWdtZW50
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTA4OUNENTBBOThDNDI4MDBBMjc1
QUEgLyogRE9NRW50aXR5UmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01FbnRpdHlSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODUwODlDRDYwQTk4QzQyODAwQTI3NUFBIC8qIERPTUVudGl0eVJlZmVyZW5jZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01FbnRpdHlSZWZlcmVuY2UubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1MThEQ0U3MEE5Q0M4MEMwMDkxQjdBNiAv
KiBET01ET01JbXBsZW1lbnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NRE9NSW1wbGVtZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODUxOERDRTgwQTlDQzgwRDAwOTFCN0E2IC8qIERPTURPTUltcGxlbWVudGF0aW9uLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTURPTUltcGxlbWVudGF0aW9u
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTE4REQ3NjBBOUNGMzFCMDA5MUI3
QTYgLyogRE9NTmFtZWROb2RlTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBET01OYW1lZE5vZGVNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUxOERE
NzcwQTlDRjMxQjAwOTFCN0E2IC8qIERPTU5hbWVkTm9kZU1hcC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01OYW1lZE5vZGVNYXAubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg1MjE3RTAwMEE1RUNENDcwMERCOEQwMCAvKiBYU0xJbXBvcnRS
dWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYU0xJbXBvcnRS
dWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODUyMTdFMDEwQTVFQ0Q0NzAw
REI4RDAwIC8qIFhTTEltcG9ydFJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFhTTEltcG9ydFJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODU0RkU3
MjYwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVGaWx0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjA2OSw4ICsyMTI1LDM1IEBACiAJCTg1NEZFNzJEMEEyMjk3QkUwMDU4RDdBRCAv
KiBUcmF2ZXJzYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYXZlcnNh
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTRGRTcyRTBBMjI5N0JFMDA1OEQ3
QUQgLyogVHJlZVdhbGtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVHJlZVdhbGtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1NEZFNzJG
MEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUcmVlV2Fsa2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1
NkM4OUZBMEE5MEYwNjgwMDVDNjg3QiAvKiBET01Ob2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU5v
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2Qzg5RkIwQTkwRjA2ODAwNUM2
ODdCIC8qIERPTU5vZGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRE9NTm9kZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU2QzhBRTIwQTkx
MjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1NkM4QUUz
MEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gRE9NT2JqZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NTlCN0ZCOTBBOEQyODg4MDBBNUYxRUEgLyogQ29kZUdlbmVyYXRvck9iakMucG0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IENvZGVHZW5lcmF0b3JPYmpDLnBtOyBw
YXRoID0gYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbTsgc291cmNlVHJlZSA9
IFNPVVJDRV9ST09UOyB9OworCQk4NUFDQTk4NDBBOUI1MjAzMDA2NzFFOTAgLyogRE9NQ2hhcmFj
dGVyRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQ2hhcmFjdGVy
RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUFDQTk4NTBBOUI1MjAzMDA2
NzFFOTAgLyogRE9NQ2hhcmFjdGVyRGF0YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBET01DaGFyYWN0ZXJEYXRhLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4NUFDQTk5QTBBOUI1NzU5MDA2NzFFOTAgLyogRE9NVGV4dC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4NUFDQTk5QjBBOUI1NzU5MDA2NzFFOTAgLyogRE9NVGV4dC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01UZXh0Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NUFDQTlCRTBBOUI1RkE1MDA2NzFFOTAgLyogRE9NRWxlbWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRWxlbWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4NUFDQTlCRjBBOUI1RkE1MDA2NzFFOTAgLyogRE9NRWxl
bWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01FbGVt
ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUFDQTlGOTBBOUI2MzEwMDA2
NzFFOTAgLyogTmFtZWROb2RlTWFwLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmFtZWRO
b2RlTWFwLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVBQ0E5RkEwQTlCNjMx
MDAwNjcxRTkwIC8qIE5vZGVMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTm9kZUxp
c3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUFDQUE4OTBBOUI3NTlDMDA2
NzFFOTAgLyogRE9NTm9kZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTU5vZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1QUNBQThBMEE5
Qjc1OUMwMDY3MUU5MCAvKiBET01Ob2RlTGlzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBET01Ob2RlTGlzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODVBQ0FCQUUwQTlDQUY4MDAwNjcxRTkwIC8qIERPTURvY3VtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01Eb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4NUFDQUJBRjBBOUNBRjgwMDA2NzFFOTAgLyogRE9NRG9jdW1lbnQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRG9jdW1lbnQubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1Q0E5NkI2MEE5NjIxQTYwMDY5MENDRiAv
KiBET01FbnRpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUVudGl0
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUNBOTZCNzBBOTYyMUE2MDA2OTBD
Q0YgLyogRE9NRW50aXR5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IERPTUVudGl0eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVDQTk2RTgw
QTk2MjRFOTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01Ob3RhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
NUNBOTZFOTBBOTYyNEU5MDA2OTBDQ0YgLyogRE9NTm90YXRpb24ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NTm90YXRpb24ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg1Q0E5NzVBMEE5NjJFNTQwMDY5MENDRiAvKiBET01Eb2N1bWVudFR5
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTURvY3VtZW50VHlwZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUNBOTc1QjBBOTYyRTU0MDA2OTBDQ0Yg
LyogRE9NRG9jdW1lbnRUeXBlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IERPTURvY3VtZW50VHlwZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODVEMzg5QjAwQTk5MUE3RjAwMjgyMTQ1IC8qIERPTUF0dHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTUF0dHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODVEMzg5QjEwQTk5MUE3RjAwMjgyMTQ1IC8qIERPTUF0dHIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NQXR0ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODVFQzlBRjgwQTcxQTJDNjAwRUVFQUVEIC8qIEZvbnREYXRhLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NUVDOUFGOTBBNzFBMkM2MDBFRUVBRUQgLyogTGFuZ3VhZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhbmd1YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg1RjU2QTc4MEE5OENFMzcwMEFEQjYwQSAvKiBET01Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVByb2Nlc3Np
bmdJbnN0cnVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUY1NkE3OTBB
OThDRTM3MDBBREI2MEEgLyogRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwMzJDQzcwOUFFQzM0MzAwRjgyQTE4
IC8qIFBhdGhDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXRo
Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzAzMkNDOTA5QUVDMzRCMDBG
ODJBMTggLyogUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXRoLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMDVCMjRDMDk4RjFCNkIwMEMyODg1NSAv
KiBUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW1lci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzk5Niw2ICs0MDc5LDU3IEBACiAJCQlwYXRoID0g
bWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJODU0RjEyQUMwQThFQkMx
ODAwMDk0MEI1IC8qIENvcmUgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCTg1NkM4OUZBMEE5MEYwNjgwMDVDNjg3QiAvKiBET01Ob2RlLmggKi8sCisJCQkJ
ODU2Qzg5RkIwQTkwRjA2ODAwNUM2ODdCIC8qIERPTU5vZGUubW0gKi8sCisJCQkJODU2QzhBRTIw
QTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5oICovLAorCQkJCTg1NkM4QUUzMEE5MTI2NDkw
MDVDNjg3QiAvKiBET01PYmplY3QubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IENvcmU7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk4NUIyMzIyNjBBOEJGM0ExMDBGREY0N0Ig
LyogRGVyaXZlZCBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQk4NUQzODlCMDBBOTkxQTdGMDAyODIxNDUgLyogRE9NQXR0ci5oICovLAorCQkJ
CTg1RDM4OUIxMEE5OTFBN0YwMDI4MjE0NSAvKiBET01BdHRyLm1tICovLAorCQkJCTg1MDg5Q0NG
MEE5OEM0MjcwMEEyNzVBQSAvKiBET01DREFUQVNlY3Rpb24uaCAqLywKKwkJCQk4NTA4OUNEMDBB
OThDNDI3MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLm1tICovLAorCQkJCTg1QUNBOTg0MEE5
QjUyMDMwMDY3MUU5MCAvKiBET01DaGFyYWN0ZXJEYXRhLmggKi8sCisJCQkJODVBQ0E5ODUwQTlC
NTIwMzAwNjcxRTkwIC8qIERPTUNoYXJhY3RlckRhdGEubW0gKi8sCisJCQkJODUwODlDRDEwQTk4
QzQyNzAwQTI3NUFBIC8qIERPTUNvbW1lbnQuaCAqLywKKwkJCQk4NTA4OUNEMjBBOThDNDI3MDBB
Mjc1QUEgLyogRE9NQ29tbWVudC5tbSAqLywKKwkJCQk4NTE4RENFNzBBOUNDODBDMDA5MUI3QTYg
LyogRE9NRE9NSW1wbGVtZW50YXRpb24uaCAqLywKKwkJCQk4NTE4RENFODBBOUNDODBEMDA5MUI3
QTYgLyogRE9NRE9NSW1wbGVtZW50YXRpb24ubW0gKi8sCisJCQkJODVBQ0FCQUUwQTlDQUY4MDAw
NjcxRTkwIC8qIERPTURvY3VtZW50LmggKi8sCisJCQkJODVBQ0FCQUYwQTlDQUY4MDAwNjcxRTkw
IC8qIERPTURvY3VtZW50Lm1tICovLAorCQkJCTg1MDg5Q0QzMEE5OEM0MjgwMEEyNzVBQSAvKiBE
T01Eb2N1bWVudEZyYWdtZW50LmggKi8sCisJCQkJODUwODlDRDQwQTk4QzQyODAwQTI3NUFBIC8q
IERPTURvY3VtZW50RnJhZ21lbnQubW0gKi8sCisJCQkJODVDQTk3NUEwQTk2MkU1NDAwNjkwQ0NG
IC8qIERPTURvY3VtZW50VHlwZS5oICovLAorCQkJCTg1Q0E5NzVCMEE5NjJFNTQwMDY5MENDRiAv
KiBET01Eb2N1bWVudFR5cGUubW0gKi8sCisJCQkJODVBQ0E5QkUwQTlCNUZBNTAwNjcxRTkwIC8q
IERPTUVsZW1lbnQuaCAqLywKKwkJCQk4NUFDQTlCRjBBOUI1RkE1MDA2NzFFOTAgLyogRE9NRWxl
bWVudC5tbSAqLywKKwkJCQk4NUNBOTZCNjBBOTYyMUE2MDA2OTBDQ0YgLyogRE9NRW50aXR5Lmgg
Ki8sCisJCQkJODVDQTk2QjcwQTk2MjFBNjAwNjkwQ0NGIC8qIERPTUVudGl0eS5tbSAqLywKKwkJ
CQk4NTA4OUNENTBBOThDNDI4MDBBMjc1QUEgLyogRE9NRW50aXR5UmVmZXJlbmNlLmggKi8sCisJ
CQkJODUwODlDRDYwQTk4QzQyODAwQTI3NUFBIC8qIERPTUVudGl0eVJlZmVyZW5jZS5tbSAqLywK
KwkJCQk4NTE4REQ3NjBBOUNGMzFCMDA5MUI3QTYgLyogRE9NTmFtZWROb2RlTWFwLmggKi8sCisJ
CQkJODUxOERENzcwQTlDRjMxQjAwOTFCN0E2IC8qIERPTU5hbWVkTm9kZU1hcC5tbSAqLywKKwkJ
CQk4NUFDQUE4OTBBOUI3NTlDMDA2NzFFOTAgLyogRE9NTm9kZUxpc3QuaCAqLywKKwkJCQk4NUFD
QUE4QTBBOUI3NTlDMDA2NzFFOTAgLyogRE9NTm9kZUxpc3QubW0gKi8sCisJCQkJODVDQTk2RTgw
QTk2MjRFOTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9uLmggKi8sCisJCQkJODVDQTk2RTkwQTk2MjRF
OTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9uLm1tICovLAorCQkJCTg1RjU2QTc4MEE5OENFMzcwMEFE
QjYwQSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCAqLywKKwkJCQk4NUY1NkE3OTBBOThD
RTM3MDBBREI2MEEgLyogRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tICovLAorCQkJCTg1QUNB
OTlBMEE5QjU3NTkwMDY3MUU5MCAvKiBET01UZXh0LmggKi8sCisJCQkJODVBQ0E5OUIwQTlCNTc1
OTAwNjcxRTkwIC8qIERPTVRleHQubW0gKi8sCisJCQkpOworCQkJbmFtZSA9ICJEZXJpdmVkIFNv
dXJjZXMiOworCQkJcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmU7CisJCQlzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOworCQl9OwogCQk5MzAzMkNDQzA5QUVDMzYyMDBGODJBMTgg
LyogY2cgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtNDk5
MCw5ICs1MTI0LDkgQEAKIAkJQkMxQTM3OTQwOTdDNkZDNDAwMTlGM0Q4IC8qIG9iamMgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTFDQUYzNDdFMEE2QzQw
NTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCAqLywKLQkJCQkxQ0FGMzQ3RjBBNkM0MDUy
MDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tICovLAotCQkJCTFDQUYzNDgwMEE2QzQwNTIw
MEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3RQcml2YXRlLmggKi8sCisJCQkJODVCMjMyMjYwQThC
RjNBMTAwRkRGNDdCIC8qIERlcml2ZWQgU291cmNlcyAqLywKKwkJCQk4NTRGMTJBQzBBOEVCQzE4
MDAwOTQwQjUgLyogQ29yZSAqLywKKwkJCQk4NTlCN0ZCOTBBOEQyODg4MDBBNUYxRUEgLyogQ29k
ZUdlbmVyYXRvck9iakMucG0gKi8sCiAJCQkJQkMxQTM3OTcwOTdDNzE1RjAwMTlGM0Q4IC8qIERP
TS5oICovLAogCQkJCUJDMUEzNzk4MDk3QzcxNUYwMDE5RjNEOCAvKiBET00ubW0gKi8sCiAJCQkJ
QkMxQTM3OTkwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTUNvcmUuaCAqLywKQEAgLTUwMjIsNiArNTE1
Niw5IEBACiAJCQkJMUExRDEzN0UwQTUzMjU1MjAwNjRCRjVGIC8qIERPTVhQYXRoLmggKi8sCiAJ
CQkJMUExRDEzN0YwQTUzMjU1MjAwNjRCRjVGIC8qIERPTVhQYXRoLm1tICovLAogCQkJCTFBMUQx
M0M5MEE1MzI5MDkwMDY0QkY1RiAvKiBET01YUGF0aEludGVybmFsLmggKi8sCisJCQkJMUNBRjM0
N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oICovLAorCQkJCTFDQUYzNDdG
MEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0gKi8sCisJCQkJMUNBRjM0ODAw
QTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gb2JqYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC01NTAyLDYgKzU2
MzksNyBAQAogCQkJCTg1MDMxQjI3MEE0NEVGQzcwMEY5OTJFMCAvKiBCZWZvcmVVbmxvYWRFdmVu
dC5oICovLAogCQkJCTY1NTBCNjkzMDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uY3Bw
ICovLAogCQkJCTY1NTBCNjk0MDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uaCAqLywK
KwkJCQk4NTA4OUNDOTBBOThDMkFCMDBBMjc1QUEgLyogQ0RBVEFTZWN0aW9uLmlkbCAqLywKIAkJ
CQk2NTUwQjY5NTA5OURGMDI3MDA5MEQ3ODEgLyogQ2hhcmFjdGVyRGF0YS5jcHAgKi8sCiAJCQkJ
NjU1MEI2OTYwOTlERjAyNzAwOTBENzgxIC8qIENoYXJhY3RlckRhdGEuaCAqLywKIAkJCQk5M0VF
QzFFNjA5QzI4Nzc3MDBDNTE1RDEgLyogQ2hhcmFjdGVyRGF0YS5pZGwgKi8sCkBAIC01NTEyLDYg
KzU2NTAsNyBAQAogCQkJCTg1MDMxQjJBMEE0NEVGQzcwMEY5OTJFMCAvKiBDbGlwYm9hcmRFdmVu
dC5oICovLAogCQkJCTY1NTBCNjk3MDk5REYwMjcwMDkwRDc4MSAvKiBDb21tZW50LmNwcCAqLywK
IAkJCQk2NTUwQjY5ODA5OURGMDI3MDA5MEQ3ODEgLyogQ29tbWVudC5oICovLAorCQkJCTg1MDg5
Q0M3MEE5OEMyMjYwMEEyNzVBQSAvKiBDb21tZW50LmlkbCAqLywKIAkJCQlBODE4NzIxNDA5NzdE
M0MwMDA1ODI2RDkgLyogQ29udGFpbmVyTm9kZS5jcHAgKi8sCiAJCQkJQTgxODcyMTEwOTc3RDND
MDAwNTgyNkQ5IC8qIENvbnRhaW5lck5vZGUuaCAqLywKIAkJCQlBOEM0QTdGODA5RDU2MzI3MDAw
M0FDOEQgLyogQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24uY3BwICovLApAQCAtNTU0MCw2
ICs1Njc5LDcgQEAKIAkJCQk5M0VFQzFFQjA5QzI4Nzc3MDBDNTE1RDEgLyogRW50aXR5LmlkbCAq
LywKIAkJCQlBOEVBN0VCOTBBMTk0NUQwMDBBOEVGNUYgLyogRW50aXR5UmVmZXJlbmNlLmNwcCAq
LywKIAkJCQlBOEVBN0VCODBBMTk0NUQwMDBBOEVGNUYgLyogRW50aXR5UmVmZXJlbmNlLmggKi8s
CisJCQkJODUwODlDQ0IwQTk4QzMzQTAwQTI3NUFBIC8qIEVudGl0eVJlZmVyZW5jZS5pZGwgKi8s
CiAJCQkJODUwMzFCMkIwQTQ0RUZDNzAwRjk5MkUwIC8qIEV2ZW50LmNwcCAqLywKIAkJCQk4NTAz
MUIyQzBBNDRFRkM3MDBGOTkyRTAgLyogRXZlbnQuaCAqLywKIAkJCQkxNEU4MzZEMjA5Rjg1MTIw
MDBCODVBRTQgLyogRXZlbnQuaWRsICovLApAQCAtNTU2OCw2ICs1NzA4LDcgQEAKIAkJCQlBOEM0
QTdGMDA5RDU2MzI3MDAwM0FDOEQgLyogTmFtZWRNYXBwZWRBdHRyTWFwLmNwcCAqLywKIAkJCQlB
OEM0QTdFRjA5RDU2MzI3MDAwM0FDOEQgLyogTmFtZWRNYXBwZWRBdHRyTWFwLmggKi8sCiAJCQkJ
QTgxODcyMTgwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVkTm9kZU1hcC5oICovLAorCQkJCTg1QUNB
OUY5MEE5QjYzMTAwMDY3MUU5MCAvKiBOYW1lZE5vZGVNYXAuaWRsICovLAogCQkJCUE4MTg3MjE5
MDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lTm9kZUxpc3QuY3BwICovLAogCQkJCUE4MTg3MjEzMDk3
N0QzQzAwMDU4MjZEOSAvKiBOYW1lTm9kZUxpc3QuaCAqLywKIAkJCQlBOEM0QTdFRTA5RDU2MzI3
MDAwM0FDOEQgLyogTm9kZS5jcHAgKi8sCkBAIC01NTgzLDYgKzU3MjQsNyBAQAogCQkJCTFBNzUw
RDg3MEE5MEUzOTQwMDBGRjIxNSAvKiBOb2RlSXRlcmF0b3IuaWRsICovLAogCQkJCUE4MTg3MjE2
MDk3N0QzQzAwMDU4MjZEOSAvKiBOb2RlTGlzdC5jcHAgKi8sCiAJCQkJQTgxODcyMTAwOTc3RDND
MDAwNTgyNkQ5IC8qIE5vZGVMaXN0LmggKi8sCisJCQkJODVBQ0E5RkEwQTlCNjMxMDAwNjcxRTkw
IC8qIE5vZGVMaXN0LmlkbCAqLywKIAkJCQlBOEVBN0VCNzBBMTk0NUQwMDBBOEVGNUYgLyogTm90
YXRpb24uY3BwICovLAogCQkJCUE4RUE3RUI2MEExOTQ1RDAwMEE4RUY1RiAvKiBOb3RhdGlvbi5o
ICovLAogCQkJCTkzRUVDMUY0MDlDMjg3NzcwMEM1MTVEMSAvKiBOb3RhdGlvbi5pZGwgKi8sCkBA
IC02NDAyLDYgKzY1NDQsMTEgQEAKIAkJCQlCQ0FBOTBBMDBBN0VCMDNBMDA4QjEyMjkgLyogUGxh
dGZvcm1TY3JvbGxCYXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RUM5QUZBMEE3MUEyQzYwMEVF
RUFFRCAvKiBGb250RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFQzlBRkIwQTcxQTJDNjAw
RUVFQUVEIC8qIExhbmd1YWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTZDODlGQzBBOTBGMDY4
MDA1QzY4N0IgLyogRE9NTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU2QzhBRTQwQTkxMjY0
OTAwNUM2ODdCIC8qIERPTU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODVDQTk2QjgwQTk2
MjFBNjAwNjkwQ0NGIC8qIERPTUVudGl0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODVDQTk2RUEw
QTk2MjRFOTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUNB
OTc1QzBBOTYyRTU0MDA2OTBDQ0YgLyogRE9NRG9jdW1lbnRUeXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUI3RkM2OTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBQjdGQzZDMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjdGQzZGMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4
cHJlc3Npb25Ob2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTY0MjIsNiArNjU2OSwxOSBAQAogCQkJ
CTFBQ0U1M0Y3MEE4RDE5NDcwMDIyOTQ3RCAvKiBKU1hNTFNlcmlhbGl6ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBNzUwRDVEMEE5MERFRTEwMDBGRjIxNSAvKiBKU1RyZWVXYWxrZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBNzUwRDhFMEE5MEU1MjEwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODUwODlDRDcwQTk4QzQyODAwQTI3NUFBIC8qIERPTUNE
QVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJODUwODlDRDkwQTk4QzQyODAwQTI3NUFB
IC8qIERPTUNvbW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1MDg5Q0RCMEE5OEM0MjgwMEEy
NzVBQSAvKiBET01Eb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NTA4OUNE
RDBBOThDNDI4MDBBMjc1QUEgLyogRE9NRW50aXR5UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk4NUY1NkE3QTBBOThDRTM3MDBBREI2MEEgLyogRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUQzODlCMjBBOTkxQTdGMDAyODIxNDUgLyogRE9NQXR0
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODVBQ0E5ODYwQTlCNTIwMzAwNjcxRTkwIC8qIERPTUNo
YXJhY3RlckRhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1QUNBOTlDMEE5QjU3NTkwMDY3MUU5
MCAvKiBET01UZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUFDQTlDMDBBOUI1RkE1MDA2NzFF
OTAgLyogRE9NRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODVBQ0FBOEQwQTlCNzU5QzAw
NjcxRTkwIC8qIERPTU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NUFDQUJCMDBBOUNB
RjgwMDA2NzFFOTAgLyogRE9NRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg1MThEQ0U5
MEE5Q0M4MEQwMDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJODUxOERENzgwQTlDRjMxQjAwOTFCN0E2IC8qIERPTU5hbWVkTm9kZU1hcC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNjU3NDI5MTcwQTlDMkQwQjAwQzUyQzk3IC8qIEljb25EYXRhQ2FjaGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTY1NzQyOTE4MEE5QzJEMEIwMEM1MkM5NyAvKiBTUUxTdGF0
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NzQyOTE5MEE5QzJEMEIwMEM1MkM5NyAvKiBT
UUxUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC02NTIwLDYgKzY2ODAsMTEgQEAKIAkJ
CQkxQ0Q0NDE4RjBBNENFNzZGMDBBMDA3QUIgLyogbm9ydGhTb3V0aFJlc2l6ZUN1cnNvci50aWZm
IGluIFJlc291cmNlcyAqLywKIAkJCQkxQ0Q0NDE5MDBBNENFNzZGMDBBMDA3QUIgLyogbm9ydGhX
ZXN0U291dGhFYXN0UmVzaXplQ3Vyc29yLnRpZmYgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBNzUw
RDg4MEE5MEUzOTQwMDBGRjIxNSAvKiBOb2RlSXRlcmF0b3IuaWRsIGluIFJlc291cmNlcyAqLywK
KwkJCQk4NTA4OUNDODBBOThDMjI2MDBBMjc1QUEgLyogQ29tbWVudC5pZGwgaW4gUmVzb3VyY2Vz
ICovLAorCQkJCTg1MDg5Q0NBMEE5OEMyQUIwMEEyNzVBQSAvKiBDREFUQVNlY3Rpb24uaWRsIGlu
IFJlc291cmNlcyAqLywKKwkJCQk4NTA4OUNDQzBBOThDMzNBMDBBMjc1QUEgLyogRW50aXR5UmVm
ZXJlbmNlLmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJODVBQ0E5RkIwQTlCNjMxMDAwNjcxRTkw
IC8qIE5hbWVkTm9kZU1hcC5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCTg1QUNBOUZDMEE5QjYz
MTAwMDY3MUU5MCAvKiBOb2RlTGlzdC5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJCTUxMTUwOTVD
MEE5Q0UwNDcwMDkwMTAxMyAvKiB1cmxJY29uLnRpZmYgaW4gUmVzb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtNzI3NCw2ICs3
NDM5LDExIEBACiAJCQkJQkNBQTkwQzMwQTdFQkE2MDAwOEIxMjI5IC8qIFNjcm9sbEJhci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5M0IwRkQ4QTBBNzU5QkVEMDA4MEFENDQgLyogU3RyaW5nSW1w
bE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzQjBGRDhCMEE3NTlCRUQwMDgwQUQ0NCAvKiBT
dHJpbmdNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTZDODlGRDBBOTBGMDY4MDA1QzY4N0Ig
LyogRE9NTm9kZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1NkM4QUU1MEE5MTI2NDkwMDVDNjg3
QiAvKiBET01PYmplY3QubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NUNBOTZCOTBBOTYyMUE2MDA2
OTBDQ0YgLyogRE9NRW50aXR5Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODVDQTk2RUIwQTk2MjRF
OTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODVDQTk3NUQw
QTk2MkU1NDAwNjkwQ0NGIC8qIERPTURvY3VtZW50VHlwZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTFBQjdGQzY4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUI3RkM2QjBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFeHByZXNzaW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdGQzZFMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4
cHJlc3Npb25Ob2RlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzI5Niw2ICs3NDY2LDE5IEBACiAJ
CQkJMUE3NTBEOEQwQTkwRTUyMTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBNzUwREQ0MEE5MEU3MjkwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvckN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTc1MEUzNDBBOTBGODlGMDAwRkYyMTUgLyog
SlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg1MDg5Q0Q4MEE5OEM0
MjgwMEEyNzVBQSAvKiBET01DREFUQVNlY3Rpb24ubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTA4
OUNEQTBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ29tbWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTg1MDg5Q0RDMEE5OEM0MjgwMEEyNzVBQSAvKiBET01Eb2N1bWVudEZyYWdtZW50Lm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJODUwODlDREUwQTk4QzQyODAwQTI3NUFBIC8qIERPTUVudGl0eVJlZmVy
ZW5jZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1RjU2QTdCMEE5OENFMzcwMEFEQjYwQSAvKiBE
T01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NUQzODlCMzBB
OTkxQTdGMDAyODIxNDUgLyogRE9NQXR0ci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1QUNBOTg3
MEE5QjUyMDMwMDY3MUU5MCAvKiBET01DaGFyYWN0ZXJEYXRhLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJODVBQ0E5OUQwQTlCNTc1OTAwNjcxRTkwIC8qIERPTVRleHQubW0gaW4gU291cmNlcyAqLywK
KwkJCQk4NUFDQTlDMTBBOUI1RkE1MDA2NzFFOTAgLyogRE9NRWxlbWVudC5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTg1QUNBQThFMEE5Qjc1OUMwMDY3MUU5MCAvKiBET01Ob2RlTGlzdC5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTg1QUNBQkIxMEE5Q0FGODAwMDY3MUU5MCAvKiBET01Eb2N1bWVudC5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTg1MThEQ0VBMEE5Q0M4MEQwMDkxQjdBNiAvKiBET01ET01J
bXBsZW1lbnRhdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTg1MThERDc5MEE5Q0YzMUIwMDkx
QjdBNiAvKiBET01OYW1lZE5vZGVNYXAubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTg2QzA1NjBB
OUMyMTQ3MDAzNEZFOTQgLyogSWNvbkRhdGFDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzgzN0M3MjBBOUQwRDFBMDA2QjE4NkEgLyogRmxvYXRQb2ludENHLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDODM3QzczMEE5RDBEMUEwMDZCMTg2QSAvKiBGbG9hdFJlY3RDRy5jcHAgaW4gU291
cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQkocmV2aXNpb24gMTYwNjcpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEphbWVzIEcuIFNwZXRoIChz
cGV0aEBlbmQuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbS53
ZWluaWdAZ21haWwuY29tKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwx
NyArMjksMTcgQEAKICNpbXBvcnQgIkRPTS5oIgogCiAjaW1wb3J0ICJDREFUQVNlY3Rpb24uaCIK
LSNpbXBvcnQgImNzc2hlbHBlci5oIgogI2ltcG9ydCAiQ1NTU3R5bGVTaGVldC5oIgogI2ltcG9y
dCAiQ29tbWVudC5oIgogI2ltcG9ydCAiRE9NRXZlbnRzSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRP
TUhUTUwuaCIKICNpbXBvcnQgIkRPTUltcGxlbWVudGF0aW9uRnJvbnQuaCIKICNpbXBvcnQgIkRP
TUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Qcml2YXRlLmgiCisjaW1wb3J0ICJEZXByZWNhdGVk
VmFsdWVMaXN0LmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiRG9jdW1lbnRGcmFn
bWVudC5oIgogI2ltcG9ydCAiRG9jdW1lbnRUeXBlLmgiCi0jaW1wb3J0ICJFbnRpdHkuaCIKICNp
bXBvcnQgIkVudGl0eVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRXZlbnQuaCIKICNpbXBvcnQgIkV2
ZW50TGlzdGVuZXIuaCIKQEAgLTQ3LDM3ICs0OCw1NyBAQAogI2ltcG9ydCAiSFRNTERvY3VtZW50
LmgiCiAjaW1wb3J0ICJIVE1MTmFtZXMuaCIKICNpbXBvcnQgIkhUTUxQbHVnSW5FbGVtZW50Lmgi
CisjaW1wb3J0ICJJbnRSZWN0LmgiCiAjaW1wb3J0ICJOb2RlRmlsdGVyLmgiCiAjaW1wb3J0ICJO
b2RlRmlsdGVyQ29uZGl0aW9uLmgiCiAjaW1wb3J0ICJOb2RlSXRlcmF0b3IuaCIKICNpbXBvcnQg
Ik5vZGVMaXN0LmgiCi0jaW1wb3J0ICJOb3RhdGlvbi5oIgogI2ltcG9ydCAiUHJvY2Vzc2luZ0lu
c3RydWN0aW9uLmgiCiAjaW1wb3J0ICJRdWFsaWZpZWROYW1lLmgiCiAjaW1wb3J0ICJSYW5nZS5o
IgogI2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKKyNpbXBvcnQgIlRleHQuaCIKICNpbXBvcnQgIlRy
ZWVXYWxrZXIuaCIKICNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKKyNpbXBvcnQg
ImNzc2hlbHBlci5oIgorCisvLyBGcm9tIG9sZCBET01Db3JlLmgKKyNpbXBvcnQgIkRPTU5vZGUu
aCIKKyNpbXBvcnQgIkRPTU9iamVjdC5oIgorCisvLyBHZW5lcmF0ZWQgT2JqZWN0aXZlLUMgQmlu
ZGluZ3MKKyNpbXBvcnQgIkRPTUF0dHIuaCIKKyNpbXBvcnQgIkRPTUNEQVRBU2VjdGlvbi5oIgor
I2ltcG9ydCAiRE9NQ2hhcmFjdGVyRGF0YS5oIgorI2ltcG9ydCAiRE9NQ29tbWVudC5oIgorI2lt
cG9ydCAiRE9NRE9NSW1wbGVtZW50YXRpb24uaCIKKyNpbXBvcnQgIkRPTURvY3VtZW50LmgiCisj
aW1wb3J0ICJET01Eb2N1bWVudEZyYWdtZW50LmgiCisjaW1wb3J0ICJET01Eb2N1bWVudFR5cGUu
aCIKKyNpbXBvcnQgIkRPTUVsZW1lbnQuaCIKKyNpbXBvcnQgIkRPTUVudGl0eS5oIgorI2ltcG9y
dCAiRE9NRW50aXR5UmVmZXJlbmNlLmgiCisjaW1wb3J0ICJET01OYW1lZE5vZGVNYXAuaCIKKyNp
bXBvcnQgIkRPTU5vZGVMaXN0LmgiCisjaW1wb3J0ICJET01Ob3RhdGlvbi5oIgorI2ltcG9ydCAi
RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCisjaW1wb3J0ICJET01UZXh0LmgiCisKICNpbXBv
cnQgPG9iamMvb2JqYy1jbGFzcy5oPgogCiB1c2luZyBXZWJDb3JlOjpBdG9taWNTdHJpbmc7CiB1
c2luZyBXZWJDb3JlOjpBdG9taWNTdHJpbmdJbXBsOwogdXNpbmcgV2ViQ29yZTo6QXR0cjsKLXVz
aW5nIFdlYkNvcmU6OkNoYXJhY3RlckRhdGE7Ci11c2luZyBXZWJDb3JlOjpEZXByZWNhdGVkVmFs
dWVMaXN0OwogdXNpbmcgV2ViQ29yZTo6RG9jdW1lbnQ7CiB1c2luZyBXZWJDb3JlOjpEb2N1bWVu
dEZyYWdtZW50OwotdXNpbmcgV2ViQ29yZTo6RG9jdW1lbnRUeXBlOwogdXNpbmcgV2ViQ29yZTo6
RE9NSW1wbGVtZW50YXRpb25Gcm9udDsKIHVzaW5nIFdlYkNvcmU6OkVsZW1lbnQ7Ci11c2luZyBX
ZWJDb3JlOjpFbnRpdHk7CiB1c2luZyBXZWJDb3JlOjpFdmVudDsKIHVzaW5nIFdlYkNvcmU6OkV2
ZW50TGlzdGVuZXI7CiB1c2luZyBXZWJDb3JlOjpFeGNlcHRpb25Db2RlOwogdXNpbmcgV2ViQ29y
ZTo6SFRNTERvY3VtZW50OwogdXNpbmcgV2ViQ29yZTo6SFRNTEVsZW1lbnQ7CiB1c2luZyBXZWJD
b3JlOjpGcmFtZU1hYzsKLXVzaW5nIFdlYkNvcmU6OkludFJlY3Q7CiB1c2luZyBXZWJDb3JlOjpL
VVJMOwogdXNpbmcgV2ViQ29yZTo6TmFtZWROb2RlTWFwOwogdXNpbmcgV2ViQ29yZTo6Tm9kZTsK
QEAgLTg1LDMyICsxMDYsMTUgQEAgdXNpbmcgV2ViQ29yZTo6Tm9kZUZpbHRlcjsKIHVzaW5nIFdl
YkNvcmU6Ok5vZGVGaWx0ZXJDb25kaXRpb247CiB1c2luZyBXZWJDb3JlOjpOb2RlSXRlcmF0b3I7
CiB1c2luZyBXZWJDb3JlOjpOb2RlTGlzdDsKLXVzaW5nIFdlYkNvcmU6Ok5vdGF0aW9uOwotdXNp
bmcgV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOwogdXNpbmcgV2ViQ29yZTo6UXVhbGlm
aWVkTmFtZTsKIHVzaW5nIFdlYkNvcmU6OlJhbmdlOwogdXNpbmcgV2ViQ29yZTo6UmVuZGVySW1h
Z2U7CiB1c2luZyBXZWJDb3JlOjpSZW5kZXJPYmplY3Q7CiB1c2luZyBXZWJDb3JlOjpTdHJpbmc7
Ci11c2luZyBXZWJDb3JlOjpUZXh0OwogdXNpbmcgV2ViQ29yZTo6VHJlZVdhbGtlcjsKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU6OkhUTUxOYW1lczsKIAotQGludGVyZmFjZSBET01BdHRyIChX
ZWJDb3JlSW50ZXJuYWwpCi0rIChET01BdHRyICopX2F0dHJXaXRoOihBdHRyICopaW1wbDsKLS0g
KEF0dHIgKilfYXR0cjsKLUBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudFR5cGUgKFdlYkNv
cmVJbnRlcm5hbCkKLS0gKERvY3VtZW50VHlwZSAqKV9kb2N1bWVudFR5cGU7Ci1AZW5kCi0KLUBp
bnRlcmZhY2UgRE9NSW1wbGVtZW50YXRpb24gKFdlYkNvcmVJbnRlcm5hbCkKLSsgKERPTUltcGxl
bWVudGF0aW9uICopX0RPTUltcGxlbWVudGF0aW9uV2l0aDooRE9NSW1wbGVtZW50YXRpb25Gcm9u
dCAqKWltcGw7Ci0tIChET01JbXBsZW1lbnRhdGlvbkZyb250ICopX0RPTUltcGxlbWVudGF0aW9u
OwotQGVuZAotCiBjbGFzcyBPYmpDRXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBFdmVudExpc3RlbmVy
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgT2JqQ0V2ZW50TGlzdGVuZXIgKmZpbmQoaWQgPERPTUV2
ZW50TGlzdGVuZXI+KTsKQEAgLTEzMSw0MiArMTM1LDEwIEBAIHR5cGVkZWYgSGFzaE1hcDxBdG9t
aWNTdHJpbmdJbXBsKiwgQ2xhc3MKIHN0YXRpYyBPYmpDQ2xhc3NNYXAqIGVsZW1lbnRDbGFzc01h
cDsKIHN0YXRpYyBMaXN0ZW5lck1hcCogbGlzdGVuZXJNYXA7CiAKKwogLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTU9iamVjdAogCi1AaW1wbGVtZW50YXRpb24gRE9N
T2JqZWN0Ci0KLS8vIFByZXZlbnQgY3JlYXRpb24gb2YgRE9NIG9iamVjdHMgYnkgY2xpZW50cyB3
aG8ganVzdCAiW1t4eHggYWxsb2NdIGluaXRdIi4KLS0gKGlkKWluaXQKLXsKLSAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1hdDpAIitbJUAgaW5pdF06IHNob3Vs
ZCBuZXZlciBiZSB1c2VkIiwgTlNTdHJpbmdGcm9tQ2xhc3MoW3NlbGYgY2xhc3NdKV07Ci0gICAg
W3NlbGYgcmVsZWFzZV07Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17
Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAgICByZW1vdmVET01XcmFwcGVyKF9pbnRlcm5h
bCk7Ci0gICAgfQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6ZQot
ewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgcmVtb3ZlRE9NV3JhcHBlcihfaW50ZXJu
YWwpOwotICAgIH0KLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChpZCljb3B5V2l0aFpv
bmU6KE5TWm9uZSAqKXpvbmUKLXsKLSAgICByZXR1cm4gW3NlbGYgcmV0YWluXTsKLX0KLQotQGVu
ZAotCiBAaW1wbGVtZW50YXRpb24gRE9NT2JqZWN0IChXZWJDb3JlSW50ZXJuYWwpCiAKIC0gKGlk
KV9pbml0CkBAIC0xNzYsMjcxICsxNDgsMTAgQEAgc3RhdGljIExpc3RlbmVyTWFwKiBsaXN0ZW5l
ck1hcDsKIAogQGVuZAogCisKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAv
LyBET01Ob2RlCiAKLUBpbXBsZW1lbnRhdGlvbiBET01Ob2RlCi0KLS0gKHZvaWQpZGVhbGxvYwot
ewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJu
YWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQp
ZmluYWxpemUKLXsKLSAgICBpZiAoX2ludGVybmFsKSB7Ci0gICAgICAgIERPTV9jYXN0PE5vZGUg
Kj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0K
LQotLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgotewotICAgIGlmICghX2ludGVybmFsKSB7Ci0g
ICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQDogbnVsbD4iLAot
ICAgICAgICAgICAgW1tzZWxmIGNsYXNzXSBkZXNjcmlwdGlvbl0sIHNlbGZdOwotICAgIH0KLSAg
ICBOU1N0cmluZyAqdmFsdWUgPSBbc2VsZiBub2RlVmFsdWVdOwotICAgIGlmICh2YWx1ZSkgewot
ICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUAgWyVAXTogJXAg
JyVAJz4iLAotICAgICAgICAgICAgW1tzZWxmIGNsYXNzXSBkZXNjcmlwdGlvbl0sIFtzZWxmIG5v
ZGVOYW1lXSwgX2ludGVybmFsLCB2YWx1ZV07Ci0gICAgfQotICAgIHJldHVybiBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIjwlQCBbJUBdOiAlcD4iLAotICAgICAgICBbW3NlbGYgY2xhc3Nd
IGRlc2NyaXB0aW9uXSwgW3NlbGYgbm9kZU5hbWVdLCBfaW50ZXJuYWxdOwotfQotCi0tIChOU1N0
cmluZyAqKW5vZGVOYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bm9kZU5hbWUoKTsK
LX0KLQotLSAoTlNTdHJpbmcgKilub2RlVmFsdWUKLXsKLSAgICAvLyBEb2N1bWVudGF0aW9uIHNh
eXMgd2UgY2FuIHJhaXNlIGEgRE9NU1RSSU5HX1NJWkVfRVJSLgotICAgIC8vIEhvd2V2ZXIsIHRo
ZSBsb3dlciBsYXllciBkb2VzIG5vdCByZXBvcnQgdGhhdCBlcnJvciB1cCB0byB1cy4KLSAgICBy
ZXR1cm4gW3NlbGYgX25vZGVdLT5ub2RlVmFsdWUoKTsKLX0KLQotLSAodm9pZClzZXROb2RlVmFs
dWU6KE5TU3RyaW5nICopc3RyaW5nCi17Ci0gICAgQVNTRVJUKHN0cmluZyk7Ci0gICAgCi0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgW3NlbGYgX25vZGVdLT5zZXROb2RlVmFsdWUoc3Ry
aW5nLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQotLSAodW5zaWduZWQgc2hv
cnQpbm9kZVR5cGUKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2RlVHlwZSgpOwotfQot
Ci0tIChET01Ob2RlICopcGFyZW50Tm9kZQotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdp
dGg6W3NlbGYgX25vZGVdLT5wYXJlbnROb2RlKCldOwotfQotCi0tIChET01Ob2RlTGlzdCAqKWNo
aWxkTm9kZXMKLXsKLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYg
X25vZGVdLT5jaGlsZE5vZGVzKCkuZ2V0KCldOwotfQotCi0tIChET01Ob2RlICopZmlyc3RDaGls
ZAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5maXJzdENo
aWxkKCldOwotfQotCi0tIChET01Ob2RlICopbGFzdENoaWxkCi17Ci0gICAgcmV0dXJuIFtET01O
b2RlIF9ub2RlV2l0aDpbc2VsZiBfbm9kZV0tPmxhc3RDaGlsZCgpXTsKLX0KLQotLSAoRE9NTm9k
ZSAqKXByZXZpb3VzU2libGluZwotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX25vZGVdLT5wcmV2aW91c1NpYmxpbmcoKV07Ci19Ci0KLS0gKERPTU5vZGUgKiluZXh0U2li
bGluZwotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5uZXh0
U2libGluZygpXTsKLX0KLQotLSAoRE9NTmFtZWROb2RlTWFwICopYXR0cmlidXRlcwotewotICAg
IC8vIERPTSBsZXZlbCAyIGNvcmUgc3BlY2lmaWNhdGlvbiBzYXlzOiAKLSAgICAvLyBBIE5hbWVk
Tm9kZU1hcCBjb250YWluaW5nIHRoZSBhdHRyaWJ1dGVzIG9mIHRoaXMgbm9kZSAoaWYgaXQgaXMg
YW4gRWxlbWVudCkgb3IgbnVsbCBvdGhlcndpc2UuCi0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAo
RE9NRG9jdW1lbnQgKilvd25lckRvY3VtZW50Ci17Ci0gICAgcmV0dXJuIFtET01Eb2N1bWVudCBf
ZG9jdW1lbnRXaXRoOltzZWxmIF9ub2RlXS0+ZG9jdW1lbnQoKV07Ci19Ci0KLS0gKERPTU5vZGUg
KilpbnNlcnRCZWZvcmU6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilyZWZDaGlsZAot
ewotICAgIEFTU0VSVChuZXdDaGlsZCk7Ci0gICAgQVNTRVJUKHJlZkNoaWxkKTsKLQotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChbc2VsZiBfbm9kZV0tPmluc2VydEJlZm9yZShb
bmV3Q2hpbGQgX25vZGVdLCBbcmVmQ2hpbGQgX25vZGVdLCBlYykpCi0gICAgICAgIHJldHVybiBu
ZXdDaGlsZDsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBuaWw7Ci19Ci0K
LS0gKERPTU5vZGUgKilyZXBsYWNlQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUg
KilvbGRDaGlsZAotewotICAgIEFTU0VSVChuZXdDaGlsZCk7Ci0gICAgQVNTRVJUKG9sZENoaWxk
KTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChbc2VsZiBfbm9kZV0tPnJl
cGxhY2VDaGlsZChbbmV3Q2hpbGQgX25vZGVdLCBbb2xkQ2hpbGQgX25vZGVdLCBlYykpCi0gICAg
ICAgIHJldHVybiBvbGRDaGlsZDsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVy
biBuaWw7Ci19Ci0KLS0gKERPTU5vZGUgKilyZW1vdmVDaGlsZDooRE9NTm9kZSAqKW9sZENoaWxk
Ci17Ci0gICAgQVNTRVJUKG9sZENoaWxkKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIGlmIChbc2VsZiBfbm9kZV0tPnJlbW92ZUNoaWxkKFtvbGRDaGlsZCBfbm9kZV0sIGVjKSkK
LSAgICAgICAgcmV0dXJuIG9sZENoaWxkOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAg
cmV0dXJuIG5pbDsKLX0KLQotLSAoRE9NTm9kZSAqKWFwcGVuZENoaWxkOihET01Ob2RlICopbmV3
Q2hpbGQKLXsKLSAgICBBU1NFUlQobmV3Q2hpbGQpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgaWYgKFtzZWxmIF9ub2RlXS0+YXBwZW5kQ2hpbGQoW25ld0NoaWxkIF9ub2RlXSwg
ZWMpKQotICAgICAgICByZXR1cm4gbmV3Q2hpbGQ7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsK
LSAgICByZXR1cm4gbmlsOwotfQotCi0tIChCT09MKWhhc0NoaWxkTm9kZXMKLXsKLSAgICByZXR1
cm4gW3NlbGYgX25vZGVdLT5oYXNDaGlsZE5vZGVzKCk7Ci19Ci0KLS0gKERPTU5vZGUgKiljbG9u
ZU5vZGU6KEJPT0wpZGVlcAotewotICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYg
X25vZGVdLT5jbG9uZU5vZGUoZGVlcCkuZ2V0KCldOwotfQotCi0tICh2b2lkKW5vcm1hbGl6ZQot
ewotICAgIFtzZWxmIF9ub2RlXS0+bm9ybWFsaXplKCk7Ci19Ci0KLS0gKEJPT0wpaXNTdXBwb3J0
ZWQ6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbgotewotICAgIEFTU0VS
VChmZWF0dXJlKTsKLSAgICBBU1NFUlQodmVyc2lvbik7Ci0KLSAgICByZXR1cm4gW3NlbGYgX25v
ZGVdLT5pc1N1cHBvcnRlZChmZWF0dXJlLCB2ZXJzaW9uKTsKLX0KLQotLSAoTlNTdHJpbmcgKilu
YW1lc3BhY2VVUkkKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5uYW1lc3BhY2VVUkkoKTsK
LX0KLQotLSAoTlNTdHJpbmcgKilwcmVmaXgKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5w
cmVmaXgoKTsKLX0KLQotLSAodm9pZClzZXRQcmVmaXg6KE5TU3RyaW5nICopcHJlZml4Ci17Ci0g
ICAgQVNTRVJUKHByZWZpeCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTdHJp
bmcgcHJlZml4U3RyKHByZWZpeCk7Ci0gICAgW3NlbGYgX25vZGVdLT5zZXRQcmVmaXgocHJlZml4
U3RyLmltcGwoKSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKE5TU3Ry
aW5nICopbG9jYWxOYW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bG9jYWxOYW1lKCk7
Ci19Ci0KLS0gKEJPT0wpaGFzQXR0cmlidXRlcwotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0t
Pmhhc0F0dHJpYnV0ZXMoKTsKLX0KLQotLSAoQk9PTClpc1NhbWVOb2RlOihET01Ob2RlICopb3Ro
ZXIKLXsKLSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc1NhbWVOb2RlKFtvdGhlciBfbm9kZV0p
OwotfQotCi0tIChCT09MKWlzRXF1YWxOb2RlOihET01Ob2RlICopb3RoZXIKLXsKLSAgICByZXR1
cm4gW3NlbGYgX25vZGVdLT5pc0VxdWFsTm9kZShbb3RoZXIgX25vZGVdKTsKLX0KLQotLSAoQk9P
TClpc0RlZmF1bHROYW1lc3BhY2U6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJCi17Ci0gICAgcmV0
dXJuIFtzZWxmIF9ub2RlXS0+aXNEZWZhdWx0TmFtZXNwYWNlKG5hbWVzcGFjZVVSSSk7Ci19Ci0K
LS0gKE5TU3RyaW5nICopbG9va3VwUHJlZml4OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSQotewot
ICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmxvb2t1cFByZWZpeChuYW1lc3BhY2VVUkkpOwotfQot
Ci0tIChOU1N0cmluZyAqKWxvb2t1cE5hbWVzcGFjZVVSSTooTlNTdHJpbmcgKilwcmVmaXgKLXsK
LSAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5sb29rdXBOYW1lc3BhY2VVUkkocHJlZml4KTsKLX0K
LQotLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudAotewotICAgIHJldHVybiBbc2VsZiBfbm9kZV0t
PnRleHRDb250ZW50KCk7Ci19Ci0KLS0gKHZvaWQpc2V0VGV4dENvbnRlbnQ6KE5TU3RyaW5nICop
dGV4dAotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9ub2RlXS0+c2V0
VGV4dENvbnRlbnQodGV4dCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0g
KE5TUmVjdClib3VuZGluZ0JveAotewotICAgIFdlYkNvcmU6OlJlbmRlck9iamVjdCAqcmVuZGVy
ZXIgPSBbc2VsZiBfbm9kZV0tPnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyKQotICAgICAg
ICByZXR1cm4gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7Ci0gICAgcmV0dXJu
IE5TWmVyb1JlY3Q7Ci19Ci0KLS0gKE5TQXJyYXkgKilsaW5lQm94UmVjdHMKLXsKLSAgICBXZWJD
b3JlOjpSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gW3NlbGYgX25vZGVdLT5yZW5kZXJlcigpOwot
ICAgIGlmIChyZW5kZXJlcikgewotICAgICAgICBOU011dGFibGVBcnJheSAqcmVzdWx0cyA9IFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotICAgICAgICBEZXByZWNhdGVkVmFsdWVMaXN0
PEludFJlY3Q+IHJlY3RzID0gcmVuZGVyZXItPmxpbmVCb3hSZWN0cygpOwotICAgICAgICBpZiAo
IXJlY3RzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgZm9yIChEZXByZWNhdGVkVmFsdWVMaXN0
PEludFJlY3Q+OjpDb25zdEl0ZXJhdG9yIGl0ID0gcmVjdHMuYmVnaW4oKTsgaXQgIT0gcmVjdHMu
ZW5kKCk7ICsraXQpCi0gICAgICAgICAgICAgICAgW3Jlc3VsdHMgYWRkT2JqZWN0OltOU1ZhbHVl
IHZhbHVlV2l0aFJlY3Q6Kml0XV07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFtyZXN1bHRz
IGF1dG9yZWxlYXNlXTsKLSAgICB9Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotQGVuZAotCiBzdGF0
aWMgdm9pZCBhZGRFbGVtZW50Q2xhc3MoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnLCBDbGFzcyBv
YmpDQ2xhc3MpCiB7CiAgICAgZWxlbWVudENsYXNzTWFwLT5zZXQodGFnLmxvY2FsTmFtZSgpLmlt
cGwoKSwgb2JqQ0NsYXNzKTsKQEAgLTUyOSw2ICsyNDAsMjIgQEAgc3RhdGljIENsYXNzIGVsZW1l
bnRDbGFzcyhjb25zdCBBdG9taWNTdAogCiBAaW1wbGVtZW50YXRpb24gRE9NTm9kZSAoV2ViQ29y
ZUludGVybmFsKQogCisvLyBGSVhNRTogc2hvdWxkIHRoaXMgZ28gaW4gdGhlIG1haW4gaW1wbGVt
ZW50YXRpb24/CistIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCit7CisgICAgaWYgKCFfaW50ZXJu
YWwpIHsKKyAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiBu
dWxsPiIsCisgICAgICAgICAgICBbW3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9uXSwgc2VsZl07Cisg
ICAgfQorICAgIE5TU3RyaW5nICp2YWx1ZSA9IFtzZWxmIG5vZGVWYWx1ZV07CisgICAgaWYgKHZh
bHVlKSB7CisgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQCBb
JUBdOiAlcCAnJUAnPiIsCisgICAgICAgICAgICBbW3NlbGYgY2xhc3NdIGRlc2NyaXB0aW9uXSwg
W3NlbGYgbm9kZU5hbWVdLCBfaW50ZXJuYWwsIHZhbHVlXTsKKyAgICB9CisgICAgcmV0dXJuIFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAIFslQF06ICVwPiIsCisgICAgICAgIFtbc2Vs
ZiBjbGFzc10gZGVzY3JpcHRpb25dLCBbc2VsZiBub2RlTmFtZV0sIF9pbnRlcm5hbF07Cit9CisK
IC0gKGlkKV9pbml0V2l0aE5vZGU6KE5vZGUgKilpbXBsCiB7CiAgICAgQVNTRVJUKGltcGwpOwpA
QCAtNjA5LDEwICszMzYsMTAgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9t
aWNTdAogCiAtIChjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICopX2V4ZWN1dGlvbkNv
bnRleHQKIHsKLSAgICBpZiAoTm9kZSAqbiA9IFtzZWxmIF9ub2RlXSkKKyAgICBpZiAoTm9kZSAq
biA9IFtzZWxmIF9ub2RlXSkgewogICAgICAgICBpZiAoRnJhbWVNYWMgKmYgPSBNYWMobi0+ZG9j
dW1lbnQoKS0+ZnJhbWUoKSkpCiAgICAgICAgICAgICByZXR1cm4gZi0+ZXhlY3V0aW9uQ29udGV4
dEZvckRPTSgpOwotCisgICAgfQogICAgIHJldHVybiAwOwogfQogCkBAIC02MjcsNiArMzU0LDcg
QEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogCiBAZW5kCiAKKy8v
IEZJWE1FOiB0aGlzIHNob3VsZCBiZSBhdXRvLWdlbmVuZXJhdGUgaW4gRE9NTm9kZS5tbQogQGlt
cGxlbWVudGF0aW9uIERPTU5vZGUgKERPTUV2ZW50VGFyZ2V0KQogCiAtICh2b2lkKWFkZEV2ZW50
TGlzdGVuZXI6KE5TU3RyaW5nICopdHlwZSA6KGlkIDxET01FdmVudExpc3RlbmVyPilsaXN0ZW5l
ciA6KEJPT0wpdXNlQ2FwdHVyZQpAQCAtNjU0LDgyNiArMzgyLDIwNSBAQCBzdGF0aWMgQ2xhc3Mg
ZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAgICAgICAgIHJhaXNlRE9NRXhjZXB0aW9uKERP
TV9OT1RfU1VQUE9SVEVEX0VSUik7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBC
T09MIHJlc3VsdCA9IEV2ZW50VGFyZ2V0Tm9kZUNhc3QoW3NlbGYgX25vZGVdKS0+ZGlzcGF0Y2hF
dmVudChbZXZlbnQgX2V2ZW50XSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotLy8gRE9NTmFtZWROb2RlTWFwCi0KLUBpbXBsZW1lbnRhdGlvbiBET01OYW1lZE5v
ZGVNYXAKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAg
ICBET01fY2FzdDxOYW1lZE5vZGVNYXAgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0g
ICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgaWYgKF9p
bnRlcm5hbCkgewotICAgICAgICBET01fY2FzdDxOYW1lZE5vZGVNYXAgKj4oX2ludGVybmFsKS0+
ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsKLX0KLQotLSAoTmFtZWROb2Rl
TWFwICopX25hbWVkTm9kZU1hcAotewotICAgIHJldHVybiBET01fY2FzdDxOYW1lZE5vZGVNYXAg
Kj4oX2ludGVybmFsKTsKLX0KLQotLSAoRE9NTm9kZSAqKWdldE5hbWVkSXRlbTooTlNTdHJpbmcg
KiluYW1lCi17Ci0gICAgQVNTRVJUKG5hbWUpOwotCi0gICAgcmV0dXJuIFtET01Ob2RlIF9ub2Rl
V2l0aDpbc2VsZiBfbmFtZWROb2RlTWFwXS0+Z2V0TmFtZWRJdGVtKG5hbWUpLmdldCgpXTsKLX0K
LQotLSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbTooRE9NTm9kZSAqKWFyZwotewotICAgIEFTU0VS
VChhcmcpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0g
W0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5zZXROYW1lZEl0ZW0oW2Fy
ZyBfbm9kZV0sIGV4Y2VwdGlvbikuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRp
b24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTU5vZGUgKilyZW1vdmVOYW1lZEl0
ZW06KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKLQotICAgIGludCBleGNl
cHRpb24gPSAwOwotICAgIERPTU5vZGUgKnJlc3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2Vs
ZiBfbmFtZWROb2RlTWFwXS0+cmVtb3ZlTmFtZWRJdGVtKG5hbWUsIGV4Y2VwdGlvbikuZ2V0KCld
OwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLS0gKERPTU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleAotewotICAgIHJldHVybiBbRE9N
Tm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPml0ZW0oaW5kZXgpLmdldCgpXTsK
LX0KLQotLSAodW5zaWduZWQpbGVuZ3RoCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9uYW1lZE5vZGVN
YXBdLT5sZW5ndGgoKTsKLX0KLQotLSAoRE9NTm9kZSAqKWdldE5hbWVkSXRlbU5TOihOU1N0cmlu
ZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgaWYgKCFuYW1l
c3BhY2VVUkkgfHwgIWxvY2FsTmFtZSkgewotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQot
ICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25hbWVkTm9kZU1hcF0tPmdldE5h
bWVkSXRlbU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKS5nZXQoKV07Ci19Ci0KLS0gKERPTU5v
ZGUgKilzZXROYW1lZEl0ZW1OUzooRE9NTm9kZSAqKWFyZwotewotICAgIEFTU0VSVChhcmcpOwot
Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NTm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUg
X25vZGVXaXRoOltzZWxmIF9uYW1lZE5vZGVNYXBdLT5zZXROYW1lZEl0ZW1OUyhbYXJnIF9ub2Rl
XSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbU5TOihO
U1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCi17Ci0gICAgQVNT
RVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0KLSAgICBpbnQgZXhj
ZXB0aW9uID0gMDsKLSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3Nl
bGYgX25hbWVkTm9kZU1hcF0tPnJlbW92ZU5hbWVkSXRlbU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxO
YW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01OYW1l
ZE5vZGVNYXAgKFdlYkNvcmVJbnRlcm5hbCkKLQotLSAoaWQpX2luaXRXaXRoTmFtZWROb2RlTWFw
OihOYW1lZE5vZGVNYXAgKilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwpOwotCi0gICAgW3N1cGVy
IF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihp
bXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOwot
ICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01OYW1lZE5vZGVNYXAgKilfbmFtZWROb2RlTWFw
V2l0aDooTmFtZWROb2RlTWFwICopaW1wbAotewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5j
ZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQotICAgICAg
ICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAg
ICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTmFtZWROb2RlTWFwOmltcGxdIGF1dG9y
ZWxlYXNlXTsKLX0KLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotLy8gRE9NTm9kZUxpc3QKLQotQGltcGxlbWVudGF0aW9uIERPTU5vZGVMaXN0Ci0KLS0gKHZv
aWQpZGVhbGxvYwotewotICAgIGlmIChfaW50ZXJuYWwpIHsKLSAgICAgICAgRE9NX2Nhc3Q8Tm9k
ZUxpc3QgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsKLSAgICB9Ci0gICAgW3N1cGVyIGRlYWxsb2Nd
OwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkgewotICAgICAg
ICBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIH0KLSAgICBb
c3VwZXIgZmluYWxpemVdOwotfQotCi0tIChOb2RlTGlzdCAqKV9ub2RlTGlzdAotewotICAgIHJl
dHVybiBET01fY2FzdDxOb2RlTGlzdCAqPihfaW50ZXJuYWwpOwotfQotCi0tIChET01Ob2RlICop
aXRlbToodW5zaWduZWQpaW5kZXgKLXsKLSAgICByZXR1cm4gW0RPTU5vZGUgX25vZGVXaXRoOltz
ZWxmIF9ub2RlTGlzdF0tPml0ZW0oaW5kZXgpXTsKLX0KLQotLSAodW5zaWduZWQpbGVuZ3RoCi17
Ci0gICAgcmV0dXJuIFtzZWxmIF9ub2RlTGlzdF0tPmxlbmd0aCgpOwotfQotCi1AZW5kCi0KLUBp
bXBsZW1lbnRhdGlvbiBET01Ob2RlTGlzdCAoV2ViQ29yZUludGVybmFsKQotCi0tIChpZClfaW5p
dFdpdGhOb2RlTGlzdDooTm9kZUxpc3QgKilpbXBsCi17Ci0gICAgQVNTRVJUKGltcGwpOwotCi0g
ICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRl
cm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHNlbGYs
IGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01Ob2RlTGlzdCAqKV9ub2RlTGlz
dFdpdGg6KE5vZGVMaXN0ICopaW1wbAotewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICAKLSAgICBpZCBjYWNoZWRJbnN0YW5jZTsKLSAgICBjYWNoZWRJbnN0YW5jZSA9
IGdldERPTVdyYXBwZXIoaW1wbCk7Ci0gICAgaWYgKGNhY2hlZEluc3RhbmNlKQotICAgICAgICBy
ZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICBy
ZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoTm9kZUxpc3Q6aW1wbF0gYXV0b3JlbGVhc2Vd
OwotfQotCi1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBE
T01JbXBsZW1lbnRhdGlvbgotCi1AaW1wbGVtZW50YXRpb24gRE9NSW1wbGVtZW50YXRpb24KLQot
LSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAgICAgRE9NX2Nhc3Q8
RE9NSW1wbGVtZW50YXRpb25Gcm9udCAqPihfaW50ZXJuYWwpLT5kZXJlZigpOwotICAgIFtzdXBl
ciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5hbGl6ZQotewotICAgIGlmIChfaW50ZXJuYWwp
Ci0gICAgICAgIERPTV9jYXN0PERPTUltcGxlbWVudGF0aW9uRnJvbnQgKj4oX2ludGVybmFsKS0+
ZGVyZWYoKTsKLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChCT09MKWhhc0ZlYXR1cmU6
KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbgotewotICAgIEFTU0VSVChm
ZWF0dXJlKTsKLSAgICBBU1NFUlQodmVyc2lvbik7Ci0KLSAgICByZXR1cm4gW3NlbGYgX0RPTUlt
cGxlbWVudGF0aW9uXS0+aGFzRmVhdHVyZShmZWF0dXJlLCB2ZXJzaW9uKTsKLX0KLQotLSAoRE9N
RG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBlOihOU1N0cmluZyAqKXF1YWxpZmllZE5h
bWUgOihOU1N0cmluZyAqKXB1YmxpY0lkIDooTlNTdHJpbmcgKilzeXN0ZW1JZAotewotICAgIEFT
U0VSVChxdWFsaWZpZWROYW1lKTsKLSAgICBBU1NFUlQocHVibGljSWQpOwotICAgIEFTU0VSVChz
eXN0ZW1JZCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8RG9jdW1l
bnRUeXBlPiBpbXBsID0gW3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+Y3JlYXRlRG9jdW1lbnRU
eXBlKHF1YWxpZmllZE5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCwgZWMpOwotICAgIHJhaXNlT25E
T01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURvY3VtZW50VHlwZSAqPihb
RE9NTm9kZSBfbm9kZVdpdGg6aW1wbC5nZXQoKV0pOwotfQotCi0tIChET01Eb2N1bWVudCAqKWNy
ZWF0ZURvY3VtZW50OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlm
aWVkTmFtZSA6KERPTURvY3VtZW50VHlwZSAqKWRvY3R5cGUKLXsKLSAgICBBU1NFUlQobmFtZXNw
YWNlVVJJKTsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSk7Ci0KLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBSZWZQdHI8RG9jdW1lbnQ+IGltcGwgPSBbc2VsZiBfRE9NSW1wbGVtZW50
YXRpb25dLT5jcmVhdGVEb2N1bWVudChuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIFtkb2N0
eXBlIF9kb2N1bWVudFR5cGVdLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOmltcGwu
Z2V0KCldKTsKLX0KLQotLSAoRE9NSFRNTERvY3VtZW50ICopY3JlYXRlSFRNTERvY3VtZW50OihO
U1N0cmluZyAqKXRpdGxlCi17Ci0gICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gaW1wbCA9IFtzZWxm
IF9ET01JbXBsZW1lbnRhdGlvbl0tPmNyZWF0ZUhUTUxEb2N1bWVudCh0aXRsZSk7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PERPTUhUTUxEb2N1bWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1w
bC5nZXQoKV0pOwotfQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NSW1wbGVtZW50YXRpb24g
KERPTUltcGxlbWVudGF0aW9uQ1NTKQotCi0tIChET01DU1NTdHlsZVNoZWV0ICopY3JlYXRlQ1NT
U3R5bGVTaGVldDooTlNTdHJpbmcgKil0aXRsZSA6KE5TU3RyaW5nICopbWVkaWEKLXsKLSAgICBB
U1NFUlQodGl0bGUpOwotICAgIEFTU0VSVChtZWRpYSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBET01DU1NTdHlsZVNoZWV0ICpyZXN1bHQgPSBbRE9NQ1NTU3R5bGVTaGVldCBf
Q1NTU3R5bGVTaGVldFdpdGg6W3NlbGYgX0RPTUltcGxlbWVudGF0aW9uXS0+Y3JlYXRlQ1NTU3R5
bGVTaGVldCh0aXRsZSwgbWVkaWEsIGVjKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVj
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1AZW5kCi0gCi1AaW1wbGVtZW50YXRpb24gRE9N
SW1wbGVtZW50YXRpb24gKFdlYkNvcmVJbnRlcm5hbCkKLQotLSAoaWQpX2luaXRXaXRoRE9NSW1w
bGVtZW50YXRpb246KERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilpbXBsCi17Ci0gICAgQVNTRVJU
KGltcGwpOwotCi0gICAgW3N1cGVyIF9pbml0XTsKLSAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxE
T01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKLSAgICBpbXBsLT5yZWYoKTsKLSAgICBhZGRET01X
cmFwcGVyKHNlbGYsIGltcGwpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0rIChET01JbXBsZW1l
bnRhdGlvbiAqKV9ET01JbXBsZW1lbnRhdGlvbldpdGg6KERPTUltcGxlbWVudGF0aW9uRnJvbnQg
KilpbXBsCi17Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAg
IGlkIGNhY2hlZEluc3RhbmNlOwotICAgIGNhY2hlZEluc3RhbmNlID0gZ2V0RE9NV3JhcHBlcihp
bXBsKTsKLSAgICBpZiAoY2FjaGVkSW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBbW2NhY2hlZElu
c3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIHJldHVybiBbW1tzZWxmIGFs
bG9jXSBfaW5pdFdpdGhET01JbXBsZW1lbnRhdGlvbjppbXBsXSBhdXRvcmVsZWFzZV07Ci19Ci0K
LS0gKERPTUltcGxlbWVudGF0aW9uRnJvbnQgKilfRE9NSW1wbGVtZW50YXRpb24KLXsKLSAgICBy
ZXR1cm4gRE9NX2Nhc3Q8RE9NSW1wbGVtZW50YXRpb25Gcm9udCAqPihfaW50ZXJuYWwpOwotfQot
Ci1AZW5kCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Eb2N1
bWVudEZyYWdtZW50Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudEZyYWdtZW50Ci0KLUBl
bmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50RnJhZ21lbnQgKFdlYkNvcmVJbnRlcm5h
bCkKLQotKyAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50V2l0aDooRG9j
dW1lbnRGcmFnbWVudCAqKWltcGwKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1l
bnRGcmFnbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwotfQotCi0tIChEb2N1bWVu
dEZyYWdtZW50ICopX2ZyYWdtZW50Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3VtZW50
RnJhZ21lbnQgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotQGVuZAotCi0v
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NRG9jdW1lbnQKLQotQGlt
cGxlbWVudGF0aW9uIERPTURvY3VtZW50Ci0KLS0gKERPTU5vZGUgKilhZG9wdE5vZGU6KERPTU5v
ZGUgKilzb3VyY2UKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Ob2RlICpy
ZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+YWRvcHROb2RlKFtz
b3VyY2UgX25vZGVdLCBlYykuZ2V0KCldOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRG9jdW1lbnRUeXBlICopZG9jdHlwZQotewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudFR5cGUgKj4oW0RPTU5vZGUgX25vZGVXaXRo
OltzZWxmIF9kb2N1bWVudF0tPmRvY3R5cGUoKV0pOwotfQotCi0tIChET01JbXBsZW1lbnRhdGlv
biAqKWltcGxlbWVudGF0aW9uCi17Ci0gICAgcmV0dXJuIFtET01JbXBsZW1lbnRhdGlvbiBfRE9N
SW1wbGVtZW50YXRpb25XaXRoOmltcGxlbWVudGF0aW9uRnJvbnQoW3NlbGYgX2RvY3VtZW50XSld
OwotfQotCi0tIChET01FbGVtZW50ICopZG9jdW1lbnRFbGVtZW50Ci17Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PERPTUVsZW1lbnQgKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVu
dF0tPmRvY3VtZW50RWxlbWVudCgpXSk7Ci19Ci0KLS0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVt
ZW50OihOU1N0cmluZyAqKXRhZ05hbWUKLXsKLSAgICBBU1NFUlQodGFnTmFtZSk7Ci0KLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01FbGVtZW50ICpyZXN1bHQgPSBzdGF0aWNfY2Fz
dDxET01FbGVtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVh
dGVFbGVtZW50KHRhZ05hbWUsIGVjKS5nZXQoKV0pOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWNyZWF0
ZURvY3VtZW50RnJhZ21lbnQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnRG
cmFnbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRG9j
dW1lbnRGcmFnbWVudCgpLmdldCgpXSk7Ci19Ci0KLS0gKERPTVRleHQgKiljcmVhdGVUZXh0Tm9k
ZTooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxET01UZXh0ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5j
cmVhdGVUZXh0Tm9kZShkYXRhKS5nZXQoKV0pOwotfQotCi0tIChET01Db21tZW50ICopY3JlYXRl
Q29tbWVudDooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxET01Db21tZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfZG9j
dW1lbnRdLT5jcmVhdGVDb21tZW50KGRhdGEpLmdldCgpXSk7Ci19Ci0KLS0gKERPTUNEQVRBU2Vj
dGlvbiAqKWNyZWF0ZUNEQVRBU2VjdGlvbjooTlNTdHJpbmcgKilkYXRhCi17Ci0gICAgQVNTRVJU
KGRhdGEpOwotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIERPTUNEQVRBU2VjdGlvbiAqcmVz
dWx0ID0gc3RhdGljX2Nhc3Q8RE9NQ0RBVEFTZWN0aW9uICo+KFtET01Ob2RlIF9ub2RlV2l0aDpb
c2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVDREFUQVNlY3Rpb24oZGF0YSwgZXhjZXB0aW9uKS5nZXQo
KV0pOwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS0gKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKWNyZWF0ZVByb2Nlc3NpbmdJbnN0
cnVjdGlvbjooTlNTdHJpbmcgKil0YXJnZXQgOihOU1N0cmluZyAqKWRhdGEKLXsKLSAgICBBU1NF
UlQodGFyZ2V0KTsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0g
ICAgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxET01Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24gKj4oW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0t
PmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbih0YXJnZXQsIGRhdGEsIGV4Y2VwdGlvbikuZ2V0
KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi0tIChET01BdHRyICopY3JlYXRlQXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUKLXsK
LSAgICBBU1NFUlQobmFtZSk7Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAq
cmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUF0dHJp
YnV0ZShuYW1lLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0
aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tIChET01FbnRpdHlSZWZlcmVuY2UgKilj
cmVhdGVFbnRpdHlSZWZlcmVuY2U6KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1l
KTsKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01FbnRpdHlSZWZlcmVuY2UgKnJlc3Vs
dCA9IHN0YXRpY19jYXN0PERPTUVudGl0eVJlZmVyZW5jZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6
W3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRW50aXR5UmVmZXJlbmNlKG5hbWUsIGV4Y2VwdGlvbiku
Z2V0KCldKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lOihOU1N0cmlu
ZyAqKXRhZ25hbWUKLXsKLSAgICBBU1NFUlQodGFnbmFtZSk7Ci0gICAgcmV0dXJuIFtET01Ob2Rl
TGlzdCBfbm9kZUxpc3RXaXRoOltzZWxmIF9kb2N1bWVudF0tPmdldEVsZW1lbnRzQnlUYWdOYW1l
KHRhZ25hbWUpLmdldCgpXTsKLX0KLQotLSAoRE9NTm9kZSAqKWltcG9ydE5vZGU6KERPTU5vZGUg
KilpbXBvcnRlZE5vZGUgOihCT09MKWRlZXAKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBET01Ob2RlICpyZXN1bHQgPSBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50
XS0+aW1wb3J0Tm9kZShbaW1wb3J0ZWROb2RlIF9ub2RlXSwgZGVlcCwgZWMpLmdldCgpXTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKERPTUVs
ZW1lbnQgKiljcmVhdGVFbGVtZW50TlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJp
bmcgKilxdWFsaWZpZWROYW1lCi17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNT
RVJUKHF1YWxpZmllZE5hbWUpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9N
Tm9kZSAqcmVzdWx0ID0gW0RPTU5vZGUgX25vZGVXaXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0
ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGVjKS5nZXQoKV07Ci0gICAg
cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAq
PihyZXN1bHQpOwotfQotCi0tIChET01BdHRyICopY3JlYXRlQXR0cmlidXRlTlM6KE5TU3RyaW5n
ICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lCi17Ci0gICAgQVNTRVJU
KG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUpOwotCi0gICAgaW50IGV4
Y2VwdGlvbiA9IDA7Ci0gICAgRE9NQXR0ciAqcmVzdWx0ID0gW0RPTUF0dHIgX2F0dHJXaXRoOltz
ZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVk
TmFtZSwgZXhjZXB0aW9uKS5nZXQoKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5
VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1l
Ci17Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFtZSk7Ci0K
LSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX2RvY3VtZW50XS0+
Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkuZ2V0KCldOwot
fQotCi0tIChET01FbGVtZW50ICopZ2V0RWxlbWVudEJ5SWQ6KE5TU3RyaW5nICopZWxlbWVudElk
Ci17Ci0gICAgQVNTRVJUKGVsZW1lbnRJZCk7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9N
RWxlbWVudCAqPihbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX2RvY3VtZW50XS0+Z2V0RWxlbWVu
dEJ5SWQoZWxlbWVudElkKV0pOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1
bWVudCAoRE9NRG9jdW1lbnRSYW5nZSkKLQotLSAoRE9NUmFuZ2UgKiljcmVhdGVSYW5nZQotewot
ICAgIHJldHVybiBbRE9NUmFuZ2UgX3JhbmdlV2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVS
YW5nZSgpLmdldCgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQg
KERPTURvY3VtZW50Q1NTKQotCi0tIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopZ2V0T3ZlcnJp
ZGVTdHlsZTooRE9NRWxlbWVudCAqKWVsdCA6KE5TU3RyaW5nICopcHNldWRvRWx0Ci17Ci0gICAg
RWxlbWVudCAqZWxlbWVudCA9IFtlbHQgX2VsZW1lbnRdOwotICAgIFN0cmluZyBwc2V1ZG9FbHRT
dHJpbmcocHNldWRvRWx0KTsKLSAgICByZXR1cm4gW0RPTUNTU1N0eWxlRGVjbGFyYXRpb24gX3N0
eWxlRGVjbGFyYXRpb25XaXRoOltzZWxmIF9kb2N1bWVudF0tPmdldE92ZXJyaWRlU3R5bGUoZWxl
bWVudCwgcHNldWRvRWx0U3RyaW5nLmltcGwoKSldOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRh
dGlvbiBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRTdHlsZSkKLQotLSAoRE9NU3R5bGVTaGVldExp
c3QgKilzdHlsZVNoZWV0cwotewotICAgIHJldHVybiBbRE9NU3R5bGVTaGVldExpc3QgX3N0eWxl
U2hlZXRMaXN0V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5zdHlsZVNoZWV0cygpXTsKLX0KLQotQGVu
ZAotCi1AaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50RXh0ZW5zaW9ucykK
LQotLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKWNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24K
LXsKLSAgICByZXR1cm4gW0RPTUNTU1N0eWxlRGVjbGFyYXRpb24gX3N0eWxlRGVjbGFyYXRpb25X
aXRoOltzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24oKS5nZXQoKV07
Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChXZWJDb3JlSW50ZXJu
YWwpCi0KLSsgKERPTURvY3VtZW50ICopX2RvY3VtZW50V2l0aDooRG9jdW1lbnQgKilpbXBsCi17
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTURvY3VtZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0
aDppbXBsXSk7Ci19Ci0KLS0gKERvY3VtZW50ICopX2RvY3VtZW50Ci17Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PERvY3VtZW50ICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7Ci19Ci0K
LS0gKERPTUVsZW1lbnQgKilfb3duZXJFbGVtZW50Ci17Ci0gICAgcmV0dXJuIFtET01FbGVtZW50
IF9lbGVtZW50V2l0aDpbc2VsZiBfZG9jdW1lbnRdLT5vd25lckVsZW1lbnQoKV07Ci19Ci0KLUBl
bmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUNoYXJhY3Rl
ckRhdGEKLQotQGltcGxlbWVudGF0aW9uIERPTUNoYXJhY3RlckRhdGEKLQotLSAoQ2hhcmFjdGVy
RGF0YSAqKV9jaGFyYWN0ZXJEYXRhCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENoYXJhY3Rl
ckRhdGEgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KLQotLSAoTlNTdHJpbmcg
KilkYXRhCi17Ci0gICAgLy8gRG9jdW1lbnRhdGlvbiBzYXlzIHdlIGNhbiByYWlzZSBhIERPTVNU
UklOR19TSVpFX0VSUi4KLSAgICAvLyBIb3dldmVyLCB0aGUgbG93ZXIgbGF5ZXIgZG9lcyBub3Qg
cmVwb3J0IHRoYXQgZXJyb3IgdXAgdG8gdXMuCi0gICAgcmV0dXJuIFtzZWxmIF9jaGFyYWN0ZXJE
YXRhXS0+ZGF0YSgpOwotfQotCi0tICh2b2lkKXNldERhdGE6KE5TU3RyaW5nICopZGF0YQotewot
ICAgIEFTU0VSVChkYXRhKTsKLSAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBb
c2VsZiBfY2hhcmFjdGVyRGF0YV0tPnNldERhdGEoZGF0YSwgZWMpOwotICAgIHJhaXNlT25ET01F
cnJvcihlYyk7Ci19Ci0KLS0gKHVuc2lnbmVkKWxlbmd0aAotewotICAgIHJldHVybiBbc2VsZiBf
Y2hhcmFjdGVyRGF0YV0tPmxlbmd0aCgpOwotfQotCi0tIChOU1N0cmluZyAqKXN1YnN0cmluZ0Rh
dGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKWNvdW50Ci17Ci0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgTlNTdHJpbmcgKnJlc3VsdCA9IFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+
c3Vic3RyaW5nRGF0YShvZmZzZXQsIGNvdW50LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVj
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKWFwcGVuZERhdGE6KE5TU3RyaW5n
ICopYXJnCi17Ci0gICAgQVNTRVJUKGFyZyk7Ci0gICAgCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5hcHBlbmREYXRhKGFyZywgZWMpOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpaW5zZXJ0RGF0YToodW5zaWduZWQp
b2Zmc2V0IDooTlNTdHJpbmcgKilhcmcKLXsKLSAgICBBU1NFUlQoYXJnKTsKLSAgICAKLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBbc2VsZiBfY2hhcmFjdGVyRGF0YV0tPmluc2VydERh
dGEob2Zmc2V0LCBhcmcsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tICh2
b2lkKWRlbGV0ZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKSBjb3VudAotewotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFtzZWxmIF9jaGFyYWN0ZXJEYXRhXS0+ZGVsZXRl
RGF0YShvZmZzZXQsIGNvdW50LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLX0KLQot
LSAodm9pZClyZXBsYWNlRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpY291bnQgOihO
U1N0cmluZyAqKWFyZwotewotICAgIEFTU0VSVChhcmcpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgW3NlbGYgX2NoYXJhY3RlckRhdGFdLT5yZXBsYWNlRGF0YShvZmZzZXQsIGNv
dW50LCBhcmcsIGVjKTsKKyAgICBCT09MIHJlc3VsdCA9IEV2ZW50VGFyZ2V0Tm9kZUNhc3QoW3Nl
bGYgX25vZGVdKS0+ZGlzcGF0Y2hFdmVudChbZXZlbnQgX2V2ZW50XSwgZWMpOwogICAgIHJhaXNl
T25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogQGVuZAogCi0vLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NQXR0cgogCi1AaW1wbGVtZW50YXRp
b24gRE9NQXR0cgorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIERPTU5h
bWVkTm9kZU1hcAogCi0tIChOU1N0cmluZyAqKW5hbWUKLXsKLSAgICByZXR1cm4gW3NlbGYgX2F0
dHJdLT5ub2RlTmFtZSgpOwotfQorQGltcGxlbWVudGF0aW9uIERPTU5hbWVkTm9kZU1hcCAoV2Vi
Q29yZUludGVybmFsKQogCi0tIChCT09MKXNwZWNpZmllZAorLSAoaWQpX2luaXRXaXRoTmFtZWRO
b2RlTWFwOihOYW1lZE5vZGVNYXAgKilpbXBsCiB7Ci0gICAgcmV0dXJuIFtzZWxmIF9hdHRyXS0+
c3BlY2lmaWVkKCk7Ci19CisgICAgQVNTRVJUKGltcGwpOwogCi0tIChOU1N0cmluZyAqKXZhbHVl
Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9hdHRyXS0+bm9kZVZhbHVlKCk7CisgICAgW3N1cGVyIF9p
bml0XTsKKyAgICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBs
KTsKKyAgICBpbXBsLT5yZWYoKTsKKyAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOworICAg
IHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKXNldFZhbHVlOihOU1N0cmluZyAqKXZhbHVlCisr
IChET01OYW1lZE5vZGVNYXAgKilfbmFtZWROb2RlTWFwV2l0aDooTmFtZWROb2RlTWFwICopaW1w
bAogewotICAgIEFTU0VSVCh2YWx1ZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBbc2VsZiBfYXR0cl0tPnNldFZhbHVlKHZhbHVlLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKKyAgICBpZiAoIWltcGwpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgaWQg
Y2FjaGVkSW5zdGFuY2U7CisgICAgY2FjaGVkSW5zdGFuY2UgPSBnZXRET01XcmFwcGVyKGltcGwp
OworICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKKyAgICAgICAgcmV0dXJuIFtbY2FjaGVkSW5zdGFu
Y2UgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgCisgICAgcmV0dXJuIFtbW3NlbGYgYWxsb2Nd
IF9pbml0V2l0aE5hbWVkTm9kZU1hcDppbXBsXSBhdXRvcmVsZWFzZV07CiB9CiAKLS0gKERPTUVs
ZW1lbnQgKilvd25lckVsZW1lbnQKLXsKLSAgICByZXR1cm4gW0RPTUVsZW1lbnQgX2VsZW1lbnRX
aXRoOltzZWxmIF9hdHRyXS0+b3duZXJFbGVtZW50KCldOwotfQorQGVuZAogCi0tIChET01DU1NT
dHlsZURlY2xhcmF0aW9uICopc3R5bGUKLXsKLSAgICByZXR1cm4gW0RPTUNTU1N0eWxlRGVjbGFy
YXRpb24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOiBbc2VsZiBfYXR0cl0tPnN0eWxlKCldOwotfQog
Ci1AZW5kCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRE9NTm9kZUxp
c3QKIAotQGltcGxlbWVudGF0aW9uIERPTUF0dHIgKFdlYkNvcmVJbnRlcm5hbCkKK0BpbXBsZW1l
bnRhdGlvbiBET01Ob2RlTGlzdCAoV2ViQ29yZUludGVybmFsKQogCi0rIChET01BdHRyICopX2F0
dHJXaXRoOihBdHRyICopaW1wbAorLSAoaWQpX2luaXRXaXRoTm9kZUxpc3Q6KE5vZGVMaXN0ICop
aW1wbAogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01BdHRyICo+KFtET01Ob2RlIF9ub2Rl
V2l0aDppbXBsXSk7CisgICAgQVNTRVJUKGltcGwpOworCisgICAgW3N1cGVyIF9pbml0XTsKKyAg
ICBfaW50ZXJuYWwgPSBET01fY2FzdDxET01PYmplY3RJbnRlcm5hbCAqPihpbXBsKTsKKyAgICBp
bXBsLT5yZWYoKTsKKyAgICBhZGRET01XcmFwcGVyKHNlbGYsIGltcGwpOworICAgIHJldHVybiBz
ZWxmOwogfQogCi0tIChBdHRyICopX2F0dHIKKysgKERPTU5vZGVMaXN0ICopX25vZGVMaXN0V2l0
aDooTm9kZUxpc3QgKilpbXBsCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEF0dHIgKj4oRE9N
X2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKKyAgICBpZiAoIWltcGwpCisgICAgICAgIHJldHVy
biBuaWw7CisgICAgCisgICAgaWQgY2FjaGVkSW5zdGFuY2U7CisgICAgY2FjaGVkSW5zdGFuY2Ug
PSBnZXRET01XcmFwcGVyKGltcGwpOworICAgIGlmIChjYWNoZWRJbnN0YW5jZSkKKyAgICAgICAg
cmV0dXJuIFtbY2FjaGVkSW5zdGFuY2UgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgCisgICAg
cmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aE5vZGVMaXN0OmltcGxdIGF1dG9yZWxlYXNl
XTsKIH0KIAogQGVuZAogCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8g
RE9NRWxlbWVudAogCi1AaW1wbGVtZW50YXRpb24gRE9NRWxlbWVudAorLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIERPTUltcGxlbWVudGF0aW9uCisgCitAaW1wbGVtZW50
YXRpb24gRE9NSW1wbGVtZW50YXRpb24gKFdlYkNvcmVJbnRlcm5hbCkKIAotLSAoTlNTdHJpbmcg
Kil0YWdOYW1lCistIChpZClfaW5pdFdpdGhET01JbXBsZW1lbnRhdGlvbjooRE9NSW1wbGVtZW50
YXRpb25Gcm9udCAqKWltcGwKIHsKLSAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRdLT5ub2RlTmFt
ZSgpOwotfQorICAgIEFTU0VSVChpbXBsKTsKIAotLSAoRE9NTmFtZWROb2RlTWFwICopYXR0cmli
dXRlcwotewotICAgIHJldHVybiBbRE9NTmFtZWROb2RlTWFwIF9uYW1lZE5vZGVNYXBXaXRoOltz
ZWxmIF9lbGVtZW50XS0+YXR0cmlidXRlcygpXTsKKyAgICBbc3VwZXIgX2luaXRdOworICAgIF9p
bnRlcm5hbCA9IERPTV9jYXN0PERPTU9iamVjdEludGVybmFsICo+KGltcGwpOworICAgIGltcGwt
PnJlZigpOworICAgIGFkZERPTVdyYXBwZXIoc2VsZiwgaW1wbCk7CisgICAgcmV0dXJuIHNlbGY7
CiB9CiAKLS0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUKKysgKERP
TUltcGxlbWVudGF0aW9uICopX0RPTUltcGxlbWVudGF0aW9uV2l0aDooRE9NSW1wbGVtZW50YXRp
b25Gcm9udCAqKWltcGwKIHsKLSAgICBBU1NFUlQobmFtZSk7Ci0gICAgcmV0dXJuIFtzZWxmIF9l
bGVtZW50XS0+Z2V0QXR0cmlidXRlKG5hbWUpOworICAgIGlmICghaW1wbCkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICAKKyAgICBpZCBjYWNoZWRJbnN0YW5jZTsKKyAgICBjYWNoZWRJbnN0YW5j
ZSA9IGdldERPTVdyYXBwZXIoaW1wbCk7CisgICAgaWYgKGNhY2hlZEluc3RhbmNlKQorICAgICAg
ICByZXR1cm4gW1tjYWNoZWRJbnN0YW5jZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICAKKyAg
ICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoRE9NSW1wbGVtZW50YXRpb246aW1wbF0g
YXV0b3JlbGVhc2VdOwogfQogCi0tICh2b2lkKXNldEF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1l
IDooTlNTdHJpbmcgKil2YWx1ZQorLSAoRE9NSW1wbGVtZW50YXRpb25Gcm9udCAqKV9ET01JbXBs
ZW1lbnRhdGlvbgogewotICAgIEFTU0VSVChuYW1lKTsKLSAgICBBU1NFUlQodmFsdWUpOwotCi0g
ICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5zZXRBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUsIGV4Y2VwdGlvbik7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGV4Y2VwdGlvbik7
CisgICAgcmV0dXJuIERPTV9jYXN0PERPTUltcGxlbWVudGF0aW9uRnJvbnQgKj4oX2ludGVybmFs
KTsKIH0KIAotLSAodm9pZClyZW1vdmVBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZQotewotICAg
IEFTU0VSVChuYW1lKTsKK0BlbmQKIAotICAgIGludCBleGNlcHRpb24gPSAwOwotICAgIFtzZWxm
IF9lbGVtZW50XS0+cmVtb3ZlQXR0cmlidXRlKG5hbWUsIGV4Y2VwdGlvbik7Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGV4Y2VwdGlvbik7Ci19CiAKLS0gKERPTUF0dHIgKilnZXRBdHRyaWJ1dGVOb2Rl
OihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7CisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRE9NRG9jdW1lbnRGcmFnbWVudAogCi0gICAgcmV0dXJu
IFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0ZU5vZGUobmFt
ZSkuZ2V0KCldOwotfQorQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50RnJhZ21lbnQgKFdlYkNv
cmVJbnRlcm5hbCkKIAotLSAoRE9NQXR0ciAqKXNldEF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKilu
ZXdBdHRyCisrIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21lbnRXaXRoOihE
b2N1bWVudEZyYWdtZW50ICopaW1wbAogewotICAgIEFTU0VSVChuZXdBdHRyKTsKLQotICAgIGlu
dCBleGNlcHRpb24gPSAwOwotICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0
aDpbc2VsZiBfZWxlbWVudF0tPnNldEF0dHJpYnV0ZU5vZGUoW25ld0F0dHIgX2F0dHJdLCBleGNl
cHRpb24pLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1
cm4gcmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudEZyYWdtZW50ICo+
KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7CiB9CiAKLS0gKERPTUF0dHIgKilyZW1vdmVBdHRy
aWJ1dGVOb2RlOihET01BdHRyICopb2xkQXR0cgorLSAoRG9jdW1lbnRGcmFnbWVudCAqKV9mcmFn
bWVudAogewotICAgIEFTU0VSVChvbGRBdHRyKTsKLQotICAgIGludCBleGNlcHRpb24gPSAwOwot
ICAgIERPTUF0dHIgKnJlc3VsdCA9IFtET01BdHRyIF9hdHRyV2l0aDpbc2VsZiBfZWxlbWVudF0t
PnJlbW92ZUF0dHJpYnV0ZU5vZGUoW29sZEF0dHIgX2F0dHJdLCBleGNlcHRpb24pLmdldCgpXTsK
LSAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudEZyYWdtZW50ICo+KERPTV9jYXN0PE5vZGUgKj4o
X2ludGVybmFsKSk7CiB9CiAKLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWU6
KE5TU3RyaW5nICopbmFtZQotewotICAgIEFTU0VSVChuYW1lKTsKK0BlbmQKIAotICAgIHJldHVy
biBbRE9NTm9kZUxpc3QgX25vZGVMaXN0V2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEVsZW1lbnRz
QnlUYWdOYW1lKG5hbWUpLmdldCgpXTsKLX0KIAotLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1dGVO
UzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQotewotICAg
IEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIERPTURvY3VtZW50CiAKLSAgICByZXR1cm4g
W3NlbGYgX2VsZW1lbnRdLT5nZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7
Ci19CisvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgYXV0by1nZW5lbmVyYXRlIGluIERPTURvY3Vt
ZW50Lm1tCitAaW1wbGVtZW50YXRpb24gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50RXh0ZW5zaW9u
cykKIAotLSAodm9pZClzZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihO
U1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXZhbHVlCistIChET01DU1NTdHls
ZURlY2xhcmF0aW9uICopY3JlYXRlQ1NTU3R5bGVEZWNsYXJhdGlvbgogewotICAgIEFTU0VSVChu
YW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChxdWFsaWZpZWROYW1lKTsKLSAgICBBU1NFUlQodmFs
dWUpOwotCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5zZXRB
dHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIHZhbHVlLCBleGNlcHRpb24p
OwotICAgIHJhaXNlT25ET01FcnJvcihleGNlcHRpb24pOworICAgIHJldHVybiBbRE9NQ1NTU3R5
bGVEZWNsYXJhdGlvbiBfc3R5bGVEZWNsYXJhdGlvbldpdGg6W3NlbGYgX2RvY3VtZW50XS0+Y3Jl
YXRlQ1NTU3R5bGVEZWNsYXJhdGlvbigpLmdldCgpXTsKIH0KIAotLSAodm9pZClyZW1vdmVBdHRy
aWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQot
ewotICAgIEFTU0VSVChuYW1lc3BhY2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOworQGVu
ZAogCi0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5yZW1vdmVB
dHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgZXhjZXB0aW9uKTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLX0KK0BpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudCAo
V2ViQ29yZUludGVybmFsKQogCi0tIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9kZU5TOihOU1N0
cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCisrIChET01Eb2N1bWVu
dCAqKV9kb2N1bWVudFdpdGg6KERvY3VtZW50ICopaW1wbAogewotICAgIEFTU0VSVChuYW1lc3Bh
Y2VVUkkpOwotICAgIEFTU0VSVChsb2NhbE5hbWUpOwotCi0gICAgcmV0dXJuIFtET01BdHRyIF9h
dHRyV2l0aDpbc2VsZiBfZWxlbWVudF0tPmdldEF0dHJpYnV0ZU5vZGVOUyhuYW1lc3BhY2VVUkks
IGxvY2FsTmFtZSkuZ2V0KCldOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Eb2N1bWVudCAq
PihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwogfQogCi0tIChET01BdHRyICopc2V0QXR0cmli
dXRlTm9kZU5TOihET01BdHRyICopbmV3QXR0cgorLSAoRG9jdW1lbnQgKilfZG9jdW1lbnQKIHsK
LSAgICBBU1NFUlQobmV3QXR0cik7Ci0KLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgICBET01B
dHRyICpyZXN1bHQgPSBbRE9NQXR0ciBfYXR0cldpdGg6W3NlbGYgX2VsZW1lbnRdLT5zZXRBdHRy
aWJ1dGVOb2RlTlMoW25ld0F0dHIgX2F0dHJdLCBleGNlcHRpb24pLmdldCgpXTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxEb2N1bWVudCAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwogfQog
Ci0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFt
ZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKKy0gKERPTUVsZW1lbnQgKilfb3duZXJF
bGVtZW50CiB7Ci0gICAgQVNTRVJUKG5hbWVzcGFjZVVSSSk7Ci0gICAgQVNTRVJUKGxvY2FsTmFt
ZSk7Ci0KLSAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX2VsZW1l
bnRdLT5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKS5nZXQo
KV07CisgICAgcmV0dXJuIFtET01FbGVtZW50IF9lbGVtZW50V2l0aDpbc2VsZiBfZG9jdW1lbnRd
LT5vd25lckVsZW1lbnQoKV07CiB9CiAKLS0gKEJPT0wpaGFzQXR0cmlidXRlOihOU1N0cmluZyAq
KW5hbWUKLXsKLSAgICBBU1NFUlQobmFtZSk7CitAZW5kCiAKLSAgICByZXR1cm4gW3NlbGYgX2Vs
ZW1lbnRdLT5oYXNBdHRyaWJ1dGUobmFtZSk7Ci19CiAKLS0gKEJPT0wpaGFzQXR0cmlidXRlTlM6
KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKLXsKLSAgICBB
U1NFUlQobmFtZXNwYWNlVVJJKTsKLSAgICBBU1NFUlQobG9jYWxOYW1lKTsKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBET01BdHRyCiAKLSAgICByZXR1cm4gW3NlbGYg
X2VsZW1lbnRdLT5oYXNBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7Ci19CitA
aW1wbGVtZW50YXRpb24gRE9NQXR0ciAoV2ViQ29yZUludGVybmFsKQogCi0tICh2b2lkKWZvY3Vz
CisrIChET01BdHRyICopX2F0dHJXaXRoOihBdHRyICopaW1wbAogewotICAgIFtzZWxmIF9lbGVt
ZW50XS0+Zm9jdXMoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NQXR0ciAqPihbRE9NTm9k
ZSBfbm9kZVdpdGg6aW1wbF0pOwogfQogCi0tICh2b2lkKWJsdXIKKy0gKEF0dHIgKilfYXR0cgog
ewotICAgIFtzZWxmIF9lbGVtZW50XS0+Ymx1cigpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxB
dHRyICo+KERPTV9jYXN0PE5vZGUgKj4oX2ludGVybmFsKSk7CiB9CiAKIEBlbmQKIAotQGltcGxl
bWVudGF0aW9uIERPTUVsZW1lbnQgKERPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZSkKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBET01Eb2N1bWVudFR5cGUKKworQGltcGxl
bWVudGF0aW9uIERPTURvY3VtZW50VHlwZSAoV2ViQ29yZUludGVybmFsKQorCisrIChET01Eb2N1
bWVudFR5cGUgKilfZG9jdW1lbnRUeXBlV2l0aDooV2ViQ29yZTo6RG9jdW1lbnRUeXBlICopaW1w
bDsKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnRUeXBlICo+KFtET01Ob2Rl
IF9ub2RlV2l0aDppbXBsXSk7Cit9CiAKLS0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHls
ZQorLSAoV2ViQ29yZTo6RG9jdW1lbnRUeXBlICopX2RvY3VtZW50VHlwZTsKIHsKLSAgICByZXR1
cm4gW0RPTUNTU1N0eWxlRGVjbGFyYXRpb24gX3N0eWxlRGVjbGFyYXRpb25XaXRoOltzZWxmIF9l
bGVtZW50XS0+c3R5bGUoKV07CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRvY3Vt
ZW50VHlwZSAqPihET01fY2FzdDxXZWJDb3JlOjpOb2RlICo+KF9pbnRlcm5hbCkpOwogfQogCiBA
ZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBET01FbGVtZW50IChET01FbGVtZW50RXh0ZW5zaW9ucykK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBET01FbGVtZW50CisKKy8v
IEZJWE1FOiB0aGlzIHNob3VsZCBiZSBhdXRvLWdlbmVuZXJhdGUgaW4gRE9NRWxlbWVudC5tbQor
QGltcGxlbWVudGF0aW9uIERPTUVsZW1lbnQgKERPTUVsZW1lbnRBcHBLaXRFeHRlbnNpb25zKQog
CiAtIChOU0ltYWdlKilpbWFnZQogewpAQCAtMTQ4NiwxNiArNTkzLDYgQEAgc3RhdGljIENsYXNz
IGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNTdAogICAgIHJldHVybiBuaWw7CiB9CiAKLS0gKHZv
aWQpc2Nyb2xsSW50b1ZpZXc6KEJPT0wpYWxpZ25Ub3AKLXsKLSAgICBbc2VsZiBfZWxlbWVudF0t
PnNjcm9sbEludG9WaWV3KGFsaWduVG9wKTsKLX0KLQotLSAodm9pZClzY3JvbGxJbnRvVmlld0lm
TmVlZGVkOihCT09MKWNlbnRlcklmTmVlZGVkCi17Ci0gICAgW3NlbGYgX2VsZW1lbnRdLT5zY3Jv
bGxJbnRvVmlld0lmTmVlZGVkKGNlbnRlcklmTmVlZGVkKTsKLX0KLQogQGVuZAogCiBAaW1wbGVt
ZW50YXRpb24gRE9NRWxlbWVudCAoV2ViQ29yZUludGVybmFsKQpAQCAtMTU2MSwxNzMgKzY1OCw3
MiBAQCBzdGF0aWMgQ2xhc3MgZWxlbWVudENsYXNzKGNvbnN0IEF0b21pY1N0CiAKIEBlbmQKIAor
CiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRE9NVGV4dAogCi1AaW1w
bGVtZW50YXRpb24gRE9NVGV4dAotCi0tIChUZXh0ICopX3RleHQKLXsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VGV4dCAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQorQGltcGxl
bWVudGF0aW9uIERPTVRleHQgKFdlYkNvcmVJbnRlcm5hbCkKIAotLSAoRE9NVGV4dCAqKXNwbGl0
VGV4dDoodW5zaWduZWQpb2Zmc2V0CisrIChET01UZXh0ICopX3RleHRXaXRoOihXZWJDb3JlOjpU
ZXh0ICopaW1wbAogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTU5vZGUgKnJl
c3VsdCA9IFtET01Ob2RlIF9ub2RlV2l0aDpbc2VsZiBfdGV4dF0tPnNwbGl0VGV4dChvZmZzZXQs
IGVjKV07Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RE9NVGV4dCAqPihyZXN1bHQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01UZXh0ICo+KFtE
T01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7CiB9CiAKIEBlbmQKIAotLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS8vIERPTUNvbW1lbnQKLQotQGltcGxlbWVudGF0aW9uIERPTUNv
bW1lbnQKLQotQGVuZAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8g
RE9NQ0RBVEFTZWN0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBET01DREFUQVNlY3Rpb24KLQotQGVu
ZAogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NRG9jdW1lbnRU
eXBlCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVudFR5cGUKLQotLSAoTlNTdHJpbmcgKilu
YW1lCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9kb2N1bWVudFR5cGVdLT5wdWJsaWNJZCgpOwotfQot
Ci0tIChET01OYW1lZE5vZGVNYXAgKillbnRpdGllcwotewotICAgIHJldHVybiBbRE9NTmFtZWRO
b2RlTWFwIF9uYW1lZE5vZGVNYXBXaXRoOltzZWxmIF9kb2N1bWVudFR5cGVdLT5lbnRpdGllcygp
XTsKLX0KLQotLSAoRE9NTmFtZWROb2RlTWFwICopbm90YXRpb25zCi17Ci0gICAgcmV0dXJuIFtE
T01OYW1lZE5vZGVNYXAgX25hbWVkTm9kZU1hcFdpdGg6W3NlbGYgX2RvY3VtZW50VHlwZV0tPm5v
dGF0aW9ucygpXTsKLX0KLQotLSAoTlNTdHJpbmcgKilwdWJsaWNJZAotewotICAgIHJldHVybiBb
c2VsZiBfZG9jdW1lbnRUeXBlXS0+cHVibGljSWQoKTsKLX0KKy8vIERPTUNvbW1lbnQKIAotLSAo
TlNTdHJpbmcgKilzeXN0ZW1JZAotewotICAgIHJldHVybiBbc2VsZiBfZG9jdW1lbnRUeXBlXS0+
c3lzdGVtSWQoKTsKLX0KK0BpbXBsZW1lbnRhdGlvbiBET01Db21tZW50IChXZWJDb3JlSW50ZXJu
YWwpCiAKLS0gKE5TU3RyaW5nICopaW50ZXJuYWxTdWJzZXQKKysgKERPTUNvbW1lbnQgKilfY29t
bWVudFdpdGg6KFdlYkNvcmU6OkNvbW1lbnQgKilpbXBsCiB7Ci0gICAgcmV0dXJuIFtzZWxmIF9k
b2N1bWVudFR5cGVdLT5pbnRlcm5hbFN1YnNldCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxE
T01Db21tZW50ICo+KFtET01Ob2RlIF9ub2RlV2l0aDppbXBsXSk7CiB9CiAKIEBlbmQKIAotQGlt
cGxlbWVudGF0aW9uIERPTURvY3VtZW50VHlwZSAoV2ViQ29yZUludGVybmFsKQotCi0tIChEb2N1
bWVudFR5cGUgKilfZG9jdW1lbnRUeXBlCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3Vt
ZW50VHlwZSAqPihET01fY2FzdDxOb2RlICo+KF9pbnRlcm5hbCkpOwotfQotCi1AZW5kCiAKIC8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01Ob3RhdGlvbgotCi1AaW1w
bGVtZW50YXRpb24gRE9NTm90YXRpb24KLQotLSAoTm90YXRpb24gKilfbm90YXRpb24KLXsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Tm90YXRpb24gKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJu
YWwpKTsKLX0KKy8vIERPTUNEQVRBU2VjdGlvbgogCi0tIChOU1N0cmluZyAqKXB1YmxpY0lkCi17
Ci0gICAgcmV0dXJuIFtzZWxmIF9ub3RhdGlvbl0tPnB1YmxpY0lkKCk7Ci19CitAaW1wbGVtZW50
YXRpb24gRE9NQ0RBVEFTZWN0aW9uIChXZWJDb3JlSW50ZXJuYWwpCiAKLS0gKE5TU3RyaW5nICop
c3lzdGVtSWQKKysgKERPTUNEQVRBU2VjdGlvbiAqKV9DREFUQVNlY3Rpb25XaXRoOihXZWJDb3Jl
OjpDREFUQVNlY3Rpb24gKilpbXBsOwogewotICAgIHJldHVybiBbc2VsZiBfbm90YXRpb25dLT5z
eXN0ZW1JZCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01DREFUQVNlY3Rpb24gKj4oW0RP
TU5vZGUgX25vZGVXaXRoOmltcGxdKTsKIH0KIAogQGVuZAogCi0vLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLy8gRE9NRW50aXR5Ci0KLUBpbXBsZW1lbnRhdGlvbiBET01FbnRp
dHkKLQotLSAoRW50aXR5ICopX2VudGl0eQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbnRp
dHkgKj4oRE9NX2Nhc3Q8Tm9kZSAqPihfaW50ZXJuYWwpKTsKLX0KIAotLSAoTlNTdHJpbmcgKilw
dWJsaWNJZAotewotICAgIHJldHVybiBbc2VsZiBfZW50aXR5XS0+cHVibGljSWQoKTsKLX0KKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBET01Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24KIAotLSAoTlNTdHJpbmcgKilzeXN0ZW1JZAotewotICAgIHJldHVybiBbc2VsZiBfZW50
aXR5XS0+c3lzdGVtSWQoKTsKLX0KK0BpbXBsZW1lbnRhdGlvbiBET01Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24gKFdlYkNvcmVJbnRlcm5hbCkKIAotLSAoTlNTdHJpbmcgKilub3RhdGlvbk5hbWUKKysg
KERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKV9wcm9jZXNzaW5nSW5zdHJ1Y3Rpb25XaXRoOihX
ZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKilpbXBsOwogewotICAgIHJldHVybiBbc2Vs
ZiBfZW50aXR5XS0+bm90YXRpb25OYW1lKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTVBy
b2Nlc3NpbmdJbnN0cnVjdGlvbiAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwogfQogCiBA
ZW5kCiAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBET01FbnRpdHlS
ZWZlcmVuY2UKLQotQGltcGxlbWVudGF0aW9uIERPTUVudGl0eVJlZmVyZW5jZQotCi1AZW5kCiAK
IC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBET01Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24KIAotQGltcGxlbWVudGF0aW9uIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbgotCi0t
IChQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKilfcHJvY2Vzc2luZ0luc3RydWN0aW9uCi17Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PFByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqPihET01fY2FzdDxOb2Rl
ICo+KF9pbnRlcm5hbCkpOwotfQotCi0tIChOU1N0cmluZyAqKXRhcmdldAotewotICAgIHJldHVy
biBbc2VsZiBfcHJvY2Vzc2luZ0luc3RydWN0aW9uXS0+dGFyZ2V0KCk7Ci19Ci0KLS0gKE5TU3Ry
aW5nICopZGF0YQotewotICAgIHJldHVybiBbc2VsZiBfcHJvY2Vzc2luZ0luc3RydWN0aW9uXS0+
ZGF0YSgpOwotfQorQGltcGxlbWVudGF0aW9uIERPTUVudGl0eVJlZmVyZW5jZSAoV2ViQ29yZUlu
dGVybmFsKQogCi0tICh2b2lkKXNldERhdGE6KE5TU3RyaW5nICopZGF0YQorKyAoRE9NRW50aXR5
UmVmZXJlbmNlICopX2VudGl0eVJlZmVyZW5jZVdpdGg6KFdlYkNvcmU6OkVudGl0eVJlZmVyZW5j
ZSAqKWltcGw7CiB7Ci0gICAgQVNTRVJUKGRhdGEpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgW3NlbGYgX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbl0tPnNldERhdGEoZGF0YSwgZWMp
OwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUVu
dGl0eVJlZmVyZW5jZSAqPihbRE9NTm9kZSBfbm9kZVdpdGg6aW1wbF0pOwogfQogCiBAZW5kCiAK
KwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTVJhbmdlCiAKQEAg
LTE5ODYsOSArOTgyLDkgQEAgc3RhdGljIENsYXNzIGVsZW1lbnRDbGFzcyhjb25zdCBBdG9taWNT
dAogCiBAZW5kCiAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBET01Ob2RlRmlsdGVyCiAKIEBpbXBs
ZW1lbnRhdGlvbiBET01Ob2RlRmlsdGVyCiAKQEAgLTIwNDMsNiArMTAzOSw5IEBAIHN0YXRpYyBD
bGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QKIEBlbmQKIAogCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRE9NTm9kZUl0ZXJhdG9yCisKIEBpbXBsZW1lbnRh
dGlvbiBET01Ob2RlSXRlcmF0b3IKIAogLSAoaWQpX2luaXRXaXRoTm9kZUl0ZXJhdG9yOihOb2Rl
SXRlcmF0b3IgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgpAQCAtMjE0
Niw2ICsxMTQ1LDEwIEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xhc3MoY29uc3QgQXRvbWljU3QK
IAogQGVuZAogCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBET01U
cmVlV2Fsa2VyCisKIEBpbXBsZW1lbnRhdGlvbiBET01UcmVlV2Fsa2VyCiAKIC0gKGlkKV9pbml0
V2l0aFRyZWVXYWxrZXI6KFRyZWVXYWxrZXIgKilpbXBsIGZpbHRlcjooaWQgPERPTU5vZGVGaWx0
ZXI+KWZpbHRlcgpAQCAtMjI3NCw3ICsxMjc3LDExIEBAIHN0YXRpYyBDbGFzcyBlbGVtZW50Q2xh
c3MoY29uc3QgQXRvbWljU3QKIAogQGVuZAogCi1jbGFzcyBPYmpDTm9kZUZpbHRlckNvbmRpdGlv
biA6IHB1YmxpYyBOb2RlRmlsdGVyQ29uZGl0aW9uIAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8gT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24KKworY2xhc3MgT2JqQ05v
ZGVGaWx0ZXJDb25kaXRpb24gOiBwdWJsaWMgTm9kZUZpbHRlckNvbmRpdGlvbgogewogcHVibGlj
OgogICAgIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uKGlkIDxET01Ob2RlRmlsdGVyPik7CkBAIC0y
MzA3LDYgKzEzMTQsMTEgQEAgc2hvcnQgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb246OmFjY2VwdE5v
ZAogICAgIHJldHVybiBbbV9maWx0ZXIgYWNjZXB0Tm9kZTpbRE9NTm9kZSBfbm9kZVdpdGg6bm9k
ZV1dOwogfQogCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBET01E
b2N1bWVudCAoRE9NRG9jdW1lbnRUcmF2ZXJzYWwpCisKKy8vIEZJWE1FOiB0aGlzIHNob3VsZCBi
ZSBhdXRvLWdlbmVuZXJhdGUgaW4gRE9NRG9jdW1lbnQubW0KIEBpbXBsZW1lbnRhdGlvbiBET01E
b2N1bWVudCAoRE9NRG9jdW1lbnRUcmF2ZXJzYWwpCiAKIC0gKERPTU5vZGVJdGVyYXRvciAqKWNy
ZWF0ZU5vZGVJdGVyYXRvcjooRE9NTm9kZSAqKXJvb3QgOih1bnNpZ25lZCl3aGF0VG9TaG93IDoo
aWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlciA6KEJPT0wpZXhwYW5kRW50aXR5UmVmZXJlbmNlcwpA
QCAtMjMzMyw2ICsxMzQ1LDEwIEBAIHNob3J0IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2Nl
cHROb2QKIAogQGVuZAogCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LyBPYmpDRXZlbnRMaXN0ZW5lcgorCiBPYmpDRXZlbnRMaXN0ZW5lciogT2JqQ0V2ZW50TGlzdGVu
ZXI6OmZpbmQoaWQgPERPTUV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKQogewogICAgIGlmIChMaXN0
ZW5lck1hcCogbWFwID0gbGlzdGVuZXJNYXApCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NQ1NTLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTUy5oCShy
ZXZpc2lvbiAxNjA2NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DU1MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsNiArMjMsMTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKKyNpbXBv
cnQgPFdlYkNvcmUvRE9NQ29yZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01ET01JbXBsZW1lbnRh
dGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9ET01FbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9ET01TdHlsZXNoZWV0cy5oPgogCiBAY2xhc3MgRE9NQ291bnRlcjsKQEAgLTMzLDYg
KzM4LDEwIEBACiBAY2xhc3MgRE9NUmVjdDsKIEBjbGFzcyBET01SR0JDb2xvcjsKIAorQGludGVy
ZmFjZSBET01Eb2N1bWVudCAoRE9NVmlld0NTUykKKy0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24g
KilnZXRDb21wdXRlZFN0eWxlOihET01FbGVtZW50ICopZWx0IDooTlNTdHJpbmcgKilwc2V1ZG9F
bHQ7CitAZW5kCisKIEBpbnRlcmZhY2UgRE9NQ1NTUnVsZUxpc3QgOiBET01PYmplY3QKIC0gKHVu
c2lnbmVkKWxlbmd0aDsKIC0gKERPTUNTU1J1bGUgKilpdGVtOih1bnNpZ25lZClpbmRleDsKQEAg
LTE4NSwxMCArMTk0LDYgQEAgZW51bSB7CiAtIChOU1N0cmluZyAqKXNlcGFyYXRvcjsKIEBlbmQK
IAotQGludGVyZmFjZSBET01FbGVtZW50IChET01FbGVtZW50Q1NTSW5saW5lU3R5bGUpCi0tIChE
T01DU1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGU7Ci1AZW5kCi0KIEBpbnRlcmZhY2UgRE9NQ1NT
U3R5bGVEZWNsYXJhdGlvbiAoRE9NQ1NTMlByb3BlcnRpZXMpCiAtIChOU1N0cmluZyAqKWF6aW11
dGg7CiAtICh2b2lkKXNldEF6aW11dGg6KE5TU3RyaW5nICopYXppbXV0aDsKQEAgLTQ0MiwxNSAr
NDQ3LDMgQEAgZW51bSB7CiAtICh1bnNpZ25lZClpbnNlcnRSdWxlOihOU1N0cmluZyAqKXJ1bGUg
Oih1bnNpZ25lZClpbmRleDsKIC0gKHZvaWQpZGVsZXRlUnVsZToodW5zaWduZWQpaW5kZXg7CiBA
ZW5kCi0KLUBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgKERPTVZpZXdDU1MpCi0tIChET01DU1NTdHls
ZURlY2xhcmF0aW9uICopZ2V0Q29tcHV0ZWRTdHlsZTooRE9NRWxlbWVudCAqKWVsdCA6KE5TU3Ry
aW5nICopcHNldWRvRWx0OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTURvY3VtZW50IChET01Eb2N1
bWVudENTUykKLS0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilnZXRPdmVycmlkZVN0eWxlOihE
T01FbGVtZW50ICopZWx0IDooTlNTdHJpbmcgKilwc2V1ZG9FbHQ7Ci1AZW5kCi0KLUBpbnRlcmZh
Y2UgRE9NSW1wbGVtZW50YXRpb24gKERPTUltcGxlbWVudGF0aW9uQ1NTKQotLSAoRE9NQ1NTU3R5
bGVTaGVldCAqKWNyZWF0ZUNTU1N0eWxlU2hlZXQ6KE5TU3RyaW5nICopdGl0bGUgOihOU1N0cmlu
ZyAqKW1lZGlhOwotQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLm1tCShyZXZpc2lvbiAx
NjA2NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DU1MubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI0ODMsMjYgKzI0ODMsNiBAQCB2b2lkIHJlbW92ZVdyYXBwZXJGb3JSR0IoUkdCQTMyIHZh
bHVlKQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1AaW1wbGVtZW50
YXRpb24gRE9NT2JqZWN0IChET01MaW5rU3R5bGUpCi0KLS0gKERPTVN0eWxlU2hlZXQgKilzaGVl
dAotewotICAgIFN0eWxlU2hlZXQgKnNoZWV0OwotCi0gICAgaWYgKFtzZWxmIGlzS2luZE9mQ2xh
c3M6W0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiBjbGFzc11dKQotICAgICAgICBzaGVldCA9IHN0
YXRpY19jYXN0PFByb2Nlc3NpbmdJbnN0cnVjdGlvbio+KFsoRE9NUHJvY2Vzc2luZ0luc3RydWN0
aW9uICopc2VsZiBfbm9kZV0pLT5zaGVldCgpOwotICAgIGVsc2UgaWYgKFtzZWxmIGlzS2luZE9m
Q2xhc3M6W0RPTUhUTUxMaW5rRWxlbWVudCBjbGFzc11dKQotICAgICAgICBzaGVldCA9IHN0YXRp
Y19jYXN0PEhUTUxMaW5rRWxlbWVudCo+KFsoRE9NSFRNTExpbmtFbGVtZW50ICopc2VsZiBfbm9k
ZV0pLT5zaGVldCgpOwotICAgIGVsc2UgaWYgKFtzZWxmIGlzS2luZE9mQ2xhc3M6W0RPTUhUTUxT
dHlsZUVsZW1lbnQgY2xhc3NdXSkKLSAgICAgICAgc2hlZXQgPSBzdGF0aWNfY2FzdDxIVE1MU3R5
bGVFbGVtZW50Kj4oWyhET01IVE1MU3R5bGVFbGVtZW50ICopc2VsZiBfbm9kZV0pLT5zaGVldCgp
OwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBbRE9NU3R5bGVT
aGVldCBfRE9NU3R5bGVTaGVldFdpdGg6c2hlZXRdOwotfQotCi1AZW5kCi0KIEBpbXBsZW1lbnRh
dGlvbiBET01Eb2N1bWVudCAoRE9NVmlld0NTUykKIAogLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlv
biAqKWdldENvbXB1dGVkU3R5bGU6KERPTUVsZW1lbnQgKillbHQgOihOU1N0cmluZyAqKXBzZXVk
b0VsdApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNvcmUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ29yZS5oCShyZXZpc2lvbiAxNjA2NykKKysrIFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Db3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWlu
aWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMywyMTggKzI0LDIxIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdC5oPgotCi1AY2xhc3MgRE9NRG9jdW1lbnQ7IAotQGNsYXNz
IERPTURvY3VtZW50VHlwZTsKLUBjbGFzcyBET01FbGVtZW50OwotQGNsYXNzIERPTU5hbWVkTm9k
ZU1hcDsKLUBjbGFzcyBET01Ob2RlTGlzdDsKLQotdHlwZWRlZiBzdHJ1Y3QgRE9NT2JqZWN0SW50
ZXJuYWwgRE9NT2JqZWN0SW50ZXJuYWw7Ci0KLUBpbnRlcmZhY2UgRE9NT2JqZWN0IDogV2ViU2Ny
aXB0T2JqZWN0IDxOU0NvcHlpbmc+Ci17Ci0gICAgRE9NT2JqZWN0SW50ZXJuYWwgKl9pbnRlcm5h
bDsKLX0KLUBlbmQKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgRE9NVGltZVN0YW1wOwot
Ci1leHRlcm4gTlNTdHJpbmcgKiBjb25zdCBET01FeGNlcHRpb247Ci0KLWVudW0gewotICAgIC8v
Ci0gICAgLy8gRE9NIGV4Y2VwdGlvbiBjb2RlcwotICAgIC8vCi0gICAgRE9NX0lOREVYX1NJWkVf
RVJSICAgICAgICAgICAgICAgID0gMSwKLSAgICBET01fRE9NU1RSSU5HX1NJWkVfRVJSICAgICAg
ICAgICAgPSAyLAotICAgIERPTV9ISUVSQVJDSFlfUkVRVUVTVF9FUlIgICAgICAgICA9IDMsCi0g
ICAgRE9NX1dST05HX0RPQ1VNRU5UX0VSUiAgICAgICAgICAgID0gNCwKLSAgICBET01fSU5WQUxJ
RF9DSEFSQUNURVJfRVJSICAgICAgICAgPSA1LAotICAgIERPTV9OT19EQVRBX0FMTE9XRURfRVJS
ICAgICAgICAgICA9IDYsCi0gICAgRE9NX05PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiAgID0g
NywKLSAgICBET01fTk9UX0ZPVU5EX0VSUiAgICAgICAgICAgICAgICAgPSA4LAotICAgIERPTV9O
T1RfU1VQUE9SVEVEX0VSUiAgICAgICAgICAgICA9IDksCi0gICAgRE9NX0lOVVNFX0FUVFJJQlVU
RV9FUlIgICAgICAgICAgID0gMTAsCi0gICAgRE9NX0lOVkFMSURfU1RBVEVfRVJSICAgICAgICAg
ICAgID0gMTEsCi0gICAgRE9NX1NZTlRBWF9FUlIgICAgICAgICAgICAgICAgICAgID0gMTIsCi0g
ICAgRE9NX0lOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiAgICAgID0gMTMsCi0gICAgRE9NX05BTUVT
UEFDRV9FUlIgICAgICAgICAgICAgICAgID0gMTQsCi0gICAgRE9NX0lOVkFMSURfQUNDRVNTX0VS
UiAgICAgICAgICAgID0gMTUKLX07Ci0KLUBpbnRlcmZhY2UgRE9NSW1wbGVtZW50YXRpb24gOiBE
T01PYmplY3QKLS0gKEJPT0wpaGFzRmVhdHVyZTooTlNTdHJpbmcgKilmZWF0dXJlIDooTlNTdHJp
bmcgKil2ZXJzaW9uOwotLSAoRE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBlOihO
U1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXB1YmxpY0lkIDooTlNTdHJpbmcg
KilzeXN0ZW1JZDsKLS0gKERPTURvY3VtZW50ICopY3JlYXRlRG9jdW1lbnQ6KE5TU3RyaW5nICop
bmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooRE9NRG9jdW1lbnRUeXBl
ICopZG9jdHlwZTsKLUBlbmQKLQotZW51bSB7Ci0gICAgLy8KLSAgICAvLyBET00gbm9kZSB0eXBl
cwotICAgIC8vCi0gICAgRE9NX0VMRU1FTlRfTk9ERSAgICAgICAgICAgICAgICAgID0gMSwKLSAg
ICBET01fQVRUUklCVVRFX05PREUgICAgICAgICAgICAgICAgPSAyLAotICAgIERPTV9URVhUX05P
REUgICAgICAgICAgICAgICAgICAgICA9IDMsCi0gICAgRE9NX0NEQVRBX1NFQ1RJT05fTk9ERSAg
ICAgICAgICAgID0gNCwKLSAgICBET01fRU5USVRZX1JFRkVSRU5DRV9OT0RFICAgICAgICAgPSA1
LAotICAgIERPTV9FTlRJVFlfTk9ERSAgICAgICAgICAgICAgICAgICA9IDYsCi0gICAgRE9NX1BS
T0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSAgID0gNywKLSAgICBET01fQ09NTUVOVF9OT0RFICAg
ICAgICAgICAgICAgICAgPSA4LAotICAgIERPTV9ET0NVTUVOVF9OT0RFICAgICAgICAgICAgICAg
ICA9IDksCi0gICAgRE9NX0RPQ1VNRU5UX1RZUEVfTk9ERSAgICAgICAgICAgID0gMTAsCi0gICAg
RE9NX0RPQ1VNRU5UX0ZSQUdNRU5UX05PREUgICAgICAgID0gMTEsCi0gICAgRE9NX05PVEFUSU9O
X05PREUgICAgICAgICAgICAgICAgID0gMTIKLX07Ci0KLUBpbnRlcmZhY2UgRE9NTm9kZSA6IERP
TU9iamVjdAotLSAoTlNTdHJpbmcgKilub2RlTmFtZTsKLS0gKE5TU3RyaW5nICopbm9kZVZhbHVl
OwotLSAodm9pZClzZXROb2RlVmFsdWU6KE5TU3RyaW5nICopc3RyaW5nOwotLSAodW5zaWduZWQg
c2hvcnQpbm9kZVR5cGU7Ci0tIChET01Ob2RlICopcGFyZW50Tm9kZTsKLS0gKERPTU5vZGVMaXN0
ICopY2hpbGROb2RlczsKLS0gKERPTU5vZGUgKilmaXJzdENoaWxkOwotLSAoRE9NTm9kZSAqKWxh
c3RDaGlsZDsKLS0gKERPTU5vZGUgKilwcmV2aW91c1NpYmxpbmc7Ci0tIChET01Ob2RlICopbmV4
dFNpYmxpbmc7Ci0tIChET01OYW1lZE5vZGVNYXAgKilhdHRyaWJ1dGVzOwotLSAoRE9NRG9jdW1l
bnQgKilvd25lckRvY3VtZW50OwotLSAoRE9NTm9kZSAqKWluc2VydEJlZm9yZTooRE9NTm9kZSAq
KW5ld0NoaWxkIDooRE9NTm9kZSAqKXJlZkNoaWxkOwotLSAoRE9NTm9kZSAqKXJlcGxhY2VDaGls
ZDooRE9NTm9kZSAqKW5ld0NoaWxkIDooRE9NTm9kZSAqKW9sZENoaWxkOwotLSAoRE9NTm9kZSAq
KXJlbW92ZUNoaWxkOihET01Ob2RlICopb2xkQ2hpbGQ7Ci0tIChET01Ob2RlICopYXBwZW5kQ2hp
bGQ6KERPTU5vZGUgKiluZXdDaGlsZDsKLS0gKEJPT0wpaGFzQ2hpbGROb2RlczsKLS0gKERPTU5v
ZGUgKiljbG9uZU5vZGU6KEJPT0wpZGVlcDsKLS0gKHZvaWQpbm9ybWFsaXplOwotLSAoQk9PTClp
c1N1cHBvcnRlZDooTlNTdHJpbmcgKilmZWF0dXJlIDooTlNTdHJpbmcgKil2ZXJzaW9uOwotLSAo
TlNTdHJpbmcgKiluYW1lc3BhY2VVUkk7Ci0tIChOU1N0cmluZyAqKXByZWZpeDsKLS0gKHZvaWQp
c2V0UHJlZml4OihOU1N0cmluZyAqKXByZWZpeDsKLS0gKE5TU3RyaW5nICopbG9jYWxOYW1lOwot
LSAoQk9PTCloYXNBdHRyaWJ1dGVzOwotLSAoQk9PTClpc1NhbWVOb2RlOihET01Ob2RlICopb3Ro
ZXI7Ci0tIChCT09MKWlzRXF1YWxOb2RlOihET01Ob2RlICopb3RoZXI7Ci0tIChOU1N0cmluZyAq
KXRleHRDb250ZW50OwotLSAodm9pZClzZXRUZXh0Q29udGVudDooTlNTdHJpbmcgKil0ZXh0Owot
QGVuZAotCi1AaW50ZXJmYWNlIERPTU5vZGVMaXN0IDogRE9NT2JqZWN0Ci0tIChET01Ob2RlICop
aXRlbToodW5zaWduZWQpaW5kZXg7Ci0tICh1bnNpZ25lZClsZW5ndGg7Ci1AZW5kCi0KLUBpbnRl
cmZhY2UgRE9NTmFtZWROb2RlTWFwIDogRE9NT2JqZWN0Ci0tIChET01Ob2RlICopZ2V0TmFtZWRJ
dGVtOihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01Ob2RlICopc2V0TmFtZWRJdGVtOihET01Ob2Rl
ICopYXJnOwotLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1lOwot
LSAoRE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4OwotLSAodW5zaWduZWQpbGVuZ3RoOwot
LSAoRE9NTm9kZSAqKWdldE5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5T
U3RyaW5nICopbG9jYWxOYW1lOwotLSAoRE9NTm9kZSAqKXNldE5hbWVkSXRlbU5TOihET01Ob2Rl
ICopYXJnOwotLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVz
cGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUNo
YXJhY3RlckRhdGEgOiBET01Ob2RlCi0tIChOU1N0cmluZyAqKWRhdGE7Ci0tICh2b2lkKXNldERh
dGE6KE5TU3RyaW5nICopZGF0YTsKLS0gKHVuc2lnbmVkKWxlbmd0aDsKLS0gKE5TU3RyaW5nICop
c3Vic3RyaW5nRGF0YToodW5zaWduZWQpb2Zmc2V0IDoodW5zaWduZWQpY291bnQ7Ci0tICh2b2lk
KWFwcGVuZERhdGE6KE5TU3RyaW5nICopYXJnOwotLSAodm9pZClpbnNlcnREYXRhOih1bnNpZ25l
ZClvZmZzZXQgOihOU1N0cmluZyAqKWFyZzsKLS0gKHZvaWQpZGVsZXRlRGF0YToodW5zaWduZWQp
b2Zmc2V0IDoodW5zaWduZWQpIGNvdW50OwotLSAodm9pZClyZXBsYWNlRGF0YToodW5zaWduZWQp
b2Zmc2V0IDoodW5zaWduZWQpY291bnQgOihOU1N0cmluZyAqKWFyZzsKLUBlbmQKLQotQGludGVy
ZmFjZSBET01BdHRyIDogRE9NTm9kZQotLSAoTlNTdHJpbmcgKiluYW1lOwotLSAoQk9PTClzcGVj
aWZpZWQ7Ci0tIChOU1N0cmluZyAqKXZhbHVlOwotLSAodm9pZClzZXRWYWx1ZTooTlNTdHJpbmcg
Kil2YWx1ZTsKLS0gKERPTUVsZW1lbnQgKilvd25lckVsZW1lbnQ7Ci1AZW5kCi0KLUBpbnRlcmZh
Y2UgRE9NRWxlbWVudCA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopdGFnTmFtZTsKLS0gKE5TU3Ry
aW5nICopZ2V0QXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWU7Ci0tICh2b2lkKXNldEF0dHJpYnV0
ZTooTlNTdHJpbmcgKiluYW1lIDooTlNTdHJpbmcgKil2YWx1ZTsKLS0gKHZvaWQpcmVtb3ZlQXR0
cmlidXRlOihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9kZToo
TlNTdHJpbmcgKiluYW1lOwotLSAoRE9NQXR0ciAqKXNldEF0dHJpYnV0ZU5vZGU6KERPTUF0dHIg
KiluZXdBdHRyOwotLSAoRE9NQXR0ciAqKXJlbW92ZUF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKilv
bGRBdHRyOwotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZTooTlNTdHJpbmcg
KiluYW1lOwotLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3Bh
Y2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKHZvaWQpc2V0QXR0cmlidXRlTlM6KE5T
U3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJp
bmcgKil2YWx1ZTsKLS0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNw
YWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tIChET01BdHRyICopZ2V0QXR0cmlidXRl
Tm9kZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lOwot
LSAoRE9NQXR0ciAqKXNldEF0dHJpYnV0ZU5vZGVOUzooRE9NQXR0ciAqKW5ld0F0dHI7Ci0tIChE
T01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNl
VVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tIChCT09MKWhhc0F0dHJpYnV0ZTooTlNTdHJp
bmcgKiluYW1lOwotLSAoQk9PTCloYXNBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VV
UkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKHZvaWQpZm9jdXM7Ci0tICh2b2lkKWJsdXI7
Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NVGV4dCA6IERPTUNoYXJhY3RlckRhdGEKLS0gKERPTVRl
eHQgKilzcGxpdFRleHQ6KHVuc2lnbmVkKW9mZnNldDsKLUBlbmQKLQotQGludGVyZmFjZSBET01D
b21tZW50IDogRE9NQ2hhcmFjdGVyRGF0YQotQGVuZAotCi1AaW50ZXJmYWNlIERPTUNEQVRBU2Vj
dGlvbiA6IERPTVRleHQKLUBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudFR5cGUgOiBET01O
b2RlCi0tIChOU1N0cmluZyAqKW5hbWU7Ci0tIChET01OYW1lZE5vZGVNYXAgKillbnRpdGllczsK
LS0gKERPTU5hbWVkTm9kZU1hcCAqKW5vdGF0aW9uczsKLS0gKE5TU3RyaW5nICopcHVibGljSWQ7
Ci0tIChOU1N0cmluZyAqKXN5c3RlbUlkOwotLSAoTlNTdHJpbmcgKilpbnRlcm5hbFN1YnNldDsK
LUBlbmQKLQotQGludGVyZmFjZSBET01Ob3RhdGlvbiA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICop
cHVibGljSWQ7Ci0tIChOU1N0cmluZyAqKXN5c3RlbUlkOwotQGVuZAotCi1AaW50ZXJmYWNlIERP
TUVudGl0eSA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopcHVibGljSWQ7Ci0tIChOU1N0cmluZyAq
KXN5c3RlbUlkOwotLSAoTlNTdHJpbmcgKilub3RhdGlvbk5hbWU7Ci1AZW5kCi0KLUBpbnRlcmZh
Y2UgRE9NRW50aXR5UmVmZXJlbmNlIDogRE9NTm9kZQotQGVuZAotCi1AaW50ZXJmYWNlIERPTVBy
b2Nlc3NpbmdJbnN0cnVjdGlvbiA6IERPTU5vZGUKLS0gKE5TU3RyaW5nICopdGFyZ2V0OwotLSAo
TlNTdHJpbmcgKilkYXRhOwotLSAodm9pZClzZXREYXRhOihOU1N0cmluZyAqKWRhdGE7Ci1AZW5k
Ci0KLUBpbnRlcmZhY2UgRE9NRG9jdW1lbnRGcmFnbWVudCA6IERPTU5vZGUKLUBlbmQKLQotQGlu
dGVyZmFjZSBET01Eb2N1bWVudCA6IERPTU5vZGUKLS0gKERPTURvY3VtZW50VHlwZSAqKWRvY3R5
cGU7Ci0tIChET01JbXBsZW1lbnRhdGlvbiAqKWltcGxlbWVudGF0aW9uOwotLSAoRE9NRWxlbWVu
dCAqKWRvY3VtZW50RWxlbWVudDsKLS0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50OihOU1N0
cmluZyAqKXRhZ05hbWU7Ci0tIChET01Eb2N1bWVudEZyYWdtZW50ICopY3JlYXRlRG9jdW1lbnRG
cmFnbWVudDsKLS0gKERPTVRleHQgKiljcmVhdGVUZXh0Tm9kZTooTlNTdHJpbmcgKilkYXRhOwot
LSAoRE9NQ29tbWVudCAqKWNyZWF0ZUNvbW1lbnQ6KE5TU3RyaW5nICopZGF0YTsKLS0gKERPTUNE
QVRBU2VjdGlvbiAqKWNyZWF0ZUNEQVRBU2VjdGlvbjooTlNTdHJpbmcgKilkYXRhOwotLSAoRE9N
UHJvY2Vzc2luZ0luc3RydWN0aW9uICopY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uOihOU1N0
cmluZyAqKXRhcmdldCA6KE5TU3RyaW5nICopZGF0YTsKLS0gKERPTUF0dHIgKiljcmVhdGVBdHRy
aWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTUVudGl0eVJlZmVyZW5jZSAqKWNyZWF0ZUVu
dGl0eVJlZmVyZW5jZTooTlNTdHJpbmcgKiluYW1lOwotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVt
ZW50c0J5VGFnTmFtZTooTlNTdHJpbmcgKil0YWduYW1lOwotLSAoRE9NTm9kZSAqKWltcG9ydE5v
ZGU6KERPTU5vZGUgKilpbXBvcnRlZE5vZGUgOihCT09MKWRlZXA7Ci0tIChET01FbGVtZW50ICop
Y3JlYXRlRWxlbWVudE5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVh
bGlmaWVkTmFtZTsKLS0gKERPTUF0dHIgKiljcmVhdGVBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKilu
YW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWU7Ci0tIChET01Ob2RlTGlzdCAq
KWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJp
bmcgKilsb2NhbE5hbWU7Ci0tIChET01FbGVtZW50ICopZ2V0RWxlbWVudEJ5SWQ6KE5TU3RyaW5n
ICopZWxlbWVudElkOwotLSAoRE9NTm9kZSAqKWFkb3B0Tm9kZTooRE9NTm9kZSAqKXNvdXJjZTsK
LUBlbmQKKyNpbXBvcnQgPFdlYkNvcmUvRE9NQXR0ci5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01D
REFUQVNlY3Rpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NQ2hhcmFjdGVyRGF0YS5oPgorI2lt
cG9ydCA8V2ViQ29yZS9ET01Db21tZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTURPTUltcGxl
bWVudGF0aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTURvY3VtZW50Lmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0RPTURvY3VtZW50RnJhZ21lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1l
bnRUeXBlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvRE9NRW50aXR5Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUVudGl0eVJlZmVyZW5jZS5oPgor
I2ltcG9ydCA8V2ViQ29yZS9ET01OYW1lZE5vZGVNYXAuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9N
Tm9kZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Ob2RlTGlzdC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9ET01Ob3RhdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RP
TVRleHQuaD4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FdmVudHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZlbnRzLmgJKHJldmlzaW9uIDE2MDY3
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBBcHBsZSBDb21w
dXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBT
YW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjMsNiArMjQsOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2lt
cG9ydCA8V2ViQ29yZS9ET01Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Ob2RlLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01WaWV3
cy5oPgogCiBAY2xhc3MgRE9NRXZlbnQ7CkBAIC02NSwxMCArNjksNiBAQCBlbnVtIHsKIC0gKHZv
aWQpaW5pdEV2ZW50OihOU1N0cmluZyAqKWV2ZW50VHlwZUFyZyA6KEJPT0wpY2FuQnViYmxlQXJn
IDooQk9PTCljYW5jZWxhYmxlQXJnOwogQGVuZAogCi1AaW50ZXJmYWNlIERPTURvY3VtZW50IChE
T01Eb2N1bWVudEV2ZW50KQotLSAoRE9NRXZlbnQgKiljcmVhdGVFdmVudDooTlNTdHJpbmcgKill
dmVudFR5cGU7Ci1AZW5kCi0KIEBpbnRlcmZhY2UgRE9NVUlFdmVudCA6IERPTUV2ZW50CiAtIChE
T01BYnN0cmFjdFZpZXcgKil2aWV3OwogLSAoaW50KWRldGFpbDsKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01FdmVudHMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUV2ZW50cy5tbQkocmV2aXNpb24gMTYwNjcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NRXZlbnRzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgsMTUgKzM3OCwzIEBAIEFMTE9X
X0RPTV9DQVNUKEV2ZW50KQogfQogCiBAZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBET01Eb2N1bWVu
dCAoRE9NRG9jdW1lbnRFdmVudCkKLQotLSAoRE9NRXZlbnQgKiljcmVhdGVFdmVudDooTlNTdHJp
bmcgKilldmVudFR5cGUKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8
RXZlbnQ+IGV2ZW50ID0gW3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlRXZlbnQoZXZlbnRUeXBlLCBl
Yyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gW0RPTUV2ZW50IF9ldmVu
dFdpdGg6ZXZlbnQuZ2V0KCldOwotfQotCi1AZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NRXh0ZW5zaW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01FeHRlbnNpb25zLmgJKHJldmlzaW9uIDE2MDY3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTUV4dGVuc2lvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5p
Z0BnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIyICsy
NCwyOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2ltcG9ydCA8V2ViQ29yZS9ET01BdHRy
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUNTUy5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01ET01J
bXBsZW1lbnRhdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01Eb2N1bWVudC5oPgorI2ltcG9y
dCA8V2ViQ29yZS9ET01FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUwuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvRE9NTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01SYW5nZS5oPgog
CiBAY2xhc3MgTlNDb2xvcjsKIEBjbGFzcyBOU0ltYWdlOwotCi1AaW50ZXJmYWNlIERPTUltcGxl
bWVudGF0aW9uIChET01JbXBsZW1lbnRhdGlvbkV4dGVuc2lvbnMpCi0tIChET01IVE1MRG9jdW1l
bnQgKiljcmVhdGVIVE1MRG9jdW1lbnQ6KE5TU3RyaW5nICopdGl0bGU7Ci1AZW5kCitAY2xhc3Mg
RE9NSFRNTENvbGxlY3Rpb247CiAKIEBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgKERPTURvY3VtZW50
Q1NTRXh0ZW5zaW9ucykKIC0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKiljcmVhdGVDU1NTdHls
ZURlY2xhcmF0aW9uOwogLSAoRE9NQ1NTUnVsZUxpc3QgKilnZXRNYXRjaGVkQ1NTUnVsZXM6KERP
TUVsZW1lbnQgKillbHQgOihOU1N0cmluZyAqKXBzZXVkb0VsdDsKIEBlbmQKIAorQGludGVyZmFj
ZSBET01FbGVtZW50IChET01FbGVtZW50QXBwS2l0RXh0ZW5zaW9ucykKKy0gKE5TSW1hZ2UgKilp
bWFnZTsKK0BlbmQKKwogQGludGVyZmFjZSBET01IVE1MRG9jdW1lbnQgKERPTUhUTUxEb2N1bWVu
dEV4dGVuc2lvbnMpCiAtIChET01Eb2N1bWVudEZyYWdtZW50ICopY3JlYXRlRG9jdW1lbnRGcmFn
bWVudFdpdGhNYXJrdXBTdHJpbmc6KE5TU3RyaW5nICopbWFya3VwU3RyaW5nIGJhc2VVUkw6KE5T
VVJMICopYmFzZVVSTDsKIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKiljcmVhdGVEb2N1bWVudEZy
YWdtZW50V2l0aFRleHQ6KE5TU3RyaW5nICopdGV4dDsKQEAgLTU4LDIyICs2NSw2IEBACiAtICh2
b2lkKXNldENvbnRlbnRFZGl0YWJsZTooTlNTdHJpbmcgKiljb250ZW50RWRpdGFibGU7CiAtIChC
T09MKWlzQ29udGVudEVkaXRhYmxlOwogLSAoTlNTdHJpbmcgKil0aXRsZURpc3BsYXlTdHJpbmc7
Ci0KLS0gKGludClvZmZzZXRMZWZ0OwotLSAoaW50KW9mZnNldFRvcDsKLS0gKGludClvZmZzZXRX
aWR0aDsKLS0gKGludClvZmZzZXRIZWlnaHQ7Ci0tIChET01IVE1MRWxlbWVudCAqKW9mZnNldFBh
cmVudDsKLQotLSAoaW50KWNsaWVudFdpZHRoOwotLSAoaW50KWNsaWVudEhlaWdodDsKLQotLSAo
aW50KXNjcm9sbExlZnQ7Ci0tICh2b2lkKXNldFNjcm9sbExlZnQ6KGludClzY3JvbGw7Ci0tIChp
bnQpc2Nyb2xsVG9wOwotLSAodm9pZClzZXRTY3JvbGxUb3A6KGludClzY3JvbGw7Ci0tIChpbnQp
c2Nyb2xsV2lkdGg7Ci0tIChpbnQpc2Nyb2xsSGVpZ2h0OwogQGVuZAogCiBAaW50ZXJmYWNlIERP
TUhUTUxFbWJlZEVsZW1lbnQgOiBET01IVE1MRWxlbWVudApAQCAtOTYsMzAgKzg3LDE1IEBACiAt
IChOU0NvbG9yICopY29sb3I7CiBAZW5kCiAKLUBpbnRlcmZhY2UgRE9NQXR0ciAoRE9NQXR0ckV4
dGVuc2lvbnMpCi0tIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGU7Ci1AZW5kCi0KIEBp
bnRlcmZhY2UgRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbkV4
dGVuc2lvbnMpCiAtIChOU1N0cmluZyAqKWdldFByb3BlcnR5U2hvcnRoYW5kOihOU1N0cmluZyAq
KXByb3BlcnR5TmFtZTsKIC0gKEJPT0wpaXNQcm9wZXJ0eUltcGxpY2l0OihOU1N0cmluZyAqKXBy
b3BlcnR5TmFtZTsKIEBlbmQKIAotQGludGVyZmFjZSBET01Ob2RlIChET01Ob2RlRXh0ZW5zaW9u
cykKLS0gKE5TUmVjdClib3VuZGluZ0JveDsKLS0gKE5TQXJyYXkgKilsaW5lQm94UmVjdHM7Ci1A
ZW5kCi0KIEBpbnRlcmZhY2UgRE9NUmFuZ2UgKERPTVJhbmdlRXh0ZW5zaW9ucykKIC0gKE5TU3Ry
aW5nICopdGV4dDsKIEBlbmQKIAotQGludGVyZmFjZSBET01FbGVtZW50IChET01FbGVtZW50RXh0
ZW5zaW9ucykKLS0gKE5TSW1hZ2UgKilpbWFnZTsKLS0gKHZvaWQpc2Nyb2xsSW50b1ZpZXc6KEJP
T0wpYWxpZ25Ub3A7Ci0tICh2b2lkKXNjcm9sbEludG9WaWV3SWZOZWVkZWQ6KEJPT0wpY2VudGVy
SWZOZWVkZWQ7Ci1AZW5kCi0KIEBpbnRlcmZhY2UgRE9NSFRNTElucHV0RWxlbWVudCAoRE9NSFRN
TElucHV0RWxlbWVudEV4dGVuc2lvbnMpCiAtIChOU1N0cmluZyAqKWFsdERpc3BsYXlTdHJpbmc7
CiAtIChOU1VSTCAqKWFic29sdXRlSW1hZ2VVUkw7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NSFRNTC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRN
TC5tbQkocmV2aXNpb24gMTYwNjcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTC5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDE2LDcxICs0MTYsNiBAQCB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogICAgIHJldHVybiBbc2VsZiBfSFRNTEVsZW1lbnRdLT5pc0NvbnRlbnRFZGl0YWJs
ZSgpOwogfQogCi0tIChpbnQpb2Zmc2V0TGVmdAotewotICAgIHJldHVybiBbc2VsZiBfSFRNTEVs
ZW1lbnRdLT5vZmZzZXRMZWZ0KCk7Ci19Ci0KLS0gKGludClvZmZzZXRUb3AKLXsKLSAgICByZXR1
cm4gW3NlbGYgX0hUTUxFbGVtZW50XS0+b2Zmc2V0VG9wKCk7Ci19Ci0KLS0gKGludClvZmZzZXRX
aWR0aAotewotICAgIHJldHVybiBbc2VsZiBfSFRNTEVsZW1lbnRdLT5vZmZzZXRXaWR0aCgpOwot
fQotCi0tIChpbnQpb2Zmc2V0SGVpZ2h0Ci17Ci0gICAgcmV0dXJuIFtzZWxmIF9IVE1MRWxlbWVu
dF0tPm9mZnNldEhlaWdodCgpOwotfQotCi0tIChET01IVE1MRWxlbWVudCAqKW9mZnNldFBhcmVu
dAotewotICAgIHJldHVybiBbRE9NSFRNTEVsZW1lbnQgX2VsZW1lbnRXaXRoOnN0YXRpY19jYXN0
PEhUTUxFbGVtZW50Kj4oW3NlbGYgX0hUTUxFbGVtZW50XS0+b2Zmc2V0UGFyZW50KCkpXTsKLX0K
LQotLSAoaW50KWNsaWVudFdpZHRoCi17Ci0gICAgcmV0dXJuIFtzZWxmIF9IVE1MRWxlbWVudF0t
PmNsaWVudFdpZHRoKCk7Ci19Ci0KLS0gKGludCljbGllbnRIZWlnaHQKLXsKLSAgICByZXR1cm4g
W3NlbGYgX0hUTUxFbGVtZW50XS0+Y2xpZW50SGVpZ2h0KCk7Ci19Ci0KLS0gKGludClzY3JvbGxM
ZWZ0OwotewotICAgIHJldHVybiBbc2VsZiBfSFRNTEVsZW1lbnRdLT5zY3JvbGxMZWZ0KCk7Ci19
Ci0KLS0gKHZvaWQpc2V0U2Nyb2xsTGVmdDooaW50KXNjcm9sbAotewotICAgIFtzZWxmIF9IVE1M
RWxlbWVudF0tPnNldFNjcm9sbExlZnQoc2Nyb2xsKTsKLX0KLQotLSAoaW50KXNjcm9sbFRvcAot
ewotICAgIHJldHVybiBbc2VsZiBfSFRNTEVsZW1lbnRdLT5zY3JvbGxUb3AoKTsKLX0KLQotLSAo
dm9pZClzZXRTY3JvbGxUb3A6KGludClzY3JvbGwKLXsKLSAgICBbc2VsZiBfSFRNTEVsZW1lbnRd
LT5zZXRTY3JvbGxUb3Aoc2Nyb2xsKTsKLX0KLQotLSAoaW50KXNjcm9sbFdpZHRoCi17Ci0gICAg
cmV0dXJuIFtzZWxmIF9IVE1MRWxlbWVudF0tPnNjcm9sbFdpZHRoKCk7Ci19Ci0KLS0gKGludClz
Y3JvbGxIZWlnaHQKLXsKLSAgICByZXR1cm4gW3NlbGYgX0hUTUxFbGVtZW50XS0+c2Nyb2xsSGVp
Z2h0KCk7Ci19Ci0KIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIERPTUhUTUxEb2N1bWVudApAQCAt
NjI3LDYgKzU2MiwxNSBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBAZW5kCiAKK0Bp
bXBsZW1lbnRhdGlvbiBET01IVE1MRG9jdW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKKworKyAoRE9N
SFRNTERvY3VtZW50ICopX0hUTUxEb2N1bWVudFdpdGg6KFdlYkNvcmU6OkhUTUxEb2N1bWVudCAq
KWltcGw7Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUhUTUxEb2N1bWVudCAqPihbRE9N
Tm9kZSBfbm9kZVdpdGg6aW1wbF0pOworfQorCitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBET01I
VE1MSHRtbEVsZW1lbnQKIAogLSAoSFRNTEh0bWxFbGVtZW50ICopX0hUTUxIdG1sRWxlbWVudApJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUxJbnRlcm5hbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MSW50ZXJuYWwuaAkocmV2aXNpb24gMTYw
NjcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTEludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDkgKzI2LDE0IEBACiAjaW1wb3J0ICJET01IVE1MLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBIVE1MRG9jdW1lbnQ7CiAgICAgY2xhc3MgSFRNTE9wdGlv
bnNDb2xsZWN0aW9uOwogfQogCiBAaW50ZXJmYWNlIERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbiAo
V2ViQ29yZUludGVybmFsKQogKyAoRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uICopX29wdGlvbnND
b2xsZWN0aW9uV2l0aDooV2ViQ29yZTo6SFRNTE9wdGlvbnNDb2xsZWN0aW9uICopaW1wbDsKIEBl
bmQKKworQGludGVyZmFjZSBET01IVE1MRG9jdW1lbnQgKFdlYkNvcmVJbnRlcm5hbCkKKysgKERP
TUhUTUxEb2N1bWVudCAqKV9IVE1MRG9jdW1lbnRXaXRoOihXZWJDb3JlOjpIVE1MRG9jdW1lbnQg
KilpbXBsOworQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUltcGxlbWVudGF0
aW9uRnJvbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW1wbGVt
ZW50YXRpb25Gcm9udC5oCShyZXZpc2lvbiAxNjA2NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01JbXBsZW1lbnRhdGlvbkZyb250LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTUzLDYgKzU0LDYgQEAgcHVibGljOgogCiBET01JbXBsZW1lbnRh
dGlvbkZyb250KiBpbXBsZW1lbnRhdGlvbkZyb250KERvY3VtZW50Kik7CiAKLX0gLy9uYW1lc3Bh
Y2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gRE9NSW1wbGVt
ZW50YXRpb25Gcm9udF9oCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaAkocmV2
aXNpb24gMTYwNjcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNiBKYW1lcyBHLiBTcGV0aCAoc3BldGhAZW5kLmNvbSkKKyAqIENvcHlyaWdodCAo
QykgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMjUgKzI3LDUyIEBACiAKICNpbXBvcnQgIkRPTS5o
IgogCisjaW1wb3J0ICJET01BdHRyLmgiCisjaW1wb3J0ICJET01DREFUQVNlY3Rpb24uaCIKKyNp
bXBvcnQgIkRPTUNvbW1lbnQuaCIKKyNpbXBvcnQgIkRPTURPTUltcGxlbWVudGF0aW9uLmgiCisj
aW1wb3J0ICJET01Eb2N1bWVudC5oIgorI2ltcG9ydCAiRE9NRG9jdW1lbnRGcmFnbWVudC5oIgor
I2ltcG9ydCAiRE9NRG9jdW1lbnRUeXBlLmgiCisjaW1wb3J0ICJET01FbGVtZW50LmgiCisjaW1w
b3J0ICJET01FbnRpdHlSZWZlcmVuY2UuaCIKKyNpbXBvcnQgIkRPTU5hbWVkTm9kZU1hcC5oIgor
I2ltcG9ydCAiRE9NTm9kZS5oIgorI2ltcG9ydCAiRE9NTm9kZUxpc3QuaCIKKyNpbXBvcnQgIkRP
TU9iamVjdC5oIgorI2ltcG9ydCAiRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCisjaW1wb3J0
ICJET01UZXh0LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBBdHRyOworICAg
IGNsYXNzIENEQVRBU2VjdGlvbjsKICAgICBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwogICAg
IGNsYXNzIENTU1N0eWxlU2hlZXQ7Ci0gICAgY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKKyAgICBj
bGFzcyBDb21tZW50OworICAgIGNsYXNzIERPTUltcGxlbWVudGF0aW9uRnJvbnQ7CiAgICAgY2xh
c3MgRG9jdW1lbnQ7CisgICAgY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKICAgICBjbGFzcyBEb2N1
bWVudFR5cGU7CiAgICAgY2xhc3MgRWxlbWVudDsKLSAgICBjbGFzcyBOb2RlRmlsdGVyOworICAg
IGNsYXNzIEVudGl0eVJlZmVyZW5jZTsKKyAgICBjbGFzcyBOYW1lZE5vZGVNYXA7CiAgICAgY2xh
c3MgTm9kZTsKKyAgICBjbGFzcyBOb2RlRmlsdGVyOwogICAgIGNsYXNzIE5vZGVJdGVyYXRvcjsK
LSAgICBjbGFzcyBOYW1lZE5vZGVNYXA7CiAgICAgY2xhc3MgTm9kZUxpc3Q7CisgICAgY2xhc3Mg
UHJvY2Vzc2luZ0luc3RydWN0aW9uOwogICAgIGNsYXNzIFJhbmdlOwogICAgIGNsYXNzIFN0eWxl
U2hlZXRMaXN0OworICAgIGNsYXNzIFRleHQ7CiAgICAgY2xhc3MgVHJlZVdhbGtlcjsKIAogICAg
IHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiB9CiAKK0BpbnRlcmZhY2UgRE9NT2JqZWN0IChX
ZWJDb3JlSW50ZXJuYWwpCistIChpZClfaW5pdDsKK0BlbmQKKwogQGludGVyZmFjZSBET01Ob2Rl
IChXZWJDb3JlSW50ZXJuYWwpCiArIChET01Ob2RlICopX25vZGVXaXRoOihXZWJDb3JlOjpOb2Rl
ICopaW1wbDsKIC0gKFdlYkNvcmU6Ok5vZGUgKilfbm9kZTsKQEAgLTU4LDExICs4Niw0NiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiArIChET01Ob2RlTGlzdCAqKV9ub2RlTGlzdFdpdGg6KFdlYkNv
cmU6Ok5vZGVMaXN0ICopaW1wbDsKIEBlbmQKIAorQGludGVyZmFjZSBET01UZXh0IChXZWJDb3Jl
SW50ZXJuYWwpCisrIChET01UZXh0ICopX3RleHRXaXRoOihXZWJDb3JlOjpUZXh0ICopaW1wbDsK
K0BlbmQKKworQGludGVyZmFjZSBET01Db21tZW50IChXZWJDb3JlSW50ZXJuYWwpCisrIChET01D
b21tZW50ICopX2NvbW1lbnRXaXRoOihXZWJDb3JlOjpDb21tZW50ICopaW1wbDsKK0BlbmQKKwor
QGludGVyZmFjZSBET01DREFUQVNlY3Rpb24gKFdlYkNvcmVJbnRlcm5hbCkKKysgKERPTUNEQVRB
U2VjdGlvbiAqKV9DREFUQVNlY3Rpb25XaXRoOihXZWJDb3JlOjpDREFUQVNlY3Rpb24gKilpbXBs
OworQGVuZAorCitAaW50ZXJmYWNlIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAoV2ViQ29yZUlu
dGVybmFsKQorKyAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICopX3Byb2Nlc3NpbmdJbnN0cnVj
dGlvbldpdGg6KFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKWltcGw7CitAZW5kCisK
K0BpbnRlcmZhY2UgRE9NRW50aXR5UmVmZXJlbmNlIChXZWJDb3JlSW50ZXJuYWwpCisrIChET01F
bnRpdHlSZWZlcmVuY2UgKilfZW50aXR5UmVmZXJlbmNlV2l0aDooV2ViQ29yZTo6RW50aXR5UmVm
ZXJlbmNlICopaW1wbDsKK0BlbmQKKwogQGludGVyZmFjZSBET01FbGVtZW50IChXZWJDb3JlSW50
ZXJuYWwpCiArIChET01FbGVtZW50ICopX2VsZW1lbnRXaXRoOihXZWJDb3JlOjpFbGVtZW50ICop
aW1wbDsKIC0gKFdlYkNvcmU6OkVsZW1lbnQgKilfZWxlbWVudDsKIEBlbmQKIAorQGludGVyZmFj
ZSBET01BdHRyIChXZWJDb3JlSW50ZXJuYWwpCisrIChET01BdHRyICopX2F0dHJXaXRoOihXZWJD
b3JlOjpBdHRyICopaW1wbDsKKy0gKFdlYkNvcmU6OkF0dHIgKilfYXR0cjsKK0BlbmQKKworQGlu
dGVyZmFjZSBET01Eb2N1bWVudFR5cGUgKFdlYkNvcmVJbnRlcm5hbCkKKysgKERPTURvY3VtZW50
VHlwZSAqKV9kb2N1bWVudFR5cGVXaXRoOihXZWJDb3JlOjpEb2N1bWVudFR5cGUgKilpbXBsOwor
LSAoV2ViQ29yZTo6RG9jdW1lbnRUeXBlICopX2RvY3VtZW50VHlwZTsKK0BlbmQKKworQGludGVy
ZmFjZSBET01JbXBsZW1lbnRhdGlvbiAoV2ViQ29yZUludGVybmFsKQorKyAoRE9NSW1wbGVtZW50
YXRpb24gKilfRE9NSW1wbGVtZW50YXRpb25XaXRoOihXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlv
bkZyb250ICopaW1wbDsKKy0gKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uRnJvbnQgKilfRE9N
SW1wbGVtZW50YXRpb247CitAZW5kCisKIEBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgKFdlYkNvcmVJ
bnRlcm5hbCkKICsgKERPTURvY3VtZW50ICopX2RvY3VtZW50V2l0aDooV2ViQ29yZTo6RG9jdW1l
bnQgKilpbXBsOwogLSAoV2ViQ29yZTo6RG9jdW1lbnQgKilfZG9jdW1lbnQ7CkBAIC04NywxMCAr
MTUwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogKyAoRE9NVHJlZVdhbGtlciAqKV90cmVlV2Fs
a2VyV2l0aDooV2ViQ29yZTo6VHJlZVdhbGtlciAqKWltcGwgZmlsdGVyOihpZCA8RE9NTm9kZUZp
bHRlcj4pZmlsdGVyOwogQGVuZAogCi1AaW50ZXJmYWNlIERPTU9iamVjdCAoV2ViQ29yZUludGVy
bmFsKQotLSAoaWQpX2luaXQ7Ci1AZW5kCi0KIEBpbnRlcmZhY2UgRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiAoV2ViQ29yZUludGVybmFsKQogKyAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKV9zdHls
ZURlY2xhcmF0aW9uV2l0aDooV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbiAqKWltcGw7CiAt
IChXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uICopX3N0eWxlRGVjbGFyYXRpb247CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01Ob2RlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NTm9kZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdA
Z21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgorCitAY2xh
c3MgRE9NRG9jdW1lbnQ7IAorQGNsYXNzIERPTU5hbWVkTm9kZU1hcDsKK0BjbGFzcyBET01Ob2Rl
TGlzdDsKKworLy8gRE9NIG5vZGUgdHlwZXMKK2VudW0geworICAgIERPTV9FTEVNRU5UX05PREUg
ICAgICAgICAgICAgICAgICA9IDEsCisgICAgRE9NX0FUVFJJQlVURV9OT0RFICAgICAgICAgICAg
ICAgID0gMiwKKyAgICBET01fVEVYVF9OT0RFICAgICAgICAgICAgICAgICAgICAgPSAzLAorICAg
IERPTV9DREFUQV9TRUNUSU9OX05PREUgICAgICAgICAgICA9IDQsCisgICAgRE9NX0VOVElUWV9S
RUZFUkVOQ0VfTk9ERSAgICAgICAgID0gNSwKKyAgICBET01fRU5USVRZX05PREUgICAgICAgICAg
ICAgICAgICAgPSA2LAorICAgIERPTV9QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUgICA9IDcs
CisgICAgRE9NX0NPTU1FTlRfTk9ERSAgICAgICAgICAgICAgICAgID0gOCwKKyAgICBET01fRE9D
VU1FTlRfTk9ERSAgICAgICAgICAgICAgICAgPSA5LAorICAgIERPTV9ET0NVTUVOVF9UWVBFX05P
REUgICAgICAgICAgICA9IDEwLAorICAgIERPTV9ET0NVTUVOVF9GUkFHTUVOVF9OT0RFICAgICAg
ICA9IDExLAorICAgIERPTV9OT1RBVElPTl9OT0RFICAgICAgICAgICAgICAgICA9IDEyCit9Owor
CitAaW50ZXJmYWNlIERPTU5vZGUgOiBET01PYmplY3QKKy0gKE5TU3RyaW5nICopbm9kZU5hbWU7
CistIChOU1N0cmluZyAqKW5vZGVWYWx1ZTsKKy0gKHZvaWQpc2V0Tm9kZVZhbHVlOihOU1N0cmlu
ZyAqKXN0cmluZzsKKy0gKHVuc2lnbmVkIHNob3J0KW5vZGVUeXBlOworLSAoRE9NTm9kZSAqKXBh
cmVudE5vZGU7CistIChET01Ob2RlTGlzdCAqKWNoaWxkTm9kZXM7CistIChET01Ob2RlICopZmly
c3RDaGlsZDsKKy0gKERPTU5vZGUgKilsYXN0Q2hpbGQ7CistIChET01Ob2RlICopcHJldmlvdXNT
aWJsaW5nOworLSAoRE9NTm9kZSAqKW5leHRTaWJsaW5nOworLSAoRE9NTmFtZWROb2RlTWFwICop
YXR0cmlidXRlczsKKy0gKERPTURvY3VtZW50ICopb3duZXJEb2N1bWVudDsKKy0gKERPTU5vZGUg
KilpbnNlcnRCZWZvcmU6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilyZWZDaGlsZDsK
Ky0gKERPTU5vZGUgKilyZXBsYWNlQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUg
KilvbGRDaGlsZDsKKy0gKERPTU5vZGUgKilyZW1vdmVDaGlsZDooRE9NTm9kZSAqKW9sZENoaWxk
OworLSAoRE9NTm9kZSAqKWFwcGVuZENoaWxkOihET01Ob2RlICopbmV3Q2hpbGQ7CistIChCT09M
KWhhc0NoaWxkTm9kZXM7CistIChET01Ob2RlICopY2xvbmVOb2RlOihCT09MKWRlZXA7CistICh2
b2lkKW5vcm1hbGl6ZTsKKy0gKEJPT0wpaXNTdXBwb3J0ZWQ6KE5TU3RyaW5nICopZmVhdHVyZSA6
KE5TU3RyaW5nICopdmVyc2lvbjsKKy0gKE5TU3RyaW5nICopbmFtZXNwYWNlVVJJOworLSAoTlNT
dHJpbmcgKilwcmVmaXg7CistICh2b2lkKXNldFByZWZpeDooTlNTdHJpbmcgKilwcmVmaXg7Cist
IChOU1N0cmluZyAqKWxvY2FsTmFtZTsKKy0gKEJPT0wpaGFzQXR0cmlidXRlczsKKy0gKEJPT0wp
aXNTYW1lTm9kZTooRE9NTm9kZSAqKW90aGVyOworLSAoQk9PTClpc0VxdWFsTm9kZTooRE9NTm9k
ZSAqKW90aGVyOworLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudDsKKy0gKHZvaWQpc2V0VGV4dENv
bnRlbnQ6KE5TU3RyaW5nICopdGV4dDsKK0BlbmQKKworQGludGVyZmFjZSBET01Ob2RlIChET01O
b2RlRXh0ZW5zaW9ucykKKy0gKE5TUmVjdClib3VuZGluZ0JveDsKKy0gKE5TQXJyYXkgKilsaW5l
Qm94UmVjdHM7CitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZS5tbQkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlLm1tCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDI5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENvbXB1
dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IEph
bWVzIEcuIFNwZXRoIDxzcGV0aEBlbmQuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVl
bCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIkRPTU5vZGUuaCIKKworI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIgLy8gbmVl
ZGVkIGZvciBET01fY2FzdDw+CisjaW1wb3J0ICJOb2RlLmgiIC8vIGltcGxlbWVudGF0aW9uIGNs
YXNzCisKKyNpbXBvcnQgIkF0b21pY1N0cmluZy5oIgorI2ltcG9ydCAiRE9NRG9jdW1lbnQuaCIK
KyNpbXBvcnQgIkRPTU5hbWVkTm9kZU1hcC5oIgorI2ltcG9ydCAiRE9NTm9kZUxpc3QuaCIKKyNp
bXBvcnQgIkRlcHJlY2F0ZWRWYWx1ZUxpc3QuaCIKKyNpbXBvcnQgIkludFJlY3QuaCIKKyNpbXBv
cnQgIk5hbWVkQXR0ck1hcC5oIgorI2ltcG9ydCAiTmFtZWROb2RlTWFwLmgiCisjaW1wb3J0ICJO
b2RlTGlzdC5oIgorI2ltcG9ydCAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbXBvcnQgIlJlbmRlck9i
amVjdC5oIgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKworQGltcGxlbWVudGF0aW9uIERP
TU5vZGUKKworLSAodm9pZClkZWFsbG9jCit7CisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAg
RE9NX2Nhc3Q8V2ViQ29yZTo6Tm9kZSAqPihfaW50ZXJuYWwpLT5kZXJlZigpOworICAgIFtzdXBl
ciBkZWFsbG9jXTsKK30KKworLSAodm9pZClmaW5hbGl6ZQoreworICAgIGlmIChfaW50ZXJuYWwp
CisgICAgICAgIERPTV9jYXN0PFdlYkNvcmU6Ok5vZGUgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTsK
KyAgICBbc3VwZXIgZmluYWxpemVdOworfQorCistIChOU1N0cmluZyAqKW5vZGVOYW1lCit7Cisg
ICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bm9kZU5hbWUoKTsKK30KKworLSAoTlNTdHJpbmcgKilu
b2RlVmFsdWUKK3sKKyAgICAvLyBEb2N1bWVudGF0aW9uIHNheXMgd2UgY2FuIHJhaXNlIGEgRE9N
U1RSSU5HX1NJWkVfRVJSLgorICAgIC8vIEhvd2V2ZXIsIHRoZSBsb3dlciBsYXllciBkb2VzIG5v
dCByZXBvcnQgdGhhdCBlcnJvciB1cCB0byB1cy4KKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5u
b2RlVmFsdWUoKTsKK30KKworLSAodm9pZClzZXROb2RlVmFsdWU6KE5TU3RyaW5nICopc3RyaW5n
Cit7CisgICAgQVNTRVJUKHN0cmluZyk7CisgICAgCisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgW3NlbGYgX25vZGVdLT5zZXROb2RlVmFsdWUoc3RyaW5nLCBlYyk7Cisg
ICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKworLSAodW5zaWduZWQgc2hvcnQpbm9kZVR5cGUK
K3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5ub2RlVHlwZSgpOworfQorCistIChET01Ob2Rl
ICopcGFyZW50Tm9kZQoreworICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25v
ZGVdLT5wYXJlbnROb2RlKCldOworfQorCistIChET01Ob2RlTGlzdCAqKWNoaWxkTm9kZXMKK3sK
KyAgICByZXR1cm4gW0RPTU5vZGVMaXN0IF9ub2RlTGlzdFdpdGg6W3NlbGYgX25vZGVdLT5jaGls
ZE5vZGVzKCkuZ2V0KCldOworfQorCistIChET01Ob2RlICopZmlyc3RDaGlsZAoreworICAgIHJl
dHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5maXJzdENoaWxkKCldOworfQor
CistIChET01Ob2RlICopbGFzdENoaWxkCit7CisgICAgcmV0dXJuIFtET01Ob2RlIF9ub2RlV2l0
aDpbc2VsZiBfbm9kZV0tPmxhc3RDaGlsZCgpXTsKK30KKworLSAoRE9NTm9kZSAqKXByZXZpb3Vz
U2libGluZworeworICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5w
cmV2aW91c1NpYmxpbmcoKV07Cit9CisKKy0gKERPTU5vZGUgKiluZXh0U2libGluZworeworICAg
IHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5uZXh0U2libGluZygpXTsK
K30KKworLSAoRE9NTmFtZWROb2RlTWFwICopYXR0cmlidXRlcworeworICAgIHJldHVybiBbRE9N
TmFtZWROb2RlTWFwIF9uYW1lZE5vZGVNYXBXaXRoOltzZWxmIF9ub2RlXS0+YXR0cmlidXRlcygp
XTsKK30KKworLSAoRE9NRG9jdW1lbnQgKilvd25lckRvY3VtZW50Cit7CisgICAgcmV0dXJuIFtE
T01Eb2N1bWVudCBfZG9jdW1lbnRXaXRoOltzZWxmIF9ub2RlXS0+ZG9jdW1lbnQoKV07Cit9CisK
Ky0gKERPTU5vZGUgKilpbnNlcnRCZWZvcmU6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUg
KilyZWZDaGlsZAoreworICAgIEFTU0VSVChuZXdDaGlsZCk7CisgICAgQVNTRVJUKHJlZkNoaWxk
KTsKKworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlmIChbc2VsZiBf
bm9kZV0tPmluc2VydEJlZm9yZShbbmV3Q2hpbGQgX25vZGVdLCBbcmVmQ2hpbGQgX25vZGVdLCBl
YykpCisgICAgICAgIHJldHVybiBuZXdDaGlsZDsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwor
ICAgIHJldHVybiBuaWw7Cit9CisKKy0gKERPTU5vZGUgKilyZXBsYWNlQ2hpbGQ6KERPTU5vZGUg
KiluZXdDaGlsZCA6KERPTU5vZGUgKilvbGRDaGlsZAoreworICAgIEFTU0VSVChuZXdDaGlsZCk7
CisgICAgQVNTRVJUKG9sZENoaWxkKTsKKworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIGlmIChbc2VsZiBfbm9kZV0tPnJlcGxhY2VDaGlsZChbbmV3Q2hpbGQgX25vZGVd
LCBbb2xkQ2hpbGQgX25vZGVdLCBlYykpCisgICAgICAgIHJldHVybiBvbGRDaGlsZDsKKyAgICBy
YWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKERPTU5vZGUgKily
ZW1vdmVDaGlsZDooRE9NTm9kZSAqKW9sZENoaWxkCit7CisgICAgQVNTRVJUKG9sZENoaWxkKTsK
KworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlmIChbc2VsZiBfbm9k
ZV0tPnJlbW92ZUNoaWxkKFtvbGRDaGlsZCBfbm9kZV0sIGVjKSkKKyAgICAgICAgcmV0dXJuIG9s
ZENoaWxkOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIG5pbDsKK30KKwor
LSAoRE9NTm9kZSAqKWFwcGVuZENoaWxkOihET01Ob2RlICopbmV3Q2hpbGQKK3sKKyAgICBBU1NF
UlQobmV3Q2hpbGQpOworCisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
aWYgKFtzZWxmIF9ub2RlXS0+YXBwZW5kQ2hpbGQoW25ld0NoaWxkIF9ub2RlXSwgZWMpKQorICAg
ICAgICByZXR1cm4gbmV3Q2hpbGQ7CisgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1
cm4gbmlsOworfQorCistIChCT09MKWhhc0NoaWxkTm9kZXMKK3sKKyAgICByZXR1cm4gW3NlbGYg
X25vZGVdLT5oYXNDaGlsZE5vZGVzKCk7Cit9CisKKy0gKERPTU5vZGUgKiljbG9uZU5vZGU6KEJP
T0wpZGVlcAoreworICAgIHJldHVybiBbRE9NTm9kZSBfbm9kZVdpdGg6W3NlbGYgX25vZGVdLT5j
bG9uZU5vZGUoZGVlcCkuZ2V0KCldOworfQorCistICh2b2lkKW5vcm1hbGl6ZQoreworICAgIFtz
ZWxmIF9ub2RlXS0+bm9ybWFsaXplKCk7Cit9CisKKy0gKEJPT0wpaXNTdXBwb3J0ZWQ6KE5TU3Ry
aW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbgoreworICAgIEFTU0VSVChmZWF0dXJl
KTsKKyAgICBBU1NFUlQodmVyc2lvbik7CisKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc1N1
cHBvcnRlZChmZWF0dXJlLCB2ZXJzaW9uKTsKK30KKworLSAoTlNTdHJpbmcgKiluYW1lc3BhY2VV
UkkKK3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5uYW1lc3BhY2VVUkkoKTsKK30KKworLSAo
TlNTdHJpbmcgKilwcmVmaXgKK3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5wcmVmaXgoKTsK
K30KKworLSAodm9pZClzZXRQcmVmaXg6KE5TU3RyaW5nICopcHJlZml4Cit7CisgICAgQVNTRVJU
KHByZWZpeCk7CisKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJD
b3JlOjpTdHJpbmcgcHJlZml4U3RyKHByZWZpeCk7CisgICAgW3NlbGYgX25vZGVdLT5zZXRQcmVm
aXgocHJlZml4U3RyLmltcGwoKSwgZWMpOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7Cit9CisK
Ky0gKE5TU3RyaW5nICopbG9jYWxOYW1lCit7CisgICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+bG9j
YWxOYW1lKCk7Cit9CisKKy0gKEJPT0wpaGFzQXR0cmlidXRlcworeworICAgIHJldHVybiBbc2Vs
ZiBfbm9kZV0tPmhhc0F0dHJpYnV0ZXMoKTsKK30KKworLSAoQk9PTClpc1NhbWVOb2RlOihET01O
b2RlICopb3RoZXIKK3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc1NhbWVOb2RlKFtvdGhl
ciBfbm9kZV0pOworfQorCistIChCT09MKWlzRXF1YWxOb2RlOihET01Ob2RlICopb3RoZXIKK3sK
KyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5pc0VxdWFsTm9kZShbb3RoZXIgX25vZGVdKTsKK30K
KworLSAoQk9PTClpc0RlZmF1bHROYW1lc3BhY2U6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJCit7
CisgICAgcmV0dXJuIFtzZWxmIF9ub2RlXS0+aXNEZWZhdWx0TmFtZXNwYWNlKG5hbWVzcGFjZVVS
SSk7Cit9CisKKy0gKE5TU3RyaW5nICopbG9va3VwUHJlZml4OihOU1N0cmluZyAqKW5hbWVzcGFj
ZVVSSQoreworICAgIHJldHVybiBbc2VsZiBfbm9kZV0tPmxvb2t1cFByZWZpeChuYW1lc3BhY2VV
UkkpOworfQorCistIChOU1N0cmluZyAqKWxvb2t1cE5hbWVzcGFjZVVSSTooTlNTdHJpbmcgKilw
cmVmaXgKK3sKKyAgICByZXR1cm4gW3NlbGYgX25vZGVdLT5sb29rdXBOYW1lc3BhY2VVUkkocHJl
Zml4KTsKK30KKworLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudAoreworICAgIHJldHVybiBbc2Vs
ZiBfbm9kZV0tPnRleHRDb250ZW50KCk7Cit9CisKKy0gKHZvaWQpc2V0VGV4dENvbnRlbnQ6KE5T
U3RyaW5nICopdGV4dAoreworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IFtzZWxmIF9ub2RlXS0+c2V0VGV4dENvbnRlbnQodGV4dCwgZWMpOworICAgIHJhaXNlT25ET01F
cnJvcihlYyk7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERPTU5vZGUgKERPTU5vZGVF
eHRlbnNpb25zKQorCistIChOU1JlY3QpYm91bmRpbmdCb3gKK3sKKyAgICBXZWJDb3JlOjpSZW5k
ZXJPYmplY3QgKnJlbmRlcmVyID0gW3NlbGYgX25vZGVdLT5yZW5kZXJlcigpOworICAgIGlmIChy
ZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dCgpOworICAgIHJldHVybiBOU1plcm9SZWN0OworfQorCistIChOU0FycmF5ICopbGluZUJveFJl
Y3RzCit7CisgICAgV2ViQ29yZTo6UmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9ub2Rl
XS0+cmVuZGVyZXIoKTsKKyAgICBpZiAocmVuZGVyZXIpIHsKKyAgICAgICAgTlNNdXRhYmxlQXJy
YXkgKnJlc3VsdHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKyAgICAgICAgV2Vi
Q29yZTo6RGVwcmVjYXRlZFZhbHVlTGlzdDxXZWJDb3JlOjpJbnRSZWN0PiByZWN0cyA9IHJlbmRl
cmVyLT5saW5lQm94UmVjdHMoKTsKKyAgICAgICAgaWYgKCFyZWN0cy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgIGZvciAoV2ViQ29yZTo6RGVwcmVjYXRlZFZhbHVlTGlzdDxXZWJDb3JlOjpJbnRS
ZWN0Pjo6Q29uc3RJdGVyYXRvciBpdCA9IHJlY3RzLmJlZ2luKCk7IGl0ICE9IHJlY3RzLmVuZCgp
OyArK2l0KQorICAgICAgICAgICAgICAgIFtyZXN1bHRzIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1
ZVdpdGhSZWN0OippdF1dOworICAgICAgICB9CisgICAgICAgIHJldHVybiBbcmVzdWx0cyBhdXRv
cmVsZWFzZV07CisgICAgfQorICAgIHJldHVybiBuaWw7Cit9CisKK0BlbmQKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NT2JqZWN0LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NT2JqZWN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0Bn
bWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0Lmg+CisK
K0BjbGFzcyBET01TdHlsZVNoZWV0OworCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBET01U
aW1lU3RhbXA7CisKK2V4dGVybiBOU1N0cmluZyAqIGNvbnN0IERPTUV4Y2VwdGlvbjsKKworLy8g
RE9NIGV4Y2VwdGlvbiBjb2RlcworZW51bSB7CisgICAgRE9NX0lOREVYX1NJWkVfRVJSICAgICAg
ICAgICAgICAgID0gMSwKKyAgICBET01fRE9NU1RSSU5HX1NJWkVfRVJSICAgICAgICAgICAgPSAy
LAorICAgIERPTV9ISUVSQVJDSFlfUkVRVUVTVF9FUlIgICAgICAgICA9IDMsCisgICAgRE9NX1dS
T05HX0RPQ1VNRU5UX0VSUiAgICAgICAgICAgID0gNCwKKyAgICBET01fSU5WQUxJRF9DSEFSQUNU
RVJfRVJSICAgICAgICAgPSA1LAorICAgIERPTV9OT19EQVRBX0FMTE9XRURfRVJSICAgICAgICAg
ICA9IDYsCisgICAgRE9NX05PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiAgID0gNywKKyAgICBE
T01fTk9UX0ZPVU5EX0VSUiAgICAgICAgICAgICAgICAgPSA4LAorICAgIERPTV9OT1RfU1VQUE9S
VEVEX0VSUiAgICAgICAgICAgICA9IDksCisgICAgRE9NX0lOVVNFX0FUVFJJQlVURV9FUlIgICAg
ICAgICAgID0gMTAsCisgICAgRE9NX0lOVkFMSURfU1RBVEVfRVJSICAgICAgICAgICAgID0gMTEs
CisgICAgRE9NX1NZTlRBWF9FUlIgICAgICAgICAgICAgICAgICAgID0gMTIsCisgICAgRE9NX0lO
VkFMSURfTU9ESUZJQ0FUSU9OX0VSUiAgICAgID0gMTMsCisgICAgRE9NX05BTUVTUEFDRV9FUlIg
ICAgICAgICAgICAgICAgID0gMTQsCisgICAgRE9NX0lOVkFMSURfQUNDRVNTX0VSUiAgICAgICAg
ICAgID0gMTUKK307CisKKwordHlwZWRlZiBzdHJ1Y3QgRE9NT2JqZWN0SW50ZXJuYWwgRE9NT2Jq
ZWN0SW50ZXJuYWw7CisKK0BpbnRlcmZhY2UgRE9NT2JqZWN0IDogV2ViU2NyaXB0T2JqZWN0IDxO
U0NvcHlpbmc+Cit7CisgICAgRE9NT2JqZWN0SW50ZXJuYWwgKl9pbnRlcm5hbDsKK30KK0BlbmQK
KworQGludGVyZmFjZSBET01PYmplY3QgKERPTUxpbmtTdHlsZSkKKy0gKERPTVN0eWxlU2hlZXQg
KilzaGVldDsKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01PYmplY3QubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU9iamVjdC5tbQkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01PYmplY3QubW0JKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBKYW1lcyBHLiBTcGV0aCA8c3BldGhAZW5kLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBT
YW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJET01PYmplY3QuaCIKKworI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIK
KworI2ltcG9ydCAiRE9NQ1NTLmgiIC8vIGZvciBET01TdHlsZVNoZWV0CisjaW1wb3J0ICJET01D
U1NJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NSFRNTC5oIiAvLyBmb3IgRE9NSFRNTExpbmtFbGVt
ZW50IGFuZCBET01IVE1MU3R5bGVFbGVtZW50CisjaW1wb3J0ICJET01Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uaCIKKyNpbXBvcnQgIkhUTUxMaW5rRWxlbWVudC5oIgorI2ltcG9ydCAiSFRNTFN0eWxl
RWxlbWVudC5oIgorI2ltcG9ydCAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCisjaW1wb3J0ICJT
dHlsZVNoZWV0LmgiCisKK0BpbXBsZW1lbnRhdGlvbiBET01PYmplY3QKKworLy8gUHJldmVudCBj
cmVhdGlvbiBvZiBET00gb2JqZWN0cyBieSBjbGllbnRzIHdobyBqdXN0ICJbW3h4eCBhbGxvY10g
aW5pdF0iLgorLSAoaWQpaW5pdAoreworICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0dlbmVyaWNF
eGNlcHRpb24gZm9ybWF0OkAiK1slQCBpbml0XTogc2hvdWxkIG5ldmVyIGJlIHVzZWQiLCBOU1N0
cmluZ0Zyb21DbGFzcyhbc2VsZiBjbGFzc10pXTsKKyAgICBbc2VsZiByZWxlYXNlXTsKKyAgICBy
ZXR1cm4gbmlsOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBpZiAoX2ludGVybmFsKQor
ICAgICAgICByZW1vdmVET01XcmFwcGVyKF9pbnRlcm5hbCk7CisgICAgW3N1cGVyIGRlYWxsb2Nd
OworfQorCistICh2b2lkKWZpbmFsaXplCit7CisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAg
cmVtb3ZlRE9NV3JhcHBlcihfaW50ZXJuYWwpOworICAgIFtzdXBlciBmaW5hbGl6ZV07Cit9CisK
Ky0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQoreworICAgIHJldHVybiBbc2VsZiBy
ZXRhaW5dOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBET01PYmplY3QgKERPTUxpbmtT
dHlsZSkKKworLSAoRE9NU3R5bGVTaGVldCAqKXNoZWV0Cit7CisgICAgV2ViQ29yZTo6U3R5bGVT
aGVldCAqc2hlZXQ7CisKKyAgICBpZiAoW3NlbGYgaXNLaW5kT2ZDbGFzczpbRE9NUHJvY2Vzc2lu
Z0luc3RydWN0aW9uIGNsYXNzXV0pCisgICAgICAgIHNoZWV0ID0gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKj4oWyhET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKilz
ZWxmIF9ub2RlXSktPnNoZWV0KCk7CisgICAgZWxzZSBpZiAoW3NlbGYgaXNLaW5kT2ZDbGFzczpb
RE9NSFRNTExpbmtFbGVtZW50IGNsYXNzXV0pCisgICAgICAgIHNoZWV0ID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Kj4oWyhET01IVE1MTGlua0VsZW1lbnQgKilzZWxmIF9u
b2RlXSktPnNoZWV0KCk7CisgICAgZWxzZSBpZiAoW3NlbGYgaXNLaW5kT2ZDbGFzczpbRE9NSFRN
TFN0eWxlRWxlbWVudCBjbGFzc11dKQorICAgICAgICBzaGVldCA9IHN0YXRpY19jYXN0PFdlYkNv
cmU6OkhUTUxTdHlsZUVsZW1lbnQqPihbKERPTUhUTUxTdHlsZUVsZW1lbnQgKilzZWxmIF9ub2Rl
XSktPnNoZWV0KCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJu
IFtET01TdHlsZVNoZWV0IF9ET01TdHlsZVNoZWV0V2l0aDpzaGVldF07Cit9CisKK0BlbmQKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Qcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTVByaXZhdGUuaAkocmV2aXNpb24gMTYwNjcpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxz
YW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjQsOSArMjUsMTEgQEAKICAqLwogCiAjaW1wb3J0IDxXZWJDb3JlL0RPTUNTUy5oPgorI2ltcG9y
dCA8V2ViQ29yZS9ET01FbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUV2ZW50cy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU5vZGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRE9NUmFuZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRE9NRXZlbnRz
Lmg+CiAKIEBpbnRlcmZhY2UgRE9NUmFuZ2UgKFdlYlByaXZhdGUpCiAvLyB1c2VzIHNhbWUgYWxn
b3JpdGhtIGFzIGlubmVyVGV4dApAQCAtODcsNCArOTAsMyBAQAogQGludGVyZmFjZSBET01XaGVl
bEV2ZW50KFB1YmxpY1BlbmRpbmcpCiAtICh2b2lkKWluaXRXaGVlbEV2ZW50OihCT09MKWhvcml6
b250YWwgOihpbnQpd2hlZWxEZWx0YSA6KERPTUFic3RyYWN0VmlldyAqKXZpZXdBcmcgOihpbnQp
c2NyZWVuWEFyZyA6KGludClzY3JlZW5ZQXJnIDooaW50KWNsaWVudFggOihpbnQpY2xpZW50WSA6
KEJPT0wpY3RybEtleUFyZyA6KEJPT0wpYWx0S2V5QXJnIDooQk9PTClzaGlmdEtleUFyZyA6KEJP
T0wpbWV0YUtleUFyZzsKIEBlbmQKLQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVJh
bmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVJhbmdlLmgJKHJl
dmlzaW9uIDE2MDY3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVJhbmdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxl
IENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNCw2ICsyNSw4IEBACiAgKi8KIAogI2ltcG9ydCA8V2ViQ29y
ZS9ET01Db3JlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTURvY3VtZW50Lmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0RPTU9iamVjdC5oPgogCiBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBET01SYW5nZUV4
Y2VwdGlvbjsKIApAQCAtNzEsNyArNzQsMyBAQCBlbnVtIHsKIC0gKE5TU3RyaW5nICopdG9TdHJp
bmc7CiAtICh2b2lkKWRldGFjaDsKIEBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudCAoRE9N
RG9jdW1lbnRSYW5nZSkKLS0gKERPTVJhbmdlICopY3JlYXRlUmFuZ2U7Ci1AZW5kCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NU3R5bGVzaGVldHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NU3R5bGVzaGVldHMuaAkocmV2aXNpb24gMTYwNjcpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NU3R5bGVzaGVldHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdl
aW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI0LDYgKzI1LDggQEAKICAqLwogCiAjaW1wb3J0IDxXZWJDb3JlL0RPTUNvcmUuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NT2Jq
ZWN0Lmg+CiAKIEBjbGFzcyBET01NZWRpYUxpc3Q7CiBAY2xhc3MgRE9NU3R5bGVTaGVldDsKQEAg
LTU0LDExICs1NywzIEBAIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IERPTUV2ZW50RXhjZXB0aW8K
IC0gKHZvaWQpZGVsZXRlTWVkaXVtOihOU1N0cmluZyAqKW9sZE1lZGl1bTsKIC0gKHZvaWQpYXBw
ZW5kTWVkaXVtOihOU1N0cmluZyAqKW5ld01lZGl1bTsKIEBlbmQKLQotQGludGVyZmFjZSBET01P
YmplY3QgKERPTUxpbmtTdHlsZSkKLS0gKERPTVN0eWxlU2hlZXQgKilzaGVldDsKLUBlbmQKLQot
QGludGVyZmFjZSBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRTdHlsZSkKLS0gKERPTVN0eWxlU2hl
ZXRMaXN0ICopc3R5bGVTaGVldHM7Ci1AZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NVHJhdmVyc2FsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVRy
YXZlcnNhbC5oCShyZXZpc2lvbiAxNjA2NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01U
cmF2ZXJzYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDYgKzI1LDggQEAKICAqLwog
CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUNvcmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1l
bnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CiAKIEBjbGFzcyBET01Ob2RlRmls
dGVyOwogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVmlld3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVmlld3MuaAkocmV2aXNpb24gMTYwNjcpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVmlld3MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5p
ZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI0LDExICsyNSw5IEBACiAgKi8KIAogI2ltcG9ydCA8V2ViQ29yZS9ET01Db3JlLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0RPTURvY3VtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVj
dC5oPgogCiBAaW50ZXJmYWNlIERPTUFic3RyYWN0VmlldyA6IERPTU9iamVjdAogLSAoRE9NRG9j
dW1lbnQgKilkb2N1bWVudDsKIEBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudCAoRE9NRG9j
dW1lbnRWaWV3KQotLSAoRE9NQWJzdHJhY3RWaWV3ICopZGVmYXVsdFZpZXc7Ci1AZW5kCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVmlld3MubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTVZpZXdzLm1tCShyZXZpc2lvbiAxNjA2NykKKysrIFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01WaWV3cy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzksMTIgKzc5LDMg
QEAgQUxMT1dfRE9NX0NBU1QoRE9NV2luZG93KQogfQogCiBAZW5kCi0KLUBpbXBsZW1lbnRhdGlv
biBET01Eb2N1bWVudCAoRE9NRG9jdW1lbnRWaWV3KQotCi0tIChET01BYnN0cmFjdFZpZXcgKilk
ZWZhdWx0VmlldwotewotICAgIHJldHVybiBbRE9NQWJzdHJhY3RWaWV3IF9hYnN0cmFjdFZpZXdX
aXRoOltzZWxmIF9kb2N1bWVudF0tPmRlZmF1bHRWaWV3KCldOwotfQotCi1AZW5kCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NWFBhdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NWFBhdGguaAkocmV2aXNpb24gMTYwNjcpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NWFBhdGguaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0Bn
bWFpbC5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDYgKzI1LDgg
QEAKICAqLwogCiAjaW1wb3J0IDxXZWJDb3JlL0RPTUNvcmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
RE9NRG9jdW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CiAKIGV4dGVybiBO
U1N0cmluZyAqIGNvbnN0IERPTVhQYXRoRXhjZXB0aW9uOwogCkBAIC02NSw5ICs2OCwzIEBAIGVu
dW0gewogQGludGVyZmFjZSBET01YUGF0aEV4cHJlc3Npb24gOiBET01PYmplY3QKIC0gKERPTVhQ
YXRoUmVzdWx0ICopZXZhbHVhdGU6KERPTU5vZGUgKiljb250ZXh0Tm9kZSA6KHVuc2lnbmVkIHNo
b3J0KXR5cGUgOihET01YUGF0aFJlc3VsdCAqKXJlc3VsdDsKIEBlbmQKLQotQGludGVyZmFjZSBE
T01Eb2N1bWVudCAoRE9NRG9jdW1lbnRYUGF0aCkKLS0gKERPTVhQYXRoRXhwcmVzc2lvbiAqKWNy
ZWF0ZUV4cHJlc3Npb246KE5TU3RyaW5nICopZXhwcmVzc2lvbiA6KGlkIDxET01YUGF0aE5TUmVz
b2x2ZXI+KXJlc29sdmVyOwotLSAoaWQgPERPTVhQYXRoTlNSZXNvbHZlcj4pY3JlYXRlTlNSZXNv
bHZlcjooRE9NTm9kZSAqKW5vZGVSZXNvbHZlcjsKLS0gKERPTVhQYXRoUmVzdWx0ICopZXZhbHVh
dGU6KE5TU3RyaW5nICopZXhwcmVzc2lvbiA6KERPTU5vZGUgKiljb250ZXh0Tm9kZSA6KGlkIDxE
T01YUGF0aE5TUmVzb2x2ZXI+KXJlc29sdmVyIDoodW5zaWduZWQgc2hvcnQpdHlwZSA6KERPTVhQ
YXRoUmVzdWx0ICopcmVzdWx0OwotQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TVhQYXRoLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aC5t
bQkocmV2aXNpb24gMTYwNjcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NWFBhdGgubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI3MiwzNyArMjcyLDQgQEAgdXNpbmcgV2ViQ29yZTo6WFBhdGhS
ZXN1bHQ7CiAKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50IChET01Eb2N1bWVu
dFhQYXRoKQotCi0tIChET01YUGF0aEV4cHJlc3Npb24gKiljcmVhdGVFeHByZXNzaW9uOihOU1N0
cmluZyAqKWV4cHJlc3Npb24gOihpZCA8RE9NWFBhdGhOU1Jlc29sdmVyPilyZXNvbHZlcgotewot
ICAgIGlmIChyZXNvbHZlciAmJiAhW3Jlc29sdmVyIGlzTWVtYmVyT2ZDbGFzczpbRE9NTmF0aXZl
WFBhdGhOU1Jlc29sdmVyIGNsYXNzXV0pCi0gICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0dl
bmVyaWNFeGNlcHRpb24gZm9ybWF0OkAiY3JlYXRlRXhwcmVzc2lvbiBjdXJyZW50bHkgZG9lcyBu
b3Qgd29yayB3aXRoIGN1c3RvbSBOUyByZXNvbHZlcnMiXTsKLSAgICAKLSAgICBET01OYXRpdmVY
UGF0aE5TUmVzb2x2ZXIgKm5hdGl2ZVJlc29sdmVyID0gKERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZl
ciAqKXJlc29sdmVyOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTVhQYXRoRXhw
cmVzc2lvbiAqcmVzdWx0ID0gW0RPTVhQYXRoRXhwcmVzc2lvbiBfeHBhdGhFeHByZXNzaW9uV2l0
aDpbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVFeHByZXNzaW9uKGV4cHJlc3Npb24sIFtuYXRpdmVS
ZXNvbHZlciBfeHBhdGhOU1Jlc29sdmVyXSwgZWMpLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKGlkIDxET01YUGF0aE5TUmVzb2x2
ZXI+KWNyZWF0ZU5TUmVzb2x2ZXI6KERPTU5vZGUgKilub2RlUmVzb2x2ZXIKLXsKLSAgICByZXR1
cm4gW0RPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciBfeHBhdGhOU1Jlc29sdmVyV2l0aDpbc2VsZiBf
ZG9jdW1lbnRdLT5jcmVhdGVOU1Jlc29sdmVyKFtub2RlUmVzb2x2ZXIgX25vZGVdKS5nZXQoKV07
Ci19Ci0KLS0gKERPTVhQYXRoUmVzdWx0ICopZXZhbHVhdGU6KE5TU3RyaW5nICopZXhwcmVzc2lv
biA6KERPTU5vZGUgKiljb250ZXh0Tm9kZSA6KGlkIDxET01YUGF0aE5TUmVzb2x2ZXI+KXJlc29s
dmVyIDoodW5zaWduZWQgc2hvcnQpdHlwZSA6KERPTVhQYXRoUmVzdWx0ICopcmVzdWx0Ci17Ci0g
ICAgaWYgKHJlc29sdmVyICYmICFbcmVzb2x2ZXIgaXNNZW1iZXJPZkNsYXNzOltET01OYXRpdmVY
UGF0aE5TUmVzb2x2ZXIgY2xhc3NdXSkKLSAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TR2Vu
ZXJpY0V4Y2VwdGlvbiBmb3JtYXQ6QCJjcmVhdGVFeHByZXNzaW9uIGN1cnJlbnRseSBkb2VzIG5v
dCB3b3JrIHdpdGggY3VzdG9tIE5TIHJlc29sdmVycyJdOwotICAgIAotICAgIERPTU5hdGl2ZVhQ
YXRoTlNSZXNvbHZlciAqbmF0aXZlUmVzb2x2ZXIgPSAoRE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVy
ICopcmVzb2x2ZXI7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NWFBhdGhSZXN1
bHQgKl9yZXN1bHQgPSBbRE9NWFBhdGhSZXN1bHQgX3hwYXRoUmVzdWx0V2l0aDpbc2VsZiBfZG9j
dW1lbnRdLT5ldmFsdWF0ZShleHByZXNzaW9uLCBbY29udGV4dE5vZGUgX25vZGVdLCBbbmF0aXZl
UmVzb2x2ZXIgX3hwYXRoTlNSZXNvbHZlcl0sIHR5cGUsIFtyZXN1bHQgX3hwYXRoUmVzdWx0XSwg
ZWMpLmdldCgpXTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBfcmVzdWx0
OwotfQotCi1AZW5kCi0KICNlbmRpZiAvLyBYUEFUSF9TVVBQT1JUCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkocmV2aXNpb24gMTYwNjcpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkod29ya2luZyBjb3B5KQpAQCAt
NzEsNyArNzEsNiBAQCBzdWIgUHJvY2Vzc0RvY3VtZW50CiAgICR1c2VEb2N1bWVudCA9IHNoaWZ0
OwogICAKICAgbXkgJGlmYWNlTmFtZSA9ICR1c2VHZW5lcmF0b3I7Ci0gICRpZmFjZU5hbWUgPX4g
cy9cYihcdykvXFUkMS9nOyAjIE1ha2UgZmlyc3QgbGV0dGVyIG9mIGVhY2ggd29yZCB1cHBlcmNh
c2UKICAgJGlmYWNlTmFtZSA9ICJDb2RlR2VuZXJhdG9yJGlmYWNlTmFtZSI7CiAKICAgIyBEeW5h
bWljYWxseSBsb2FkIGV4dGVybmFsIGNvZGUgZ2VuZXJhdGlvbiBwZXJsIG1vZHVsZS4uLgpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lv
biAxNjA2NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0J
KHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw4IEBACiAjIEtET00gSURMIHBhcnNlcgogIwogIyBD
b3B5cmlnaHQgKEMpIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0j
IENvcHlyaWdodCAoQykgMjAwNiBBbmRlcnMgQ2FybHNzb24gPGFuZGVyc2NhQG1hYy5jb20+IAor
IyBDb3B5cmlnaHQgKEMpIDIwMDYgQW5kZXJzIENhcmxzc29uIDxhbmRlcnNjYUBtYWMuY29tPgor
IyBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+
CiAjIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgogIwogIyBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTU3LDIyICs1OCwyMiBAQCBFT0YKICMg
RGVmYXVsdCBjb25zdHJ1Y3Rvcgogc3ViIG5ldwogewotCW15ICRvYmplY3QgPSBzaGlmdDsKLQlt
eSAkcmVmZXJlbmNlID0geyB9OwotCQotCSRjb2RlR2VuZXJhdG9yID0gc2hpZnQ7Ci0JJG91dHB1
dERpciA9IHNoaWZ0OwotCQotCWJsZXNzKCRyZWZlcmVuY2UsICRvYmplY3QpOwotCXJldHVybiAk
cmVmZXJlbmNlOworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBteSAkcmVmZXJlbmNlID0g
eyB9OworCisgICAgJGNvZGVHZW5lcmF0b3IgPSBzaGlmdDsKKyAgICAkb3V0cHV0RGlyID0gc2hp
ZnQ7CisKKyAgICBibGVzcygkcmVmZXJlbmNlLCAkb2JqZWN0KTsKKyAgICByZXR1cm4gJHJlZmVy
ZW5jZTsKIH0KIAogc3ViIGZpbmlzaAogewotCW15ICRvYmplY3QgPSBzaGlmdDsKLQkKLQkjIENv
bW1pdCBjaGFuZ2VzIQotCSRvYmplY3QtPldyaXRlRGF0YSgpOworICAgIG15ICRvYmplY3QgPSBz
aGlmdDsKKworICAgICMgQ29tbWl0IGNoYW5nZXMhCisgICAgJG9iamVjdC0+V3JpdGVEYXRhKCk7
CiB9CiAKIHN1YiBsZWZ0U2hpZnQoJCQpIHsKQEAgLTgzLDExICs4NCwxMSBAQCBzdWIgbGVmdFNo
aWZ0KCQkKSB7CiAjIFBhcmFtczogJ2RvbUNsYXNzJyBzdHJ1Y3QKIHN1YiBHZW5lcmF0ZUludGVy
ZmFjZQogewotCW15ICRvYmplY3QgPSBzaGlmdDsKLQlteSAkZGF0YU5vZGUgPSBzaGlmdDsKLQkK
LQkjIEZJWE1FOiBDaGVjayBkYXRlcyB0byBzZWUgaWYgd2UgbmVlZCB0byByZS1nZW5lcmF0ZSBh
bnl0aGluZwotCQorICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBteSAkZGF0YU5vZGUgPSBz
aGlmdDsKKworICAgICRvYmplY3QtPlJlbW92ZUV4Y2x1ZGVkQXR0cmlidXRlc0FuZEZ1bmN0aW9u
cygkZGF0YU5vZGUpOworCiAgICAgIyBTdGFydCBhY3R1YWwgZ2VuZXJhdGlvbi4uCiAgICAgJG9i
amVjdC0+R2VuZXJhdGVIZWFkZXIoJGRhdGFOb2RlKTsKICAgICAkb2JqZWN0LT5HZW5lcmF0ZUlt
cGxlbWVudGF0aW9uKCRkYXRhTm9kZSk7CkBAIC0xMTEsNiArMTEyLDMyIEBAIHN1YiBHZW5lcmF0
ZU1vZHVsZQogICAgICRtb2R1bGUgPSAkZGF0YU5vZGUtPm1vZHVsZTsgICAgCiB9CiAKK3N1YiBS
ZW1vdmVFeGNsdWRlZEF0dHJpYnV0ZXNBbmRGdW5jdGlvbnMKK3sKKyAgICBteSAkb2JqZWN0ID0g
c2hpZnQ7CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CisKKyAgICBteSAkaSA9IDA7CisgICAg
d2hpbGUgKCRpIDwgc2NhbGFyKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkpIHsKKyAgICAgICAg
bXkgJGxhbmcgPSAkeyRkYXRhTm9kZS0+YXR0cmlidXRlc31bJGldLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJFeGNsdWRlIn07CisgICAgICAgIGlmICgkbGFuZyBhbmQgJGxhbmcg
ZXEgIkpTIikgeworICAgICAgICAgICAgc3BsaWNlKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSwg
JGksIDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJGkrKzsKKyAgICAgICAgfQor
ICAgIH0KKworICAgICRpID0gMDsKKyAgICB3aGlsZSAoJGkgPCBzY2FsYXIoQHskZGF0YU5vZGUt
PmZ1bmN0aW9uc30pKSB7CisgICAgICAgIG15ICRsYW5nID0gJHskZGF0YU5vZGUtPmZ1bmN0aW9u
c31bJGldLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFeGNsdWRlIn07CisgICAg
ICAgIGlmICgkbGFuZyBhbmQgJGxhbmcgZXEgIkpTIikgeworICAgICAgICAgICAgc3BsaWNlKEB7
JGRhdGFOb2RlLT5mdW5jdGlvbnN9LCAkaSwgMSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAkaSsrOworICAgICAgICB9CisgICAgfQorfQorCiBzdWIgR2V0UGFyZW50Q2xhc3NOYW1l
CiB7CiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CkBAIC0yMTEsMTEgKzIzOCwxMSBAQCBzdWIg
R2VuZXJhdGVIZWFkZXIKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaW5jbHVk
ZSBcImtqc19iaW5kaW5nLmhcIlxuIik7CiAgICAgICAgIH0KICAgICB9Ci0gIAorCisgICAgbXkg
JG51bUNvbnN0YW50cyA9IEB7JGRhdGFOb2RlLT5jb25zdGFudHN9OwogICAgIG15ICRudW1BdHRy
aWJ1dGVzID0gQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9OwogICAgIG15ICRudW1GdW5jdGlvbnMg
PSBAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfTsKLSAgICBteSAkbnVtQ29uc3RhbnRzID0gQHskZGF0
YU5vZGUtPmNvbnN0YW50c307Ci0gICAgCisKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG5u
YW1lc3BhY2UgV2ViQ29yZSB7XG5cbiIpOwogICAgIAogICAgICMgSW1wbGVtZW50YXRpb24gY2xh
c3MgZm9yd2FyZCBkZWNsYXJhdGlvbgpAQCAtNjk2LDcgKzcyMyw3IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
dHJ1ZTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICB9
ICAgIAotCQorICAgIAogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJI
YXNOYW1lR2V0dGVyIn0pIHsKICAgICAgICAgJiRoYXNOYW1lR2V0dGVyR2VuZXJhdGlvbigpOwog
ICAgIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5w
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9i
akMucG0JKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvck9iakMucG0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTQ3IEBACisjIAorIyBLRE9NIElE
TCBwYXJzZXIKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2ls
ZGZveEBrZGUub3JnPgorIyBDb3B5cmlnaHQgKEMpIDIwMDYgQW5kZXJzIENhcmxzc29uIDxhbmRl
cnNjYUBtYWMuY29tPiAKKyMgQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53
ZWluaWdAZ21haWwuY29tPgorIyBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4KKyMKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CisjIAorIyBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjIAorIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyMgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisj
IAorIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyMgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorIyBCb3N0b24s
IE1BIDAyMTExLTEzMDcsIFVTQS4KKyMKKworcGFja2FnZSBDb2RlR2VuZXJhdG9yT2JqQzsKKwor
dXNlIEZpbGU6OnN0YXQ7CisKK215ICRtb2R1bGUgPSAiIjsKK215ICRvdXRwdXREaXIgPSAiIjsK
K215ICVpbXBsSW5jbHVkZXMgPSAoKTsKK215ICVoZWFkZXJGb3J3YXJkRGVjbGFyYXRpb25zID0g
KCk7CitteSAlaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9uc0ZvclByb3RvY29scyA9ICgpOworCitt
eSAkZXhjZXB0aW9uSW5pdCA9ICJXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsiOworbXkg
JGV4Y2VwdGlvblJhaXNlT25FcnJvciA9ICJyYWlzZU9uRE9NRXJyb3IoZWMpOyI7CisKKworIyBE
ZWZhdWx0IExpY2VuY2UgVGVtcGxhdGVzCitteSAkaGVhZGVyTGljZW5jZVRlbXBsYXRlID0gPDwg
IkVPRiI7CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBX
ZWluaWcgPHNhbS53ZWluaWdcQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KK0VPRgorCitteSAkaW1wbGVtZW50
YXRpb25MaWNlbmNlVGVtcGxhdGUgPSA8PCAiRU9GIjsKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMg
YmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh
Y2UgLSBTdWl0ZSAzMzAsCisgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisqLworRU9G
CisKKyMgRGVmYXVsdCBjb25zdHJ1Y3Rvcgorc3ViIG5ldworeworICAgIG15ICRvYmplY3QgPSBz
aGlmdDsKKyAgICBteSAkcmVmZXJlbmNlID0geyB9OworCisgICAgJGNvZGVHZW5lcmF0b3IgPSBz
aGlmdDsKKyAgICAkb3V0cHV0RGlyID0gc2hpZnQ7CisKKyAgICBibGVzcygkcmVmZXJlbmNlLCAk
b2JqZWN0KTsKKyAgICByZXR1cm4gJHJlZmVyZW5jZTsKK30KKworc3ViIGZpbmlzaAoreworICAg
IG15ICRvYmplY3QgPSBzaGlmdDsKKworICAgICMgQ29tbWl0IGNoYW5nZXMhCisgICAgJG9iamVj
dC0+V3JpdGVEYXRhKCk7Cit9CisKKyMgUGFyYW1zOiAnZG9tQ2xhc3MnIHN0cnVjdAorc3ViIEdl
bmVyYXRlSW50ZXJmYWNlCit7CisgICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAgIG15ICRkYXRh
Tm9kZSA9IHNoaWZ0OworCisgICAgJG9iamVjdC0+UmVtb3ZlRXhjbHVkZWRBdHRyaWJ1dGVzQW5k
RnVuY3Rpb25zKCRkYXRhTm9kZSk7CisKKyAgICAjIFN0YXJ0IGFjdHVhbCBnZW5lcmF0aW9uLi4K
KyAgICAkb2JqZWN0LT5HZW5lcmF0ZUhlYWRlcigkZGF0YU5vZGUpOworICAgICRvYmplY3QtPkdl
bmVyYXRlSW1wbGVtZW50YXRpb24oJGRhdGFOb2RlKTsKKworICAgIG15ICRuYW1lID0gJGRhdGFO
b2RlLT5uYW1lOworCisgICAgIyBPcGVuIGZpbGVzIGZvciB3cml0aW5nLi4uCisgICAgbXkgJGhl
YWRlckZpbGVOYW1lID0gIiRvdXRwdXREaXIvRE9NJG5hbWUuaCI7CisgICAgbXkgJGltcGxGaWxl
TmFtZSA9ICIkb3V0cHV0RGlyL0RPTSRuYW1lLm1tIjsKKworICAgIG9wZW4oJElNUEwsICI+JGlt
cGxGaWxlTmFtZSIpIG9yIGRpZSAiQ291bGRuJ3Qgb3BlbiBmaWxlICRpbXBsRmlsZU5hbWUiOwor
ICAgIG9wZW4oJEhFQURFUiwgIj4kaGVhZGVyRmlsZU5hbWUiKSBvciBkaWUgIkNvdWxkbid0IG9w
ZW4gZmlsZSAkaGVhZGVyRmlsZU5hbWUiOworfQorCisjIFBhcmFtczogJ2lkbERvY3VtZW50JyBz
dHJ1Y3QKK3N1YiBHZW5lcmF0ZU1vZHVsZQoreworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAg
ICBteSAkZGF0YU5vZGUgPSBzaGlmdDsgIAorICAgIAorICAgICRtb2R1bGUgPSAkZGF0YU5vZGUt
Pm1vZHVsZTsgICAgCit9CisKK3N1YiBSZW1vdmVFeGNsdWRlZEF0dHJpYnV0ZXNBbmRGdW5jdGlv
bnMKK3sKKyAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7
CisKKyAgICBteSAkaSA9IDA7CisKKyAgICB3aGlsZSAoJGkgPCBAeyRkYXRhTm9kZS0+YXR0cmli
dXRlc30pIHsKKyAgICAgICAgbXkgJGxhbmcgPSAkeyRkYXRhTm9kZS0+YXR0cmlidXRlc31bJGld
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFeGNsdWRlIn07CisgICAgICAgIGlm
ICgkbGFuZyBhbmQgJGxhbmcgZXEgIk9iakMiKSB7CisgICAgICAgICAgICBzcGxpY2UoQHskZGF0
YU5vZGUtPmF0dHJpYnV0ZXN9LCAkaSwgMSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAkaSsrOworICAgICAgICB9CisgICAgfQorCisgICAgJGkgPSAwOworICAgIHdoaWxlICgkaSA8
IEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CisgICAgICAgIG15ICRsYW5nID0gJHskZGF0YU5v
ZGUtPmZ1bmN0aW9uc31bJGldLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFeGNs
dWRlIn07CisgICAgICAgIGlmICgkbGFuZyBhbmQgJGxhbmcgZXEgIk9iakMiKSB7CisgICAgICAg
ICAgICBzcGxpY2UoQHskZGF0YU5vZGUtPmZ1bmN0aW9uc30sICRpLCAxKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICRpKys7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N1YiBHZXRD
bGFzc05hbWUKK3sKKyAgICBteSAkbmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVsZShz
aGlmdCk7CisgICAgCisgICAgIyBzcGVjaWFsIGNhc2VzCisgICAgaWYgKCRuYW1lIGVxICJib29s
ZWFuIikgeworICAgICAgICByZXR1cm4gIkJPT0wiOworICAgIH0gZWxzaWYgKCRuYW1lIGVxICJ1
bnNpZ25lZCBsb25nIikgeworICAgICAgICByZXR1cm4gInVuc2lnbmVkIjsKKyAgICB9IGVsc2lm
ICgkbmFtZSBlcSAibG9uZyIpIHsKKyAgICAgICAgcmV0dXJuICJpbnQiOworICAgIH0gZWxzaWYg
KCRuYW1lIGVxICJET01TdHJpbmciKSB7CisgICAgICAgIHJldHVybiAiTlNTdHJpbmciOworICAg
IH0gZWxzaWYgKCRuYW1lIGVxICJET01XaW5kb3ciKSB7CisgICAgICAgIHJldHVybiAiRE9NQWJz
dHJhY3RWaWV3IjsKKyAgICB9IGVsc2lmICgkbmFtZSBlcSAiWFBhdGhOU1Jlc29sdmVyIikgewor
ICAgICAgICByZXR1cm4gImlkIDxET01YUGF0aE5TUmVzb2x2ZXI+IjsKKyAgICB9IGVsc2lmICgk
bmFtZSBlcSAidW5zaWduZWQgc2hvcnQiIAorICAgICAgICAgICAgIG9yICRuYW1lIGVxICJmbG9h
dCIKKyAgICAgICAgICAgICBvciAkbmFtZSBlcSAidm9pZCIKKyAgICAgICAgICAgICBvciAkbmFt
ZSBlcSAiRE9NSW1wbGVtZW50YXRpb24iKSB7CisgICAgICAgIHJldHVybiAkbmFtZTsKKyAgICB9
CisKKyAgICAjIERlZmF1bHQsIGFzc3VtZSBvYmplY3RpdmUtYyB0eXBlIGhhcyB0aGUgc2FtZSB0
eXBlIG5hbWUgYXMKKyAgICAjIGlkbCB0eXBlIHByZWZpeGVkIHdpdGggIkRPTSIuCisgICAgcmV0
dXJuICJET00iIC4gJG5hbWU7Cit9CisKK3N1YiBHZXRJbXBsQ2xhc3NOYW1lCit7CisgICAgbXkg
JG5hbWUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoc2hpZnQpOworICAgIAorICAgICMg
c3BlY2lhbCBjYXNlcworICAgIGlmICgkbmFtZSBlcSAiRE9NSW1wbGVtZW50YXRpb24iKSB7Cisg
ICAgICAgIHJldHVybiAiV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb25Gcm9udCI7CisgICAgfQor
CisgICAgcmV0dXJuICJXZWJDb3JlOjoiIC4gJG5hbWU7Cit9CisKK3N1YiBHZXRQYXJlbnRJbXBs
Q2xhc3NOYW1lCit7CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CisKKyAgICBpZiAoQHskZGF0
YU5vZGUtPnBhcmVudHN9IGVxIDApIHsKKyAgICAgICAgcmV0dXJuICJPYmplY3QiOworICAgIH0K
KworICAgIG15ICRwYXJlbnQgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoJGRhdGFOb2Rl
LT5wYXJlbnRzKDApKTsKKyAgICAKKyAgICAjIHNwZWNpYWwgY2FzZXMKKyAgICBpZiAoJHBhcmVu
dCBlcSAiRXZlbnRUYXJnZXROb2RlIikgeworICAgICAgICAkcGFyZW50ID0gIk5vZGUiOworICAg
IH0KKworICAgIHJldHVybiAkcGFyZW50OworfQorCitzdWIgR2V0T2JqQ1R5cGUKK3sKKyAgICBt
eSAkbmFtZSA9IEdldENsYXNzTmFtZShzaGlmdCk7CisKKyAgICBpZiAoJGNvZGVHZW5lcmF0b3It
PklzUHJpbWl0aXZlVHlwZSgkbmFtZSkKKyAgICAgICAgICAgIG9yICRuYW1lIGVxICJCT09MIgor
ICAgICAgICAgICAgb3IgJG5hbWUgZXEgInVuc2lnbmVkIgorICAgICAgICAgICAgb3IgJG5hbWUg
ZXEgImludCIKKyAgICAgICAgICAgIG9yICRuYW1lIGVxICJpZCA8RE9NWFBhdGhOU1Jlc29sdmVy
PiIpIHsKKyAgICAgICAgcmV0dXJuICRuYW1lOworICAgIH0KKworICAgICMgRGVmYXVsdCwgcmV0
dXJuIHR5cGUgYXMgYSBwb2ludGVyLgorICAgIHJldHVybiAiJG5hbWUgKiI7Cit9CisKK3N1YiBH
ZXRPYmpDVHlwZU1ha2VyCit7CisgICAgbXkgJHR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBN
b2R1bGUoc2hpZnQpOworCisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1ByaW1pdGl2ZVR5cGUo
JHR5cGUpIG9yICR0eXBlIGVxICJET01TdHJpbmciKSB7CisgICAgICAgIHJldHVybiAiIjsKKyAg
ICB9CisKKyAgICBpZiAoJHR5cGUgZXEgIkRPTVJHQkNvbG9yIikgeworICAgICAgICByZXR1cm4g
Il9SR0JDb2xvcldpdGhSR0IiOworICAgIH0KKworICAgIG15ICR0eXBlTWFrZXIgPSAiIjsKKwor
ICAgIGlmICgkdHlwZSBlcSAiSFRNTENvbGxlY3Rpb24iKSB7CisgICAgICAgICR0eXBlTWFrZXIg
PSAiY29sbGVjdGlvbiI7CisgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkhUTUxGb3JtRWxlbWVudCIp
IHsKKyAgICAgICAgJHR5cGVNYWtlciA9ICJmb3JtRWxlbWVudCI7CisgICAgfSBlbHNpZiAoJHR5
cGUgZXEgIkhUTUxEb2N1bWVudCIpIHsKKyAgICAgICAgJHR5cGVNYWtlciA9ICJIVE1MRG9jdW1l
bnQiOworICAgIH0gZWxzaWYgKCR0eXBlIGVxICJDU1NTdHlsZURlY2xhcmF0aW9uIikgeworICAg
ICAgICAkdHlwZU1ha2VyID0gInN0eWxlRGVjbGFyYXRpb24iOworICAgIH0gZWxzaWYgKCR0eXBl
IGVxICJDU1NTdHlsZVNoZWV0IikgeworICAgICAgICAkdHlwZU1ha2VyID0gIkNTU1N0eWxlU2hl
ZXQiOworICAgIH0gZWxzaWYgKCR0eXBlIGVxICJET01JbXBsZW1lbnRhdGlvbiIpIHsKKyAgICAg
ICAgJHR5cGVNYWtlciA9ICJET01JbXBsZW1lbnRhdGlvbiI7CisgICAgfSBlbHNpZiAoJHR5cGUg
ZXEgIkNEQVRBU2VjdGlvbiIpIHsKKyAgICAgICAgJHR5cGVNYWtlciA9ICJDREFUQVNlY3Rpb24i
OworICAgIH0gZWxzaWYgKCR0eXBlIGVxICJET01XaW5kb3ciKSB7CisgICAgICAgICR0eXBlTWFr
ZXIgPSAiYWJzdHJhY3RWaWV3IjsKKyAgICB9IGVsc2lmICgkdHlwZSBlcSAiWFBhdGhSZXN1bHQi
KSB7CisgICAgICAgICR0eXBlTWFrZXIgPSAieHBhdGhSZXN1bHQiOworICAgIH0gZWxzaWYgKCR0
eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7CisgICAgICAgICR0eXBlTWFrZXIgPSAieHBhdGhO
U1Jlc29sdmVyIjsKKyAgICB9IGVsc2lmICgkdHlwZSBlcSAiWFBhdGhFeHByZXNzaW9uIikgewor
ICAgICAgICAkdHlwZU1ha2VyID0gInhwYXRoRXhwcmVzc2lvbiI7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgJHR5cGVNYWtlciA9IGxjZmlyc3QoJHR5cGUpOworICAgIH0KKworICAgICMgcHV0IGlu
dG8gdGhlIGZvcm0gIl9mb29CYXJXaXRoIiBmb3IgdHlwZSBGb29CYXIuCisgICAgJHR5cGVNYWtl
ciA9ICJfIiAuICR0eXBlTWFrZXIgLiAiV2l0aCI7CisgICAgcmV0dXJuICR0eXBlTWFrZXI7Cit9
CisKK3N1YiBBZGRGb3J3YXJkRGVjbGFyYXRpb25zRm9yVHlwZQoreworICAgIG15ICR0eXBlID0g
JGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKHNoaWZ0KTsKKyAgICAKKyAgICBpZiAoJGNvZGVH
ZW5lcmF0b3ItPklzUHJpbWl0aXZlVHlwZSgkdHlwZSkgb3IgJHR5cGUgZXEgIkRPTVN0cmluZyIp
IHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoJHR5cGUgZXEgIkRPTUlt
cGxlbWVudGF0aW9uIikgeworICAgICAgICAkaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9uc3siJHR5
cGUifSA9IDE7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoJHR5cGUgZXEgIkRP
TVdpbmRvdyIpIHsKKyAgICAgICAgJGhlYWRlckZvcndhcmREZWNsYXJhdGlvbnN7IkRPTUFic3Ry
YWN0VmlldyJ9ID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgkdHlwZSBl
cSAiWFBhdGhOU1Jlc29sdmVyIikgeworICAgICAgICAjIE9ubHkgb25lIHByb3RvY29sIHNvIGZh
ci4KKyAgICAgICAgJGhlYWRlckZvcndhcmREZWNsYXJhdGlvbnNGb3JQcm90b2NvbHN7IkRPTVhQ
YXRoTlNSZXNvbHZlciJ9ID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgICRoZWFk
ZXJGb3J3YXJkRGVjbGFyYXRpb25zeyJET00kdHlwZSJ9ID0gMTsKK30KKworc3ViIEFkZEluY2x1
ZGVzRm9yVHlwZQoreworICAgIG15ICR0eXBlID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxl
KHNoaWZ0KTsKKyAgICAKKyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzUHJpbWl0aXZlVHlwZSgk
dHlwZSkpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgkdHlwZSBlcSAiRE9N
U3RyaW5nIikgeworICAgICAgICAkaW1wbEluY2x1ZGVzeyJQbGF0Zm9ybVN0cmluZy5oIn0gPSAx
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgIyBUZW1wIERPTUNTUy5oCisgICAgaWYg
KCR0eXBlIGVxICJDb3VudGVyIgorICAgICAgICAgICAgb3IgJHR5cGUgZXEgIk1lZGlhTGlzdCIK
KyAgICAgICAgICAgIG9yICR0eXBlIGVxICJDU1NTdHlsZVNoZWV0IikgeworICAgICAgICAkaW1w
bEluY2x1ZGVzeyJET01DU1MuaCJ9ID0gMTsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siJHR5cGUu
aCJ9ID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoJHR5cGUgZXEgIkNTU1N0
eWxlRGVjbGFyYXRpb24iKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUNTUy5oIn0gPSAx
OworICAgICAgICAkaW1wbEluY2x1ZGVzeyIkdHlwZS5oIn0gPSAxOworICAgICAgICAkaW1wbElu
Y2x1ZGVzeyJDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oIn0gPSAxOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmICgkdHlwZSBlcSAiUkdCQ29sb3IiIG9yICR0eXBlIGVxICJSZWN0
IikgeworICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01DU1MuaCJ9ID0gMTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgICMgVGVtcCBET01IVE1MLmgKKyAgICBpZiAoJHR5cGUgZXEgIkhU
TUxEb2N1bWVudCIpIHsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NSFRNTC5oIn0gPSAxOwor
ICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01IVE1MSW50ZXJuYWwuaCJ9ID0gMTsKKyAgICAgICAg
JGltcGxJbmNsdWRlc3siJHR5cGUuaCJ9ID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgICMgVGVtcCBET01FdmVudHMuaAorICAgIGlmICgkdHlwZSBlcSAiRXZlbnQiKSB7CisgICAg
ICAgICRpbXBsSW5jbHVkZXN7IkRPTUV2ZW50cy5oIn0gPSAxOworICAgICAgICAkaW1wbEluY2x1
ZGVzeyJET01FdmVudHNJbnRlcm5hbC5oIn0gPSAxOworICAgICAgICAkaW1wbEluY2x1ZGVzeyIk
dHlwZS5oIn0gPSAxOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgIyBUZW1wIERPTVN0
eWxlU2hlZXRzLmgKKyAgICBpZiAoJHR5cGUgZXEgIlN0eWxlU2hlZXRMaXN0IikgeworICAgICAg
ICAkaW1wbEluY2x1ZGVzeyJET01TdHlsZVNoZWV0cy5oIn0gPSAxOworICAgICAgICAkaW1wbElu
Y2x1ZGVzeyIkdHlwZS5oIn0gPSAxOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
ICMgVGVtcCBET01WaWV3cy5oCisgICAgaWYgKCR0eXBlIGVxICJET01XaW5kb3ciKSB7CisgICAg
ICAgICRpbXBsSW5jbHVkZXN7IkRPTVZpZXdzLmgifSA9IDE7CisgICAgICAgICRpbXBsSW5jbHVk
ZXN7IkRPTVZpZXdzSW50ZXJuYWwuaCJ9ID0gMTsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siJHR5
cGUuaCJ9ID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICAjIFRlbXAgRE9N
WFBhdGguaAorICAgIGlmICgkdHlwZSBlcSAiWFBhdGhFeHByZXNzaW9uIgorICAgICAgICAgICAg
b3IgJHR5cGUgZXEgIlhQYXRoTlNSZXNvbHZlciIKKyAgICAgICAgICAgIG9yICR0eXBlIGVxICJY
UGF0aFJlc3VsdCIpIHsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NWFBhdGguaCJ9ID0gMTsK
KyAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NWFBhdGhJbnRlcm5hbC5oIn0gPSAxOworICAgICAg
ICAkaW1wbEluY2x1ZGVzeyIkdHlwZS5oIn0gPSAxOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgIyBUZW1wIERPTUltcGxlbWVudGF0aW9uRnJvbnQuaAorICAgIGlmICgkdHlwZSBlcSAi
RE9NSW1wbGVtZW50YXRpb24iKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUltcGxlbWVu
dGF0aW9uRnJvbnQuaCJ9ID0gMTsKKyAgICB9CisKKyAgICAjIERlZmF1bHQsIGluY2x1ZGUgdGhl
IHNhbWUgbmFtZWQgZmlsZSAodGhlIGltcGxlbWVudGF0aW9uKSBhbmQgdGhlIHNhbWUgbmFtZSBw
cmVmaXhlZCB3aXRoICJET00iLiAKKyAgICAkaW1wbEluY2x1ZGVzeyIkdHlwZS5oIn0gPSAxOwor
ICAgICRpbXBsSW5jbHVkZXN7IkRPTSR0eXBlLmgifSA9IDE7Cit9CisKK3N1YiBHZW5lcmF0ZUhl
YWRlcgoreworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlm
dDsKKworICAgICMgTWFrZSBzdXJlIHRoYXQgd2UgZG9uJ3QgaGF2ZSBtb3JlIHRoYW4gb25lIHBh
cmVudC4KKyAgICBpZiAoQHskZGF0YU5vZGUtPnBhcmVudHN9ID4gMSkgeworICAgICAgICBkaWUg
IkEgY2xhc3MgY2FuJ3QgaGF2ZSBtb3JlIHRoYW4gb25lIHBhcmVudC4iOworICAgIH0KKworICAg
IG15ICRpbnRlcmZhY2VOYW1lID0gJGRhdGFOb2RlLT5uYW1lOworICAgIG15ICRjbGFzc05hbWUg
PSBHZXRDbGFzc05hbWUoJGludGVyZmFjZU5hbWUpOworICAgIG15ICRwYXJlbnRDbGFzc05hbWUg
PSAiRE9NIiAuIEdldFBhcmVudEltcGxDbGFzc05hbWUoJGRhdGFOb2RlKTsKKworICAgIG15ICRu
dW1Db25zdGFudHMgPSBAeyRkYXRhTm9kZS0+Y29uc3RhbnRzfTsKKyAgICBteSAkbnVtQXR0cmli
dXRlcyA9IEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfTsKKyAgICBteSAkbnVtRnVuY3Rpb25zID0g
QHskZGF0YU5vZGUtPmZ1bmN0aW9uc307CisKKyAgICAjIC0gQWRkIGRlZmF1bHQgaGVhZGVyIHRl
bXBsYXRlCisgICAgQGhlYWRlckNvbnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkaGVhZGVyTGlj
ZW5jZVRlbXBsYXRlKTsKKworICAgICMgLSBJTkNMVURFUyAtCisgICAgcHVzaChAaGVhZGVyQ29u
dGVudEhlYWRlciwgIlxuI2ltcG9ydCBcIiRwYXJlbnRDbGFzc05hbWUuaFwiIC8vIHBhcmVudCBj
bGFzc1xuXG4iKTsKKworICAgICMgLSBBZGQgY29uc3RhbnRzLgorICAgIGlmICgkbnVtQ29uc3Rh
bnRzID4gMCkgeworICAgICAgICBteSBAaGVhZGVyQ29uc3RhbnRzID0gKCk7CisgICAgICAgIGZv
cmVhY2ggbXkgJGNvbnN0YW50IChAeyRkYXRhTm9kZS0+Y29uc3RhbnRzfSkgeworCisgICAgICAg
ICAgICBteSAkY29uc3RhbnROYW1lID0gJGNvbnN0YW50LT5uYW1lOworICAgICAgICAgICAgbXkg
JGNvbnN0YW50VmFsdWUgPSAkY29uc3RhbnQtPnZhbHVlOworICAgICAgICAgICAgbXkgJG91dHB1
dCA9ICIgICAgRE9NXyIgLiAkY29uc3RhbnROYW1lIC4gIiA9ICIgLiAkY29uc3RhbnRWYWx1ZTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29uc3RhbnRzLCAkb3V0cHV0
KTsKKyAgICAgICAgfQorICAgICAgICBteSAkY29tYmluZWRDb25zdGFudHMgPSBqb2luKCIsXG4i
LCBAaGVhZGVyQ29uc3RhbnRzKTsKKworICAgICAgICAjIEZJWE1FOiB0aGUgZm9ybWF0dGluZyBv
ZiB0aGUgZW51bXMgc2hvdWxkIGxpbmUgdXAgdGhlIGVxdWFsIHNpZ25zLgorICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiXG4vLyBDb25zdGFudHNcbiIpOworICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiZW51bSB7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgJGNv
bWJpbmVkQ29uc3RhbnRzKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxufTtcbiIp
OyAgICAgICAgCisgICAgfQorICAgIAorICAgIG15ICVoYXNoT2ZDYXRhZ29yaWVzID0gKCk7Cisg
ICAgCisgICAgIyAtIEJlZ2luIEBpbnRlcmZhY2UgCisgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IlxuXEBpbnRlcmZhY2UgJGNsYXNzTmFtZSA6ICRwYXJlbnRDbGFzc05hbWVcbiIpOworCisgICAg
IyAtIEFkZCBhdHRyaWJ1dGUgZ2V0dGVycy9zZXR0ZXJzLgorICAgIGlmICgkbnVtQXR0cmlidXRl
cyA+IDApIHsKKyAgICAgICAgbXkgQGhlYWRlckF0dHJpYnV0ZXMgPSAoKTsKKworICAgICAgICBm
b3JlYWNoIChAeyRkYXRhTm9kZS0+YXR0cmlidXRlc30pIHsKKyAgICAgICAgICAgIG15ICRhdHRy
aWJ1dGUgPSAkXzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQWRkRm9yd2FyZERlY2xhcmF0
aW9uc0ZvclR5cGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsKKworICAgICAgICAgICAg
bXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAg
ICAgICBteSAkYXR0cmlidXRlVHlwZSA9IEdldE9iakNUeXBlKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+dHlwZSk7CisgICAgICAgICAgICBteSAkYXR0cmlidXRlSXNSZWFkb25seSA9ICgkYXR0cmli
dXRlLT50eXBlID1+IC9ecmVhZG9ubHkvKTsKKyAgICAgICAgICAgIG15ICRjYXRhZ29yeSA9ICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9iakNDYXRhZ29yeSJ9
OworCisgICAgICAgICAgICAjIC0gR0VUVEVSCisgICAgICAgICAgICBteSAkZ2V0dGVyID0gIi0g
KCIgLiAkYXR0cmlidXRlVHlwZSAuICIpIiAuICRhdHRyaWJ1dGVOYW1lIC4gIjtcbiI7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGlmICgkY2F0YWdvcnkpIHsKKyAgICAgICAgICAgICAgICBw
dXNoKEB7ICRoYXNoT2ZDYXRhZ29yaWVzeyRjYXRhZ29yeX0gfSwgJGdldHRlcik7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckF0dHJpYnV0ZXMsICRn
ZXR0ZXIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAKKyAgICAgICAgICAgICMgLSBT
RVRURVIKKyAgICAgICAgICAgIGlmICghJGF0dHJpYnV0ZUlzUmVhZG9ubHkpIHsKKyAgICAgICAg
ICAgICAgICBteSAkc2V0dGVyID0gIi0gKHZvaWQpc2V0IiAuIHVjZmlyc3QoJGF0dHJpYnV0ZU5h
bWUpIC4gIjooIiAuICRhdHRyaWJ1dGVUeXBlIC4gIikiIC4gJGF0dHJpYnV0ZU5hbWUgLiAiO1xu
IjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoJGNhdGFnb3J5KSB7Cisg
ICAgICAgICAgICAgICAgICAgIHB1c2goQHsgJGhhc2hPZkNhdGFnb3JpZXN7JGNhdGFnb3J5fSB9
LCAkc2V0dGVyKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBoZWFkZXJBdHRyaWJ1dGVzLCAkc2V0dGVyKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoQGhlYWRlckF0dHJpYnV0ZXMg
PiAwKSB7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4vLyBBdHRyaWJ1dGVz
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIEBoZWFkZXJBdHRyaWJ1dGVz
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgICMgLSBBZGQgZnVuY3Rpb25zLgorICAgIGlmICgk
bnVtRnVuY3Rpb25zID4gMCkgeworICAgICAgICBteSBAaGVhZGVyRnVuY3Rpb25zID0gKCk7CisK
KyAgICAgICAgZm9yZWFjaCAoQHskZGF0YU5vZGUtPmZ1bmN0aW9uc30pIHsKKyAgICAgICAgICAg
IG15ICRmdW5jdGlvbiA9ICRfOworCisgICAgICAgICAgICBBZGRGb3J3YXJkRGVjbGFyYXRpb25z
Rm9yVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSk7CisKKyAgICAgICAgICAgIG15ICRm
dW5jdGlvbk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAgICAgICAgIG15
ICRyZXR1cm5UeXBlID0gR2V0T2JqQ1R5cGUoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpOwor
ICAgICAgICAgICAgbXkgJG51bWJlck9mUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0
ZXJzfTsKKyAgICAgICAgICAgIG15ICRjYXRhZ29yeSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiT2JqQ0NhdGFnb3J5In07CisKKyAgICAgICAgICAgIG15ICRv
dXRwdXQgPSAiLSAoJHJldHVyblR5cGUpJGZ1bmN0aW9uTmFtZSI7CisgICAgICAgICAgICBmb3Jl
YWNoIG15ICRwYXJhbSAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7CisgICAgICAgICAgICAg
ICAgbXkgJHBhcmFtTmFtZSA9ICRwYXJhbS0+bmFtZTsKKyAgICAgICAgICAgICAgICBteSAkcGFy
YW1UeXBlID0gR2V0T2JqQ1R5cGUoJHBhcmFtLT50eXBlKTsKKyAgICAgICAgICAgICAgICBBZGRG
b3J3YXJkRGVjbGFyYXRpb25zRm9yVHlwZSgkcGFyYW0tPnR5cGUpOworCisgICAgICAgICAgICAg
ICAgJG91dHB1dCAuPSAiOigkcGFyYW1UeXBlKSRwYXJhbU5hbWUgIjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICMgcmVtb3ZlIGFueSB0cmFpbGluZyBzcGFjZXMuCisgICAgICAgICAgICAk
b3V0cHV0ID1+IHMvXHMrJC8vOworICAgICAgICAgICAgJG91dHB1dCAuPSAiO1xuIjsKKyAgICAK
KyAgICAgICAgICAgIGlmICgkY2F0YWdvcnkpIHsKKyAgICAgICAgICAgICAgICBwdXNoKEB7ICRo
YXNoT2ZDYXRhZ29yaWVzeyRjYXRhZ29yeX0gfSwgJG91dHB1dCk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckZ1bmN0aW9ucywgJG91dHB1dCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoQGhlYWRlckZ1bmN0aW9ucyA+
IDApIHsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbi8vIE1ldGhvZHNcbiIp
OworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgQGhlYWRlckZ1bmN0aW9ucyk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICAjIC0gRW5kIEBpbnRlcmZhY2UgCisgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIlxuXEBlbmRcbiIpOworICAgIAorICAgICMgQWRkIGFkZGl0aW9uYWwgQ2F0
YWdvcmllcyAoaWYgYW55KQorICAgIGlmIChzY2FsYXIoa2V5cyglaGFzaE9mQ2F0YWdvcmllcykp
KSB7CisgICAgICAgIAorICAgICAgICBmb3JlYWNoKHNvcnQoa2V5cyglaGFzaE9mQ2F0YWdvcmll
cykpKSB7CisgICAgICAgICAgICBteSAkY2F0YWdvcnkgPSAkXzsKKworICAgICAgICAgICAgIyAt
IEJlZ2luIEBpbnRlcmZhY2UgCisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG5c
QGludGVyZmFjZSAkY2xhc3NOYW1lICgkY2F0YWdvcnkpXG4iKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgZm9yZWFjaCAoQHsgJGhhc2hPZkNhdGFnb3JpZXN7JGNhdGFnb3J5fSB9KSB7Cisg
ICAgICAgICAgICAgICAgbXkgJGRlY2xhcmF0aW9uID0gJF87CisgICAgICAgICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgJGRlY2xhcmF0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgIyAtIEVuZCBAaW50ZXJmYWNlCisgICAgICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiXEBlbmRcbiIpOworICAgICAgICB9CisgICAgfQorfQorCitzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgoreworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBteSAk
ZGF0YU5vZGUgPSBzaGlmdDsKKworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGRhdGFOb2RlLT5u
YW1lOworICAgIG15ICRjbGFzc05hbWUgPSBHZXRDbGFzc05hbWUoJGludGVyZmFjZU5hbWUpOwor
ICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gR2V0SW1wbENsYXNzTmFtZSgkaW50ZXJmYWNlTmFtZSk7
CisgICAgbXkgJHBhcmVudEltcGxDbGFzc05hbWUgPSBHZXRQYXJlbnRJbXBsQ2xhc3NOYW1lKCRk
YXRhTm9kZSk7CisKKworICAgIG15ICRudW1BdHRyaWJ1dGVzID0gQHskZGF0YU5vZGUtPmF0dHJp
YnV0ZXN9OworICAgIG15ICRudW1GdW5jdGlvbnMgPSBAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfTsK
KyAgICBteSAkaGFzRnVuY3Rpb25zT3JBdHRyaWJ1dGVzID0gJG51bUF0dHJpYnV0ZXMgKyAkbnVt
RnVuY3Rpb25zOworCisgICAgIyAtIEFkZCBkZWZhdWx0IGhlYWRlciB0ZW1wbGF0ZS4KKyAgICBA
aW1wbENvbnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkaW1wbGVtZW50YXRpb25MaWNlbmNlVGVt
cGxhdGUpOworCisgICAgIyAtIElOQ0xVREVTIC0KKyAgICBwdXNoKEBpbXBsQ29udGVudEhlYWRl
ciwgIlxuI2ltcG9ydCBcImNvbmZpZy5oXCJcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50SGVh
ZGVyLCAiI2ltcG9ydCBcIiRjbGFzc05hbWUuaFwiXG5cbiIpOworCisgICAgaWYgKCRoYXNGdW5j
dGlvbnNPckF0dHJpYnV0ZXMpIHsKKyAgICAgICAgIyBORUVERUQgZm9yIERPTV9DQVNUCisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAiI2ltcG9ydCBcIkRPTUludGVybmFsLmhcIiAv
LyBuZWVkZWQgZm9yIERPTV9jYXN0PD5cbiIpOworICAgICAgICAKKyAgICAgICAgIyBpbmNsdWRl
IG1vZHVsZSBkZXBlbmRhbnQgaW50ZXJuYWwgaW50ZXJmYWNlcy4KKyAgICAgICAgaWYgKCRtb2R1
bGUgZXEgImh0bWwiKSB7CisgICAgICAgICAgICAjIEhUTUwgbW9kdWxlIGludGVybmFsIGludGVy
ZmFjZXMKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAiI2ltcG9ydCBcIkRP
TUhUTUxJbnRlcm5hbC5oXCJcbiIpOworICAgICAgICB9IGVsc2lmICgkbW9kdWxlIGVxICJjc3Mi
KSB7CisgICAgICAgICAgICAjIENTUyBtb2R1bGUgaW50ZXJuYWwgaW50ZXJmYWNlcworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIsICIjaW1wb3J0IFwiRE9NQ1NTSW50ZXJuYWwu
aFwiXG4iKTsKKyAgICAgICAgfSBlbHNpZiAoJG1vZHVsZSBlcSAiZXZlbnRzIikgeworICAgICAg
ICAgICAgIyBDU1MgbW9kdWxlIGludGVybmFsIGludGVyZmFjZXMKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50SGVhZGVyLCAiI2ltcG9ydCBcIkRPTUV2ZW50c0ludGVybmFsLmhcIlxuIik7
CisgICAgICAgIH0gZWxzaWYgKCRtb2R1bGUgZXEgInhwYXRoIikgeworICAgICAgICAgICAgIyBD
U1MgbW9kdWxlIGludGVybmFsIGludGVyZmFjZXMKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50SGVhZGVyLCAiI2ltcG9ydCBcIkRPTVhQYXRoSW50ZXJuYWwuaFwiXG4iKTsKKyAgICAgICAg
fQorCisgICAgICAgICMgaW5jbHVkZSBJbXBsZW1lbnRhdGlvbiBjbGFzcworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudEhlYWRlciwgIiNpbXBvcnQgXCIkaW50ZXJmYWNlTmFtZS5oXCIgLy8gaW1w
bGVtZW50YXRpb24gY2xhc3NcbiIpOworICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRP
TUltcGxlbWVudGF0aW9uIikgeworICAgICAgICAgICAgIyBGSVhNRTogbmVlZGVkIHVudGlsIHdl
IGNhbiByZW1vdmUgRE9NSW1wbGVtZW50YXRpb25Gcm9udAorICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnRIZWFkZXIsICIjaW1wb3J0IFwiRE9NSW1wbGVtZW50YXRpb25Gcm9udC5oXCJcbiIp
OworICAgICAgICB9CisgICAgfQorCisgICAgQGltcGxDb250ZW50ID0gKCk7CisKKyAgICAjIFNU
QVJUIGltcGxlbWVudGF0aW9uCisgICAgcHVzaChAaW1wbENvbnRlbnQsICJcblxAaW1wbGVtZW50
YXRpb24gJGNsYXNzTmFtZVxuXG4iKTsKKyAgICAKKyAgICAjIEFERCBJTlRFUk5BTCBDQVNUSU5H
IE1FVEhPRAorICAgIG15ICRpbnRlcm5hbENhc3RpbmdOYW1lID0gIl8iIC4gbGNmaXJzdCgkaW50
ZXJmYWNlTmFtZSk7CisgICAgbXkgJGltcGxlbWVudGF0aW9uID0gIltzZWxmICRpbnRlcm5hbENh
c3RpbmdOYW1lXSI7CisgICAgCisgICAgaWYgKCRoYXNGdW5jdGlvbnNPckF0dHJpYnV0ZXMpIHsK
KyAgICAgICAgaWYgKCRwYXJlbnRJbXBsQ2xhc3NOYW1lIGVxICJPYmplY3QiKSB7CisgICAgICAg
ICAgICAjIE9ubHkgZ2VuZXJhdGUgJ2RlYWxsb2MnIGFuZCAnZmluYWxpemUnIG1ldGhvZHMgZm9y
IGRpcmVjdCBzdWJjbGFzc2VzIG9mIERPTU9iamVjdC4KKworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICItICh2b2lkKWRlYWxsb2NcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChf
aW50ZXJuYWwpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBE
T01fY2FzdDwkaW1wbENsYXNzTmFtZSAqPihfaW50ZXJuYWwpLT5kZXJlZigpO1xuIik7CisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBbc3VwZXIgZGVhbGxvY107XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICItICh2b2lkKWZpbmFsaXplXG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoX2ludGVybmFsKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgRE9NX2Nhc3Q8JGltcGxDbGFzc05hbWUgKj4oX2ludGVybmFsKS0+ZGVyZWYoKTtcbiIp
OworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgW3N1cGVyIGZpbmFsaXplXTtc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIi0gKCRpbXBsQ2xhc3NOYW1lICop
JGludGVybmFsQ2FzdGluZ05hbWVcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBET01f
Y2FzdDwkaW1wbENsYXNzTmFtZSAqPihfaW50ZXJuYWwpO1xuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIn1cblxuIik7CisKKyAgICAgICAgfSBlbHNlIHsKKyAgICAKKyAgICAg
ICAgICAgIG15ICRpbnRlcm5hbEJhc2VUeXBlOworICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VO
YW1lIGVxICJDU1NQcmltaXRpdmVWYWx1ZSIpIHsKKyAgICAgICAgICAgICAgICAjIEZJWE1FOiB0
aGlzIHNob3VsZCBiZSBhIHJlZ2V4IG1hdGNoaW5nIENTUy4uLlZhbHVlLgorICAgICAgICAgICAg
ICAgICRpbnRlcm5hbEJhc2VUeXBlID0gIldlYkNvcmU6OkNTU1ZhbHVlIgorICAgICAgICAgICAg
fSBlbHNpZiAoJGludGVyZmFjZU5hbWUgZXEgIkNTU0ltcG9ydFJ1bGUiIG9yICRpbnRlcmZhY2VO
YW1lIGVxICJDU1NGb250RmFjZVJ1bGUiKSB7CisgICAgICAgICAgICAgICAgIyBGSVhNRTogdGhp
cyBzaG91bGQgYmUgYSByZWdleCBtYXRjaGluZyBDU1MuLi5SdWxlLgorICAgICAgICAgICAgICAg
ICRpbnRlcm5hbEJhc2VUeXBlID0gIldlYkNvcmU6OkNTU1J1bGUiCisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICRpbnRlcm5hbEJhc2VUeXBlID0gIldlYkNvcmU6Ok5vZGUi
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIi0gKCRpbXBs
Q2xhc3NOYW1lICopJGludGVybmFsQ2FzdGluZ05hbWVcbiIpOworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHJldHVybiBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSAqPihET01fY2FzdDwkaW50ZXJuYWxC
YXNlVHlwZSAqPihfaW50ZXJuYWwpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9XG5cbiIpOworICAgICAgICB9CisgICAgfQorCisgICAgIyAtIEF0dHJpYnV0ZXMKKyAg
ICBpZiAoJG51bUF0dHJpYnV0ZXMgPiAwKSB7CisgICAgICAgIGZvcmVhY2ggKEB7JGRhdGFOb2Rl
LT5hdHRyaWJ1dGVzfSkgeworICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZSA9ICRfOworCisgICAg
ICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsK
KworICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUt
Pm5hbWU7CisgICAgICAgICAgICBteSAkYXR0cmlidXRlVHlwZSA9IEdldE9iakNUeXBlKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAgICAgICBteSAkYXR0cmlidXRlSXNSZWFk
b25seSA9ICgkYXR0cmlidXRlLT50eXBlID1+IC9ecmVhZG9ubHkvKTsKKworICAgICAgICAgICAg
IyAtIEdFVFRFUgorICAgICAgICAgICAgbXkgJGdldHRlclNpZyA9ICItICgkYXR0cmlidXRlVHlw
ZSkkYXR0cmlidXRlTmFtZVxuIjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgIyBFeGNlcHRp
b24gaGFuZGxpbmcKKyAgICAgICAgICAgIG15ICRoYXNHZXR0ZXJFeGNlcHRpb24gPSBAeyRhdHRy
aWJ1dGUtPmdldHRlckV4Y2VwdGlvbnN9OworICAgICAgICAgICAgaWYgKCRoYXNHZXR0ZXJFeGNl
cHRpb24pIHsKKyAgICAgICAgICAgICAgICBkaWUgIldlIHNob3VsZCBub3QgaGF2ZSBhbnkgZ2V0
dGVyIGV4Y2VwdGlvbnMgeWV0ISI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIG15ICRnZXR0ZXJDb250ZW50SGVhZCA9ICIkaW1wbGVtZW50YXRpb24tPiRhdHRyaWJ1
dGVOYW1lKCI7CisgICAgICAgICAgICBteSAkZ2V0dGVyQ29udGVudFRhaWwgPSAiKSI7CisKKyAg
ICAgICAgICAgIG15ICRhdHRyaWJ1dGVUeXBlU2Fuc1B0ciA9ICRhdHRyaWJ1dGVUeXBlOworICAg
ICAgICAgICAgJGF0dHJpYnV0ZVR5cGVTYW5zUHRyID1+IHMvIFwqJC8vOyAjIFJlbW92ZSB0cmFp
bGluZyAiICoiIGZyb20gcG9pbnRlciB0eXBlcy4KKyAgICAgICAgICAgIG15ICR0eXBlTWFrZXIg
PSBHZXRPYmpDVHlwZU1ha2VyKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAg
ICAgICBpZiAoJGF0dHJpYnV0ZVR5cGVTYW5zUHRyIGVxICJET01JbXBsZW1lbnRhdGlvbiIpIHsK
KyAgICAgICAgICAgICAgICAjIEZJWE1FOiBXZSBoYXZlIHRvIHNwZWNpYWwgY2FzZSBET01JbXBs
ZW1lbnRhdGlvbiB1bnRpbCBET01JbXBsZW1lbnRhdGlvbkZyb250IGlzIHJlbW92ZWQKKyAgICAg
ICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiWyRhdHRyaWJ1dGVUeXBlU2Fuc1B0ciAk
dHlwZU1ha2VyOmltcGxlbWVudGF0aW9uRnJvbnQoJGltcGxlbWVudGF0aW9uIjsKKyAgICAgICAg
ICAgICAgICAkZ2V0dGVyQ29udGVudFRhaWwgLj0gIl0iOworICAgICAgICAgICAgfSBlbHNpZiAo
JHR5cGVNYWtlciBuZSAiIikgeworICAgICAgICAgICAgICAgICMgU3Vycm91bmQgZ2V0dGVyIHdp
dGggVHlwZU1ha2VyCisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIlskYXR0
cmlidXRlVHlwZVNhbnNQdHIgJHR5cGVNYWtlcjoiIC4gJGdldHRlckNvbnRlbnRIZWFkOworICAg
ICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50VGFpbCAuPSAiXSI7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJVc2VzUGFzc1JlZlB0ciJ9KSB7CisgICAgICAgICAgICAgICAgJGdl
dHRlckNvbnRlbnRUYWlsID0gIikuZ2V0KCIgLiAkZnVuY3Rpb25Db250ZW50VGFpbDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbXkgJGdldHRlckNvbnRlbnQ7Cisg
ICAgICAgICAgICBpZiAoJGhhc0dldHRlckV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICRn
ZXR0ZXJDb250ZW50ID0gJGdldHRlckNvbnRlbnRIZWFkIC4gImVjIiAuICRnZXR0ZXJDb250ZW50
VGFpbDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJGdldHRlckNvbnRl
bnQgPSAkZ2V0dGVyQ29udGVudEhlYWQgLiAkZ2V0dGVyQ29udGVudFRhaWw7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkZ2V0dGVy
U2lnKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkZXhjZXB0aW9uSW5pdFxuIikgaWYgJGhhc0dldHRl
ckV4Y2VwdGlvbjsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAk
Z2V0dGVyQ29udGVudDtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
JGV4Y2VwdGlvblJhaXNlT25FcnJvclxuIikgaWYgJGhhc0dldHRlckV4Y2VwdGlvbjsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKworICAgICAgICAgICAgIyAtIFNF
VFRFUgorICAgICAgICAgICAgaWYgKCEkYXR0cmlidXRlSXNSZWFkb25seSkgeworICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgIyBFeGNlcHRpb24gaGFuZGxpbmcKKyAgICAgICAgICAgICAg
ICBteSAkaGFzU2V0dGVyRXhjZXB0aW9uID0gQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25z
fTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBteSAkc2V0dGVyTmFtZSA9ICJz
ZXQiIC4gdWNmaXJzdCgkYXR0cmlidXRlTmFtZSk7CisgICAgICAgICAgICAgICAgbXkgJHNldHRl
clNpZyA9ICItICh2b2lkKSRzZXR0ZXJOYW1lOigkYXR0cmlidXRlVHlwZSkkYXR0cmlidXRlTmFt
ZVxuIjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgJHNldHRlclNpZyk7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4i
KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoJGhhc1NldHRlckV4Y2Vw
dGlvbikgeworICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBhc3NlcnRzIGV4c2lzdCBpbiB0
aGUgZXhzaXN0aW5nIGJpbmRpbmdzLCBidXQgSSBhbSB1bnN1cmUgd2h5IHRoZXkgYXJlIAorICAg
ICAgICAgICAgICAgICAgICAjIHRoZXJlIGluIHRoZSBmaXJzdCBwbGFjZTsKKyAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUKCRhdHRyaWJ1dGVOYW1lKTtc
blxuIik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICRleGNlcHRpb25Jbml0XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgJGltcGxlbWVudGF0aW9uLT4kc2V0dGVyTmFtZSgkYXR0cmli
dXRlTmFtZSwgZWMpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICRleGNlcHRpb25SYWlzZU9uRXJyb3JcbiIpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsZW1l
bnRhdGlvbi0+JHNldHRlck5hbWUoJGF0dHJpYnV0ZU5hbWUpO1xuIik7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAifVxuXG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgICMgLSBG
dW5jdGlvbnMKKyAgICBpZiAoJG51bUZ1bmN0aW9ucyA+IDApIHsKKyAgICAgICAgZm9yZWFjaCAo
QHskZGF0YU5vZGUtPmZ1bmN0aW9uc30pIHsKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbiA9ICRf
OworCisgICAgICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGUoJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PnR5cGUpOworCisgICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPm5hbWU7CisgICAgICAgICAgICBteSAkcmV0dXJuVHlwZSA9IEdldE9iakNUeXBlKCRm
dW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKTsKKyAgICAgICAgICAgIG15ICRoYXNQYXJhbWV0ZXJz
ID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OworICAgICAgICAgICAgbXkgJHJhaXNlc0V4Y2Vw
dGlvbnMgPSBAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc307CisKKyAgICAgICAgICAgIG15
IEBwYXJhbWV0ZXJOYW1lcyA9ICgpOworICAgICAgICAgICAgbXkgQG5lZWRzQXNzZXJ0ID0gKCk7
CisgICAgICAgICAgICBteSAlY3VzdG9tID0gKCk7CisKKyAgICAgICAgICAgIG15ICRmdW5jdGlv
blNpZyA9ICItICgkcmV0dXJuVHlwZSkkZnVuY3Rpb25OYW1lIjsKKyAgICAgICAgICAgIGZvcmVh
Y2ggKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgeworICAgICAgICAgICAgICAgIG15ICRwYXJh
bSA9ICRfOworCisgICAgICAgICAgICAgICAgbXkgJHBhcmFtVHlwZSA9IEdldE9iakNUeXBlKCRw
YXJhbS0+dHlwZSk7CisgICAgICAgICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCRwYXJhbS0+
dHlwZSk7CisKKyAgICAgICAgICAgICAgICBteSAkcGFyYW1OYW1lID0gJHBhcmFtLT5uYW1lOwor
CisgICAgICAgICAgICAgICAgIyBGSVhNRTogc2hvdWxkIG1vdmUgdGhpcyBvdXQgaW50byBpdCdz
IG93biBmdWN0aW9uIHRvIHRha2UgY2FyZSBvZiBwb3NzaWJsZSBzcGVjaWFsIGNhc2VzLgorICAg
ICAgICAgICAgICAgIG15ICRpZGxUeXBlID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKCRw
YXJhbS0+dHlwZSk7CisgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1ByaW1p
dGl2ZVR5cGUoJGlkbFR5cGUpIG9yICRpZGxUeXBlIGVxICJET01TdHJpbmciKSB7CisgICAgICAg
ICAgICAgICAgICAgIHB1c2goQHBhcmFtZXRlck5hbWVzLCAkcGFyYW1OYW1lKTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2lmICgkaWRsVHlwZSBlcSAiWFBhdGhOU1Jlc29sdmVyIikgeworICAgICAg
ICAgICAgICAgICAgICBteSAkaW1wbEdldHRlciA9ICJbbmF0aXZlUmVzb2x2ZXIgX3hwYXRoTlNS
ZXNvbHZlcl0iOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBwYXJhbWV0ZXJOYW1lcywgJGlt
cGxHZXR0ZXIpOworICAgICAgICAgICAgICAgICAgICAkbmVlZHNDdXN0b217IlhQYXRoTlNSZXNv
bHZlciJ9ID0gJHBhcmFtTmFtZTsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkaWRsVHlwZSBl
cSAiWFBhdGhSZXN1bHQiKSB7CisgICAgICAgICAgICAgICAgICAgIG15ICRpbXBsR2V0dGVyID0g
IlsiIC4gJHBhcmFtTmFtZSAuICIgX3hwYXRoUmVzdWx0XSI7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQHBhcmFtZXRlck5hbWVzLCAkaW1wbEdldHRlcik7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGltcGxHZXR0ZXIgPSAiWyIgLiAkcGFyYW1O
YW1lIC4gIiBfIiAuIGxjZmlyc3QoJGlkbFR5cGUpIC4gIl0iOworICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBwYXJhbWV0ZXJOYW1lcywgJGltcGxHZXR0ZXIpOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIGlmICghJHBhcmFtLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNJ
bmRleCJ9KSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQG5lZWRzQXNzZXJ0LCAiICAgIEFT
U0VSVCgkcGFyYW1OYW1lKTtcbiIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgICRmdW5jdGlvblNpZyAuPSAiOigkcGFyYW1UeXBlKSRwYXJhbU5hbWUgIjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICMgcmVtb3ZlIGFueSB0cmFpbGluZyBzcGFjZXMuCisgICAgICAg
ICAgICAkZnVuY3Rpb25TaWcgPX4gcy9ccyskLy87CisKKyAgICAgICAgICAgIG15IEBmdW5jdGlv
bkNvbnRlbnQgPSAoKTsKKworICAgICAgICAgICAgaWYgKCRyZXR1cm5UeXBlIGVxICJ2b2lkIikg
eworICAgICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlICd2b2lkJyByZXR1cm4gdHlwZS4KKwor
ICAgICAgICAgICAgICAgIG15ICRmdW5jdGlvbkNvbnRlbnRIZWFkID0gIiRpbXBsZW1lbnRhdGlv
bi0+JGZ1bmN0aW9uTmFtZSgiOworICAgICAgICAgICAgICAgIG15ICRmdW5jdGlvbkNvbnRlbnRU
YWlsID0gIik7IjsKKyAgICAgICAgICAgICAgICBteSAkY29udGVudCA9ICIiOworCisgICAgICAg
ICAgICAgICAgaWYgKCRoYXNQYXJhbWV0ZXJzKSB7CisgICAgICAgICAgICAgICAgICAgIG15ICRw
YXJhbXMgPSBqb2luKCIsICIsIEBwYXJhbWV0ZXJOYW1lcyk7CisgICAgICAgICAgICAgICAgICAg
IGlmICgkcmFpc2VzRXhjZXB0aW9ucykgeworICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRl
bnQgPSAkZnVuY3Rpb25Db250ZW50SGVhZCAuICRwYXJhbXMgLiAiLCBlYyIgLiAkZnVuY3Rpb25D
b250ZW50VGFpbDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICRjb250ZW50ID0gJGZ1bmN0aW9uQ29udGVudEhlYWQgLiAkcGFyYW1zIC4gJGZ1
bmN0aW9uQ29udGVudFRhaWw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoJHJhaXNlc0V4Y2VwdGlvbnMpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gJGZ1bmN0aW9uQ29udGVudEhlYWQg
LiAiZWMiIC4gJGZ1bmN0aW9uQ29udGVudFRhaWw7CisgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9ICRmdW5jdGlvbkNvbnRlbnRI
ZWFkIC4gJGZ1bmN0aW9uQ29udGVudFRhaWw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCRyYWlz
ZXNFeGNlcHRpb25zKSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVu
dCwgIiAgICAkZXhjZXB0aW9uSW5pdFxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGZ1
bmN0aW9uQ29udGVudCwgIiAgICAkY29udGVudFxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICAkZXhjZXB0aW9uUmFpc2VPbkVycm9yXG4iKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlv
bkNvbnRlbnQsICIgICAgJGNvbnRlbnRcbiIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBteSAkZnVu
Y3Rpb25Db250ZW50SGVhZCA9ICRpbXBsZW1lbnRhdGlvbiAuICItPiIgLiAkZnVuY3Rpb25OYW1l
IC4gIigiOworICAgICAgICAgICAgICAgIG15ICRmdW5jdGlvbkNvbnRlbnRUYWlsID0gIikiOwor
CisgICAgICAgICAgICAgICAgbXkgJHR5cGVNYWtlciA9IEdldE9iakNUeXBlTWFrZXIoJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPnR5cGUpOworICAgICAgICAgICAgICAgIHVubGVzcyAoJHR5cGVNYWtl
ciBlcSAiIikgeworICAgICAgICAgICAgICAgICAgICBteSAkcmV0dXJuVHlwZUNsYXNzID0gIiI7
CisgICAgICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSBlcSAi
WFBhdGhOU1Jlc29sdmVyIikgeworICAgICAgICAgICAgICAgICAgICAgICAgIyBTcGVjaWFsIGNh
c2UgWFBhdGhOU1Jlc29sdmVyCisgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuVHlwZUNs
YXNzID0gIkRPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciI7CisgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAjIFJlbW92ZSB0cmFpbGluZyAiICoiIGZy
b20gcG9pbnRlciB0eXBlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICRyZXR1cm5UeXBlQ2xh
c3MgPSAkcmV0dXJuVHlwZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICRyZXR1cm5UeXBlQ2xh
c3MgPX4gcy8gXCokLy87CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
ICAgICAjIFN1cnJvdW5kIGdldHRlciB3aXRoIFR5cGVNYWtlcgorICAgICAgICAgICAgICAgICAg
ICAkZnVuY3Rpb25Db250ZW50SGVhZCA9ICJbJHJldHVyblR5cGVDbGFzcyAkdHlwZU1ha2VyOiIg
LiAkZnVuY3Rpb25Db250ZW50SGVhZDsKKyAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uQ29u
dGVudFRhaWwgLj0gIl0iOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlm
ICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlVzZXNQYXNzUmVm
UHRyIn0pIHsKKyAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uQ29udGVudFRhaWwgPSAiKS5n
ZXQoIiAuICRmdW5jdGlvbkNvbnRlbnRUYWlsOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIG15ICRjb250ZW50ID0gIiI7CisKKyAgICAgICAgICAgICAgICBpZiAoJGhhc1Bh
cmFtZXRlcnMpIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHBhcmFtcyA9IGpvaW4oIiwgIiAs
IEBwYXJhbWV0ZXJOYW1lcyk7CisgICAgICAgICAgICAgICAgICAgIGlmICgkcmFpc2VzRXhjZXB0
aW9ucykgeworICAgICAgICAgICAgICAgICAgICAgICAgIyBBIHRlbXBhcmFyeSB2YXJpYWJsZSBp
cyBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9ICRmdW5jdGlvbkNv
bnRlbnRIZWFkIC4gJHBhcmFtcyAuICIsIGVjIiAuICRmdW5jdGlvbkNvbnRlbnRUYWlsOworICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRl
bnQgPSAkZnVuY3Rpb25Db250ZW50SGVhZCAuICRwYXJhbXMgLiAkZnVuY3Rpb25Db250ZW50VGFp
bDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmICgkcmFpc2VzRXhjZXB0aW9ucykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgIyBBIHRlbXBhcmFyeSB2YXJpYWJsZSBpcyBuZWVkZWQuCisgICAgICAgICAgICAg
ICAgICAgICAgICAkY29udGVudCA9ICRmdW5jdGlvbkNvbnRlbnRIZWFkIC4gImVjIiAuICRmdW5j
dGlvbkNvbnRlbnRUYWlsOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkZnVuY3Rpb25Db250ZW50SGVhZCAuICRmdW5jdGlv
bkNvbnRlbnRUYWlsOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICgk
cmFpc2VzRXhjZXB0aW9ucykgeworICAgICAgICAgICAgICAgICAgICAjIERpZmZlcmVudGlhdGVk
IGJldHdlZW4gd2hlbiB0aGUgcmV0dXJuIHR5cGUgaXMgYSBwb2ludGVyIGFuZAorICAgICAgICAg
ICAgICAgICAgICAjIG5vdCBmb3Igd2hpdGUgc3BhY2UgaXNzdWUgKGllLiBGb28gKnJlc3VsdCB2
cy4gaW50IHJlc3VsdCkuCisgICAgICAgICAgICAgICAgICAgIGlmICgkcmV0dXJuVHlwZSA9fiAv
XCokLykgeworICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkcmV0dXJuVHlwZSAu
ICJyZXN1bHQgPSAiIC4gJGNvbnRlbnQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9ICRyZXR1cm5UeXBlIC4gIiByZXN1bHQg
PSAiIC4gJGNvbnRlbnQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICAkZXhj
ZXB0aW9uSW5pdFxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVu
dCwgIiAgICAkY29udGVudDtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlv
bkNvbnRlbnQsICIgICAgJGV4Y2VwdGlvblJhaXNlT25FcnJvclxuIik7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICByZXR1cm4gcmVzdWx0O1xuIik7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rp
b25Db250ZW50LCAiICAgIHJldHVybiAkY29udGVudDtcbiIpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIkZnVuY3Rp
b25TaWdcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgIyBzcGVjaWFsIGNhc2UgdGhlIFhQYXRoTlNSZXNvbHZlcgor
ICAgICAgICAgICAgaWYgKGRlZmluZWQgJG5lZWRzQ3VzdG9teyJYUGF0aE5TUmVzb2x2ZXIifSkg
eworICAgICAgICAgICAgICAgIG15ICRwYXJhbU5hbWUgPSAkbmVlZHNDdXN0b217IlhQYXRoTlNS
ZXNvbHZlciJ9OworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgk
cGFyYW1OYW1lICYmICFbJHBhcmFtTmFtZSBpc01lbWJlck9mQ2xhc3M6W0RPTU5hdGl2ZVhQYXRo
TlNSZXNvbHZlciBjbGFzc11dKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0dlbmVyaWNFeGNlcHRpb24gZm9ybWF0
OlxAXCJjcmVhdGVFeHByZXNzaW9uIGN1cnJlbnRseSBkb2VzIG5vdCB3b3JrIHdpdGggY3VzdG9t
IE5TIHJlc29sdmVyc1wiXTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciAqbmF0aXZlUmVzb2x2ZXIgPSAoRE9NTmF0
aXZlWFBhdGhOU1Jlc29sdmVyICopJHBhcmFtTmFtZTtcblxuIik7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgQGZ1bmN0aW9uQ29udGVudCk7CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgICMgQ2xlYXIgdGhlIGhhc2gKKyAgICAgICAgICAgICVuZWVkc0N1c3RvbSA9ICgpOworICAg
ICAgICB9CisgICAgfQorCisgICAgIyBFTkQgaW1wbGVtZW50YXRpb24KKyAgICBwdXNoKEBpbXBs
Q29udGVudCwgIlxAZW5kXG4iKTsKK30KKworIyBJbnRlcm5hbCBoZWxwZXIKK3N1YiBXcml0ZURh
dGEKK3sKKyAgICBpZiAoZGVmaW5lZCgkSU1QTCkpIHsKKyAgICAgICAgIyBXcml0ZSBjb250ZW50
IHRvIGZpbGUuCisgICAgICAgIHByaW50ICRJTVBMIEBpbXBsQ29udGVudEhlYWRlcjsKKyAgICAg
ICAgCisgICAgICAgIGZvcmVhY2ggbXkgJGltcGxJbmNsdWRlIChzb3J0IGtleXMoJWltcGxJbmNs
dWRlcykpIHsKKyAgICAgICAgICAgIHByaW50ICRJTVBMICIjaW1wb3J0IFwiJGltcGxJbmNsdWRl
XCJcbiI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHByaW50ICRJTVBMIEBpbXBsQ29u
dGVudDsKKyAgICAgICAgY2xvc2UoJElNUEwpOworICAgICAgICB1bmRlZigkSU1QTCk7CisgICAg
ICAgIAorICAgICAgICBAaW1wbEhlYWRlckNvbnRlbnQgPSAiIjsKKyAgICAgICAgQGltcGxDb250
ZW50ID0gIiI7ICAgIAorICAgICAgICAlaW1wbEluY2x1ZGVzID0gKCk7CisgICAgfQorICAgICAg
ICAKKyAgICBpZiAoZGVmaW5lZCgkSEVBREVSKSkgeworICAgICAgICAjIFdyaXRlIGNvbnRlbnQg
dG8gZmlsZS4KKyAgICAgICAgcHJpbnQgJEhFQURFUiBAaGVhZGVyQ29udGVudEhlYWRlcjsKKyAg
ICAgICAgCisgICAgICAgIGZvcmVhY2ggbXkgJGZvcndhcmRDbGFzc0RlY2xhcmF0aW9uIChzb3J0
IGtleXMoJWhlYWRlckZvcndhcmREZWNsYXJhdGlvbnMpKSB7CisgICAgICAgICAgICBwcmludCAk
SEVBREVSICJcQGNsYXNzICRmb3J3YXJkQ2xhc3NEZWNsYXJhdGlvbjtcbiI7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGZvcmVhY2ggbXkgJGZvcndhcmRQcm90b2NvbERlY2xhcmF0aW9u
IChzb3J0IGtleXMoJWhlYWRlckZvcndhcmREZWNsYXJhdGlvbnNGb3JQcm90b2NvbHMpKSB7Cisg
ICAgICAgICAgICBwcmludCAkSEVBREVSICJcQHByb3RvY29sICRmb3J3YXJkUHJvdG9jb2xEZWNs
YXJhdGlvbjtcbiI7CisgICAgICAgIH0KKworICAgICAgICBwcmludCAkSEVBREVSIEBoZWFkZXJD
b250ZW50OworICAgICAgICBjbG9zZSgkSEVBREVSKTsKKyAgICAgICAgdW5kZWYoJEhFQURFUik7
CisgICAgICAgIAorICAgICAgICBAaGVhZGVyQ29udGVudEhlYWRlciA9ICIiOworICAgICAgICBA
aGVhZGVyQ29udGVudCA9ICIiOworICAgICAgICAlaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9ucyA9
ICgpOworICAgIH0KK30KKworMTsKSW5kZXg6IFdlYkNvcmUvZG9tL0F0dHIuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL0F0dHIuaWRsCShyZXZpc2lvbiAxNjA2NykKKysrIFdlYkNvcmUv
ZG9tL0F0dHIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA2
IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0zNCw3ICszNSw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgCiAgICAgICAgIC8vIGV4
dGVuc2lvbnMKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ1NTU3R5bGVEZWNsYXJhdGlv
biBzdHlsZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtPYmpDQ2F0YWdvcnk9RE9NQXR0
ckV4dGVuc2lvbnNdIENTU1N0eWxlRGVjbGFyYXRpb24gc3R5bGU7CiAgICAgfTsKIAogfQpJbmRl
eDogV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9DREFUQVNlY3Rpb24uaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vQ0RBVEFTZWN0
aW9uLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAs
CisgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqLworCittb2R1bGUgY29yZSB7CisK
KyAgICBpbnRlcmZhY2UgQ0RBVEFTZWN0aW9uIDogVGV4dCB7CisgICAgfTsKKworfQpJbmRleDog
V2ViQ29yZS9kb20vQ29tbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ29tbWVu
dC5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9Db21tZW50LmlkbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vp
bmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgKiBCb3N0b24sIE1BIDAy
MTExLTEzMDcsIFVTQS4KKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2UgQ29t
bWVudCA6IENoYXJhY3RlckRhdGEgeworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvZG9tL0RP
TUltcGxlbWVudGF0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9ET01JbXBsZW1l
bnRhdGlvbi5pZGwJKHJldmlzaW9uIDE2MDY3KQorKysgV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50
YXRpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNh
bXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yOCwyNCArMjksMjQgQEAgbW9kdWxlIGNvcmUgewogCiAgICAgICAgIC8vIERPTSBMZXZlbCAy
CiAKLSAgICAgICAgRG9jdW1lbnRUeXBlIGNyZWF0ZURvY3VtZW50VHlwZShpbiBET01TdHJpbmcg
cXVhbGlmaWVkTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBET01TdHJpbmcgcHVibGljSWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gRE9NU3RyaW5nIHN5c3RlbUlkKQorICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIERv
Y3VtZW50VHlwZSBjcmVhdGVEb2N1bWVudFR5cGUoaW4gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBET01TdHJpbmcgcHVibGljSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgc3lzdGVtSWQpCiAgICAgICAg
ICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgRG9jdW1lbnQgY3JlYXRlRG9jdW1l
bnQoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLCAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW0NvbnZlcnROdWxsVG9OdWxsU3Ry
aW5nXSBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRG9jdW1lbnRUeXBlIGRvY3R5cGUp
CisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gRG9jdW1lbnQgY3JlYXRlRG9jdW1lbnQoaW4gW0Nv
bnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbQ29udmVydE51bGxU
b051bGxTdHJpbmddIERPTVN0cmluZyBxdWFsaWZpZWROYW1lLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbQ29udmVydE51bGxUb051bGxTdHJp
bmddIERvY3VtZW50VHlwZSBkb2N0eXBlKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CiAKICAgICAgICAgLy8gRE9NSW1wbGVtZW50YXRpb25DU1MgaW50ZXJmYWNlIGZyb20gRE9N
IExldmVsIDIgQ1NTCiAKLSAgICAgICAgQ1NTU3R5bGVTaGVldCBjcmVhdGVDU1NTdHlsZVNoZWV0
KGluIERPTVN0cmluZyB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIERPTVN0cmluZyBtZWRpYSkKKyAgICAgICAgW09iakNDYXRhZ29yeT1ET01JbXBs
ZW1lbnRhdGlvbkNTUywgVXNlc1Bhc3NSZWZQdHJdIENTU1N0eWxlU2hlZXQgY3JlYXRlQ1NTU3R5
bGVTaGVldChpbiBET01TdHJpbmcgdGl0bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gRE9NU3RyaW5nIG1lZGlhKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAKICAgICAgICAgLy8gSFRNTERPTUltcGxlbWVudGF0aW9uIGludGVyZmFjZSBmcm9t
IERPTSBMZXZlbCAyIEhUTUwKIAotICAgICAgICBIVE1MRG9jdW1lbnQgY3JlYXRlSFRNTERvY3Vt
ZW50KGluIERPTVN0cmluZyB0aXRsZSk7CisgICAgICAgIFtPYmpDQ2F0YWdvcnk9RE9NSW1wbGVt
ZW50YXRpb25FeHRlbnNpb25zLCBVc2VzUGFzc1JlZlB0cl0gSFRNTERvY3VtZW50IGNyZWF0ZUhU
TUxEb2N1bWVudChpbiBET01TdHJpbmcgdGl0bGUpOwogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNv
cmUvZG9tL0RvY3VtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5p
ZGwJKHJldmlzaW9uIDE2MDY3KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBD
b21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53
ZWluaWdAZ21haWwuY29tPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yOSwxNDQgKzMwLDE0NSBA
QCBtb2R1bGUgY29yZSB7CiAgICAgICAgIAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxl
bWVudCBkb2N1bWVudEVsZW1lbnQ7CiAgICAgICAgIAotICAgICAgICBFbGVtZW50IGNyZWF0ZUVs
ZW1lbnQoaW4gRE9NU3RyaW5nIHRhZ05hbWUpCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gRWxl
bWVudCBjcmVhdGVFbGVtZW50KGluIERPTVN0cmluZyB0YWdOYW1lKQogICAgICAgICAgICAgcmFp
c2VzIChET01FeGNlcHRpb24pOwogICAgICAgICAKLSAgICAgICAgRG9jdW1lbnRGcmFnbWVudCBj
cmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gRG9jdW1l
bnRGcmFnbWVudCBjcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAgICAgIAotICAgICAgICBU
ZXh0IGNyZWF0ZVRleHROb2RlKGluIERPTVN0cmluZyBkYXRhKTsKKyAgICAgICAgW1VzZXNQYXNz
UmVmUHRyXSBUZXh0IGNyZWF0ZVRleHROb2RlKGluIERPTVN0cmluZyBkYXRhKTsKICAgICAgICAg
Ci0gICAgICAgIENvbW1lbnQgY3JlYXRlQ29tbWVudChpbiBET01TdHJpbmcgZGF0YSk7CisgICAg
ICAgIFtVc2VzUGFzc1JlZlB0cl0gQ29tbWVudCBjcmVhdGVDb21tZW50KGluIERPTVN0cmluZyBk
YXRhKTsKICAgICAgICAgCi0gICAgICAgIENEQVRBU2VjdGlvbiBjcmVhdGVDREFUQVNlY3Rpb24o
aW4gRE9NU3RyaW5nIGRhdGEpCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gQ0RBVEFTZWN0aW9u
IGNyZWF0ZUNEQVRBU2VjdGlvbihpbiBET01TdHJpbmcgZGF0YSkKICAgICAgICAgICAgIHJhaXNl
cyhET01FeGNlcHRpb24pOwogICAgICAgICAKLSAgICAgICAgUHJvY2Vzc2luZ0luc3RydWN0aW9u
IGNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihpbiBET01TdHJpbmcgdGFyZ2V0LCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBE
T01TdHJpbmcgZGF0YSkKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24gY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGluIERPTVN0cmluZyB0YXJnZXQsIAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIGRhdGEpCiAgICAgICAgICAgICByYWlzZXMg
KERPTUV4Y2VwdGlvbik7CiAgICAgICAgIAotICAgICAgICBBdHRyIGNyZWF0ZUF0dHJpYnV0ZShp
biBET01TdHJpbmcgbmFtZSkKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBBdHRyIGNyZWF0ZUF0
dHJpYnV0ZShpbiBET01TdHJpbmcgbmFtZSkKICAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0
aW9uKTsKICAgICAgICAgCi0gICAgICAgIEVudGl0eVJlZmVyZW5jZSBjcmVhdGVFbnRpdHlSZWZl
cmVuY2UoaW4gRE9NU3RyaW5nIG5hbWUpCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gRW50aXR5
UmVmZXJlbmNlIGNyZWF0ZUVudGl0eVJlZmVyZW5jZShpbiBET01TdHJpbmcgbmFtZSkKICAgICAg
ICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICAKLSAgICAgICAgTm9kZUxpc3Qg
Z2V0RWxlbWVudHNCeVRhZ05hbWUoaW4gRE9NU3RyaW5nIHRhZ25hbWUpOworICAgICAgICBbVXNl
c1Bhc3NSZWZQdHJdIE5vZGVMaXN0IGdldEVsZW1lbnRzQnlUYWdOYW1lKGluIERPTVN0cmluZyB0
YWduYW1lKTsKICAgICAgICAgCiAgICAgICAgIC8vIERPTSBMZXZlbCAyIENvcmUKICAgICAgICAg
Ci0gICAgICAgIE5vZGUgaW1wb3J0Tm9kZShpbiBOb2RlIGltcG9ydGVkTm9kZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gZGVlcCkKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRy
XSBOb2RlIGltcG9ydE5vZGUoaW4gTm9kZSBpbXBvcnRlZE5vZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gZGVlcCkKICAgICAgICAgICAgIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgCi0gICAgICAgIEVsZW1lbnQgY3JlYXRlRWxl
bWVudE5TKGluIERPTVN0cmluZyBuYW1lc3BhY2VVUkksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIERPTVN0cmluZyBxdWFsaWZpZWROYW1lKQorICAgICAgICBbVXNlc1Bhc3NS
ZWZQdHJdIEVsZW1lbnQgY3JlYXRlRWxlbWVudE5TKGluIERPTVN0cmluZyBuYW1lc3BhY2VVUkks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9N
U3RyaW5nIHF1YWxpZmllZE5hbWUpCiAgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7
CiAgICAgICAgIAotICAgICAgICBBdHRyIGNyZWF0ZUF0dHJpYnV0ZU5TKGluIERPTVN0cmluZyBu
YW1lc3BhY2VVUkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5n
IHF1YWxpZmllZE5hbWUpCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gQXR0ciBjcmVhdGVBdHRy
aWJ1dGVOUyhpbiBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpCiAg
ICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIAotICAgICAgICBOb2Rl
TGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKGluIERPTVN0cmluZyBuYW1lc3BhY2VVUkksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIGxvY2Fs
TmFtZSk7CisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gTm9kZUxpc3QgZ2V0RWxlbWVudHNCeVRh
Z05hbWVOUyhpbiBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIGxvY2FsTmFt
ZSk7CiAgICAgICAgIAogICAgICAgICBFbGVtZW50IGdldEVsZW1lbnRCeUlkKGluIERPTVN0cmlu
ZyBlbGVtZW50SWQpOwogCiAgICAgICAgIC8vIERPTSBMZXZlbCAyIEV2ZW50cyAoRG9jdW1lbnRF
dmVudHMgaW50ZXJmYWNlKQogCi0gICAgICAgIEV2ZW50IGNyZWF0ZUV2ZW50KGluIERPTVN0cmlu
ZyBldmVudFR5cGUpCisgICAgICAgIFtPYmpDQ2F0YWdvcnk9RE9NRG9jdW1lbnRFdmVudCwgVXNl
c1Bhc3NSZWZQdHJdIEV2ZW50IGNyZWF0ZUV2ZW50KGluIERPTVN0cmluZyBldmVudFR5cGUpCiAg
ICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICAvLyBET00gTGV2ZWwg
MiBUcmFudmVyc2FsIGFuZCBSYW5nZSAoRG9jdW1lbnRSYW5nZSBpbnRlcmZhY2UpCiAKLSAgICAg
ICAgUmFuZ2UgY3JlYXRlUmFuZ2UoKTsKKyAgICAgICAgW09iakNDYXRhZ29yeT1ET01Eb2N1bWVu
dFJhbmdlLCBVc2VzUGFzc1JlZlB0cl0gUmFuZ2UgY3JlYXRlUmFuZ2UoKTsKIAogICAgICAgICAv
LyBET00gTGV2ZWwgMiBUcmFudmVyc2FsIGFuZCBSYW5nZSAoRG9jdW1lbnRUcmF2ZXJzYWwgaW50
ZXJmYWNlKQogCi0gICAgICAgIE5vZGVJdGVyYXRvciBjcmVhdGVOb2RlSXRlcmF0b3IoaW4gTm9k
ZSByb290LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB1bnNp
Z25lZCBsb25nIHdoYXRUb1Nob3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gTm9kZUZpbHRlciBmaWx0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gYm9vbGVhbiBlbnRpdHlSZWZlcmVuY2VFeHBhbnNpb24pCisgICAgICAg
IFtFeGNsdWRlPU9iakNdIE5vZGVJdGVyYXRvciBjcmVhdGVOb2RlSXRlcmF0b3IoaW4gTm9kZSBy
b290LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbiB1bnNpZ25lZCBsb25nIHdoYXRUb1Nob3csCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gTm9kZUZpbHRlciBmaWx0ZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
Ym9vbGVhbiBlbnRpdHlSZWZlcmVuY2VFeHBhbnNpb24pCiAgICAgICAgICAgICByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKIAotICAgICAgICBUcmVlV2Fsa2VyIGNyZWF0ZVRyZWVXYWxrZXIoaW4gTm9k
ZSByb290LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHVuc2lnbmVk
IGxvbmcgd2hhdFRvU2hvdywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBOb2RlRmlsdGVyIGZpbHRlciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBib29sZWFuIGVudGl0eVJlZmVyZW5jZUV4cGFuc2lvbikKKyAgICAgICAgW0V4Y2x1ZGU9
T2JqQ10gVHJlZVdhbGtlciBjcmVhdGVUcmVlV2Fsa2VyKGluIE5vZGUgcm9vdCwgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB1bnNpZ25lZCBs
b25nIHdoYXRUb1Nob3csIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gTm9kZUZpbHRlciBmaWx0ZXIsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBlbnRpdHlSZWZlcmVuY2VF
eHBhbnNpb24pCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICAv
LyBET00gTGV2ZWwgMiBBYnN0cmFjdCBWaWV3cyAoRG9jdW1lbnRWaWV3IGludGVyZmFjZSkKIAot
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IGRlZmF1bHRWaWV3OworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgW09iakNDYXRhZ29yeT1ET01Eb2N1bWVudFZpZXddIERPTVdp
bmRvdyBkZWZhdWx0VmlldzsKIAogICAgICAgICAvLyBET00gTGV2ZWwgMiBTdHlsZSAoRG9jdW1l
bnRTdHlsZSBpbnRlcmZhY2UpCiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFN0eWxlU2hl
ZXRMaXN0IHN0eWxlU2hlZXRzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW09iakNDYXRh
Z29yeT1ET01Eb2N1bWVudFN0eWxlXSBTdHlsZVNoZWV0TGlzdCBzdHlsZVNoZWV0czsKIAogICAg
ICAgICAvLyBET00gTGV2ZWwgMiBTdHlsZSAoRG9jdW1lbnRDU1MgaW50ZXJmYWNlKQogCi0gICAg
ICAgIENTU1N0eWxlRGVjbGFyYXRpb24gZ2V0T3ZlcnJpZGVTdHlsZShpbiBFbGVtZW50IGVsdCwg
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJp
bmcgcHNldWRvRWx0KTsKKyAgICAgICAgW09iakNDYXRhZ29yeT1ET01Eb2N1bWVudENTU10gQ1NT
U3R5bGVEZWNsYXJhdGlvbiBnZXRPdmVycmlkZVN0eWxlKGluIEVsZW1lbnQgZWx0LCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIERPTVN0cmluZyBwc2V1ZG9FbHQpOwogCiAgICAgICAgIC8vIERPTSBM
ZXZlbCAzIENvcmUKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3Ry
aW5nVG89TnVsbF0gRE9NU3RyaW5nIGlucHV0RW5jb2Rpbmc7Ci0gICAgICAgIE5vZGUgYWRvcHRO
b2RlKGluIE5vZGUgc291cmNlKQorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbnZlcnRO
dWxsU3RyaW5nVG89TnVsbCwgRXhjbHVkZT1PYmpDXSBET01TdHJpbmcgaW5wdXRFbmNvZGluZzsK
KyAgICAgICAgCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gTm9kZSBhZG9wdE5vZGUoaW4gTm9k
ZSBzb3VyY2UpCiAgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKICNpZmRlZiBY
UEFUSF9TVVBQT1JUCiAgICAgICAgIC8vIERPTSBMZXZlbCAzIFhQYXRoIChYUGF0aEV2YWx1YXRv
ciBpbnRlcmZhY2UpCi0gICAgICAgIFhQYXRoRXhwcmVzc2lvbiBjcmVhdGVFeHByZXNzaW9uKGlu
IERPTVN0cmluZyBleHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBYUGF0aE5TUmVzb2x2ZXIgcmVzb2x2ZXIpCisgICAgICAgIFtPYmpDQ2F0YWdv
cnk9RE9NRG9jdW1lbnRYUGF0aCwgVXNlc1Bhc3NSZWZQdHJdIFhQYXRoRXhwcmVzc2lvbiBjcmVh
dGVFeHByZXNzaW9uKGluIERPTVN0cmluZyBleHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBYUGF0aE5TUmVzb2x2ZXIgcmVzb2x2ZXIpCiAgICAgICAgICAgICBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKIAotICAgICAgICBYUGF0aE5TUmVzb2x2ZXIgY3JlYXRlTlNS
ZXNvbHZlcihpbiBOb2RlIG5vZGVSZXNvbHZlcik7CisgICAgICAgIFtPYmpDQ2F0YWdvcnk9RE9N
RG9jdW1lbnRYUGF0aCwgVXNlc1Bhc3NSZWZQdHJdIFhQYXRoTlNSZXNvbHZlciBjcmVhdGVOU1Jl
c29sdmVyKGluIE5vZGUgbm9kZVJlc29sdmVyKTsKICAgICAgICAgCi0gICAgICAgIFhQYXRoUmVz
dWx0IGV2YWx1YXRlKGluIERPTVN0cmluZyBleHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBOb2RlIGNvbnRleHROb2RlLCAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gWFBhdGhOU1Jlc29sdmVyIHJlc29sdmVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiB1bnNpZ25lZCBzaG9ydCB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbiBYUGF0aFJlc3VsdCBpblJlc3VsdCkKKyAgICAgICAgW09iakNDYXRhZ29yeT1ET01E
b2N1bWVudFhQYXRoLCBVc2VzUGFzc1JlZlB0cl0gWFBhdGhSZXN1bHQgZXZhbHVhdGUoaW4gRE9N
U3RyaW5nIGV4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIE5vZGUgY29udGV4dE5v
ZGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBYUGF0aE5TUmVzb2x2ZXIgcmVzb2x2ZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIHVuc2lnbmVkIHNob3J0IHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIFhQYXRoUmVzdWx0IGluUmVzdWx0KQogICAgICAgICAgICAgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CiAjZW5kaWYKIAogICAgICAgICAvLyBDb21tb24gZXh0ZW5zaW9ucwogCi0gICAg
ICAgIGJvb2xlYW4gZXhlY0NvbW1hbmQoaW4gRE9NU3RyaW5nIGNvbW1hbmQsIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gdXNlckludGVyZmFjZSwgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIHZhbHVlKTsKKyAgICAgICAgW0V4Y2x1ZGU9
T2JqQ10gYm9vbGVhbiBleGVjQ29tbWFuZChpbiBET01TdHJpbmcgY29tbWFuZCwgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiB1c2VySW50ZXJm
YWNlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01T
dHJpbmcgdmFsdWUpOwogCi0gICAgICAgIGJvb2xlYW4gcXVlcnlDb21tYW5kRW5hYmxlZChpbiBE
T01TdHJpbmcgY29tbWFuZCk7CisgICAgICAgIFtFeGNsdWRlPU9iakNdIGJvb2xlYW4gcXVlcnlD
b21tYW5kRW5hYmxlZChpbiBET01TdHJpbmcgY29tbWFuZCk7CiAKLSAgICAgICAgYm9vbGVhbiBx
dWVyeUNvbW1hbmRJbmRldGVybShpbiBET01TdHJpbmcgY29tbWFuZCk7CisgICAgICAgIFtFeGNs
dWRlPU9iakNdIGJvb2xlYW4gcXVlcnlDb21tYW5kSW5kZXRlcm0oaW4gRE9NU3RyaW5nIGNvbW1h
bmQpOwogCi0gICAgICAgIGJvb2xlYW4gcXVlcnlDb21tYW5kU3RhdGUoaW4gRE9NU3RyaW5nIGNv
bW1hbmQpOworICAgICAgICBbRXhjbHVkZT1PYmpDXSBib29sZWFuIHF1ZXJ5Q29tbWFuZFN0YXRl
KGluIERPTVN0cmluZyBjb21tYW5kKTsKIAotICAgICAgICBib29sZWFuIHF1ZXJ5Q29tbWFuZFN1
cHBvcnRlZChpbiBET01TdHJpbmcgY29tbWFuZCk7CisgICAgICAgIFtFeGNsdWRlPU9iakNdIGJv
b2xlYW4gcXVlcnlDb21tYW5kU3VwcG9ydGVkKGluIERPTVN0cmluZyBjb21tYW5kKTsKIAotICAg
ICAgICBbQ29udmVydE51bGxTdHJpbmdUbz1GYWxzZV0gRE9NU3RyaW5nIHF1ZXJ5Q29tbWFuZFZh
bHVlKGluIERPTVN0cmluZyBjb21tYW5kKTsKKyAgICAgICAgW0NvbnZlcnROdWxsU3RyaW5nVG89
RmFsc2UsIEV4Y2x1ZGU9T2JqQ10gRE9NU3RyaW5nIHF1ZXJ5Q29tbWFuZFZhbHVlKGluIERPTVN0
cmluZyBjb21tYW5kKTsKIAogICAgICAgICAvLyBJRSBleHRlbnNpb25zCiAKLSAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBVUkw7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBbRXhjbHVkZT1PYmpDXSBET01TdHJpbmcgVVJMOwogCi0gICAgICAgIGF0dHJpYnV0ZSBbQ29u
dmVydE51bGxTdHJpbmdUbz1VbmRlZmluZWRdIERPTVN0cmluZyBjaGFyc2V0OworICAgICAgICBh
dHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVkLCBFeGNsdWRlPU9iakNdIERP
TVN0cmluZyBjaGFyc2V0OwogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29udmVydE51
bGxTdHJpbmdUbz1VbmRlZmluZWRdIERPTVN0cmluZyBkZWZhdWx0Q2hhcnNldDsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZCwgRXhjbHVk
ZT1PYmpDXSBET01TdHJpbmcgZGVmYXVsdENoYXJzZXQ7CiAKLSAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0gRE9NU3RyaW5nIHJlYWR5U3Rh
dGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJpbmdUbz1VbmRl
ZmluZWQsIEV4Y2x1ZGU9T2JqQ10gRE9NU3RyaW5nIHJlYWR5U3RhdGU7CiAKLSAgICAgICAgRWxl
bWVudCBlbGVtZW50RnJvbVBvaW50KGluIGxvbmcgeCwgaW4gbG9uZyB5KTsKKyAgICAgICAgW0V4
Y2x1ZGU9T2JqQ10gRWxlbWVudCBlbGVtZW50RnJvbVBvaW50KGluIGxvbmcgeCwgaW4gbG9uZyB5
KTsKIAogICAgICAgICAvLyBNb3ppbGxhIGV4dGVuc2lvbnMKIAotICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5nVG89TnVsbF0gRE9NU3RyaW5nIGNoYXJhY3RlclNl
dDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFN0cmluZ1RvPU51bGws
IEV4Y2x1ZGU9T2JqQ10gRE9NU3RyaW5nIGNoYXJhY3RlclNldDsKIAogICAgICAgICAvLyBXZWJL
aXQgZXh0ZW5zaW9ucwogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29udmVydE51bGxT
dHJpbmdUbz1OdWxsXSBET01TdHJpbmcgcHJlZmVycmVkU3R5bGVzaGVldFNldDsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFN0cmluZ1RvPU51bGwsIEV4Y2x1ZGU9T2Jq
Q10gRE9NU3RyaW5nIHByZWZlcnJlZFN0eWxlc2hlZXRTZXQ7CiAKLSAgICAgICAgYXR0cmlidXRl
IFtDb252ZXJ0TnVsbFN0cmluZ1RvPU51bGxdIERPTVN0cmluZyBzZWxlY3RlZFN0eWxlc2hlZXRT
ZXQ7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJpbmdUbz1OdWxsLCBFeGNsdWRl
PU9iakNdIERPTVN0cmluZyBzZWxlY3RlZFN0eWxlc2hlZXRTZXQ7CiAKICAgICB9OwogCkluZGV4
OiBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVt
ZW50LmlkbAkocmV2aXNpb24gMTYwNjcpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBw
bGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxz
YW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzQsMTUgKzM1LDE1
IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoaW4gRE9NU3Ry
aW5nIG5hbWUpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAotICAgICAgICBB
dHRyIGdldEF0dHJpYnV0ZU5vZGUoaW4gRE9NU3RyaW5nIG5hbWUpOworICAgICAgICBbVXNlc1Bh
c3NSZWZQdHJdIEF0dHIgZ2V0QXR0cmlidXRlTm9kZShpbiBET01TdHJpbmcgbmFtZSk7CiAKLSAg
ICAgICAgQXR0ciBzZXRBdHRyaWJ1dGVOb2RlKGluIEF0dHIgbmV3QXR0cikKKyAgICAgICAgW1Vz
ZXNQYXNzUmVmUHRyXSBBdHRyIHNldEF0dHJpYnV0ZU5vZGUoaW4gQXR0ciBuZXdBdHRyKQogICAg
ICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKLSAgICAgICAgQXR0ciByZW1vdmVBdHRy
aWJ1dGVOb2RlKGluIEF0dHIgb2xkQXR0cikKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBBdHRy
IHJlbW92ZUF0dHJpYnV0ZU5vZGUoaW4gQXR0ciBvbGRBdHRyKQogICAgICAgICAgICAgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CiAKLSAgICAgICAgTm9kZUxpc3QgZ2V0RWxlbWVudHNCeVRhZ05hbWUo
aW4gRE9NU3RyaW5nIG5hbWUpOworICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIE5vZGVMaXN0IGdl
dEVsZW1lbnRzQnlUYWdOYW1lKGluIERPTVN0cmluZyBuYW1lKTsKIAogICAgICAgICAvLyBET00g
TGV2ZWwgMiBDb3JlCiAKQEAgLTU4LDEzICs1OSwxMyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIGxvY2FsTmFtZSkKICAgICAgICAg
ICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCi0gICAgICAgIE5vZGVMaXN0IGdldEVsZW1lbnRz
QnlUYWdOYW1lTlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNw
YWNlVVJJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0
cmluZyBsb2NhbE5hbWUpOworICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIE5vZGVMaXN0IGdldEVs
ZW1lbnRzQnlUYWdOYW1lTlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcg
bmFtZXNwYWNlVVJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIGxvY2FsTmFtZSk7CiAKLSAgICAgICAgQXR0ciBn
ZXRBdHRyaWJ1dGVOb2RlTlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcg
bmFtZXNwYWNlVVJJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJp
bmcgbG9jYWxOYW1lKTsKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBBdHRyIGdldEF0dHJpYnV0
ZU5vZGVOUyhpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBuYW1lc3BhY2VV
UkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
RE9NU3RyaW5nIGxvY2FsTmFtZSk7CiAKLSAgICAgICAgQXR0ciBzZXRBdHRyaWJ1dGVOb2RlTlMo
aW4gQXR0ciBuZXdBdHRyKQorICAgICAgICBbVXNlc1Bhc3NSZWZQdHJdIEF0dHIgc2V0QXR0cmli
dXRlTm9kZU5TKGluIEF0dHIgbmV3QXR0cikKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRp
b24pOwogCiAgICAgICAgIGJvb2xlYW4gaGFzQXR0cmlidXRlKGluIERPTVN0cmluZyBuYW1lKTsK
QEAgLTcyLDUzICs3Myw1MyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIGJvb2xlYW4gaGFzQXR0
cmlidXRlTlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNwYWNl
VVJJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBsb2NhbE5h
bWUpOwogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NTdHlsZURlY2xhcmF0aW9uIHN0
eWxlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW09iakNDYXRhZ29yeT1ET01FbGVtZW50
Q1NTSW5saW5lU3R5bGVdIENTU1N0eWxlRGVjbGFyYXRpb24gc3R5bGU7CiAKICAgICAgICAgLy8g
Q29tbW9uIGV4dGVuc2lvbnMKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBvZmZz
ZXRMZWZ0OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW09iakNDYXRhZ29yeT1ET01FbGVt
ZW50RXh0ZW5zaW9uc10gbG9uZyBvZmZzZXRMZWZ0OwogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBsb25nIG9mZnNldFRvcDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtPYmpDQ2F0
YWdvcnk9RE9NRWxlbWVudEV4dGVuc2lvbnNdIGxvbmcgb2Zmc2V0VG9wOwogCi0gICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBsb25nIG9mZnNldFdpZHRoOworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgW09iakNDYXRhZ29yeT1ET01FbGVtZW50RXh0ZW5zaW9uc10gbG9uZyBvZmZzZXRXaWR0
aDsKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBvZmZzZXRIZWlnaHQ7CisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbT2JqQ0NhdGFnb3J5PURPTUVsZW1lbnRFeHRlbnNpb25z
XSBsb25nIG9mZnNldEhlaWdodDsKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVu
dCBvZmZzZXRQYXJlbnQ7Ci0gICAgICAgIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9u
ZyBjbGllbnRXaWR0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtPYmpDQ2F0YWdvcnk9
RE9NRWxlbWVudEV4dGVuc2lvbnNdIEVsZW1lbnQgb2Zmc2V0UGFyZW50OwogCi0gICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBsb25nIGNsaWVudEhlaWdodDsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIFtPYmpDQ2F0YWdvcnk9RE9NRWxlbWVudEV4dGVuc2lvbnNdIGxvbmcgY2xpZW50V2lk
dGg7CiAKLSAgICAgICAgYXR0cmlidXRlIGxvbmcgc2Nyb2xsTGVmdDsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFtPYmpDQ2F0YWdvcnk9RE9NRWxlbWVudEV4dGVuc2lvbnNdIGxvbmcgY2xp
ZW50SGVpZ2h0OwogCi0gICAgICAgIGF0dHJpYnV0ZSBsb25nIHNjcm9sbFRvcDsKKyAgICAgICAg
YXR0cmlidXRlIFtPYmpDQ2F0YWdvcnk9RE9NRWxlbWVudEV4dGVuc2lvbnNdIGxvbmcgc2Nyb2xs
TGVmdDsKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBzY3JvbGxXaWR0aDsKKyAg
ICAgICAgYXR0cmlidXRlIFtPYmpDQ2F0YWdvcnk9RE9NRWxlbWVudEV4dGVuc2lvbnNdIGxvbmcg
c2Nyb2xsVG9wOwogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHNjcm9sbEhlaWdo
dDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtPYmpDQ2F0YWdvcnk9RE9NRWxlbWVudEV4
dGVuc2lvbnNdIGxvbmcgc2Nyb2xsV2lkdGg7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFtPYmpDQ2F0YWdvcnk9RE9NRWxlbWVudEV4dGVuc2lvbnNdIGxvbmcgc2Nyb2xsSGVpZ2h0Owog
CiAgICAgICAgIHZvaWQgZm9jdXMoKTsKIAogICAgICAgICB2b2lkIGJsdXIoKTsKIAotICAgICAg
ICB2b2lkIHNjcm9sbEludG9WaWV3KGluIFtPcHRpb25hbF0gYm9vbGVhbiBhbGlnbldpdGhUb3Ap
OworICAgICAgICBbT2JqQ0NhdGFnb3J5PURPTUVsZW1lbnRFeHRlbnNpb25zXSB2b2lkIHNjcm9s
bEludG9WaWV3KGluIFtPcHRpb25hbF0gYm9vbGVhbiBhbGlnbldpdGhUb3ApOwogCiAgICAgICAg
IC8vIElFIGV4dGVuc2lvbnMKIAotICAgICAgICBOb2RlIGluc2VydEFkamFjZW50RWxlbWVudChp
biBET01TdHJpbmcgcG9zaXRpb24sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBOb2RlIG5ld0VsZW1lbnQpCisgICAgICAgIFtFeGNsdWRlPU9iakNdIE5vZGUgaW5zZXJ0
QWRqYWNlbnRFbGVtZW50KGluIERPTVN0cmluZyBwb3NpdGlvbiwgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIE5vZGUgbmV3RWxlbWVudCkKICAg
ICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICAKLSAgICAgICAgYm9vbGVh
biBjb250YWlucyhpbiBFbGVtZW50IGVsZW1lbnQpOworCisgICAgICAgIFtFeGNsdWRlPU9iakNd
IGJvb2xlYW4gY29udGFpbnMoaW4gRWxlbWVudCBlbGVtZW50KTsKIAogICAgICAgICAvLyBXZWJL
aXQgZXh0ZW5zaW9ucwogCi0gICAgICAgIHZvaWQgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChpbiBb
T3B0aW9uYWxdIGJvb2xlYW4gY2VudGVySWZOZWVkZWQpOworICAgICAgICBbT2JqQ0NhdGFnb3J5
PURPTUVsZW1lbnRFeHRlbnNpb25zXSB2b2lkIHNjcm9sbEludG9WaWV3SWZOZWVkZWQoaW4gW09w
dGlvbmFsXSBib29sZWFuIGNlbnRlcklmTmVlZGVkKTsKIAotICAgICAgICB2b2lkIHNjcm9sbEJ5
TGluZXMoaW4gbG9uZyBsaW5lcyk7CisgICAgICAgIFtFeGNsdWRlPU9iakNdIHZvaWQgc2Nyb2xs
QnlMaW5lcyhpbiBsb25nIGxpbmVzKTsKIAotICAgICAgICB2b2lkIHNjcm9sbEJ5UGFnZXMoaW4g
bG9uZyBwYWdlcyk7CisgICAgICAgIFtFeGNsdWRlPU9iakNdIHZvaWQgc2Nyb2xsQnlQYWdlcyhp
biBsb25nIHBhZ2VzKTsKIAogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0VudGl0eVJlZmVy
ZW5jZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRW50aXR5UmVmZXJlbmNlLmlkbAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0VudGl0eVJlZmVyZW5jZS5pZGwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdl
aW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAw
MjExMS0xMzA3LCBVU0EuCisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIEVu
dGl0eVJlZmVyZW5jZSA6IE5vZGUgeworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvZG9tL05h
bWVkTm9kZU1hcC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmlk
bAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5pZGwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdl
aW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAw
MjExMS0xMzA3LCBVU0EuCisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIE5h
bWVkTm9kZU1hcCB7CisKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBOb2RlIGdldE5hbWVkSXRl
bShpbiBET01TdHJpbmcgbmFtZSk7CisKKyAgICAgICAgW1VzZXNQYXNzUmVmUHRyXSBOb2RlIHNl
dE5hbWVkSXRlbShpbiBOb2RlIGFyZykKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OworCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gTm9kZSByZW1vdmVOYW1lZEl0ZW0oaW4gRE9N
U3RyaW5nIG5hbWUpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAg
ICBbVXNlc1Bhc3NSZWZQdHJdIE5vZGUgaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAg
ICAgICAgCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsK
KworCisgICAgICAgIC8vIEludHJvZHVjZWQgaW4gRE9NIExldmVsIDI6CisKKyAgICAgICAgW1Vz
ZXNQYXNzUmVmUHRyXSBOb2RlIGdldE5hbWVkSXRlbU5TKGluIERPTVN0cmluZyBuYW1lc3BhY2VV
UkksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9N
U3RyaW5nIGxvY2FsTmFtZSkKKyAgICAgICAgICAgIC8vIEZJWE1FOiB0aGUgaW1wbGVtZW50YXRp
b24gZG9lcyB0YWtlIGFuIGV4Y2VwdGlvbmNvZGUgcGFyYW1ldGVyLgorICAgICAgICAgICAgLypy
YWlzZXMoRE9NRXhjZXB0aW9uKSovOworCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gTm9kZSBz
ZXROYW1lZEl0ZW1OUyhpbiBOb2RlIGFyZykKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRp
b24pOworCisgICAgICAgIFtVc2VzUGFzc1JlZlB0cl0gTm9kZSByZW1vdmVOYW1lZEl0ZW1OUyhp
biBET01TdHJpbmcgbmFtZXNwYWNlVVJJLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBsb2NhbE5hbWUpCisgICAgICAgICAgICBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvZG9tL05v
ZGVMaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Ob2RlTGlzdC5pZGwJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL2RvbS9Ob2RlTGlzdC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndl
aW5pZ0BnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBV
U0EuCisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIE5vZGVMaXN0IHsKKwor
ICAgICAgICBOb2RlIGl0ZW0oaW4gW0lzSW5kZXhdIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworCisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKworICAgIH07
CisKK30KSW5kZXg6IFdlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmlkbAkocmV2aXNpb24g
MTYwNjcpCisrKyBXZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBD
b21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53
ZWluaWdAZ21haWwuY29tPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yOSw3ICszMCw3IEBAIG1v
ZHVsZSBjb3JlIHsKIAogICAgICAgICAvLyBpbnRlcmZhY2UgTGlua1N0eWxlIGZyb20gRE9NIExl
dmVsIDIgU3R5bGUgU2hlZXRzCiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFN0eWxlU2hl
ZXQgc2hlZXQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbRXhjbHVkZT1PYmpDXSBTdHls
ZVNoZWV0IHNoZWV0OwogCiAgICAgfTsKIApJbmRleDogV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjA2NykKKysrIFdlYktpdC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAwNi0wOC0yNyAgU2FtIFdl
aW5pZyAgPHNhbS53ZWluaWdAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIC0gcGF0Y2ggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFy
d2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYyNAorICAgICAgICAgIFdlYkNvcmUgbmVlZHMgYXV0
b2dlbmVyYXRlZCBPYmotQyBET00gYmluZGluZ3MKKworICAgICAgICAgIEZpcnN0IHJvdW5kIG9m
IGF1dG8tZ2VuZXJhdGVkIE9iamVjdGl2ZSBDIERPTSBiaW5kaW5ncywgc3RhcnRpbmcKKyAgICAg
ICAgICB3aXRoIHRoZSBET00gQ29yZS4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCiAyMDA2LTA4LTI1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW0gSGF0Y2hlcgpJbmRleDogV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTYwNjcpCisrKyBXZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTg3Miwx
OSArODcyLDE3IEBACiAJCTlDN0NBQkJCMDE5MEEzN0MwRUNBMTZFQSAvKiBXZWJWaWV3ICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk2NThBNDA5NTBBMTQ4
NTNCMDA1RTY5ODcgLyogV2ViRGF0YVNvdXJjZUludGVybmFsLmggKi8sCi0JCQkJNjUwRjc0RTIw
OUU0ODhGNzAwMjAxMThBIC8qIFdlYlVuYXJjaGl2aW5nU3RhdGUuaCAqLywKLQkJCQk2NTBGNzRF
MzA5RTQ4OEY3MDAyMDExOEEgLyogV2ViVW5hcmNoaXZpbmdTdGF0ZS5tICovLAotCQkJCTY1NTBC
N0M1MDk5RUZBRTkwMDkwRDc4MSAvKiBXZWJBcmNoaXZlci5oICovLAotCQkJCTY1NTBCN0M2MDk5
RUZBRTkwMDkwRDc4MSAvKiBXZWJBcmNoaXZlci5tICovLAogCQkJCUY1MkNBNkJEMDJERjlEMEYw
MTg2MzVDQSAvKiBIVE1MICovLAogCQkJCTUxRTk0QzA3MDZDMDJDQTMwMEE5QjA5RSAvKiBQREYg
Ki8sCiAJCQkJODM3MzQzNUEwNjI0RUUwRDAwRjNCMjg5IC8qIFdlYkFyY2hpdmUuaCAqLywKIAkJ
CQk4MzczNDM1QjA2MjRFRTBEMDBGM0IyODkgLyogV2ViQXJjaGl2ZS5tICovLAorCQkJCTY1NTBC
N0M1MDk5RUZBRTkwMDkwRDc4MSAvKiBXZWJBcmNoaXZlci5oICovLAorCQkJCTY1NTBCN0M2MDk5
RUZBRTkwMDkwRDc4MSAvKiBXZWJBcmNoaXZlci5tICovLAogCQkJCTkzM0Q2NTk5MDM0MTNGRjIw
MDg2MzVDRSAvKiBXZWJDbGlwVmlldy5oICovLAogCQkJCTkzM0Q2NTlBMDM0MTNGRjIwMDg2MzVD
RSAvKiBXZWJDbGlwVmlldy5tICovLAogCQkJCTM5NDQ2MDcwMDIwRjUwRUQwRUNBMTc2NyAvKiBX
ZWJEYXRhU291cmNlLmggKi8sCiAJCQkJMzk0NDYwNzEwMjBGNTBFRDBFQ0ExNzY3IC8qIFdlYkRh
dGFTb3VyY2UubSAqLywKKwkJCQk2NThBNDA5NTBBMTQ4NTNCMDA1RTY5ODcgLyogV2ViRGF0YVNv
dXJjZUludGVybmFsLmggKi8sCiAJCQkJMzk0NDYwNzIwMjBGNTBFRDBFQ0ExNzY3IC8qIFdlYkRh
dGFTb3VyY2VQcml2YXRlLmggKi8sCiAJCQkJMzUwODFEQUUwMkI2RDRGNTBBQ0EyQUNBIC8qIFdl
YkRvY3VtZW50LmggKi8sCiAJCQkJRUQyMUI5ODEwNTI4RjdBQTAwMzI5OUFDIC8qIFdlYkRvY3Vt
ZW50SW50ZXJuYWwuaCAqLywKQEAgLTkyMCw2ICs5MTgsOCBAQAogCQkJCTdFNkZFRjA3MDg5ODVB
NzIwMEM0NEMzRiAvKiBXZWJTY3JpcHREZWJ1Z0RlbGVnYXRlUHJpdmF0ZS5oICovLAogCQkJCTUx
NUUyN0NDMDQ1OEM4NjUwMENBMkQzQSAvKiBXZWJVSURlbGVnYXRlLmggKi8sCiAJCQkJNjVBN0Q0
NEEwNTY4QUIyNjAwRTcwRUY2IC8qIFdlYlVJRGVsZWdhdGVQcml2YXRlLmggKi8sCisJCQkJNjUw
Rjc0RTIwOUU0ODhGNzAwMjAxMThBIC8qIFdlYlVuYXJjaGl2aW5nU3RhdGUuaCAqLywKKwkJCQk2
NTBGNzRFMzA5RTQ4OEY3MDAyMDExOEEgLyogV2ViVW5hcmNoaXZpbmdTdGF0ZS5tICovLAogCQkJ
CTUxQThCNTc5MDQyODM0RjcwMENBMkQzQSAvKiBXZWJWaWV3LmggKi8sCiAJCQkJNTFBOEI1N0Ew
NDI4MzRGNzAwQ0EyRDNBIC8qIFdlYlZpZXcubSAqLywKIAkJCQk5MzBEMDJCQjA2Mjc1RjY0MDA3
NjcwMUUgLyogV2ViVmlld0ludGVybmFsLmggKi8sCkBAIC0xMjM4LDYgKzEyMzgsMjQgQEAKIAkJ
CWJ1aWxkUGhhc2VzID0gKAogCQkJCTkzQUY1Mjg3MDgyNTRCMzMwMDVEMDE1NiAvKiBET00uaCAq
LywKIAkJCQk5M0FGNTJBNzA4MjU0RDhCMDA1RDAxNTYgLyogRE9NQ29yZS5oICovLAorCQkJCTg1
MjZENzREMEE4RkVGMDIwMDkyMzRCMSAvKiBET01BdHRyLmggKi8sCisJCQkJODUzMTFGNjkwQThG
OTA5MTAwNTEyNUM5IC8qIERPTUNEQVRBU2VjdGlvbi5oICovLAorCQkJCTg1MjZENkJGMEE4RkU2
MEIwMDkyMzRCMSAvKiBET01DaGFyYWN0ZXJEYXRhLmggKi8sCisJCQkJODUzMTFGNzIwQThGOTBG
NjAwNTEyNUM5IC8qIERPTUNvbW1lbnQuaCAqLywKKwkJCQk4NTZDODlERTBBOTBFMzgzMDA1QzY4
N0IgLyogRE9NRG9jdW1lbnQuaCAqLywKKwkJCQk4NUM5MDY2RjBBOEZEMTFDMDBDMzdEOTEgLyog
RE9NRG9jdW1lbnRGcmFnbWVudC5oICovLAorCQkJCTg1QzkwNUYzMEE4RkNDQjIwMEMzN0Q5MSAv
KiBET01Eb2N1bWVudFR5cGUuaCAqLywKKwkJCQk4NTM5QjU2NTBBOTAzRUI5MDAzNjZDMkQgLyog
RE9NRE9NSW1wbGVtZW50YXRpb24uaCAqLywKKwkJCQk4NUE1QzVFMTBBOTAzMkIzMDBGOTFGMkMg
LyogRE9NRWxlbWVudC5oICovLAorCQkJCTg1MzExRjc1MEE4RjkxNjgwMDUxMjVDOSAvKiBET01F
bnRpdHkuaCAqLywKKwkJCQk4NTMxMUY4ODBBOEY5MUZFMDA1MTI1QzkgLyogRE9NRW50aXR5UmVm
ZXJlbmNlLmggKi8sCisJCQkJODUyNkQ3RUEwQThGRjY0QzAwOTIzNEIxIC8qIERPTU5hbWVkTm9k
ZU1hcC5oICovLAorCQkJCTg1NkM4QTkzMEE5MEY1NEYwMDVDNjg3QiAvKiBET01Ob2RlLmggKi8s
CisJCQkJODVBODVCNTkwQTkwMkMzMjAwQTVDRjNBIC8qIERPTU5vZGVMaXN0LmggKi8sCisJCQkJ
ODUzMTFGRTkwQThGOThCOTAwNTEyNUM5IC8qIERPTU5vdGF0aW9uLmggKi8sCisJCQkJODU2QzhC
N0IwQTkxMjlCODAwNUM2ODdCIC8qIERPTU9iamVjdC5oICovLAorCQkJCTg1MzEyMDEzMEE4RjlB
NTIwMDUxMjVDOSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCAqLywKKwkJCQk4NTI2RDY0
MTBBOEZEQjg0MDA5MjM0QjEgLyogRE9NVGV4dC5oICovLAogCQkJCTkzQUY1MkE5MDgyNTREOEYw
MDVEMDE1NiAvKiBET01DU1MuaCAqLywKIAkJCQk5M0FGNTJBNTA4MjU0RDg3MDA1RDAxNTYgLyog
RE9NRXZlbnRzLmggKi8sCiAJCQkJOTNBRjUyQTMwODI1NEQ4MTAwNUQwMTU2IC8qIERPTUV4dGVu
c2lvbnMuaCAqLywKQEAgLTEzMjksNiArMTM0NywyOTQgQEAKIAkJCXNoZWxsUGF0aCA9IC9iaW4v
c2g7CiAJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJM
SUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VC
Q09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTVhQYXRoLmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9E
SVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTVhQYXRoLmhcIiI7CiAJCX07CisJCTg1
MjZENjQxMEE4RkRCODQwMDkyMzRCMSAvKiBET01UZXh0LmggKi8gPSB7CisJCQlpc2EgPSBQQlhT
aGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owor
CQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BS
SVZBVEVfSEVBREVSU19ESVIpL0RPTVRleHQuaCIsCisJCQkpOworCQkJbmFtZSA9IERPTVRleHQu
aDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElD
X0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTVRleHQuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJ
c2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURF
UlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJ
VkFURV9IRUFERVJTX0RJUi9ET01UZXh0LmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJ
Q19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTVRleHQuaFwiIjsKKwkJfTsKKwkJODUyNkQ2QkYwQThG
RTYwQjAwOTIzNEIxIC8qIERPTUNoYXJhY3RlckRhdGEuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJ
VkFURV9IRUFERVJTX0RJUikvRE9NQ2hhcmFjdGVyRGF0YS5oIiwKKwkJCSk7CisJCQluYW1lID0g
RE9NQ2hhcmFjdGVyRGF0YS5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JV
SUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NQ2hhcmFjdGVyRGF0YS5o
IiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJ
CXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJH
RVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJD
b3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTUNoYXJhY3RlckRh
dGEuaFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgv
RE9NQ2hhcmFjdGVyRGF0YS5oXCIiOworCQl9OworCQk4NTI2RDc0RDBBOEZFRjAyMDA5MjM0QjEg
LyogRE9NQXR0ci5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwor
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJ
CWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01B
dHRyLmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01BdHRyLmg7CisJCQlvdXRwdXRQYXRocyA9ICgK
KwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9E
T01BdHRyLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1w
IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAt
ZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NQXR0
ci5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9E
T01BdHRyLmhcIiI7CisJCX07CisJCTg1MjZEN0VBMEE4RkY2NEMwMDkyMzRCMSAvKiBET01OYW1l
ZE5vZGVNYXAuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlp
bnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NTmFt
ZWROb2RlTWFwLmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01OYW1lZE5vZGVNYXAuaDsKKwkJCW91
dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNf
Rk9MREVSX1BBVEgpL0RPTU5hbWVkTm9kZU1hcC5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlz
aGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVS
U19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9QUklW
QVRFX0hFQURFUlNfRElSL0RPTU5hbWVkTm9kZU1hcC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElS
LyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01OYW1lZE5vZGVNYXAuaFwiIjsKKwkJfTsK
KwkJODUzMTFGNjkwQThGOTA5MTAwNTEyNUM5IC8qIERPTUNEQVRBU2VjdGlvbi5oICovID0gewor
CQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJ
IiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01DREFUQVNlY3Rpb24uaCIsCisJCQkp
OworCQkJbmFtZSA9IERPTUNEQVRBU2VjdGlvbi5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJ
IiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NQ0RB
VEFTZWN0aW9uLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGly
IC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNl
ZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9N
Q0RBVEFTZWN0aW9uLmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZP
TERFUl9QQVRIL0RPTUNEQVRBU2VjdGlvbi5oXCIiOworCQl9OworCQk4NTMxMUY3MjBBOEY5MEY2
MDA1MTI1QzkgLyogRE9NQ29tbWVudC5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRC
dWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0g
KAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURF
UlNfRElSKS9ET01Db21tZW50LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01Db21tZW50Lmg7CisJ
CQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFE
RVJTX0ZPTERFUl9QQVRIKS9ET01Db21tZW50LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNo
ZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJT
X0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVIvRE9NQ29tbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJM
SUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01Db21tZW50LmhcIiI7CisJCX07CisJCTg1MzExRjc1
MEE4RjkxNjgwMDUxMjVDOSAvKiBET01FbnRpdHkuaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxs
U2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlm
aWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFU
RV9IRUFERVJTX0RJUikvRE9NRW50aXR5LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01FbnRpdHku
aDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElD
X0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTUVudGl0eS5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJ
CQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVB
REVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIkV0VCQ09SRV9Q
UklWQVRFX0hFQURFUlNfRElSL0RPTUVudGl0eS5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQ
VUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01FbnRpdHkuaFwiIjsKKwkJfTsKKwkJODUzMTFG
ODgwQThGOTFGRTAwNTEyNUM5IC8qIERPTUVudGl0eVJlZmVyZW5jZS5oICovID0geworCQkJaXNh
ID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VC
Q09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01FbnRpdHlSZWZlcmVuY2UuaCIsCisJCQkpOwor
CQkJbmFtZSA9IERPTUVudGl0eVJlZmVyZW5jZS5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJ
IiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NRW50
aXR5UmVmZXJlbmNlLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1r
ZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJc
bnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIv
RE9NRW50aXR5UmVmZXJlbmNlLmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFE
RVJTX0ZPTERFUl9QQVRIL0RPTUVudGl0eVJlZmVyZW5jZS5oXCIiOworCQl9OworCQk4NTMxMUZF
OTBBOEY5OEI5MDA1MTI1QzkgLyogRE9NTm90YXRpb24uaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJ
VkFURV9IRUFERVJTX0RJUikvRE9NTm90YXRpb24uaCIsCisJCQkpOworCQkJbmFtZSA9IERPTU5v
dGF0aW9uLmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8k
KFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01Ob3RhdGlvbi5oIiwKKwkJCSk7CisJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9i
aW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElSLyRQ
VUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8gXCIk
V0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTU5vdGF0aW9uLmhcIiA+IFwiJFRBUkdFVF9C
VUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTU5vdGF0aW9uLmhcIiI7CisJ
CX07CisJCTg1MzEyMDEzMEE4RjlBNTIwMDUxMjVDOSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBh
dGhzID0gKAorCQkJCSIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRE9NUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVC
TElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIiwKKwkJ
CSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxs
UGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJ
TERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dl
YktpdC8gXCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTVByb2Nlc3NpbmdJbnN0cnVj
dGlvbi5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFU
SC9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaFwiIjsKKwkJfTsKKwkJODUzOUI1NjUwQTkwM0VC
OTAwMzY2QzJEIC8qIERPTURPTUltcGxlbWVudGF0aW9uLmggKi8gPSB7CisJCQlpc2EgPSBQQlhT
aGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owor
CQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChXRUJDT1JFX1BS
SVZBVEVfSEVBREVSU19ESVIpL0RPTURPTUltcGxlbWVudGF0aW9uLmgiLAorCQkJKTsKKwkJCW5h
bWUgPSBET01ET01JbXBsZW1lbnRhdGlvbi5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQo
VEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NRE9NSW1w
bGVtZW50YXRpb24uaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtk
aXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxu
c2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwiJFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9E
T01ET01JbXBsZW1lbnRhdGlvbi5oXCIgPiBcIiRUQVJHRVRfQlVJTERfRElSLyRQVUJMSUNfSEVB
REVSU19GT0xERVJfUEFUSC9ET01ET01JbXBsZW1lbnRhdGlvbi5oXCIiOworCQl9OworCQk4NTZD
ODlERTBBOTBFMzgzMDA1QzY4N0IgLyogRE9NRG9jdW1lbnQuaCAqLyA9IHsKKwkJCWlzYSA9IFBC
WFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFdFQkNPUkVf
UFJJVkFURV9IRUFERVJTX0RJUikvRE9NRG9jdW1lbnQuaCIsCisJCQkpOworCQkJbmFtZSA9IERP
TURvY3VtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElS
KS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01Eb2N1bWVudC5oIiwKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9
IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiRUQVJHRVRfQlVJTERfRElS
LyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSFwiXG5zZWQgLWUgcy9XZWJDb3JlL1dlYktpdC8g
XCIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSL0RPTURvY3VtZW50LmhcIiA+IFwiJFRBUkdF
VF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTURvY3VtZW50LmhcIiI7
CisJCX07CisJCTg1NkM4QTkzMEE5MEY1NEYwMDVDNjg3QiAvKiBET01Ob2RlLmggKi8gPSB7CisJ
CQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQki
JChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0RPTU5vZGUuaCIsCisJCQkpOworCQkJbmFt
ZSA9IERPTU5vZGUuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9E
SVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTU5vZGUuaCIsCisJCQkpOworCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAv
YmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIkVEFSR0VUX0JVSUxEX0RJUi8k
UFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcIlxuc2VkIC1lIHMvV2ViQ29yZS9XZWJLaXQvIFwi
JFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUi9ET01Ob2RlLmhcIiA+IFwiJFRBUkdFVF9CVUlM
RF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTU5vZGUuaFwiIjsKKwkJfTsKKwkJ
ODU2QzhCN0IwQTkxMjlCODAwNUM2ODdCIC8qIERPTU9iamVjdC5oICovID0geworCQkJaXNhID0g
UEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09S
RV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01PYmplY3QuaCIsCisJCQkpOworCQkJbmFtZSA9IERP
TU9iamVjdC5oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikv
JChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvRE9NT2JqZWN0LmgiLAorCQkJKTsKKwkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jp
bi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBV
QkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRX
RUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NT2JqZWN0LmhcIiA+IFwiJFRBUkdFVF9CVUlM
RF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTU9iamVjdC5oXCIiOworCQl9Owor
CQk4NUE1QzVFMTBBOTAzMkIzMDBGOTFGMkMgLyogRE9NRWxlbWVudC5oICovID0geworCQkJaXNh
ID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VC
Q09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01FbGVtZW50LmgiLAorCQkJKTsKKwkJCW5hbWUg
PSBET01FbGVtZW50Lmg7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERf
RElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9ET01FbGVtZW50LmgiLAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRo
ID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9E
SVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0
LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NRWxlbWVudC5oXCIgPiBcIiRUQVJH
RVRfQlVJTERfRElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01FbGVtZW50LmhcIiI7
CisJCX07CisJCTg1QTg1QjU5MEE5MDJDMzIwMEE1Q0YzQSAvKiBET01Ob2RlTGlzdC5oICovID0g
eworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJ
CQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01Ob2RlTGlzdC5oIiwKKwkJCSk7
CisJCQluYW1lID0gRE9NTm9kZUxpc3QuaDsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFRB
UkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0RPTU5vZGVMaXN0
LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwor
CQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRB
UkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dl
YkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIvRE9NTm9kZUxpc3Qu
aFwiID4gXCIkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgvRE9N
Tm9kZUxpc3QuaFwiIjsKKwkJfTsKKwkJODVDOTA1RjMwQThGQ0NCMjAwQzM3RDkxIC8qIERPTURv
Y3VtZW50VHlwZS5oICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwor
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJ
CWlucHV0UGF0aHMgPSAoCisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01E
b2N1bWVudFR5cGUuaCIsCisJCQkpOworCQkJbmFtZSA9IERPTURvY3VtZW50VHlwZS5oOworCQkJ
b3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVS
U19GT0xERVJfUEFUSCkvRE9NRG9jdW1lbnRUeXBlLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJ
CXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFE
RVJTX0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BS
SVZBVEVfSEVBREVSU19ESVIvRE9NRG9jdW1lbnRUeXBlLmhcIiA+IFwiJFRBUkdFVF9CVUlMRF9E
SVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIL0RPTURvY3VtZW50VHlwZS5oXCIiOworCQl9
OworCQk4NUM5MDY2RjBBOEZEMTFDMDBDMzdEOTEgLyogRE9NRG9jdW1lbnRGcmFnbWVudC5oICov
ID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAo
CisJCQkJIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9ET01Eb2N1bWVudEZyYWdtZW50
LmgiLAorCQkJKTsKKwkJCW5hbWUgPSBET01Eb2N1bWVudEZyYWdtZW50Lmg7CisJCQlvdXRwdXRQ
YXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERF
Ul9QQVRIKS9ET01Eb2N1bWVudEZyYWdtZW50LmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNo
ZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJFRBUkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJT
X0ZPTERFUl9QQVRIXCJcbnNlZCAtZSBzL1dlYkNvcmUvV2ViS2l0LyBcIiRXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVIvRE9NRG9jdW1lbnRGcmFnbWVudC5oXCIgPiBcIiRUQVJHRVRfQlVJTERf
RElSLyRQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSC9ET01Eb2N1bWVudEZyYWdtZW50LmhcIiI7
CisJCX07CiAJCTkzMzkzMjNFMDgyNUE2NDIwMEFBREE2QiAvKiBucHJ1bnRpbWUuaCAqLyA9IHsK
IAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7Cg==
</data>
<flag name="review"
          id="3232"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>