<?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>72539</bug_id>
          
          <creation_ts>2011-11-16 13:17:29 -0800</creation_ts>
          <short_desc>FilterOperation* should stay in rendering/style, because it is directly referenced from RenderStyle</short_desc>
          <delta_ts>2011-11-30 00:58:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Alexandru Chiculita">achicu</assigned_to>
          <cc>dino</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>504182</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-11-16 13:17:29 -0800</bug_when>
    <thetext>CustomFilterOperation references a StyleShader, which is outside of platform. We&apos;ll need to copy the way Images are referenced, and probably implement an Observer interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504639</commentid>
    <comment_count>1</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-11-17 00:57:28 -0800</bug_when>
    <thetext>It&apos;s the other way around. FilterOperations are referenced from RenderStyle, so their place is not in platform code. FilterOperations look very much like FillLayers. FilterEffect (and its derivates) and FilterEffectRenderer are actual platform counterparts for the FilterOperations. The RenderLayer object will mix FilterOperations with platform code.

This patch will move all the FilterOperations to rendering/style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504714</commentid>
    <comment_count>2</comment_count>
      <attachid>115555</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-11-17 03:44:14 -0800</bug_when>
    <thetext>Created attachment 115555
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504719</commentid>
    <comment_count>3</comment_count>
      <attachid>115555</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-17 03:52:24 -0800</bug_when>
    <thetext>Comment on attachment 115555
Patch v1

Attachment 115555 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10509132</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505942</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-11-18 11:42:28 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; It&apos;s the other way around. FilterOperations are referenced from RenderStyle, so their place is not in platform code

I don&apos;t agree. RenderStyle references TransformOperations, which is in platform/graphics. This seems very similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505969</commentid>
    <comment_count>5</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-11-18 12:19:25 -0800</bug_when>
    <thetext>This is really only a problem for the CustomShaderOperation which needs to reference a cached resource, which is why TransformOperations never run into this. I guess we have a few options, including:

- have CustomShaderOperation keep the references as an AtomicString (this is what the url() form of ReferenceFilterOperation does). The the builder of the filter could fire off the reference machinery.

- implement an observer protocol between the shader resource and this operation, similar to the way Image and CachedImage work.

- move the FilterOperation* stuff as the patch does.

I don&apos;t know which is best. This move seems pretty easy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505970</commentid>
    <comment_count>6</comment_count>
      <attachid>115555</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-11-18 12:22:06 -0800</bug_when>
    <thetext>Comment on attachment 115555
Patch v1

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

If we agree this is the correct approach, then r=me (but r- for forgetting the CMakefile change)

&gt; Source/WebCore/ChangeLog:73
&gt; +        * rendering/style/CustomFilterOperation.h: Renamed from Source/WebCore/platform/graphics/filters/CustomFilterOperation.h.
&gt; +        (WebCore::CustomFilterOperation::create):
&gt; +        (WebCore::CustomFilterOperation::setVertexShader):
&gt; +        (WebCore::CustomFilterOperation::vertexShader):
&gt; +        (WebCore::CustomFilterOperation::setFragmentShader):
&gt; +        (WebCore::CustomFilterOperation::fragmentShader):
&gt; +        (WebCore::CustomFilterOperation::operator==):
&gt; +        (WebCore::CustomFilterOperation::CustomFilterOperation):
&gt; +        * rendering/style/FilterOperation.h: Renamed from Source/WebCore/platform/graphics/filters/FilterOperation.h.
&gt; +        (WebCore::FilterOperation::~FilterOperation):
&gt; +        (WebCore::FilterOperation::operator!=):
&gt; +        (WebCore::FilterOperation::getOperationType):
&gt; +        (WebCore::FilterOperation::isSameType):
&gt; +        (WebCore::FilterOperation::FilterOperation):
&gt; +        (WebCore::ReferenceFilterOperation::create):
&gt; +        (WebCore::ReferenceFilterOperation::reference):
&gt; +        (WebCore::ReferenceFilterOperation::operator==):
&gt; +        (WebCore::ReferenceFilterOperation::ReferenceFilterOperation):
&gt; +        (WebCore::BasicColorMatrixFilterOperation::create):
&gt; +        (WebCore::BasicColorMatrixFilterOperation::amount):
&gt; +        (WebCore::BasicColorMatrixFilterOperation::operator==):
&gt; +        (WebCore::BasicColorMatrixFilterOperation::BasicColorMatrixFilterOperation):
&gt; +        (WebCore::BasicComponentTransferFilterOperation::create):
&gt; +        (WebCore::BasicComponentTransferFilterOperation::amount):
&gt; +        (WebCore::BasicComponentTransferFilterOperation::operator==):
&gt; +        (WebCore::BasicComponentTransferFilterOperation::BasicComponentTransferFilterOperation):
&gt; +        (WebCore::GammaFilterOperation::create):
&gt; +        (WebCore::GammaFilterOperation::amplitude):
&gt; +        (WebCore::GammaFilterOperation::exponent):
&gt; +        (WebCore::GammaFilterOperation::offset):
&gt; +        (WebCore::GammaFilterOperation::operator==):
&gt; +        (WebCore::GammaFilterOperation::GammaFilterOperation):
&gt; +        (WebCore::BlurFilterOperation::create):
&gt; +        (WebCore::BlurFilterOperation::stdDeviationX):
&gt; +        (WebCore::BlurFilterOperation::stdDeviationY):
&gt; +        (WebCore::BlurFilterOperation::operator==):
&gt; +        (WebCore::BlurFilterOperation::BlurFilterOperation):
&gt; +        (WebCore::SharpenFilterOperation::create):
&gt; +        (WebCore::SharpenFilterOperation::amount):
&gt; +        (WebCore::SharpenFilterOperation::radius):
&gt; +        (WebCore::SharpenFilterOperation::threshold):
&gt; +        (WebCore::SharpenFilterOperation::operator==):
&gt; +        (WebCore::SharpenFilterOperation::SharpenFilterOperation):
&gt; +        (WebCore::DropShadowFilterOperation::create):
&gt; +        (WebCore::DropShadowFilterOperation::x):
&gt; +        (WebCore::DropShadowFilterOperation::y):
&gt; +        (WebCore::DropShadowFilterOperation::stdDeviation):
&gt; +        (WebCore::DropShadowFilterOperation::color):
&gt; +        (WebCore::DropShadowFilterOperation::operator==):
&gt; +        (WebCore::DropShadowFilterOperation::DropShadowFilterOperation):
&gt; +        * rendering/style/FilterOperations.cpp: Renamed from Source/WebCore/platform/graphics/filters/FilterOperations.cpp.
&gt; +        (WebCore::FilterOperations::FilterOperations):
&gt; +        (WebCore::FilterOperations::operator==):
&gt; +        * rendering/style/FilterOperations.h: Renamed from Source/WebCore/platform/graphics/filters/FilterOperations.h.
&gt; +        (WebCore::FilterOperations::operator!=):
&gt; +        (WebCore::FilterOperations::clear):
&gt; +        (WebCore::FilterOperations::operations):
&gt; +        (WebCore::FilterOperations::size):
&gt; +        (WebCore::FilterOperations::at):

I think we can remove all the (WebCore::) bits here since it is just a rename.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508038</commentid>
    <comment_count>7</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-11-23 03:09:51 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; This is really only a problem for the CustomShaderOperation which needs to reference a cached resource, which is why TransformOperations never run into this. I guess we have a few options, including:
&gt; 
&gt; - have CustomShaderOperation keep the references as an AtomicString (this is what the url() form of ReferenceFilterOperation does). The the builder of the filter could fire off the reference machinery.
&gt; 
CustomShaderOperation is referenced from RenderStyle directly. If we do this one, it means that the CSSStyleSelector would load the specified file and create a CustomShaderOperation with AtomicString. CSSStyleSelector has a short life, so I doubt loading code can stay in that class.

&gt; - implement an observer protocol between the shader resource and this operation, similar to the way Image and CachedImage work.
The observer in Image is used for a different reason. It is used to update animated images like GIFs or SVG.  Moreover, it can be used to track the load of progressive JPEG. Anyway, the RenderStyle references a FillLayer that keeps a reference to the CachedImage. The RenderObjects that need to paint the images register themselves as observers.

&gt; 
&gt; - move the FilterOperation* stuff as the patch does.
&gt; 
&gt; I don&apos;t know which is best. This move seems pretty easy.

I think TransformOperation should also be part of the rendering/style folder.

FilterOperation clases are part of the style of an element. RenderLayer will take that from the style and create the platform classes that will actually do the rendering. In this case the platform code is FilterEffectRenderer, plus all the filter effects. Moreover, the RenderLayer will be an observer of the CachedShader, so that it will be able to apply the shader filter as soon as the content of the specified URL is loaded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510538</commentid>
    <comment_count>8</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-11-28 23:43:35 -0800</bug_when>
    <thetext>It definitely seems more simple to move the filter operations into style/rendering. I&apos;m ok with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510698</commentid>
    <comment_count>9</comment_count>
      <attachid>116948</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-11-29 04:59:40 -0800</bug_when>
    <thetext>Created attachment 116948
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510750</commentid>
    <comment_count>10</comment_count>
      <attachid>116948</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-29 07:19:48 -0800</bug_when>
    <thetext>Comment on attachment 116948
Patch for landing

Rejecting attachment 116948 from commit-queue.

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

Last 500 characters of output:
atching file Source/WebCore/platform/graphics/filters/FilterOperations.h
rm &apos;Source/WebCore/platform/graphics/filters/FilterOperations.h&apos;
patching file Source/WebCore/rendering/style/CustomFilterOperation.h
patching file Source/WebCore/rendering/style/FilterOperation.h
patching file Source/WebCore/rendering/style/FilterOperations.cpp
patching file Source/WebCore/rendering/style/FilterOperations.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/10682385</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510758</commentid>
    <comment_count>11</comment_count>
      <attachid>116965</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-11-29 07:29:16 -0800</bug_when>
    <thetext>Created attachment 116965
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511483</commentid>
    <comment_count>12</comment_count>
      <attachid>116965</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-30 00:57:56 -0800</bug_when>
    <thetext>Comment on attachment 116965
Patch for landing

Clearing flags on attachment: 116965

Committed r101458: &lt;http://trac.webkit.org/changeset/101458&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511484</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-30 00:58:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115555</attachid>
            <date>2011-11-17 03:44:14 -0800</date>
            <delta_ts>2011-11-29 04:59:34 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug72539.patch</filename>
            <type>text/plain</type>
            <size>61963</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyODA0YTFjLi42ZGRiZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcg
QEAKKzIwMTEtMTEtMTcgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgor
CisgICAgICAgIEZpbHRlck9wZXJhdGlvbiogc2hvdWxkIHN0YXkgaW4gcmVuZGVyaW5nL3N0eWxl
LCBiZWNhdXNlIGl0IGlzIGRpcmVjdGx5IHJlZmVyZW5jZWQgZnJvbSBSZW5kZXJTdHlsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI1MzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMs
IGp1c3QgbW92aW5nIHNvbWUgZmlsZXMuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oLgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpzZXRWZXJ0ZXhTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjp2ZXJ0ZXhTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpzZXRGcmFnbWVudFNoYWRlcik6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21GaWx0ZXJPcGVyYXRpb246OmZyYWdtZW50U2hhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1c3RvbUZpbHRlck9wZXJhdGlvbjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21GaWx0ZXJPcGVyYXRpb246OkN1c3RvbUZpbHRlck9wZXJhdGlvbik6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbi5oOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaC4K
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbjo6fkZpbHRlck9wZXJhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb246Om9wZXJhdG9yIT0pOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uOjpnZXRPcGVyYXRpb25UeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlck9wZXJhdGlvbjo6aXNTYW1lVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJPcGVyYXRpb246OkZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZWZl
cmVuY2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb246OnJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb246Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6UmVmZXJl
bmNlRmlsdGVyT3BlcmF0aW9uOjpSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmFtb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246
OkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QmFz
aWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmFtb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpv
cGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0
ZXJPcGVyYXRpb246OkJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6R2FtbWFGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHYW1tYUZpbHRlck9wZXJhdGlvbjo6YW1wbGl0dWRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdhbW1hRmlsdGVyT3BlcmF0aW9uOjpleHBvbmVudCk6CisgICAgICAgIChXZWJDb3JlOjpH
YW1tYUZpbHRlck9wZXJhdGlvbjo6b2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbW1hRmls
dGVyT3BlcmF0aW9uOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbW1hRmlsdGVy
T3BlcmF0aW9uOjpHYW1tYUZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpCbHVy
RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Qmx1ckZpbHRlck9w
ZXJhdGlvbjo6c3RkRGV2aWF0aW9uWCk6CisgICAgICAgIChXZWJDb3JlOjpCbHVyRmlsdGVyT3Bl
cmF0aW9uOjpzdGREZXZpYXRpb25ZKToKKyAgICAgICAgKFdlYkNvcmU6OkJsdXJGaWx0ZXJPcGVy
YXRpb246Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Qmx1ckZpbHRlck9wZXJhdGlv
bjo6Qmx1ckZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTaGFycGVuRmlsdGVy
T3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcnBlbkZpbHRlck9wZXJh
dGlvbjo6YW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJwZW5GaWx0ZXJPcGVyYXRpb246
OnJhZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFycGVuRmlsdGVyT3BlcmF0aW9uOjp0aHJl
c2hvbGQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcnBlbkZpbHRlck9wZXJhdGlvbjo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFycGVuRmlsdGVyT3BlcmF0aW9uOjpTaGFycGVu
RmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRyb3BTaGFkb3dGaWx0ZXJPcGVy
YXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEcm9wU2hhZG93RmlsdGVyT3BlcmF0
aW9uOjp4KToKKyAgICAgICAgKFdlYkNvcmU6OkRyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246Onkp
OgorICAgICAgICAoV2ViQ29yZTo6RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6c3RkRGV2aWF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmNvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkRyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246Om9wZXJhdG9y
PT0pOgorICAgICAgICAoV2ViQ29yZTo6RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6RHJvcFNo
YWRvd0ZpbHRlck9wZXJhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9w
ZXJhdGlvbnMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ck9wZXJhdGlvbnM6OkZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVy
T3BlcmF0aW9uczo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbHRl
ck9wZXJhdGlvbnMuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVy
T3BlcmF0aW9uczo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRp
b25zOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zOjpvcGVyYXRp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM6OnNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6YXQpOgorCiAyMDExLTExLTE3ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ1NQIHJlcG9ydC1vbmx5IG1vZGUg
ZG9lc24ndCB3b3JrIGZyb20gYW4gSFRUUCBoZWFkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCmluZGV4IDViNDQxODUuLjU4YTk3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtMjUzMCw3ICsyNTMwLDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9UcmFuc2Zvcm1hdGlvbk1hdHJpeENhaXJvLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xh
eWVyQ2x1dHRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVy
L0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3Bw
IFwKQEAgLTI1NzAsOSArMjU2OSw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIFwK
LQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlv
bnMuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ck9wZXJhdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9MaWdodFNvdXJjZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvTGlnaHRTb3VyY2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmNwcCBcCkBAIC0zMjQ0LDkgKzMyNDAsMTMgQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRl
ckRpcmVjdGl2ZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0N1cnNvckRh
dGEuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0N1cnNvckxpc3QuaCBcCisJ
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRGF0YVJlZi5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvRmlsdGVyT3BlcmF0aW9uLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9G
aWx0ZXJPcGVyYXRpb25zLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Zp
bHRlck9wZXJhdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZy
YW1lTGlzdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxp
c3QuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0xpbmVDbGFtcFZhbHVlLmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKaW5kZXggNDA3MTYxYi4uMmUzMzk2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yMDcx
LDcgKzIwNzEsNiBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIFwKLSAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQmxlbmQuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bG9yTWF0cml4LmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRU
cmFuc2Zlci5oIFwKQEAgLTIwOTAsOCArMjA4OSw2IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUdXJidWxlbmNlLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmggXAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0
aW9uLmggXAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5o
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0U291cmNlLmggXAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaCBcCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmggXApAQCAtMjM2Myw3ICsyMzYwLDEwIEBAIEhF
QURFUlMgKz0gXAogICAgIHJlbmRlcmluZy9zdHlsZS9Db3VudGVyRGlyZWN0aXZlcy5oIFwKICAg
ICByZW5kZXJpbmcvc3R5bGUvQ3Vyc29yRGF0YS5oIFwKICAgICByZW5kZXJpbmcvc3R5bGUvQ3Vy
c29yTGlzdC5oIFwKKyAgICByZW5kZXJpbmcvc3R5bGUvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgg
XAogICAgIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaCBcCisgICAgcmVuZGVyaW5nL3N0eWxl
L0ZpbHRlck9wZXJhdGlvbi5oIFwKKyAgICByZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9u
cy5oIFwKICAgICByZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmggXAogICAgIHJlbmRlcmlu
Zy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oIFwKICAgICByZW5kZXJpbmcvc3R5bGUvUXVvdGVzRGF0
YS5oIFwKQEAgLTMyNDksNyArMzI0OSw2IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9GSUxU
RVJTPTEpIHsKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwIFwK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwIFwKICAg
ICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIFwKLSAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcCBcCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGlnaHRTb3VyY2UuY3BwIFwKICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmNwcCBcCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcCBcCkBAIC0zMjU3
LDcgKzMyNTYsOCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRklMVEVSUz0xKSB7CiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAgXAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9GRUNvbXBvc2l0ZUFyaXRobWV0aWNORU9O
LmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZFTGlnaHRpbmdO
RU9OLmNwcCBcCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZFR2F1c3Np
YW5CbHVyTkVPTi5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9hcm0vRkVH
YXVzc2lhbkJsdXJORU9OLmNwcCBcCisgICAgICAgIHJlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVy
YXRpb25zLmNwcAogfQogCiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTUFUSE1MPTEpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCBmYTQzM2E5Li5kOWQ0MTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0z
NTk5LDcgKzM1OTksNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JbWFn
ZUVmbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JbnRQb2ludEVm
bC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JbnRSZWN0RWZsLmNw
cCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJP
cGVyYXRpb24uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0
YW50TGlnaHRTb3VyY2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQmxlbmQuY3BwJywKQEAgLTM2MzksOSArMzYzOCw2IEBACiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oJywKLSAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oJywKLSAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwJywKLSAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9MaWdodFNvdXJjZS5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGlnaHRTb3VyY2UuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmNw
cCcsCkBAIC00NzMzLDcgKzQ3MjksMTEgQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUv
Q29udGVudERhdGEuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvQ291bnRlckRp
cmVjdGl2ZXMuY3BwJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvQ3VzdG9tRmlsdGVy
T3BlcmF0aW9uLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3Bw
JywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9uLmgnLAorICAg
ICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb25zLmNwcCcsCisgICAgICAg
ICAgICAncmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbnMuaCcsCiAgICAgICAgICAgICAn
cmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmlu
Zy9zdHlsZS9LZXlmcmFtZUxpc3QuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL05p
bmVQaWVjZUltYWdlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCmluZGV4IDY0OTcwMWYuLmJiMTRkNzAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yOTUwMCwxMCArMjk1MDAsNiBAQAogCQkJ
CQlOYW1lPSJmaWx0ZXJzIgogCQkJCQk+CiAJCQkJCTxGaWxlCi0JCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgiCi0J
CQkJCQk+Ci0JCQkJCTwvRmlsZT4KLQkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xEaXN0YW50TGlnaHRTb3VyY2UuY3BwIgogCQkJCQkJ
PgogCQkJCQk8L0ZpbGU+CkBAIC0yOTY4NCwxOCArMjk2ODAsNiBAQAogCQkJCQkJPgogCQkJCQk8
L0ZpbGU+CiAJCQkJCTxGaWxlCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXGZpbHRlcnNcRmlsdGVyT3BlcmF0aW9uLmgiCi0JCQkJCQk+Ci0JCQkJCTwvRmlsZT4KLQkJ
CQkJPEZpbGUKLQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVy
c1xGaWx0ZXJPcGVyYXRpb25zLmNwcCIKLQkJCQkJCT4KLQkJCQkJPC9GaWxlPgotCQkJCQk8Rmls
ZQotCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXEZpbHRl
ck9wZXJhdGlvbnMuaCIKLQkJCQkJCT4KLQkJCQkJPC9GaWxlPgotCQkJCQk8RmlsZQogCQkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXExpZ2h0U291cmNlLmNw
cCIKIAkJCQkJCT4KIAkJCQkJPC9GaWxlPgpAQCAtNDAwMTksNiArNDAwMDMsMjIgQEAKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmlu
Z1xzdHlsZVxDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJ
CQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdHlsZVxGaWx0ZXJPcGVy
YXRpb24uaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHJlbmRlcmluZ1xzdHlsZVxGaWx0ZXJPcGVyYXRpb25zLmNwcCIKKwkJCQkJPgorCQkJ
CTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdHls
ZVxGaWx0ZXJPcGVyYXRpb25zLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3R5bGVcS2V5ZnJhbWVMaXN0LmNwcCIKIAkJ
CQkJPgogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzNzNjZTAwLi5iNDE2NDEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC04MzUsOSArODM1LDYgQEAKIAkJMzE5NDYyMzIxMzAyMkY2NTAwNEJCM0Y4IC8qIEpTV2ViS2l0
QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMTk0NjIzMTEzMDIyRjY1MDA0QkIzRjggLyogSlNXZWJLaXRBbmltYXRp
b25MaXN0Q3VzdG9tLmNwcCAqLzsgfTsKIAkJMzE5QUUwNjMxNDJENkIyNDAwNjU2M0ExIC8qIFN0
eWxlRmlsdGVyRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTlBRTA2MTE0MkQ2QjI0MDA2NTYzQTEgLyogU3R5bGVGaWx0ZXJEYXRhLmNwcCAq
LzsgfTsKIAkJMzE5QUUwNjQxNDJENkIyNDAwNjU2M0ExIC8qIFN0eWxlRmlsdGVyRGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE5QUUwNjIxNDJE
NkIyNDAwNjU2M0ExIC8qIFN0eWxlRmlsdGVyRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTMxOUFFMDY4MTQyRDc4REQwMDY1NjNBMSAvKiBG
aWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxOUFFMDY1MTQyRDc4REQwMDY1NjNBMSAvKiBGaWx0ZXJPcGVyYXRpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkzMTlBRTA2OTE0
MkQ3OEREMDA2NTYzQTEgLyogRmlsdGVyT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTlBRTA2NjE0MkQ3OEREMDA2NTYzQTEgLyog
RmlsdGVyT3BlcmF0aW9ucy5jcHAgKi87IH07Ci0JCTMxOUFFMDZBMTQyRDc4REQwMDY1NjNBMSAv
KiBGaWx0ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTlBRTA2NzE0MkQ3OEREMDA2NTYzQTEgLyogRmlsdGVyT3BlcmF0aW9ucy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxOUU2
ODg3MTMyN0M5MTEwMDRBQzkxQSAvKiBKU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTlFNjg4NjEzMjdDOTEx
MDA0QUM5MUEgLyogSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwICovOyB9OwogCQkzMTlFNjlC
MjEzMjk5QkJEMDA0QUM5MUEgLyogV2ViS2l0QW5pbWF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOUU2OUFDMTMyOTlCQkQwMDRBQzkxQSAv
KiBXZWJLaXRBbmltYXRpb24uY3BwICovOyB9OwogCQkzMTlFNjlCMzEzMjk5QkJEMDA0QUM5MUEg
LyogV2ViS2l0QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTlFNjlBRDEzMjk5QkJEMDA0QUM5MUEgLyogV2ViS2l0QW5pbWF0aW9uLmgg
Ki87IH07CkBAIC0xMzcyLDExICsxMzY5LDE0IEBACiAJCTUwMUJBOUUyMTM5M0NFQTAwMEY3QUNF
QiAvKiBDU1NXcmFwU2hhcGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MDFCQTlFMTEzOTNDRUEwMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUwMUJBQUE5
MTM5NTBFMkMwMEY3QUNFQiAvKiBXaW5kUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTAxQkFBQTgxMzk1MEUyQzAwRjdBQ0VCIC8qIFdpbmRSdWxl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTAz
OEJDMDcxNDcxMUNEQjAwOTVFMEQxIC8qIFdlYktpdENTU1NoYWRlclZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwMzhCQzA2MTQ3MTFDREIw
MDk1RTBEMSAvKiBXZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAgKi87IH07Ci0JCTUwMzhCQzBCMTQ3
MTFEMzQwMDk1RTBEMSAvKiBDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwMzhCQzA5MTQ3MTFEMzQwMDk1RTBEMSAv
KiBDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCAqLzsgfTsKIAkJNTAzOEJFMkYxNDcyQUQyMzAwOTVF
MEQxIC8qIFN0eWxlQ2FjaGVkU2hhZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUwMzhCRTJEMTQ3MkFEMjMwMDk1RTBEMSAvKiBTdHlsZUNhY2hl
ZFNoYWRlci5jcHAgKi87IH07CiAJCTUwMzhCRTMwMTQ3MkFEMjMwMDk1RTBEMSAvKiBTdHlsZUNh
Y2hlZFNoYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTAzOEJFMkUxNDcyQUQyMzAwOTVFMEQxIC8qIFN0eWxlQ2FjaGVkU2hhZGVyLmggKi87IH07
CiAJCTUwMzhCRTQwMTQ3MkFEOTgwMDk1RTBEMSAvKiBDYWNoZWRTaGFkZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAzOEJFM0UxNDcyQUQ5ODAw
OTVFMEQxIC8qIENhY2hlZFNoYWRlci5jcHAgKi87IH07CiAJCTUwMzhCRTQxMTQ3MkFEOTgwMDk1
RTBEMSAvKiBDYWNoZWRTaGFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUwMzhCRTNGMTQ3MkFEOTgwMDk1RTBEMSAvKiBDYWNoZWRTaGFkZXIuaCAq
LzsgfTsKKwkJNTAzOEJGMjgxNDc1MEYxOTAwOTVFMEQxIC8qIEN1c3RvbUZpbHRlck9wZXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAzOEJG
MjQxNDc1MEYxOTAwOTVFMEQxIC8qIEN1c3RvbUZpbHRlck9wZXJhdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUwMzhCRjI5MTQ3NTBGMTkw
MDk1RTBEMSAvKiBGaWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUwMzhCRjI1MTQ3NTBGMTkwMDk1RTBEMSAvKiBGaWx0ZXJPcGVy
YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk1MDM4QkYyQTE0NzUwRjE5MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9ucy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDM4QkYyNjE0NzUwRjE5
MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9ucy5jcHAgKi87IH07CisJCTUwMzhCRjJCMTQ3NTBG
MTkwMDk1RTBEMSAvKiBGaWx0ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDM4QkYyNzE0NzUwRjE5MDA5NUUwRDEgLyogRmlsdGVy
T3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUwOENDQTRGMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDhDQ0E0RDEzQ0Yx
MDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5oICovOyB9OwogCQk1MDhDQ0E1MDEzQ0Yx
MDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDhDQ0E0RTEzQ0YxMDZCMDAzMTUxRjMgLyogUmVu
ZGVyRmxvd1RocmVhZC5jcHAgKi87IH07CiAJCTUwRTU2NkQ2MTM5RTM4QzUwMDIxNDQzMyAvKiBD
U1NXcmFwU2hhcGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUwMUJBQUIxMTM5NTExNEIwMEY3QUNFQiAvKiBDU1NXcmFwU2hhcGVzLmNwcCAqLzsg
fTsKQEAgLTc5NjEsOSArNzk2MSw2IEBACiAJCTMxOTQ2MjMxMTMwMjJGNjUwMDRCQjNGOCAvKiBK
U1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzE5QUUwNjExNDJENkIyNDAwNjU2M0ExIC8qIFN0eWxlRmlsdGVy
RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTdHlsZUZpbHRl
ckRhdGEuY3BwOyBwYXRoID0gc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzE5QUUwNjIxNDJENkIyNDAwNjU2M0ExIC8qIFN0eWxlRmlsdGVy
RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdHlsZUZpbHRlckRhdGEu
aDsgcGF0aCA9IHN0eWxlL1N0eWxlRmlsdGVyRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkzMTlBRTA2NTE0MkQ3OEREMDA2NTYzQTEgLyogRmlsdGVyT3BlcmF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbHRlck9wZXJhdGlvbi5oOyBwYXRoID0g
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MzE5QUUwNjYxNDJENzhERDAwNjU2M0ExIC8qIEZpbHRlck9wZXJhdGlvbnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRmlsdGVyT3BlcmF0aW9ucy5jcHA7IHBhdGgg
PSBmaWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkzMTlBRTA2NzE0MkQ3OEREMDA2NTYzQTEgLyogRmlsdGVyT3BlcmF0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWx0ZXJPcGVyYXRpb25zLmg7IHBhdGggPSBm
aWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzE5RTY4ODYxMzI3QzkxMTAwNEFDOTFBIC8qIEpTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViS2l0QW5pbWF0aW9uQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE5RTY5QUMxMzI5OUJCRDAw
NEFDOTFBIC8qIFdlYktpdEFuaW1hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJLaXRBbmltYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMTlFNjlBRDEzMjk5QkJEMDA0QUM5MUEgLyogV2ViS2l0QW5pbWF0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEFuaW1hdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtODU3MiwxMSArODU2OSwxNCBAQAogCQk1MDFCQUFBODEzOTUw
RTJDMDBGN0FDRUIgLyogV2luZFJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2luZFJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTAxQkFBQjExMzk1
MTE0QjAwRjdBQ0VCIC8qIENTU1dyYXBTaGFwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ1NTV3JhcFNoYXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUwMzhCQzA2MTQ3MTFDREIwMDk1RTBEMSAvKiBXZWJLaXRDU1NTaGFkZXJWYWx1ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRDU1NTaGFkZXJW
YWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUwMzhCQzA5MTQ3MTFEMzQw
MDk1RTBEMSAvKiBDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmg7IHBhdGggPSBmaWx0ZXJzL0N1c3Rv
bUZpbHRlck9wZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MDM4QkUy
RDE0NzJBRDIzMDA5NUUwRDEgLyogU3R5bGVDYWNoZWRTaGFkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3R5bGVDYWNoZWRTaGFkZXIuY3BwOyBwYXRoID0gc3R5
bGUvU3R5bGVDYWNoZWRTaGFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MDM4QkUyRTE0NzJBRDIzMDA5NUUwRDEgLyogU3R5bGVDYWNoZWRTaGFkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3R5bGVDYWNoZWRTaGFkZXIuaDsgcGF0aCA9IHN0eWxl
L1N0eWxlQ2FjaGVkU2hhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwMzhC
RTNFMTQ3MkFEOTgwMDk1RTBEMSAvKiBDYWNoZWRTaGFkZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkU2hhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTAzOEJFM0YxNDcyQUQ5ODAwOTVFMEQxIC8qIENhY2hlZFNoYWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRTaGFkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTAzOEJGMjQxNDc1MEYxOTAwOTVFMEQxIC8qIEN1c3RvbUZp
bHRlck9wZXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdXN0b21G
aWx0ZXJPcGVyYXRpb24uaDsgcGF0aCA9IHN0eWxlL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MDM4QkYyNTE0NzUwRjE5MDA5NUUwRDEgLyog
RmlsdGVyT3BlcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbHRl
ck9wZXJhdGlvbi5oOyBwYXRoID0gc3R5bGUvRmlsdGVyT3BlcmF0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUwMzhCRjI2MTQ3NTBGMTkwMDk1RTBEMSAvKiBGaWx0ZXJPcGVy
YXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZpbHRlck9w
ZXJhdGlvbnMuY3BwOyBwYXRoID0gc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUwMzhCRjI3MTQ3NTBGMTkwMDk1RTBEMSAvKiBGaWx0ZXJP
cGVyYXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbHRlck9wZXJh
dGlvbnMuaDsgcGF0aCA9IHN0eWxlL0ZpbHRlck9wZXJhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTA4Q0NBNEQxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJl
YWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRmxvd1RocmVhZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MDhDQ0E0RTEzQ0YxMDZCMDAzMTUxRjMg
LyogUmVuZGVyRmxvd1RocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW5kZXJGbG93VGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTBCNDIxNTcxNDY5NzY5NjAwODdFNjA0IC8qIFdlYktpdENTU1NoYWRlclZhbHVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdENTU1NoYWRlclZhbHVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzYwNyw3ICsxNzYwNyw2IEBACiAJCUE3NUU4QjdG
MEUxREUyQjAwMDdGMjQ4MSAvKiBmaWx0ZXJzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKLQkJCQk1MDM4QkMwOTE0NzExRDM0MDA5NUUwRDEgLyogQ3VzdG9tRmls
dGVyT3BlcmF0aW9uLmggKi8sCiAJCQkJMTk4NDFCRkExMzY4MzZBMTAwNkVCQkI5IC8qIGFybSAq
LywKIAkJCQlBMUUxMTU0MzEzMDE1QzNEMDA1NEFDOEMgLyogRGlzdGFudExpZ2h0U291cmNlLmNw
cCAqLywKIAkJCQk4NDczMEQ1QTEyNDhGMEIzMDBEM0E5QzkgLyogRGlzdGFudExpZ2h0U291cmNl
LmggKi8sCkBAIC0xNzY0OCw5ICsxNzY0Nyw2IEBACiAJCQkJODQ1RTcyRjcwRkQyNjFFRTAwQTg3
RDc5IC8qIEZpbHRlci5oICovLAogCQkJCTA4QzkyNTE3MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0
ZXJFZmZlY3QuY3BwICovLAogCQkJCTA4QzkyNTE4MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJF
ZmZlY3QuaCAqLywKLQkJCQkzMTlBRTA2NTE0MkQ3OEREMDA2NTYzQTEgLyogRmlsdGVyT3BlcmF0
aW9uLmggKi8sCi0JCQkJMzE5QUUwNjYxNDJENzhERDAwNjU2M0ExIC8qIEZpbHRlck9wZXJhdGlv
bnMuY3BwICovLAotCQkJCTMxOUFFMDY3MTQyRDc4REQwMDY1NjNBMSAvKiBGaWx0ZXJPcGVyYXRp
b25zLmggKi8sCiAJCQkJODQ3MzBENzMxMjQ4RjBCMzAwRDNBOUM5IC8qIExpZ2h0U291cmNlLmNw
cCAqLywKIAkJCQk4NDczMEQ3NDEyNDhGMEIzMDBEM0E5QzkgLyogTGlnaHRTb3VyY2UuaCAqLywK
IAkJCQlBMUUxMTU0NTEzMDE1QzRFMDA1NEFDOEMgLyogUG9pbnRMaWdodFNvdXJjZS5jcHAgKi8s
CkBAIC0xOTc4Niw5ICsxOTc4MiwxMyBAQAogCQkJCUJDNUVCOTRGMEU4MjA1NkIwMEIyNTk2NSAv
KiBDb3VudGVyRGlyZWN0aXZlcy5oICovLAogCQkJCUJDMjI3MkExMEU4MkU4N0MwMEU3Rjk3NSAv
KiBDdXJzb3JEYXRhLmggKi8sCiAJCQkJQkMyMjcyQUMwRTgyRThGMzAwRTdGOTc1IC8qIEN1cnNv
ckxpc3QuaCAqLywKKwkJCQk1MDM4QkYyNDE0NzUwRjE5MDA5NUUwRDEgLyogQ3VzdG9tRmlsdGVy
T3BlcmF0aW9uLmggKi8sCiAJCQkJQkMyMjc0NkUwRTgzNjY0NTAwRTdGOTc1IC8qIERhdGFSZWYu
aCAqLywKIAkJCQlCQzVFQjY5QzBFODFEQUVCMDBCMjU5NjUgLyogRmlsbExheWVyLmNwcCAqLywK
IAkJCQlCQzVFQjY5RDBFODFEQUVCMDBCMjU5NjUgLyogRmlsbExheWVyLmggKi8sCisJCQkJNTAz
OEJGMjUxNDc1MEYxOTAwOTVFMEQxIC8qIEZpbHRlck9wZXJhdGlvbi5oICovLAorCQkJCTUwMzhC
RjI2MTQ3NTBGMTkwMDk1RTBEMSAvKiBGaWx0ZXJPcGVyYXRpb25zLmNwcCAqLywKKwkJCQk1MDM4
QkYyNzE0NzUwRjE5MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9ucy5oICovLAogCQkJCUJDNUVC
QTBFMEU4MjNFNDcwMEIyNTk2NSAvKiBLZXlmcmFtZUxpc3QuY3BwICovLAogCQkJCUJDNUVCQTBG
MEU4MjNFNDcwMEIyNTk2NSAvKiBLZXlmcmFtZUxpc3QuaCAqLywKIAkJCQlBQjMxQzkxRDEwQUUx
QjhFMDAwQzdCOTIgLyogTGluZUNsYW1wVmFsdWUuaCAqLywKQEAgLTIxNjcyLDggKzIxNjcyLDYg
QEAKIAkJCQlBOEVBODAwQzBBMTk1MTZFMDBBOEVGNUYgLyogU3R5bGVTaGVldC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQThFQTgwMDcwQTE5NTE2RTAwQThFRjVGIC8qIENTU1N0eWxlU2hlZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTMxOUFFMDY0MTQyRDZCMjQwMDY1NjNBMSAvKiBTdHlsZUZpbHRl
ckRhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxOUFFMDY4MTQyRDc4REQwMDY1NjNBMSAvKiBG
aWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTMxOUFFMDZBMTQyRDc4REQwMDY1
NjNBMSAvKiBGaWx0ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBODAwRTBB
MTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1RDhDNERD
MDE0MjgyMjJDMDAyNkNFNzIgLyogRGlzcGxheVNsZWVwRGlzYWJsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4MEU2RDBEMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NSdWxlLmggaW4gSGVhZGVycyAq
LywKQEAgLTI0NzIyLDExICsyNDcyMCwxMyBAQAogCQkJCUNERjY1Q0NBMTQ1QjQ0ODgwMEM0QzdB
QSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5MTdC
NTYyMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyOTE3QjU2MzE0NzM0OTZDMDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTAzOEJDMEIxNDcxMUQzNDAwOTVFMEQxIC8qIEN1
c3RvbUZpbHRlck9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTAzOEJFMzAxNDcyQUQy
MzAwOTVFMEQxIC8qIFN0eWxlQ2FjaGVkU2hhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MDM4
QkU0MTE0NzJBRDk4MDA5NUUwRDEgLyogQ2FjaGVkU2hhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBM0UyNjQzMTE0NzQ4OTkxMDA1QTg1ODggLyogV29ya2VyRXZlbnRRdWV1ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzEzOEE5RTUxNDc0NDM0NjAwQjBFRDEyIC8qIFN0eWxlU2hhZGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MDM4QkYyODE0NzUwRjE5MDA5NUUwRDEgLyogQ3VzdG9tRmlsdGVy
T3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MDM4QkYyOTE0NzUwRjE5MDA5NUUwRDEg
LyogRmlsdGVyT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MDM4QkYyQjE0NzUwRjE5
MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNzU0NSw3
ICsyNzU0NSw2IEBACiAJCQkJMDcwNzU2REYxNDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNr
Q3VlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODVGMjIwOTE0MzAzNzdEMDA3Q0M4ODQg
LyogSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxOUFFMDYz
MTQyRDZCMjQwMDY1NjNBMSAvKiBTdHlsZUZpbHRlckRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJMzE5QUUwNjkxNDJENzhERDAwNjU2M0ExIC8qIEZpbHRlck9wZXJhdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTkxMDJGQkIxNDMyN0QzQjAwM0M5RDA0IC8qIENvbnRlbnRTZWFyY2hV
dGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUE4NEYwNDE0M0JBN0JEMDA1MUQxNTMgLyog
U2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTA2MDM2
RjE0MzI3RDJFMDBBQkY0QkEgLyogV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0yNzYwMSw2ICsyNzYwMCw3IEBACiAJCQkJNTAzOEJFMkYxNDcyQUQyMzAwOTVFMEQx
IC8qIFN0eWxlQ2FjaGVkU2hhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUwMzhCRTQwMTQ3
MkFEOTgwMDk1RTBEMSAvKiBDYWNoZWRTaGFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNF
MjY0MzAxNDc0ODk5MTAwNUE4NTg4IC8qIFdvcmtlckV2ZW50UXVldWUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTAzOEJGMkExNDc1MEYxOTAwOTVFMEQxIC8qIEZpbHRlck9wZXJhdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNGE2MjhiMC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCisrKyAv
ZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAyMDExIEFkb2JlIFN5
c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBIT0xERVIgQkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKLSAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IKLSAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRgotICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIEN1c3RvbUZpbHRlck9wZXJhdGlvbl9oCi0jZGVmaW5lIEN1c3RvbUZpbHRlck9wZXJh
dGlvbl9oCi0KLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi0KLSNpbmNsdWRlICJGaWx0ZXJPcGVy
YXRpb24uaCIKLSNpbmNsdWRlICJTdHlsZVNoYWRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLS8vIENTUyBTaGFkZXJzCi0KLWNsYXNzIEN1c3RvbUZpbHRlck9wZXJhdGlvbiA6IHB1Ymxp
YyBGaWx0ZXJPcGVyYXRpb24gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3Rv
bUZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IHZlcnRleFNo
YWRlciwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21lbnRTaGFkZXIpCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUZpbHRlck9wZXJhdGlvbih2ZXJ0ZXhTaGFk
ZXIsIGZyYWdtZW50U2hhZGVyKSk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgc2V0VmVydGV4U2hh
ZGVyKFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IHNoYWRlcikgeyBtX3ZlcnRleFNoYWRlciA9IHNo
YWRlcjsgfQotICAgIFN0eWxlU2hhZGVyKiB2ZXJ0ZXhTaGFkZXIoKSBjb25zdCB7IHJldHVybiBt
X3ZlcnRleFNoYWRlci5nZXQoKTsgfQotICAgIAotICAgIHZvaWQgc2V0RnJhZ21lbnRTaGFkZXIo
UGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gc2hhZGVyKSB7IG1fZnJhZ21lbnRTaGFkZXIgPSBzaGFk
ZXI7IH0KLSAgICBTdHlsZVNoYWRlciogZnJhZ21lbnRTaGFkZXIoKSBjb25zdCB7IHJldHVybiBt
X2ZyYWdtZW50U2hhZGVyLmdldCgpOyB9Ci0gICAgCi1wcml2YXRlOgotICAgIHZpcnR1YWwgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKLSAgICB7Ci0gICAg
ICAgIGlmICghaXNTYW1lVHlwZShvKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
ICAgICBjb25zdCBDdXN0b21GaWx0ZXJPcGVyYXRpb24qIG90aGVyID0gc3RhdGljX2Nhc3Q8Y29u
c3QgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKj4oJm8pOwotICAgICAgICByZXR1cm4gbV92ZXJ0ZXhT
aGFkZXIuZ2V0KCkgPT0gb3RoZXItPm1fdmVydGV4U2hhZGVyLmdldCgpCi0gICAgICAgICAgICAm
JiBtX2ZyYWdtZW50U2hhZGVyLmdldCgpID09IG90aGVyLT5tX2ZyYWdtZW50U2hhZGVyLmdldCgp
OwotICAgIH0KLSAgICAKLSAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb24oUGFzc1JlZlB0cjxTdHls
ZVNoYWRlcj4gdmVydGV4U2hhZGVyLCBQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBmcmFnbWVudFNo
YWRlcikKLSAgICAgICAgOiBGaWx0ZXJPcGVyYXRpb24oQ1VTVE9NKQotICAgICAgICAsIG1fdmVy
dGV4U2hhZGVyKHZlcnRleFNoYWRlcikKLSAgICAgICAgLCBtX2ZyYWdtZW50U2hhZGVyKGZyYWdt
ZW50U2hhZGVyKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWZQdHI8U3R5bGVTaGFkZXI+IG1fdmVy
dGV4U2hhZGVyOwotICAgIFJlZlB0cjxTdHlsZVNoYWRlcj4gbV9mcmFnbWVudFNoYWRlcjsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVS
UykKLQotI2VuZGlmIC8vIEN1c3RvbUZpbHRlck9wZXJhdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24u
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODFkOWMwYy4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5o
CisrKyAvZGV2L251bGwKQEAgLTEsMzEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEZpbHRl
ck9wZXJhdGlvbl9oCi0jZGVmaW5lIEZpbHRlck9wZXJhdGlvbl9oCi0KLSNpZiBFTkFCTEUoQ1NT
X0ZJTFRFUlMpCi0KLSNpbmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUgIkxlbmd0aC5oIgotI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gQ1NTIEZpbHRlcnMKLQotY2xhc3MgRmlsdGVy
T3BlcmF0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8RmlsdGVyT3BlcmF0aW9uPiB7Ci1wdWJsaWM6
Ci0gICAgZW51bSBPcGVyYXRpb25UeXBlIHsKLSAgICAgICAgUkVGRVJFTkNFLCAvLyB1cmwoI3Nv
bWVmaWx0ZXIpCi0gICAgICAgIEdSQVlTQ0FMRSwKLSAgICAgICAgU0VQSUEsCi0gICAgICAgIFNB
VFVSQVRFLAotICAgICAgICBIVUVfUk9UQVRFLAotICAgICAgICBJTlZFUlQsCi0gICAgICAgIE9Q
QUNJVFksCi0gICAgICAgIEdBTU1BLAotICAgICAgICBCTFVSLAotICAgICAgICBTSEFSUEVOLAot
ICAgICAgICBEUk9QX1NIQURPVywKLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi0gICAgICAgIENV
U1RPTSwKLSNlbmRpZgotICAgICAgICBOT05FCi0gICAgfTsKLQotICAgIHZpcnR1YWwgfkZpbHRl
ck9wZXJhdGlvbigpIHsgfQotCi0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmls
dGVyT3BlcmF0aW9uJikgY29uc3QgPSAwOwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGaWx0
ZXJPcGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KLQotICAgIHZp
cnR1YWwgT3BlcmF0aW9uVHlwZSBnZXRPcGVyYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2FtZVR5cGUoY29uc3QgRmlsdGVyT3BlcmF0aW9u
JiBvKSBjb25zdCB7IHJldHVybiBvLmdldE9wZXJhdGlvblR5cGUoKSA9PSBtX3R5cGU7IH0KLQot
cHJvdGVjdGVkOgotICAgIEZpbHRlck9wZXJhdGlvbihPcGVyYXRpb25UeXBlIHR5cGUpCi0gICAg
ICAgIDogbV90eXBlKHR5cGUpCi0gICAgewotICAgIH0KLQotICAgIE9wZXJhdGlvblR5cGUgbV90
eXBlOwotfTsKLQotLy8gRWFjaCBvZiB0aGUgaW5kaXZpZHVhbCBvcGVyYXRpb25zIGFyZSBwcm92
aWRlZCBoZXJlLiBPbmNlIHRoZXkgYWN0dWFsbHkKLS8vIGhhdmUgY29kZSB0byBhcHBseSB0aGVp
ciBlZmZlY3QgdGhleSdsbCBtb3ZlIHRvIHNlcGFyYXRlIGZpbGVzLgotLy8gQXQgdGhlIG1vbWVu
dCB3ZSdyZSBqdXN0IHN0b3JpbmcgdGhlIGRhdGEgZm9yIHJvdW5kdHJpcHBpbmcuCi0KLWNsYXNz
IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewotcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4gY3Jl
YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgcmVmZXJlbmNlLCBPcGVyYXRpb25UeXBlIHR5cGUpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlv
bihyZWZlcmVuY2UsIHR5cGUpKTsKLSAgICB9Ci0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHJl
ZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlOyB9Ci0KLXByaXZhdGU6Ci0KLSAg
ICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0
Ci0gICAgewotICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIGNvbnN0IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiogb3RoZXIgPSBz
dGF0aWNfY2FzdDxjb25zdCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qPigmbyk7Ci0gICAgICAg
IHJldHVybiBtX3JlZmVyZW5jZSA9PSBvdGhlci0+bV9yZWZlcmVuY2U7Ci0gICAgfQotCi0gICAg
UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgcmVmZXJlbmNlLCBP
cGVyYXRpb25UeXBlIHR5cGUpCi0gICAgICAgIDogRmlsdGVyT3BlcmF0aW9uKHR5cGUpCi0gICAg
ICAgICwgbV9yZWZlcmVuY2UocmVmZXJlbmNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBBdG9taWNT
dHJpbmcgbV9yZWZlcmVuY2U7Ci19OwotCi0vLyBHUkFZU0NBTEUsIFNFUElBLCBTQVRVUkFURSBh
bmQgSFVFX1JPVEFURSBhcmUgdmFyaWF0aW9ucyBvbiBhIGJhc2ljIGNvbG9yIG1hdHJpeCBlZmZl
Y3QuCi0vLyBGb3IgSFVFX1JPVEFURSwgdGhlIGFuZ2xlIG9mIHJvdGF0aW9uIGlzIHN0b3JlZCBp
biBtX2Ftb3VudC4KLQotY2xhc3MgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiA6IHB1
YmxpYyBGaWx0ZXJPcGVyYXRpb24gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJh
c2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50LCBPcGVy
YXRpb25UeXBlIHR5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2lj
Q29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24oYW1vdW50LCB0eXBlKSk7Ci0gICAgfQotCi0gICAg
ZG91YmxlIGFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50OyB9Ci0KLXByaXZhdGU6Ci0K
LSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNv
bnN0Ci0gICAgewotICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24q
IG90aGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlv
bio+KCZvKTsKLSAgICAgICAgcmV0dXJuIG1fYW1vdW50ID09IG90aGVyLT5tX2Ftb3VudDsKLSAg
ICB9Ci0KLSAgICBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKGRvdWJsZSBhbW91bnQs
IE9wZXJhdGlvblR5cGUgdHlwZSkKLSAgICAgICAgOiBGaWx0ZXJPcGVyYXRpb24odHlwZSkKLSAg
ICAgICAgLCBtX2Ftb3VudChhbW91bnQpCi0gICAgewotICAgIH0KLQotICAgIGRvdWJsZSBtX2Ft
b3VudDsKLX07Ci0KLS8vIElOVkVSVCBhbmQgT1BBQ0lUWSBhcmUgdmFyaWF0aW9ucyBvbiBhIGJh
c2ljIGNvbXBvbmVudCB0cmFuc2ZlciBlZmZlY3QuCi0KLWNsYXNzIEJhc2ljQ29tcG9uZW50VHJh
bnNmZXJGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0
aW9uPiBjcmVhdGUoZG91YmxlIGFtb3VudCwgT3BlcmF0aW9uVHlwZSB0eXBlKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3Bl
cmF0aW9uKGFtb3VudCwgdHlwZSkpOwotICAgIH0KLQotICAgIGRvdWJsZSBhbW91bnQoKSBjb25z
dCB7IHJldHVybiBtX2Ftb3VudDsgfQotCi1wcml2YXRlOgotCi0gICAgdmlydHVhbCBib29sIG9w
ZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAotICAgIHsKLSAgICAgICAg
aWYgKCFpc1NhbWVUeXBlKG8pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBj
b25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKiBvdGhlciA9IHN0YXRp
Y19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qPigmbyk7
Ci0gICAgICAgIHJldHVybiBtX2Ftb3VudCA9PSBvdGhlci0+bV9hbW91bnQ7Ci0gICAgfQotCi0g
ICAgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbihkb3VibGUgYW1vdW50LCBP
cGVyYXRpb25UeXBlIHR5cGUpCi0gICAgICAgIDogRmlsdGVyT3BlcmF0aW9uKHR5cGUpCi0gICAg
ICAgICwgbV9hbW91bnQoYW1vdW50KQotICAgIHsKLSAgICB9Ci0KLSAgICBkb3VibGUgbV9hbW91
bnQ7Ci19OwotCi1jbGFzcyBHYW1tYUZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVy
YXRpb24gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdhbW1hRmlsdGVyT3BlcmF0
aW9uPiBjcmVhdGUoZG91YmxlIGFtcGxpdHVkZSwgZG91YmxlIGV4cG9uZW50LCBkb3VibGUgb2Zm
c2V0LCBPcGVyYXRpb25UeXBlIHR5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEdhbW1hRmlsdGVyT3BlcmF0aW9uKGFtcGxpdHVkZSwgZXhwb25lbnQsIG9mZnNldCwgdHlw
ZSkpOwotICAgIH0KLQotICAgIGRvdWJsZSBhbXBsaXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2Ft
cGxpdHVkZTsgfQotICAgIGRvdWJsZSBleHBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb25l
bnQ7IH0KLSAgICBkb3VibGUgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KLQot
cHJpdmF0ZToKLQotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJh
dGlvbiYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghaXNTYW1lVHlwZShvKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY29uc3QgR2FtbWFGaWx0ZXJPcGVyYXRpb24q
IG90aGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgR2FtbWFGaWx0ZXJPcGVyYXRpb24qPigmbyk7Ci0g
ICAgICAgIHJldHVybiBtX2FtcGxpdHVkZSA9PSBvdGhlci0+bV9hbXBsaXR1ZGUgJiYgbV9leHBv
bmVudCA9PSBvdGhlci0+bV9leHBvbmVudCAmJiBtX29mZnNldCA9PSBvdGhlci0+bV9vZmZzZXQ7
Ci0gICAgfQotCi0gICAgR2FtbWFGaWx0ZXJPcGVyYXRpb24oZG91YmxlIGFtcGxpdHVkZSwgZG91
YmxlIGV4cG9uZW50LCBkb3VibGUgb2Zmc2V0LCBPcGVyYXRpb25UeXBlIHR5cGUpCi0gICAgICAg
IDogRmlsdGVyT3BlcmF0aW9uKHR5cGUpCi0gICAgICAgICwgbV9hbXBsaXR1ZGUoYW1wbGl0dWRl
KQotICAgICAgICAsIG1fZXhwb25lbnQoZXhwb25lbnQpCi0gICAgICAgICwgbV9vZmZzZXQob2Zm
c2V0KQotICAgIHsKLSAgICB9Ci0KLSAgICBkb3VibGUgbV9hbXBsaXR1ZGU7Ci0gICAgZG91Ymxl
IG1fZXhwb25lbnQ7Ci0gICAgZG91YmxlIG1fb2Zmc2V0OwotfTsKLQotY2xhc3MgQmx1ckZpbHRl
ck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewotcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEJsdXJGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShMZW5ndGggc3RkRGV2aWF0
aW9uWCwgTGVuZ3RoIHN0ZERldmlhdGlvblksIE9wZXJhdGlvblR5cGUgdHlwZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmx1ckZpbHRlck9wZXJhdGlvbihzdGREZXZpYXRp
b25YLCBzdGREZXZpYXRpb25ZLCB0eXBlKSk7Ci0gICAgfQotCi0gICAgTGVuZ3RoIHN0ZERldmlh
dGlvblgoKSBjb25zdCB7IHJldHVybiBtX3N0ZERldmlhdGlvblg7IH0KLSAgICBMZW5ndGggc3Rk
RGV2aWF0aW9uWSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uWTsgfQotCi1wcml2YXRl
OgotCi0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBv
KSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCFpc1NhbWVUeXBlKG8pKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBjb25zdCBCbHVyRmlsdGVyT3BlcmF0aW9uKiBvdGhlciA9
IHN0YXRpY19jYXN0PGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qPigmbyk7Ci0gICAgICAgIHJl
dHVybiBtX3N0ZERldmlhdGlvblggPT0gb3RoZXItPm1fc3RkRGV2aWF0aW9uWCAmJiBtX3N0ZERl
dmlhdGlvblkgPT0gb3RoZXItPm1fc3RkRGV2aWF0aW9uWTsKLSAgICB9Ci0KLSAgICBCbHVyRmls
dGVyT3BlcmF0aW9uKExlbmd0aCBzdGREZXZpYXRpb25YLCBMZW5ndGggc3RkRGV2aWF0aW9uWSwg
T3BlcmF0aW9uVHlwZSB0eXBlKQotICAgICAgICA6IEZpbHRlck9wZXJhdGlvbih0eXBlKQotICAg
ICAgICAsIG1fc3RkRGV2aWF0aW9uWChzdGREZXZpYXRpb25YKQotICAgICAgICAsIG1fc3RkRGV2
aWF0aW9uWShzdGREZXZpYXRpb25ZKQotICAgIHsKLSAgICB9Ci0KLSAgICBMZW5ndGggbV9zdGRE
ZXZpYXRpb25YOwotICAgIExlbmd0aCBtX3N0ZERldmlhdGlvblk7Ci19OwotCi1jbGFzcyBTaGFy
cGVuRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcnBlbkZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGRvdWJs
ZSBhbW91bnQsIExlbmd0aCByYWRpdXMsIGRvdWJsZSB0aHJlc2hvbGQsIE9wZXJhdGlvblR5cGUg
dHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcnBlbkZpbHRlck9w
ZXJhdGlvbihhbW91bnQsIHJhZGl1cywgdGhyZXNob2xkLCB0eXBlKSk7Ci0gICAgfQotCi0gICAg
ZG91YmxlIGFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50OyB9Ci0gICAgTGVuZ3RoIHJh
ZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzOyB9Ci0gICAgZG91YmxlIHRocmVzaG9sZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdGhyZXNob2xkOyB9Ci0KLXByaXZhdGU6Ci0KLSAgICB2aXJ0dWFs
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0Ci0gICAgewot
ICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIGNvbnN0IFNoYXJwZW5GaWx0ZXJPcGVyYXRpb24qIG90aGVyID0gc3RhdGljX2Nhc3Q8
Y29uc3QgU2hhcnBlbkZpbHRlck9wZXJhdGlvbio+KCZvKTsKLSAgICAgICAgcmV0dXJuIG1fcmFk
aXVzID09IG90aGVyLT5tX3JhZGl1cyAmJiBtX3RocmVzaG9sZCA9PSBvdGhlci0+bV90aHJlc2hv
bGQgJiYgbV9hbW91bnQgPT0gb3RoZXItPm1fYW1vdW50OwotICAgIH0KLQotICAgIFNoYXJwZW5G
aWx0ZXJPcGVyYXRpb24oZG91YmxlIGFtb3VudCwgTGVuZ3RoIHJhZGl1cywgZG91YmxlIHRocmVz
aG9sZCwgT3BlcmF0aW9uVHlwZSB0eXBlKQotICAgICAgICA6IEZpbHRlck9wZXJhdGlvbih0eXBl
KQotICAgICAgICAsIG1fYW1vdW50KGFtb3VudCkKLSAgICAgICAgLCBtX3JhZGl1cyhyYWRpdXMp
Ci0gICAgICAgICwgbV90aHJlc2hvbGQodGhyZXNob2xkKQotICAgIHsKLSAgICB9Ci0KLSAgICBk
b3VibGUgbV9hbW91bnQ7Ci0gICAgTGVuZ3RoIG1fcmFkaXVzOwotICAgIGRvdWJsZSBtX3RocmVz
aG9sZDsKLX07Ci0KLWNsYXNzIERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmls
dGVyT3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEcm9wU2hhZG93
RmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoaW50IHgsIGludCB5LCBpbnQgc3RkRGV2aWF0aW9uLCBD
b2xvciBjb2xvciwgT3BlcmF0aW9uVHlwZSB0eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKHgsIHksIHN0ZERldmlhdGlvbiwg
Y29sb3IsIHR5cGUpKTsKLSAgICB9Ci0KLSAgICBpbnQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsg
fQotICAgIGludCB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9Ci0gICAgaW50IHN0ZERldmlhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uOyB9Ci0gICAgQ29sb3IgY29sb3IoKSBj
b25zdCB7IHJldHVybiBtX2NvbG9yOyB9Ci0KLXByaXZhdGU6Ci0KLSAgICB2aXJ0dWFsIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0Ci0gICAgewotICAgICAg
ICBpZiAoIWlzU2FtZVR5cGUobykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qIG90aGVyID0gc3RhdGljX2Nhc3Q8Y29u
c3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbio+KCZvKTsKLSAgICAgICAgcmV0dXJuIG1feCA9
PSBvdGhlci0+bV94ICYmIG1feSA9PSBvdGhlci0+bV95ICYmIG1fc3RkRGV2aWF0aW9uID09IG90
aGVyLT5tX3N0ZERldmlhdGlvbiAmJiBtX2NvbG9yID09IG90aGVyLT5tX2NvbG9yOwotICAgIH0K
LQotICAgIERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24oaW50IHgsIGludCB5LCBpbnQgc3RkRGV2
aWF0aW9uLCBDb2xvciBjb2xvciwgT3BlcmF0aW9uVHlwZSB0eXBlKQotICAgICAgICA6IEZpbHRl
ck9wZXJhdGlvbih0eXBlKQotICAgICAgICAsIG1feCh4KQotICAgICAgICAsIG1feSh5KQotICAg
ICAgICAsIG1fc3RkRGV2aWF0aW9uKHN0ZERldmlhdGlvbikKLSAgICAgICAgLCBtX2NvbG9yKGNv
bG9yKQotICAgIHsKLSAgICB9Ci0KLSAgICBpbnQgbV94OwotICAgIGludCBtX3k7Ci0gICAgaW50
IG1fc3RkRGV2aWF0aW9uOwotICAgIENvbG9yIG1fY29sb3I7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0KLSNlbmRpZiAvLyBG
aWx0ZXJPcGVyYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDcyNzg1MmIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgotCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLUZpbHRlck9wZXJhdGlvbnM6OkZpbHRlck9wZXJhdGlvbnMoKQot
ewotfQotCi1ib29sIEZpbHRlck9wZXJhdGlvbnM6Om9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYgbykgY29uc3QKLXsKLSAgICBpZiAobV9vcGVyYXRpb25zLnNpemUoKSAhPSBvLm1f
b3BlcmF0aW9ucy5zaXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAg
dW5zaWduZWQgcyA9IG1fb3BlcmF0aW9ucy5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHM7IGkrKykgewotICAgICAgICBpZiAoKm1fb3BlcmF0aW9uc1tpXSAhPSAqby5tX29w
ZXJhdGlvbnNbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAg
IHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyZWJhODI5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oCisrKyAvZGV2L251bGwKQEAg
LTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgRmlsdGVyT3BlcmF0aW9uc19oCi0jZGVm
aW5lIEZpbHRlck9wZXJhdGlvbnNfaAotCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotCi0jaW5j
bHVkZSAiRmlsdGVyT3BlcmF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGaWx0ZXJP
cGVyYXRpb25zIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBG
aWx0ZXJPcGVyYXRpb25zKCk7Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwot
ICAgIH0KLSAgICAKLSAgICB2b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIG1fb3BlcmF0aW9u
cy5jbGVhcigpOwotICAgIH0KLSAgICAKLSAgICBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gPiYgb3BlcmF0aW9ucygpIHsgcmV0dXJuIG1fb3BlcmF0aW9uczsgfQotICAgIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiA+JiBvcGVyYXRpb25zKCkgY29uc3QgeyByZXR1
cm4gbV9vcGVyYXRpb25zOyB9Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
b3BlcmF0aW9ucy5zaXplKCk7IH0KLSAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGF0KHNpemVf
dCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5kZXggPCBtX29wZXJhdGlvbnMuc2l6ZSgpID8gbV9v
cGVyYXRpb25zLmF0KGluZGV4KS5nZXQoKSA6IDA7IH0KLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gPiBtX29wZXJhdGlvbnM7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0KLSNlbmRpZiAv
LyBGaWx0ZXJPcGVyYXRpb25zX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi40YTYyOGIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCkBAIC0wLDAgKzEsODEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMK
KyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisg
KiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDdXN0b21GaWx0ZXJPcGVyYXRpb25f
aAorI2RlZmluZSBDdXN0b21GaWx0ZXJPcGVyYXRpb25faAorCisjaWYgRU5BQkxFKENTU19TSEFE
RVJTKQorCisjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiU3R5bGVTaGFk
ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBDU1MgU2hhZGVycworCitjbGFzcyBD
dXN0b21GaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShQYXNz
UmVmUHRyPFN0eWxlU2hhZGVyPiB2ZXJ0ZXhTaGFkZXIsIFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+
IGZyYWdtZW50U2hhZGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdXN0
b21GaWx0ZXJPcGVyYXRpb24odmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcikpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHNldFZlcnRleFNoYWRlcihQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBz
aGFkZXIpIHsgbV92ZXJ0ZXhTaGFkZXIgPSBzaGFkZXI7IH0KKyAgICBTdHlsZVNoYWRlciogdmVy
dGV4U2hhZGVyKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0ZXhTaGFkZXIuZ2V0KCk7IH0KKyAgICAK
KyAgICB2b2lkIHNldEZyYWdtZW50U2hhZGVyKFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IHNoYWRl
cikgeyBtX2ZyYWdtZW50U2hhZGVyID0gc2hhZGVyOyB9CisgICAgU3R5bGVTaGFkZXIqIGZyYWdt
ZW50U2hhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudFNoYWRlci5nZXQoKTsgfQorICAg
IAorcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVy
YXRpb24mIG8pIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY29uc3QgQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uKiBvdGhlciA9IHN0YXRpY19jYXN0PGNvbnN0IEN1c3RvbUZpbHRlck9wZXJhdGlvbio+KCZv
KTsKKyAgICAgICAgcmV0dXJuIG1fdmVydGV4U2hhZGVyLmdldCgpID09IG90aGVyLT5tX3ZlcnRl
eFNoYWRlci5nZXQoKQorICAgICAgICAgICAgJiYgbV9mcmFnbWVudFNoYWRlci5nZXQoKSA9PSBv
dGhlci0+bV9mcmFnbWVudFNoYWRlci5nZXQoKTsKKyAgICB9CisgICAgCisgICAgQ3VzdG9tRmls
dGVyT3BlcmF0aW9uKFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IHZlcnRleFNoYWRlciwgUGFzc1Jl
ZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21lbnRTaGFkZXIpCisgICAgICAgIDogRmlsdGVyT3BlcmF0
aW9uKENVU1RPTSkKKyAgICAgICAgLCBtX3ZlcnRleFNoYWRlcih2ZXJ0ZXhTaGFkZXIpCisgICAg
ICAgICwgbV9mcmFnbWVudFNoYWRlcihmcmFnbWVudFNoYWRlcikKKyAgICB7CisgICAgfQorCisg
ICAgUmVmUHRyPFN0eWxlU2hhZGVyPiBtX3ZlcnRleFNoYWRlcjsKKyAgICBSZWZQdHI8U3R5bGVT
aGFkZXI+IG1fZnJhZ21lbnRTaGFkZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpCisKKyNlbmRpZiAvLyBDdXN0b21GaWx0ZXJP
cGVyYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Zp
bHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9w
ZXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZDljMGMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3Bl
cmF0aW9uLmgKQEAgLTAsMCArMSwzMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEZpbHRlck9wZXJh
dGlvbl9oCisjZGVmaW5lIEZpbHRlck9wZXJhdGlvbl9oCisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQ1NTIEZpbHRlcnMKKworY2xhc3MgRmlsdGVyT3BlcmF0
aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8RmlsdGVyT3BlcmF0aW9uPiB7CitwdWJsaWM6CisgICAg
ZW51bSBPcGVyYXRpb25UeXBlIHsKKyAgICAgICAgUkVGRVJFTkNFLCAvLyB1cmwoI3NvbWVmaWx0
ZXIpCisgICAgICAgIEdSQVlTQ0FMRSwKKyAgICAgICAgU0VQSUEsCisgICAgICAgIFNBVFVSQVRF
LAorICAgICAgICBIVUVfUk9UQVRFLAorICAgICAgICBJTlZFUlQsCisgICAgICAgIE9QQUNJVFks
CisgICAgICAgIEdBTU1BLAorICAgICAgICBCTFVSLAorICAgICAgICBTSEFSUEVOLAorICAgICAg
ICBEUk9QX1NIQURPVywKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgICAgIENVU1RPTSwK
KyNlbmRpZgorICAgICAgICBOT05FCisgICAgfTsKKworICAgIHZpcnR1YWwgfkZpbHRlck9wZXJh
dGlvbigpIHsgfQorCisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3Bl
cmF0aW9uJikgY29uc3QgPSAwOworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGaWx0ZXJPcGVy
YXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KKworICAgIHZpcnR1YWwg
T3BlcmF0aW9uVHlwZSBnZXRPcGVyYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
CisgICAgdmlydHVhbCBib29sIGlzU2FtZVR5cGUoY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBj
b25zdCB7IHJldHVybiBvLmdldE9wZXJhdGlvblR5cGUoKSA9PSBtX3R5cGU7IH0KKworcHJvdGVj
dGVkOgorICAgIEZpbHRlck9wZXJhdGlvbihPcGVyYXRpb25UeXBlIHR5cGUpCisgICAgICAgIDog
bV90eXBlKHR5cGUpCisgICAgeworICAgIH0KKworICAgIE9wZXJhdGlvblR5cGUgbV90eXBlOwor
fTsKKworLy8gRWFjaCBvZiB0aGUgaW5kaXZpZHVhbCBvcGVyYXRpb25zIGFyZSBwcm92aWRlZCBo
ZXJlLiBPbmNlIHRoZXkgYWN0dWFsbHkKKy8vIGhhdmUgY29kZSB0byBhcHBseSB0aGVpciBlZmZl
Y3QgdGhleSdsbCBtb3ZlIHRvIHNlcGFyYXRlIGZpbGVzLgorLy8gQXQgdGhlIG1vbWVudCB3ZSdy
ZSBqdXN0IHN0b3JpbmcgdGhlIGRhdGEgZm9yIHJvdW5kdHJpcHBpbmcuCisKK2NsYXNzIFJlZmVy
ZW5jZUZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24geworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgcmVmZXJlbmNlLCBPcGVyYXRpb25UeXBlIHR5cGUpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbihyZWZl
cmVuY2UsIHR5cGUpKTsKKyAgICB9CisKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHJlZmVyZW5j
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlOyB9CisKK3ByaXZhdGU6CisKKyAgICB2aXJ0
dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGNvbnN0IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiogb3RoZXIgPSBzdGF0aWNf
Y2FzdDxjb25zdCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qPigmbyk7CisgICAgICAgIHJldHVy
biBtX3JlZmVyZW5jZSA9PSBvdGhlci0+bV9yZWZlcmVuY2U7CisgICAgfQorCisgICAgUmVmZXJl
bmNlRmlsdGVyT3BlcmF0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgcmVmZXJlbmNlLCBPcGVyYXRp
b25UeXBlIHR5cGUpCisgICAgICAgIDogRmlsdGVyT3BlcmF0aW9uKHR5cGUpCisgICAgICAgICwg
bV9yZWZlcmVuY2UocmVmZXJlbmNlKQorICAgIHsKKyAgICB9CisKKyAgICBBdG9taWNTdHJpbmcg
bV9yZWZlcmVuY2U7Cit9OworCisvLyBHUkFZU0NBTEUsIFNFUElBLCBTQVRVUkFURSBhbmQgSFVF
X1JPVEFURSBhcmUgdmFyaWF0aW9ucyBvbiBhIGJhc2ljIGNvbG9yIG1hdHJpeCBlZmZlY3QuCisv
LyBGb3IgSFVFX1JPVEFURSwgdGhlIGFuZ2xlIG9mIHJvdGF0aW9uIGlzIHN0b3JlZCBpbiBtX2Ft
b3VudC4KKworY2xhc3MgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBG
aWx0ZXJPcGVyYXRpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJhc2ljQ29s
b3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50LCBPcGVyYXRpb25U
eXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljQ29sb3JN
YXRyaXhGaWx0ZXJPcGVyYXRpb24oYW1vdW50LCB0eXBlKSk7CisgICAgfQorCisgICAgZG91Ymxl
IGFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50OyB9CisKK3ByaXZhdGU6CisKKyAgICB2
aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qIG90aGVy
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KCZv
KTsKKyAgICAgICAgcmV0dXJuIG1fYW1vdW50ID09IG90aGVyLT5tX2Ftb3VudDsKKyAgICB9CisK
KyAgICBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKGRvdWJsZSBhbW91bnQsIE9wZXJh
dGlvblR5cGUgdHlwZSkKKyAgICAgICAgOiBGaWx0ZXJPcGVyYXRpb24odHlwZSkKKyAgICAgICAg
LCBtX2Ftb3VudChhbW91bnQpCisgICAgeworICAgIH0KKworICAgIGRvdWJsZSBtX2Ftb3VudDsK
K307CisKKy8vIElOVkVSVCBhbmQgT1BBQ0lUWSBhcmUgdmFyaWF0aW9ucyBvbiBhIGJhc2ljIGNv
bXBvbmVudCB0cmFuc2ZlciBlZmZlY3QuCisKK2NsYXNzIEJhc2ljQ29tcG9uZW50VHJhbnNmZXJG
aWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPiBj
cmVhdGUoZG91YmxlIGFtb3VudCwgT3BlcmF0aW9uVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9u
KGFtb3VudCwgdHlwZSkpOworICAgIH0KKworICAgIGRvdWJsZSBhbW91bnQoKSBjb25zdCB7IHJl
dHVybiBtX2Ftb3VudDsgfQorCitwcml2YXRlOgorCisgICAgdmlydHVhbCBib29sIG9wZXJhdG9y
PT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFp
c1NhbWVUeXBlKG8pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjb25zdCBC
YXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKiBvdGhlciA9IHN0YXRpY19jYXN0
PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qPigmbyk7CisgICAg
ICAgIHJldHVybiBtX2Ftb3VudCA9PSBvdGhlci0+bV9hbW91bnQ7CisgICAgfQorCisgICAgQmFz
aWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbihkb3VibGUgYW1vdW50LCBPcGVyYXRp
b25UeXBlIHR5cGUpCisgICAgICAgIDogRmlsdGVyT3BlcmF0aW9uKHR5cGUpCisgICAgICAgICwg
bV9hbW91bnQoYW1vdW50KQorICAgIHsKKyAgICB9CisKKyAgICBkb3VibGUgbV9hbW91bnQ7Cit9
OworCitjbGFzcyBHYW1tYUZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24g
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdhbW1hRmlsdGVyT3BlcmF0aW9uPiBj
cmVhdGUoZG91YmxlIGFtcGxpdHVkZSwgZG91YmxlIGV4cG9uZW50LCBkb3VibGUgb2Zmc2V0LCBP
cGVyYXRpb25UeXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdh
bW1hRmlsdGVyT3BlcmF0aW9uKGFtcGxpdHVkZSwgZXhwb25lbnQsIG9mZnNldCwgdHlwZSkpOwor
ICAgIH0KKworICAgIGRvdWJsZSBhbXBsaXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2FtcGxpdHVk
ZTsgfQorICAgIGRvdWJsZSBleHBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb25lbnQ7IH0K
KyAgICBkb3VibGUgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKworcHJpdmF0
ZToKKworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYg
bykgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghaXNTYW1lVHlwZShvKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgY29uc3QgR2FtbWFGaWx0ZXJPcGVyYXRpb24qIG90aGVy
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgR2FtbWFGaWx0ZXJPcGVyYXRpb24qPigmbyk7CisgICAgICAg
IHJldHVybiBtX2FtcGxpdHVkZSA9PSBvdGhlci0+bV9hbXBsaXR1ZGUgJiYgbV9leHBvbmVudCA9
PSBvdGhlci0+bV9leHBvbmVudCAmJiBtX29mZnNldCA9PSBvdGhlci0+bV9vZmZzZXQ7CisgICAg
fQorCisgICAgR2FtbWFGaWx0ZXJPcGVyYXRpb24oZG91YmxlIGFtcGxpdHVkZSwgZG91YmxlIGV4
cG9uZW50LCBkb3VibGUgb2Zmc2V0LCBPcGVyYXRpb25UeXBlIHR5cGUpCisgICAgICAgIDogRmls
dGVyT3BlcmF0aW9uKHR5cGUpCisgICAgICAgICwgbV9hbXBsaXR1ZGUoYW1wbGl0dWRlKQorICAg
ICAgICAsIG1fZXhwb25lbnQoZXhwb25lbnQpCisgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQor
ICAgIHsKKyAgICB9CisKKyAgICBkb3VibGUgbV9hbXBsaXR1ZGU7CisgICAgZG91YmxlIG1fZXhw
b25lbnQ7CisgICAgZG91YmxlIG1fb2Zmc2V0OworfTsKKworY2xhc3MgQmx1ckZpbHRlck9wZXJh
dGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEJsdXJGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShMZW5ndGggc3RkRGV2aWF0aW9uWCwg
TGVuZ3RoIHN0ZERldmlhdGlvblksIE9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQmx1ckZpbHRlck9wZXJhdGlvbihzdGREZXZpYXRpb25YLCBz
dGREZXZpYXRpb25ZLCB0eXBlKSk7CisgICAgfQorCisgICAgTGVuZ3RoIHN0ZERldmlhdGlvblgo
KSBjb25zdCB7IHJldHVybiBtX3N0ZERldmlhdGlvblg7IH0KKyAgICBMZW5ndGggc3RkRGV2aWF0
aW9uWSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uWTsgfQorCitwcml2YXRlOgorCisg
ICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25z
dAorICAgIHsKKyAgICAgICAgaWYgKCFpc1NhbWVUeXBlKG8pKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBjb25zdCBCbHVyRmlsdGVyT3BlcmF0aW9uKiBvdGhlciA9IHN0YXRp
Y19jYXN0PGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qPigmbyk7CisgICAgICAgIHJldHVybiBt
X3N0ZERldmlhdGlvblggPT0gb3RoZXItPm1fc3RkRGV2aWF0aW9uWCAmJiBtX3N0ZERldmlhdGlv
blkgPT0gb3RoZXItPm1fc3RkRGV2aWF0aW9uWTsKKyAgICB9CisKKyAgICBCbHVyRmlsdGVyT3Bl
cmF0aW9uKExlbmd0aCBzdGREZXZpYXRpb25YLCBMZW5ndGggc3RkRGV2aWF0aW9uWSwgT3BlcmF0
aW9uVHlwZSB0eXBlKQorICAgICAgICA6IEZpbHRlck9wZXJhdGlvbih0eXBlKQorICAgICAgICAs
IG1fc3RkRGV2aWF0aW9uWChzdGREZXZpYXRpb25YKQorICAgICAgICAsIG1fc3RkRGV2aWF0aW9u
WShzdGREZXZpYXRpb25ZKQorICAgIHsKKyAgICB9CisKKyAgICBMZW5ndGggbV9zdGREZXZpYXRp
b25YOworICAgIExlbmd0aCBtX3N0ZERldmlhdGlvblk7Cit9OworCitjbGFzcyBTaGFycGVuRmls
dGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2hhcnBlbkZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGRvdWJsZSBhbW91
bnQsIExlbmd0aCByYWRpdXMsIGRvdWJsZSB0aHJlc2hvbGQsIE9wZXJhdGlvblR5cGUgdHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcnBlbkZpbHRlck9wZXJhdGlv
bihhbW91bnQsIHJhZGl1cywgdGhyZXNob2xkLCB0eXBlKSk7CisgICAgfQorCisgICAgZG91Ymxl
IGFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50OyB9CisgICAgTGVuZ3RoIHJhZGl1cygp
IGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzOyB9CisgICAgZG91YmxlIHRocmVzaG9sZCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGhyZXNob2xkOyB9CisKK3ByaXZhdGU6CisKKyAgICB2aXJ0dWFsIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0CisgICAgeworICAgICAg
ICBpZiAoIWlzU2FtZVR5cGUobykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGNvbnN0IFNoYXJwZW5GaWx0ZXJPcGVyYXRpb24qIG90aGVyID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
U2hhcnBlbkZpbHRlck9wZXJhdGlvbio+KCZvKTsKKyAgICAgICAgcmV0dXJuIG1fcmFkaXVzID09
IG90aGVyLT5tX3JhZGl1cyAmJiBtX3RocmVzaG9sZCA9PSBvdGhlci0+bV90aHJlc2hvbGQgJiYg
bV9hbW91bnQgPT0gb3RoZXItPm1fYW1vdW50OworICAgIH0KKworICAgIFNoYXJwZW5GaWx0ZXJP
cGVyYXRpb24oZG91YmxlIGFtb3VudCwgTGVuZ3RoIHJhZGl1cywgZG91YmxlIHRocmVzaG9sZCwg
T3BlcmF0aW9uVHlwZSB0eXBlKQorICAgICAgICA6IEZpbHRlck9wZXJhdGlvbih0eXBlKQorICAg
ICAgICAsIG1fYW1vdW50KGFtb3VudCkKKyAgICAgICAgLCBtX3JhZGl1cyhyYWRpdXMpCisgICAg
ICAgICwgbV90aHJlc2hvbGQodGhyZXNob2xkKQorICAgIHsKKyAgICB9CisKKyAgICBkb3VibGUg
bV9hbW91bnQ7CisgICAgTGVuZ3RoIG1fcmFkaXVzOworICAgIGRvdWJsZSBtX3RocmVzaG9sZDsK
K307CisKK2NsYXNzIERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3Bl
cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEcm9wU2hhZG93RmlsdGVy
T3BlcmF0aW9uPiBjcmVhdGUoaW50IHgsIGludCB5LCBpbnQgc3RkRGV2aWF0aW9uLCBDb2xvciBj
b2xvciwgT3BlcmF0aW9uVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKHgsIHksIHN0ZERldmlhdGlvbiwgY29sb3Is
IHR5cGUpKTsKKyAgICB9CisKKyAgICBpbnQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQorICAg
IGludCB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9CisgICAgaW50IHN0ZERldmlhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uOyB9CisgICAgQ29sb3IgY29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2NvbG9yOyB9CisKK3ByaXZhdGU6CisKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0CisgICAgeworICAgICAgICBpZiAo
IWlzU2FtZVR5cGUobykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNvbnN0
IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qIG90aGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgRHJv
cFNoYWRvd0ZpbHRlck9wZXJhdGlvbio+KCZvKTsKKyAgICAgICAgcmV0dXJuIG1feCA9PSBvdGhl
ci0+bV94ICYmIG1feSA9PSBvdGhlci0+bV95ICYmIG1fc3RkRGV2aWF0aW9uID09IG90aGVyLT5t
X3N0ZERldmlhdGlvbiAmJiBtX2NvbG9yID09IG90aGVyLT5tX2NvbG9yOworICAgIH0KKworICAg
IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24oaW50IHgsIGludCB5LCBpbnQgc3RkRGV2aWF0aW9u
LCBDb2xvciBjb2xvciwgT3BlcmF0aW9uVHlwZSB0eXBlKQorICAgICAgICA6IEZpbHRlck9wZXJh
dGlvbih0eXBlKQorICAgICAgICAsIG1feCh4KQorICAgICAgICAsIG1feSh5KQorICAgICAgICAs
IG1fc3RkRGV2aWF0aW9uKHN0ZERldmlhdGlvbikKKyAgICAgICAgLCBtX2NvbG9yKGNvbG9yKQor
ICAgIHsKKyAgICB9CisKKyAgICBpbnQgbV94OworICAgIGludCBtX3k7CisgICAgaW50IG1fc3Rk
RGV2aWF0aW9uOworICAgIENvbG9yIG1fY29sb3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisKKyNlbmRpZiAvLyBGaWx0ZXJP
cGVyYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Zp
bHRlck9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbHRl
ck9wZXJhdGlvbnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyNzg1
MmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmls
dGVyT3BlcmF0aW9ucy5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCisKKyNpZiBFTkFCTEUoQ1NT
X0ZJTFRFUlMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRmlsdGVyT3BlcmF0aW9uczo6Rmls
dGVyT3BlcmF0aW9ucygpCit7Cit9CisKK2Jvb2wgRmlsdGVyT3BlcmF0aW9uczo6b3BlcmF0b3I9
PShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvKSBjb25zdAoreworICAgIGlmIChtX29wZXJhdGlv
bnMuc2l6ZSgpICE9IG8ubV9vcGVyYXRpb25zLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAKKyAgICB1bnNpZ25lZCBzID0gbV9vcGVyYXRpb25zLnNpemUoKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgczsgaSsrKSB7CisgICAgICAgIGlmICgqbV9vcGVyYXRp
b25zW2ldICE9ICpvLm1fb3BlcmF0aW9uc1tpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfRklMVEVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjJlYmE4MjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5oCkBAIC0wLDAgKzEsNjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIEZpbHRlck9wZXJhdGlvbnNfaAorI2RlZmluZSBGaWx0ZXJPcGVyYXRp
b25zX2gKKworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKworI2luY2x1ZGUgIkZpbHRlck9wZXJh
dGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmlsdGVyT3BlcmF0aW9ucyB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgRmlsdGVyT3BlcmF0aW9ucygp
OworICAgIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgY29u
c3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG8pIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBtX29wZXJhdGlvbnMuY2xlYXIoKTsKKyAgICB9
CisgICAgCisgICAgVmVjdG9yPFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+ID4mIG9wZXJhdGlvbnMo
KSB7IHJldHVybiBtX29wZXJhdGlvbnM7IH0KKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gPiYgb3BlcmF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW9uczsg
fQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGlvbnMuc2l6ZSgp
OyB9CisgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBhdChzaXplX3QgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIGluZGV4IDwgbV9vcGVyYXRpb25zLnNpemUoKSA/IG1fb3BlcmF0aW9ucy5hdChpbmRl
eCkuZ2V0KCkgOiAwOyB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFJlZlB0cjxGaWx0ZXJPcGVy
YXRpb24+ID4gbV9vcGVyYXRpb25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKENTU19GSUxURVJTKQorCisjZW5kaWYgLy8gRmlsdGVyT3BlcmF0aW9u
c19oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116948</attachid>
            <date>2011-11-29 04:59:40 -0800</date>
            <delta_ts>2011-11-29 07:29:10 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-72539-20111129145923.patch</filename>
            <type>text/plain</type>
            <size>63338</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDExZjI3MDdhNmY0OWNl
NTkyYzRjNjlmZDJmMTRkMzZhYzZjZDVhYy4uZDJhYjRkY2MyNjBhOWJlMzVkMTE0OTNkMDY3YzZj
YWVlNzhhYzQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDExLTExLTE3ICBBbGV4
YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KKworICAgICAgICBGaWx0ZXJPcGVy
YXRpb24qIHNob3VsZCBzdGF5IGluIHJlbmRlcmluZy9zdHlsZSwgYmVjYXVzZSBpdCBpcyBkaXJl
Y3RseSByZWZlcmVuY2VkIGZyb20gUmVuZGVyU3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVh
biBKYWNrc29uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywganVzdCBtb3Zpbmcgc29tZSBmaWxl
cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9D
dXN0b21GaWx0ZXJPcGVyYXRpb24uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmguCisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbi5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMu
Y3BwLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb25zLmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbnMuaC4KKwogMjAxMS0xMS0yOCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHV0IGluc3BlY3RvciBhZ2VudHMgaW50
byBhIHZlY3RvciBpbiB0aGUgSW5zcGVjdG9yQ29udHJvbGxlci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggOGJiOTY5NTQ3M2E0OWRlNjFhNzFjZWNiMDAzZjA2OTY1ZjA4Nzg2Yy4uY2ViNTlhYmM2
MzFhZDRhNzc4OTg4YTgwNjg1MDgzNjFkNDA3MjEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTExMjMsNyArMTEyMyw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
VHVyYnVsZW5jZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9MaWdodFNvdXJjZS5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3BwCkBAIC0xMzA1LDYgKzEzMDQsNyBA
QCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmNw
cAogICAgIHJlbmRlcmluZy9zdHlsZS9Db3VudGVyRGlyZWN0aXZlcy5jcHAKICAgICByZW5kZXJp
bmcvc3R5bGUvRmlsbExheWVyLmNwcAorICAgIHJlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRp
b25zLmNwcAogICAgIHJlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuY3BwCiAgICAgcmVuZGVy
aW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcAogICAgIHJlbmRlcmluZy9zdHlsZS9RdW90ZXNE
YXRhLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggYzA3YjA3YTZmODQyYTVh
NjdhM2ZjNzQ1YzIzNTNjNjA0ZmRlZjhiMy4uMzUzOTg5NGMwZTE1YTY1ZDg0ODNhZGNjNDg4ZjAw
OWNlOThiNGQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yNTI3LDcgKzI1
MjcsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL1RyYW5zZm9ybWF0aW9uTWF0cml4Q2Fpcm8uY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNs
dXR0ZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlck9wZXJhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgXApAQCAtMjU2Nyw5ICsy
NTY2LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmggXAotCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAgXAotCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0U291cmNlLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9MaWdodFNvdXJj
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGln
aHRTb3VyY2UuY3BwIFwKQEAgLTMyNDUsOSArMzI0MSwxMyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyRGlyZWN0aXZlcy5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ3Vyc29yRGF0YS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ3Vyc29yTGlzdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9EYXRhUmVmLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9GaWxsTGF5ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmls
bExheWVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRp
b24uaCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbnMu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTGluZUNsYW1wVmFsdWUuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRl
eCAwMDMxMTY1MzQxMDJjNjczYmU1NjZjZDgyN2NlNDY1NTNhZjMwY2JmLi5iM2RhZjQ5MzUwYWIz
ZDM3YTQ0YzJkMWMxZTgwMzI2MThkNzUzMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTIwNjYsNyArMjA2
Niw2IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgg
XAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmggXAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVCbGVuZC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRy
aXguaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVy
LmggXApAQCAtMjA4NSw4ICsyMDg0LDYgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRVRpbGUuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVR1cmJ1bGVuY2UuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuaCBcCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaCBc
Ci0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmggXAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGlnaHRTb3VyY2UuaCBcCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUdyYXBoaWMuaCBcCkBAIC0yMzU4LDcgKzIzNTUsMTAgQEAgSEVBREVSUyAr
PSBcCiAgICAgcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmggXAogICAgIHJlbmRl
cmluZy9zdHlsZS9DdXJzb3JEYXRhLmggXAogICAgIHJlbmRlcmluZy9zdHlsZS9DdXJzb3JMaXN0
LmggXAorICAgIHJlbmRlcmluZy9zdHlsZS9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBcCiAgICAg
cmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oIFwKKyAgICByZW5kZXJpbmcvc3R5bGUvRmlsdGVy
T3BlcmF0aW9uLmggXAorICAgIHJlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb25zLmggXAog
ICAgIHJlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuaCBcCiAgICAgcmVuZGVyaW5nL3N0eWxl
L05pbmVQaWVjZUltYWdlLmggXAogICAgIHJlbmRlcmluZy9zdHlsZS9RdW90ZXNEYXRhLmggXApA
QCAtMzI0NCw3ICszMjQ0LDYgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0ZJTFRFUlM9MSkg
ewogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAgXAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAgXAogICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgXAotICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwIFwKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9MaWdodFNvdXJjZS5jcHAgXAogICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3BwIFwKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3BwIFwKQEAgLTMyNTIsNyArMzI1
MSw4IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9GSUxURVJTPTEpIHsKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcCBcCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZFQ29tcG9zaXRlQXJpdGhtZXRpY05FT04uY3BwIFwK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9hcm0vRkVMaWdodGluZ05FT04uY3Bw
IFwKLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9hcm0vRkVHYXVzc2lhbkJsdXJO
RU9OLmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9GRUdhdXNzaWFu
Qmx1ck5FT04uY3BwIFwKKyAgICAgICAgcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbnMu
Y3BwCiB9CiAKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9NQVRITUw9MSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IDRiZjQ2ZjEyMWQwODZhMzk2ZDU5MGY3ZWQ4MmY2MTRmOTE1ZWFkOGQuLmYzZjRk
NTdkNzA3OWE0YmE1NzY4ZmZhZDEzMjcyY2Y5NGU0ZGE2ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTM2MjksNyArMzYyOSw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0lt
YWdlRWZsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ludFBvaW50
RWZsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ludFJlY3RFZmwu
Y3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
ck9wZXJhdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rp
c3RhbnRMaWdodFNvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAnLApAQCAtMzY2OSw5ICszNjY4LDYgQEAKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgnLAotICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgnLAotICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAnLAotICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0U291cmNlLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9MaWdodFNvdXJjZS5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2Uu
Y3BwJywKQEAgLTQ3NjEsNyArNDc1NywxMSBAQAogICAgICAgICAgICAgJ3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHls
ZS9Db250ZW50RGF0YS5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9Db3VudGVy
RGlyZWN0aXZlcy5jcHAnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9DdXN0b21GaWx0
ZXJPcGVyYXRpb24uaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5j
cHAnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb24uaCcsCisg
ICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbnMuY3BwJywKKyAgICAg
ICAgICAgICdyZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5oJywKICAgICAgICAgICAg
ICdyZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVy
aW5nL3N0eWxlL0tleWZyYW1lTGlzdC5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUv
TmluZVBpZWNlSW1hZ2UuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKaW5kZXggMDJkYjIzMWYwOTEzOTBiYWEzYjRhYTY5MWM1ODI2YWY4NzA3NmUy
OC4uMTg2YTdmYjQzOWRhMzI0Y2MzMjAxMmMyZWI1MTM2YWZjOGVjNTlhYiAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI5NTU2LDEwICsyOTU1
Niw2IEBACiAJCQkJCU5hbWU9ImZpbHRlcnMiCiAJCQkJCT4KIAkJCQkJPEZpbGUKLQkJCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJPcGVy
YXRpb24uaCIKLQkJCQkJCT4KLQkJCQkJPC9GaWxlPgotCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXERpc3RhbnRMaWdodFNvdXJjZS5j
cHAiCiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KQEAgLTI5NzQwLDE4ICsyOTczNiw2IEBACiAJCQkJ
CQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKLQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xGaWx0ZXJPcGVyYXRpb24uaCIKLQkJCQkJCT4KLQkJCQkJ
PC9GaWxlPgotCQkJCQk8RmlsZQotCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xmaWx0ZXJzXEZpbHRlck9wZXJhdGlvbnMuY3BwIgotCQkJCQkJPgotCQkJCQk8L0ZpbGU+
Ci0JCQkJCTxGaWxlCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZp
bHRlcnNcRmlsdGVyT3BlcmF0aW9ucy5oIgotCQkJCQkJPgotCQkJCQk8L0ZpbGU+Ci0JCQkJCTxG
aWxlCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcTGln
aHRTb3VyY2UuY3BwIgogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CkBAIC00MDA3OSw2ICs0MDA2Mywy
MiBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccmVuZGVyaW5nXHN0eWxlXEN1c3RvbUZpbHRlck9wZXJhdGlvbi5oIgorCQkJCQk+CisJCQkJ
PC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXHN0eWxl
XEZpbHRlck9wZXJhdGlvbi5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXHN0eWxlXEZpbHRlck9wZXJhdGlvbnMuY3BwIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVu
ZGVyaW5nXHN0eWxlXEZpbHRlck9wZXJhdGlvbnMuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJ
CQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdHlsZVxLZXlmcmFtZUxp
c3QuY3BwIgogCQkJCQk+CiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRlOTJlYWVmYTg0
ZTlmMjQzMTE3ZWRhMTUxNmJjNWZmZDRhMGY5OGQuLjljODU3Nzk1MjcyNzhlM2IzN2I1YmE4ZmYy
NGUxZDgwYjg3ZjY1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTg0NSw5ICs4NDUsNiBAQAogCQkzMTk0NjIzMjEzMDIyRjY1
MDA0QkIzRjggLyogSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOTQ2MjMxMTMwMjJGNjUwMDRCQjNG
OCAvKiBKU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwICovOyB9OwogCQkzMTlBRTA2MzE0
MkQ2QjI0MDA2NTYzQTEgLyogU3R5bGVGaWx0ZXJEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOUFFMDYxMTQyRDZCMjQwMDY1NjNBMSAvKiBT
dHlsZUZpbHRlckRhdGEuY3BwICovOyB9OwogCQkzMTlBRTA2NDE0MkQ2QjI0MDA2NTYzQTEgLyog
U3R5bGVGaWx0ZXJEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTlBRTA2MjE0MkQ2QjI0MDA2NTYzQTEgLyogU3R5bGVGaWx0ZXJEYXRhLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzE5QUUwNjgx
NDJENzhERDAwNjU2M0ExIC8qIEZpbHRlck9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE5QUUwNjUxNDJENzhERDAwNjU2M0ExIC8qIEZp
bHRlck9wZXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCTMxOUFFMDY5MTQyRDc4REQwMDY1NjNBMSAvKiBGaWx0ZXJPcGVyYXRpb25zLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOUFFMDY2
MTQyRDc4REQwMDY1NjNBMSAvKiBGaWx0ZXJPcGVyYXRpb25zLmNwcCAqLzsgfTsKLQkJMzE5QUUw
NkExNDJENzhERDAwNjU2M0ExIC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOUFFMDY3MTQyRDc4REQwMDY1NjNBMSAv
KiBGaWx0ZXJPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMzE5RTY4ODcxMzI3QzkxMTAwNEFDOTFBIC8qIEpTV2ViS2l0QW5pbWF0
aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxOUU2ODg2MTMyN0M5MTEwMDRBQzkxQSAvKiBKU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5j
cHAgKi87IH07CiAJCTMxOUU2OUIyMTMyOTlCQkQwMDRBQzkxQSAvKiBXZWJLaXRBbmltYXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE5RTY5
QUMxMzI5OUJCRDAwNEFDOTFBIC8qIFdlYktpdEFuaW1hdGlvbi5jcHAgKi87IH07CiAJCTMxOUU2
OUIzMTMyOTlCQkQwMDRBQzkxQSAvKiBXZWJLaXRBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOUU2OUFEMTMyOTlCQkQwMDRBQzkxQSAv
KiBXZWJLaXRBbmltYXRpb24uaCAqLzsgfTsKQEAgLTEzNjQsMTEgKzEzNjEsMTQgQEAKIAkJNTAx
QkE5RTIxMzkzQ0VBMDAwRjdBQ0VCIC8qIENTU1dyYXBTaGFwZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwMUJBOUUxMTM5M0NFQTAwMEY3QUNFQiAv
KiBDU1NXcmFwU2hhcGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTAxQkFBQTkxMzk1MEUyQzAwRjdBQ0VCIC8qIFdpbmRSdWxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDFCQUFBODEzOTUwRTJD
MDBGN0FDRUIgLyogV2luZFJ1bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MDM4QkMwNzE0NzExQ0RCMDA5NUUwRDEgLyogV2ViS2l0Q1NTU2hh
ZGVyVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTAzOEJDMDYxNDcxMUNEQjAwOTVFMEQxIC8qIFdlYktpdENTU1NoYWRlclZhbHVlLmNwcCAq
LzsgfTsKLQkJNTAzOEJDMEIxNDcxMUQzNDAwOTVFMEQxIC8qIEN1c3RvbUZpbHRlck9wZXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAzOEJD
MDkxNDcxMUQzNDAwOTVFMEQxIC8qIEN1c3RvbUZpbHRlck9wZXJhdGlvbi5oICovOyB9OwogCQk1
MDM4QkUyRjE0NzJBRDIzMDA5NUUwRDEgLyogU3R5bGVDYWNoZWRTaGFkZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAzOEJFMkQxNDcyQUQyMzAw
OTVFMEQxIC8qIFN0eWxlQ2FjaGVkU2hhZGVyLmNwcCAqLzsgfTsKIAkJNTAzOEJFMzAxNDcyQUQy
MzAwOTVFMEQxIC8qIFN0eWxlQ2FjaGVkU2hhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDM4QkUyRTE0NzJBRDIzMDA5NUUwRDEgLyogU3R5bGVD
YWNoZWRTaGFkZXIuaCAqLzsgfTsKIAkJNTAzOEJFNDAxNDcyQUQ5ODAwOTVFMEQxIC8qIENhY2hl
ZFNoYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MDM4QkUzRTE0NzJBRDk4MDA5NUUwRDEgLyogQ2FjaGVkU2hhZGVyLmNwcCAqLzsgfTsKIAkJ
NTAzOEJFNDExNDcyQUQ5ODAwOTVFMEQxIC8qIENhY2hlZFNoYWRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAzOEJFM0YxNDcyQUQ5ODAwOTVFMEQx
IC8qIENhY2hlZFNoYWRlci5oICovOyB9OworCQk1MDM4QkYyODE0NzUwRjE5MDA5NUUwRDEgLyog
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MDM4QkYyNDE0NzUwRjE5MDA5NUUwRDEgLyogQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNTAzOEJGMjkxNDc1MEYxOTAwOTVFMEQxIC8qIEZpbHRlck9wZXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAzOEJGMjUxNDc1MEYxOTAw
OTVFMEQxIC8qIEZpbHRlck9wZXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTUwMzhCRjJBMTQ3NTBGMTkwMDk1RTBEMSAvKiBGaWx0ZXJP
cGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUwMzhCRjI2MTQ3NTBGMTkwMDk1RTBEMSAvKiBGaWx0ZXJPcGVyYXRpb25zLmNwcCAqLzsg
fTsKKwkJNTAzOEJGMkIxNDc1MEYxOTAwOTVFMEQxIC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwMzhCRjI3MTQ3NTBG
MTkwMDk1RTBEMSAvKiBGaWx0ZXJPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTA4Q0NBNEYxM0NGMTA2QjAwMzE1MUYzIC8qIFJl
bmRlckZsb3dUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUwOENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmggKi87
IH07CiAJCTUwOENDQTUwMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwOENDQTRFMTND
RjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCAqLzsgfTsKIAkJNTBFNTY2RDYx
MzlFMzhDNTAwMjE0NDMzIC8qIENTU1dyYXBTaGFwZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAxQkFBQjExMzk1MTE0QjAwRjdBQ0VCIC8qIENT
U1dyYXBTaGFwZXMuY3BwICovOyB9OwpAQCAtNzk3Miw5ICs3OTcyLDYgQEAKIAkJMzE5NDYyMzEx
MzAyMkY2NTAwNEJCM0Y4IC8qIEpTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTlBRTA2MTE0MkQ2QjI0MDA2
NTYzQTEgLyogU3R5bGVGaWx0ZXJEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFN0eWxlRmlsdGVyRGF0YS5jcHA7IHBhdGggPSBzdHlsZS9TdHlsZUZpbHRlckRh
dGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTlBRTA2MjE0MkQ2QjI0MDA2
NTYzQTEgLyogU3R5bGVGaWx0ZXJEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFN0eWxlRmlsdGVyRGF0YS5oOyBwYXRoID0gc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxOUFFMDY1MTQyRDc4REQwMDY1NjNBMSAvKiBG
aWx0ZXJPcGVyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmlsdGVy
T3BlcmF0aW9uLmg7IHBhdGggPSBmaWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkzMTlBRTA2NjE0MkQ3OEREMDA2NTYzQTEgLyogRmlsdGVyT3Bl
cmF0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGaWx0ZXJP
cGVyYXRpb25zLmNwcDsgcGF0aCA9IGZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxOUFFMDY3MTQyRDc4REQwMDY1NjNBMSAvKiBGaWx0
ZXJPcGVyYXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbHRlck9w
ZXJhdGlvbnMuaDsgcGF0aCA9IGZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzMTlFNjg4NjEzMjdDOTExMDA0QUM5MUEgLyogSlNXZWJLaXRB
bmltYXRpb25DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMTlFNjlBQzEzMjk5QkJEMDA0QUM5MUEgLyogV2ViS2l0QW5pbWF0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdEFuaW1hdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxOUU2OUFEMTMyOTlCQkQwMDRBQzkxQSAvKiBXZWJL
aXRBbmltYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0QW5p
bWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NTY1LDExICs4NTYyLDE0
IEBACiAJCTUwMUJBQUE4MTM5NTBFMkMwMEY3QUNFQiAvKiBXaW5kUnVsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5kUnVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MDFCQUFCMTEzOTUxMTRCMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NXcmFwU2hhcGVzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTAzOEJDMDYxNDcxMUNEQjAwOTVFMEQxIC8qIFdl
YktpdENTU1NoYWRlclZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYktpdENTU1NoYWRlclZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNTAzOEJDMDkxNDcxMUQzNDAwOTVFMEQxIC8qIEN1c3RvbUZpbHRlck9wZXJhdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdXN0b21GaWx0ZXJPcGVyYXRpb24uaDsg
cGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUwMzhCRTJEMTQ3MkFEMjMwMDk1RTBEMSAvKiBTdHlsZUNhY2hlZFNoYWRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTdHlsZUNhY2hlZFNo
YWRlci5jcHA7IHBhdGggPSBzdHlsZS9TdHlsZUNhY2hlZFNoYWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUwMzhCRTJFMTQ3MkFEMjMwMDk1RTBEMSAvKiBTdHlsZUNhY2hl
ZFNoYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdHlsZUNhY2hlZFNo
YWRlci5oOyBwYXRoID0gc3R5bGUvU3R5bGVDYWNoZWRTaGFkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTAzOEJFM0UxNDcyQUQ5ODAwOTVFMEQxIC8qIENhY2hlZFNoYWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRTaGFkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MDM4QkUzRjE0NzJBRDk4MDA5NUUwRDEg
LyogQ2FjaGVkU2hhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hl
ZFNoYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MDM4QkYyNDE0NzUwRjE5
MDA5NUUwRDEgLyogQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlck9wZXJhdGlvbi5oOyBwYXRoID0gc3R5bGUvQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUwMzhCRjI1
MTQ3NTBGMTkwMDk1RTBEMSAvKiBGaWx0ZXJPcGVyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gRmlsdGVyT3BlcmF0aW9uLmg7IHBhdGggPSBzdHlsZS9GaWx0ZXJPcGVy
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTAzOEJGMjYxNDc1MEYxOTAw
OTVFMEQxIC8qIEZpbHRlck9wZXJhdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gRmlsdGVyT3BlcmF0aW9ucy5jcHA7IHBhdGggPSBzdHlsZS9GaWx0ZXJPcGVy
YXRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTAzOEJGMjcxNDc1MEYx
OTAwOTVFMEQxIC8qIEZpbHRlck9wZXJhdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gRmlsdGVyT3BlcmF0aW9ucy5oOyBwYXRoID0gc3R5bGUvRmlsdGVyT3BlcmF0aW9u
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MDhDQ0E0RDEzQ0YxMDZCMDAzMTUx
RjMgLyogUmVuZGVyRmxvd1RocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJGbG93VGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwOEND
QTRFMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZsb3dUaHJlYWQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MEI0MjE1NzE0Njk3Njk2MDA4N0U2MDQgLyogV2ViS2l0Q1NT
U2hhZGVyVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Q1NT
U2hhZGVyVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NjA1LDcgKzE3
NjA1LDYgQEAKIAkJQTc1RThCN0YwRTFERTJCMDAwN0YyNDgxIC8qIGZpbHRlcnMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTUwMzhCQzA5MTQ3MTFEMzQw
MDk1RTBEMSAvKiBDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCAqLywKIAkJCQkxOTg0MUJGQTEzNjgz
NkExMDA2RUJCQjkgLyogYXJtICovLAogCQkJCUExRTExNTQzMTMwMTVDM0QwMDU0QUM4QyAvKiBE
aXN0YW50TGlnaHRTb3VyY2UuY3BwICovLAogCQkJCTg0NzMwRDVBMTI0OEYwQjMwMEQzQTlDOSAv
KiBEaXN0YW50TGlnaHRTb3VyY2UuaCAqLywKQEAgLTE3NjQ2LDkgKzE3NjQ1LDYgQEAKIAkJCQk4
NDVFNzJGNzBGRDI2MUVFMDBBODdENzkgLyogRmlsdGVyLmggKi8sCiAJCQkJMDhDOTI1MTcwRkND
N0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5jcHAgKi8sCiAJCQkJMDhDOTI1MTgwRkNDN0M0
QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oICovLAotCQkJCTMxOUFFMDY1MTQyRDc4REQwMDY1
NjNBMSAvKiBGaWx0ZXJPcGVyYXRpb24uaCAqLywKLQkJCQkzMTlBRTA2NjE0MkQ3OEREMDA2NTYz
QTEgLyogRmlsdGVyT3BlcmF0aW9ucy5jcHAgKi8sCi0JCQkJMzE5QUUwNjcxNDJENzhERDAwNjU2
M0ExIC8qIEZpbHRlck9wZXJhdGlvbnMuaCAqLywKIAkJCQk4NDczMEQ3MzEyNDhGMEIzMDBEM0E5
QzkgLyogTGlnaHRTb3VyY2UuY3BwICovLAogCQkJCTg0NzMwRDc0MTI0OEYwQjMwMEQzQTlDOSAv
KiBMaWdodFNvdXJjZS5oICovLAogCQkJCUExRTExNTQ1MTMwMTVDNEUwMDU0QUM4QyAvKiBQb2lu
dExpZ2h0U291cmNlLmNwcCAqLywKQEAgLTE5Nzg4LDkgKzE5Nzg0LDEzIEBACiAJCQkJQkM1RUI5
NEYwRTgyMDU2QjAwQjI1OTY1IC8qIENvdW50ZXJEaXJlY3RpdmVzLmggKi8sCiAJCQkJQkMyMjcy
QTEwRTgyRTg3QzAwRTdGOTc1IC8qIEN1cnNvckRhdGEuaCAqLywKIAkJCQlCQzIyNzJBQzBFODJF
OEYzMDBFN0Y5NzUgLyogQ3Vyc29yTGlzdC5oICovLAorCQkJCTUwMzhCRjI0MTQ3NTBGMTkwMDk1
RTBEMSAvKiBDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCAqLywKIAkJCQlCQzIyNzQ2RTBFODM2NjQ1
MDBFN0Y5NzUgLyogRGF0YVJlZi5oICovLAogCQkJCUJDNUVCNjlDMEU4MURBRUIwMEIyNTk2NSAv
KiBGaWxsTGF5ZXIuY3BwICovLAogCQkJCUJDNUVCNjlEMEU4MURBRUIwMEIyNTk2NSAvKiBGaWxs
TGF5ZXIuaCAqLywKKwkJCQk1MDM4QkYyNTE0NzUwRjE5MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0
aW9uLmggKi8sCisJCQkJNTAzOEJGMjYxNDc1MEYxOTAwOTVFMEQxIC8qIEZpbHRlck9wZXJhdGlv
bnMuY3BwICovLAorCQkJCTUwMzhCRjI3MTQ3NTBGMTkwMDk1RTBEMSAvKiBGaWx0ZXJPcGVyYXRp
b25zLmggKi8sCiAJCQkJQkM1RUJBMEUwRTgyM0U0NzAwQjI1OTY1IC8qIEtleWZyYW1lTGlzdC5j
cHAgKi8sCiAJCQkJQkM1RUJBMEYwRTgyM0U0NzAwQjI1OTY1IC8qIEtleWZyYW1lTGlzdC5oICov
LAogCQkJCUFCMzFDOTFEMTBBRTFCOEUwMDBDN0I5MiAvKiBMaW5lQ2xhbXBWYWx1ZS5oICovLApA
QCAtMjE2NzYsOCArMjE2NzYsNiBAQAogCQkJCUE4RUE4MDBDMEExOTUxNkUwMEE4RUY1RiAvKiBT
dHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBODAwNzBBMTk1MTZFMDBBOEVGNUYg
LyogQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE5QUUwNjQxNDJENkIyNDAw
NjU2M0ExIC8qIFN0eWxlRmlsdGVyRGF0YS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE5QUUwNjgx
NDJENzhERDAwNjU2M0ExIC8qIEZpbHRlck9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MzE5QUUwNkExNDJENzhERDAwNjU2M0ExIC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4RUE4MDBFMEExOTUxNkUwMEE4RUY1RiAvKiBNZWRpYUxpc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVEOEM0REMwMTQyODIyMkMwMDI2Q0U3MiAvKiBEaXNwbGF5U2xlZXBEaXNh
Ymxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMEQwQTE5ODlDQTAwN0ZCOEM1IC8qIENT
U1J1bGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ3MTYsNyArMjQ3MTQsNiBAQAogCQkJCUNERjY1
Q0NBMTQ1QjQ0ODgwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTI5MTdCNTYyMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTE3QjU2MzE0NzM0OTZDMDA1MkM5RDAgLyogTGF5
ZXJGbHVzaFNjaGVkdWxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTAzOEJDMEIxNDcx
MUQzNDAwOTVFMEQxIC8qIEN1c3RvbUZpbHRlck9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTAzOEJFMzAxNDcyQUQyMzAwOTVFMEQxIC8qIFN0eWxlQ2FjaGVkU2hhZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MDM4QkU0MTE0NzJBRDk4MDA5NUUwRDEgLyogQ2FjaGVkU2hhZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBM0UyNjQzMTE0NzQ4OTkxMDA1QTg1ODggLyogV29ya2VyRXZl
bnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDczMSw2ICsyNDcyOCw5IEBACiAJCQkJQTEw
REM3NkIxNDc0N0JBQjAwNUUyNDcxIC8qIFN0eWxlR3JpZERhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxMkMwQzQxMTQ2REM2Q0MwMDE2QzkxMSAvKiBOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTMxMjhDQTZCMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MDM4QkYyODE0NzUwRjE5MDA5NUUwRDEgLyogQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MDM4QkYyOTE0NzUwRjE5
MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MDM4QkYy
QjE0NzUwRjE5MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0yNzU0MCw3ICsyNzU0MCw2IEBACiAJCQkJMDcwNzU2REYxNDIzOUI0RTAwNDE0MTYxIC8qIEpT
VGV4dFRyYWNrQ3VlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODVGMjIwOTE0MzAzNzdE
MDA3Q0M4ODQgLyogSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTMxOUFFMDYzMTQyRDZCMjQwMDY1NjNBMSAvKiBTdHlsZUZpbHRlckRhdGEuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJMzE5QUUwNjkxNDJENzhERDAwNjU2M0ExIC8qIEZpbHRlck9wZXJhdGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTkxMDJGQkIxNDMyN0QzQjAwM0M5RDA0IC8qIENvbnRl
bnRTZWFyY2hVdGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUE4NEYwNDE0M0JBN0JEMDA1
MUQxNTMgLyogU2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkzMTA2MDM2RjE0MzI3RDJFMDBBQkY0QkEgLyogV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0yNzYwNSw2ICsyNzYwNCw3IEBACiAJCQkJN0FBNTFCNkYxNDgzQjYx
NjAwQUQyNzUyIC8qIEluc3BlY3RvckJhc2VBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
MTBEQzc2QTE0NzQ3QkFCMDA1RTI0NzEgLyogU3R5bGVHcmlkRGF0YS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkzMTI4Q0E2ODE0NzMzMTUyMDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MDM4QkYyQTE0NzUwRjE5MDA5NUUwRDEgLyogRmls
dGVyT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJh
dGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTQ2OWJlODk2NDc5M2EyNTg1
ZDNjZTk5OTlkYTg5NDVlNmYzMWZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAg
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwot
ICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAqIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKLSAq
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgotICogVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
Ci0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEN1c3RvbUZpbHRlck9wZXJhdGlvbl9o
Ci0jZGVmaW5lIEN1c3RvbUZpbHRlck9wZXJhdGlvbl9oCi0KLSNpZiBFTkFCTEUoQ1NTX1NIQURF
UlMpCi0KLSNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb24uaCIKLSNpbmNsdWRlICJTdHlsZVNoYWRl
ci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIENTUyBTaGFkZXJzCi0KLWNsYXNzIEN1
c3RvbUZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewotcHVibGljOgot
ICAgIGVudW0gTWVzaEJveFR5cGUgewotICAgICAgICBGSUxURVJfQk9YLAotICAgICAgICBCT1JE
RVJfQk9YLAotICAgICAgICBQQURESU5HX0JPWCwKLSAgICAgICAgQ09OVEVOVF9CT1gKLSAgICB9
OwotICAgIAotICAgIGVudW0gTWVzaFR5cGUgewotICAgICAgICBBVFRBQ0hFRCwKLSAgICAgICAg
REVUQUNIRUQKLSAgICB9OwotICAgIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUZpbHRl
ck9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IHZlcnRleFNoYWRlciwg
UGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21lbnRTaGFkZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWVzaFJvd3MsIHVu
c2lnbmVkIG1lc2hDb2x1bW5zLCBNZXNoQm94VHlwZSBtZXNoQm94VHlwZSwgTWVzaFR5cGUgbWVz
aFR5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUZpbHRlck9w
ZXJhdGlvbih2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyLCBtZXNoUm93cywgbWVzaENvbHVt
bnMsIG1lc2hCb3hUeXBlLCBtZXNoVHlwZSkpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHNldFZl
cnRleFNoYWRlcihQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBzaGFkZXIpIHsgbV92ZXJ0ZXhTaGFk
ZXIgPSBzaGFkZXI7IH0KLSAgICBTdHlsZVNoYWRlciogdmVydGV4U2hhZGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV92ZXJ0ZXhTaGFkZXIuZ2V0KCk7IH0KLSAgICAKLSAgICB2b2lkIHNldEZyYWdtZW50
U2hhZGVyKFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IHNoYWRlcikgeyBtX2ZyYWdtZW50U2hhZGVy
ID0gc2hhZGVyOyB9Ci0gICAgU3R5bGVTaGFkZXIqIGZyYWdtZW50U2hhZGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9mcmFnbWVudFNoYWRlci5nZXQoKTsgfQotICAgIAotICAgIHVuc2lnbmVkIG1lc2hS
b3dzKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoUm93czsgfQotICAgIHVuc2lnbmVkIG1lc2hDb2x1
bW5zKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoQ29sdW1uczsgfQotICAgIAotICAgIE1lc2hCb3hU
eXBlIG1lc2hCb3hUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoQm94VHlwZTsgfQotICAgIE1l
c2hUeXBlIG1lc2hUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoVHlwZTsgfQotICAgIAotcHJp
dmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24m
IG8pIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgY29uc3QgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKiBv
dGhlciA9IHN0YXRpY19jYXN0PGNvbnN0IEN1c3RvbUZpbHRlck9wZXJhdGlvbio+KCZvKTsKLSAg
ICAgICAgcmV0dXJuIG1fdmVydGV4U2hhZGVyLmdldCgpID09IG90aGVyLT5tX3ZlcnRleFNoYWRl
ci5nZXQoKQotICAgICAgICAgICAgICAgJiYgbV9mcmFnbWVudFNoYWRlci5nZXQoKSA9PSBvdGhl
ci0+bV9mcmFnbWVudFNoYWRlci5nZXQoKQotICAgICAgICAgICAgICAgJiYgbV9tZXNoUm93cyA9
PSBvdGhlci0+bV9tZXNoUm93cwotICAgICAgICAgICAgICAgJiYgbV9tZXNoQ29sdW1ucyA9PSBv
dGhlci0+bV9tZXNoQ29sdW1ucwotICAgICAgICAgICAgICAgJiYgbV9tZXNoQm94VHlwZSA9PSBv
dGhlci0+bV9tZXNoQm94VHlwZQotICAgICAgICAgICAgICAgJiYgbV9tZXNoVHlwZSA9PSBvdGhl
ci0+bV9tZXNoVHlwZTsKLSAgICB9Ci0gICAgCi0gICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKFBh
c3NSZWZQdHI8U3R5bGVTaGFkZXI+IHZlcnRleFNoYWRlciwgUGFzc1JlZlB0cjxTdHlsZVNoYWRl
cj4gZnJhZ21lbnRTaGFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1l
c2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucywgTWVzaEJveFR5cGUgbWVzaEJveFR5cGUsIE1l
c2hUeXBlIG1lc2hUeXBlKQotICAgICAgICA6IEZpbHRlck9wZXJhdGlvbihDVVNUT00pCi0gICAg
ICAgICwgbV92ZXJ0ZXhTaGFkZXIodmVydGV4U2hhZGVyKQotICAgICAgICAsIG1fZnJhZ21lbnRT
aGFkZXIoZnJhZ21lbnRTaGFkZXIpCi0gICAgICAgICwgbV9tZXNoUm93cyhtZXNoUm93cykKLSAg
ICAgICAgLCBtX21lc2hDb2x1bW5zKG1lc2hDb2x1bW5zKQotICAgICAgICAsIG1fbWVzaEJveFR5
cGUobWVzaEJveFR5cGUpCi0gICAgICAgICwgbV9tZXNoVHlwZShtZXNoVHlwZSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgUmVmUHRyPFN0eWxlU2hhZGVyPiBtX3ZlcnRleFNoYWRlcjsKLSAgICBSZWZQ
dHI8U3R5bGVTaGFkZXI+IG1fZnJhZ21lbnRTaGFkZXI7Ci0gICAgCi0gICAgdW5zaWduZWQgbV9t
ZXNoUm93czsKLSAgICB1bnNpZ25lZCBtX21lc2hDb2x1bW5zOwotICAgIE1lc2hCb3hUeXBlIG1f
bWVzaEJveFR5cGU7Ci0gICAgTWVzaFR5cGUgbV9tZXNoVHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKLQotI2VuZGlmIC8v
IEN1c3RvbUZpbHRlck9wZXJhdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggODFkOWMwYzViYTkyYzA1NzcyYzE3MTRhNTQ1ZDk5ODcxMTNkN2Rm
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMzEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEZpbHRlck9wZXJh
dGlvbl9oCi0jZGVmaW5lIEZpbHRlck9wZXJhdGlvbl9oCi0KLSNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCi0KLSNpbmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUgIkxlbmd0aC5oIgotI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gQ1NTIEZpbHRlcnMKLQotY2xhc3MgRmlsdGVyT3BlcmF0
aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8RmlsdGVyT3BlcmF0aW9uPiB7Ci1wdWJsaWM6Ci0gICAg
ZW51bSBPcGVyYXRpb25UeXBlIHsKLSAgICAgICAgUkVGRVJFTkNFLCAvLyB1cmwoI3NvbWVmaWx0
ZXIpCi0gICAgICAgIEdSQVlTQ0FMRSwKLSAgICAgICAgU0VQSUEsCi0gICAgICAgIFNBVFVSQVRF
LAotICAgICAgICBIVUVfUk9UQVRFLAotICAgICAgICBJTlZFUlQsCi0gICAgICAgIE9QQUNJVFks
Ci0gICAgICAgIEdBTU1BLAotICAgICAgICBCTFVSLAotICAgICAgICBTSEFSUEVOLAotICAgICAg
ICBEUk9QX1NIQURPVywKLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi0gICAgICAgIENVU1RPTSwK
LSNlbmRpZgotICAgICAgICBOT05FCi0gICAgfTsKLQotICAgIHZpcnR1YWwgfkZpbHRlck9wZXJh
dGlvbigpIHsgfQotCi0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3Bl
cmF0aW9uJikgY29uc3QgPSAwOwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGaWx0ZXJPcGVy
YXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KLQotICAgIHZpcnR1YWwg
T3BlcmF0aW9uVHlwZSBnZXRPcGVyYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzU2FtZVR5cGUoY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBj
b25zdCB7IHJldHVybiBvLmdldE9wZXJhdGlvblR5cGUoKSA9PSBtX3R5cGU7IH0KLQotcHJvdGVj
dGVkOgotICAgIEZpbHRlck9wZXJhdGlvbihPcGVyYXRpb25UeXBlIHR5cGUpCi0gICAgICAgIDog
bV90eXBlKHR5cGUpCi0gICAgewotICAgIH0KLQotICAgIE9wZXJhdGlvblR5cGUgbV90eXBlOwot
fTsKLQotLy8gRWFjaCBvZiB0aGUgaW5kaXZpZHVhbCBvcGVyYXRpb25zIGFyZSBwcm92aWRlZCBo
ZXJlLiBPbmNlIHRoZXkgYWN0dWFsbHkKLS8vIGhhdmUgY29kZSB0byBhcHBseSB0aGVpciBlZmZl
Y3QgdGhleSdsbCBtb3ZlIHRvIHNlcGFyYXRlIGZpbGVzLgotLy8gQXQgdGhlIG1vbWVudCB3ZSdy
ZSBqdXN0IHN0b3JpbmcgdGhlIGRhdGEgZm9yIHJvdW5kdHJpcHBpbmcuCi0KLWNsYXNzIFJlZmVy
ZW5jZUZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewotcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgcmVmZXJlbmNlLCBPcGVyYXRpb25UeXBlIHR5cGUpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbihyZWZl
cmVuY2UsIHR5cGUpKTsKLSAgICB9Ci0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHJlZmVyZW5j
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlOyB9Ci0KLXByaXZhdGU6Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0Ci0gICAg
ewotICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIGNvbnN0IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiogb3RoZXIgPSBzdGF0aWNf
Y2FzdDxjb25zdCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qPigmbyk7Ci0gICAgICAgIHJldHVy
biBtX3JlZmVyZW5jZSA9PSBvdGhlci0+bV9yZWZlcmVuY2U7Ci0gICAgfQotCi0gICAgUmVmZXJl
bmNlRmlsdGVyT3BlcmF0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgcmVmZXJlbmNlLCBPcGVyYXRp
b25UeXBlIHR5cGUpCi0gICAgICAgIDogRmlsdGVyT3BlcmF0aW9uKHR5cGUpCi0gICAgICAgICwg
bV9yZWZlcmVuY2UocmVmZXJlbmNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBBdG9taWNTdHJpbmcg
bV9yZWZlcmVuY2U7Ci19OwotCi0vLyBHUkFZU0NBTEUsIFNFUElBLCBTQVRVUkFURSBhbmQgSFVF
X1JPVEFURSBhcmUgdmFyaWF0aW9ucyBvbiBhIGJhc2ljIGNvbG9yIG1hdHJpeCBlZmZlY3QuCi0v
LyBGb3IgSFVFX1JPVEFURSwgdGhlIGFuZ2xlIG9mIHJvdGF0aW9uIGlzIHN0b3JlZCBpbiBtX2Ft
b3VudC4KLQotY2xhc3MgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBG
aWx0ZXJPcGVyYXRpb24gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJhc2ljQ29s
b3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50LCBPcGVyYXRpb25U
eXBlIHR5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljQ29sb3JN
YXRyaXhGaWx0ZXJPcGVyYXRpb24oYW1vdW50LCB0eXBlKSk7Ci0gICAgfQotCi0gICAgZG91Ymxl
IGFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50OyB9Ci0KLXByaXZhdGU6Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0Ci0g
ICAgewotICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qIG90aGVy
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KCZv
KTsKLSAgICAgICAgcmV0dXJuIG1fYW1vdW50ID09IG90aGVyLT5tX2Ftb3VudDsKLSAgICB9Ci0K
LSAgICBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKGRvdWJsZSBhbW91bnQsIE9wZXJh
dGlvblR5cGUgdHlwZSkKLSAgICAgICAgOiBGaWx0ZXJPcGVyYXRpb24odHlwZSkKLSAgICAgICAg
LCBtX2Ftb3VudChhbW91bnQpCi0gICAgewotICAgIH0KLQotICAgIGRvdWJsZSBtX2Ftb3VudDsK
LX07Ci0KLS8vIElOVkVSVCBhbmQgT1BBQ0lUWSBhcmUgdmFyaWF0aW9ucyBvbiBhIGJhc2ljIGNv
bXBvbmVudCB0cmFuc2ZlciBlZmZlY3QuCi0KLWNsYXNzIEJhc2ljQ29tcG9uZW50VHJhbnNmZXJG
aWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPiBj
cmVhdGUoZG91YmxlIGFtb3VudCwgT3BlcmF0aW9uVHlwZSB0eXBlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9u
KGFtb3VudCwgdHlwZSkpOwotICAgIH0KLQotICAgIGRvdWJsZSBhbW91bnQoKSBjb25zdCB7IHJl
dHVybiBtX2Ftb3VudDsgfQotCi1wcml2YXRlOgotCi0gICAgdmlydHVhbCBib29sIG9wZXJhdG9y
PT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCFp
c1NhbWVUeXBlKG8pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjb25zdCBC
YXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKiBvdGhlciA9IHN0YXRpY19jYXN0
PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qPigmbyk7Ci0gICAg
ICAgIHJldHVybiBtX2Ftb3VudCA9PSBvdGhlci0+bV9hbW91bnQ7Ci0gICAgfQotCi0gICAgQmFz
aWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbihkb3VibGUgYW1vdW50LCBPcGVyYXRp
b25UeXBlIHR5cGUpCi0gICAgICAgIDogRmlsdGVyT3BlcmF0aW9uKHR5cGUpCi0gICAgICAgICwg
bV9hbW91bnQoYW1vdW50KQotICAgIHsKLSAgICB9Ci0KLSAgICBkb3VibGUgbV9hbW91bnQ7Ci19
OwotCi1jbGFzcyBHYW1tYUZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24g
ewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdhbW1hRmlsdGVyT3BlcmF0aW9uPiBj
cmVhdGUoZG91YmxlIGFtcGxpdHVkZSwgZG91YmxlIGV4cG9uZW50LCBkb3VibGUgb2Zmc2V0LCBP
cGVyYXRpb25UeXBlIHR5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdh
bW1hRmlsdGVyT3BlcmF0aW9uKGFtcGxpdHVkZSwgZXhwb25lbnQsIG9mZnNldCwgdHlwZSkpOwot
ICAgIH0KLQotICAgIGRvdWJsZSBhbXBsaXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2FtcGxpdHVk
ZTsgfQotICAgIGRvdWJsZSBleHBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb25lbnQ7IH0K
LSAgICBkb3VibGUgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KLQotcHJpdmF0
ZToKLQotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYg
bykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghaXNTYW1lVHlwZShvKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgY29uc3QgR2FtbWFGaWx0ZXJPcGVyYXRpb24qIG90aGVy
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgR2FtbWFGaWx0ZXJPcGVyYXRpb24qPigmbyk7Ci0gICAgICAg
IHJldHVybiBtX2FtcGxpdHVkZSA9PSBvdGhlci0+bV9hbXBsaXR1ZGUgJiYgbV9leHBvbmVudCA9
PSBvdGhlci0+bV9leHBvbmVudCAmJiBtX29mZnNldCA9PSBvdGhlci0+bV9vZmZzZXQ7Ci0gICAg
fQotCi0gICAgR2FtbWFGaWx0ZXJPcGVyYXRpb24oZG91YmxlIGFtcGxpdHVkZSwgZG91YmxlIGV4
cG9uZW50LCBkb3VibGUgb2Zmc2V0LCBPcGVyYXRpb25UeXBlIHR5cGUpCi0gICAgICAgIDogRmls
dGVyT3BlcmF0aW9uKHR5cGUpCi0gICAgICAgICwgbV9hbXBsaXR1ZGUoYW1wbGl0dWRlKQotICAg
ICAgICAsIG1fZXhwb25lbnQoZXhwb25lbnQpCi0gICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQot
ICAgIHsKLSAgICB9Ci0KLSAgICBkb3VibGUgbV9hbXBsaXR1ZGU7Ci0gICAgZG91YmxlIG1fZXhw
b25lbnQ7Ci0gICAgZG91YmxlIG1fb2Zmc2V0OwotfTsKLQotY2xhc3MgQmx1ckZpbHRlck9wZXJh
dGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEJsdXJGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShMZW5ndGggc3RkRGV2aWF0aW9uWCwg
TGVuZ3RoIHN0ZERldmlhdGlvblksIE9wZXJhdGlvblR5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQmx1ckZpbHRlck9wZXJhdGlvbihzdGREZXZpYXRpb25YLCBz
dGREZXZpYXRpb25ZLCB0eXBlKSk7Ci0gICAgfQotCi0gICAgTGVuZ3RoIHN0ZERldmlhdGlvblgo
KSBjb25zdCB7IHJldHVybiBtX3N0ZERldmlhdGlvblg7IH0KLSAgICBMZW5ndGggc3RkRGV2aWF0
aW9uWSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uWTsgfQotCi1wcml2YXRlOgotCi0g
ICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25z
dAotICAgIHsKLSAgICAgICAgaWYgKCFpc1NhbWVUeXBlKG8pKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICBjb25zdCBCbHVyRmlsdGVyT3BlcmF0aW9uKiBvdGhlciA9IHN0YXRp
Y19jYXN0PGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qPigmbyk7Ci0gICAgICAgIHJldHVybiBt
X3N0ZERldmlhdGlvblggPT0gb3RoZXItPm1fc3RkRGV2aWF0aW9uWCAmJiBtX3N0ZERldmlhdGlv
blkgPT0gb3RoZXItPm1fc3RkRGV2aWF0aW9uWTsKLSAgICB9Ci0KLSAgICBCbHVyRmlsdGVyT3Bl
cmF0aW9uKExlbmd0aCBzdGREZXZpYXRpb25YLCBMZW5ndGggc3RkRGV2aWF0aW9uWSwgT3BlcmF0
aW9uVHlwZSB0eXBlKQotICAgICAgICA6IEZpbHRlck9wZXJhdGlvbih0eXBlKQotICAgICAgICAs
IG1fc3RkRGV2aWF0aW9uWChzdGREZXZpYXRpb25YKQotICAgICAgICAsIG1fc3RkRGV2aWF0aW9u
WShzdGREZXZpYXRpb25ZKQotICAgIHsKLSAgICB9Ci0KLSAgICBMZW5ndGggbV9zdGREZXZpYXRp
b25YOwotICAgIExlbmd0aCBtX3N0ZERldmlhdGlvblk7Ci19OwotCi1jbGFzcyBTaGFycGVuRmls
dGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2hhcnBlbkZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGRvdWJsZSBhbW91
bnQsIExlbmd0aCByYWRpdXMsIGRvdWJsZSB0aHJlc2hvbGQsIE9wZXJhdGlvblR5cGUgdHlwZSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcnBlbkZpbHRlck9wZXJhdGlv
bihhbW91bnQsIHJhZGl1cywgdGhyZXNob2xkLCB0eXBlKSk7Ci0gICAgfQotCi0gICAgZG91Ymxl
IGFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50OyB9Ci0gICAgTGVuZ3RoIHJhZGl1cygp
IGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzOyB9Ci0gICAgZG91YmxlIHRocmVzaG9sZCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGhyZXNob2xkOyB9Ci0KLXByaXZhdGU6Ci0KLSAgICB2aXJ0dWFsIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0Ci0gICAgewotICAgICAg
ICBpZiAoIWlzU2FtZVR5cGUobykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGNvbnN0IFNoYXJwZW5GaWx0ZXJPcGVyYXRpb24qIG90aGVyID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
U2hhcnBlbkZpbHRlck9wZXJhdGlvbio+KCZvKTsKLSAgICAgICAgcmV0dXJuIG1fcmFkaXVzID09
IG90aGVyLT5tX3JhZGl1cyAmJiBtX3RocmVzaG9sZCA9PSBvdGhlci0+bV90aHJlc2hvbGQgJiYg
bV9hbW91bnQgPT0gb3RoZXItPm1fYW1vdW50OwotICAgIH0KLQotICAgIFNoYXJwZW5GaWx0ZXJP
cGVyYXRpb24oZG91YmxlIGFtb3VudCwgTGVuZ3RoIHJhZGl1cywgZG91YmxlIHRocmVzaG9sZCwg
T3BlcmF0aW9uVHlwZSB0eXBlKQotICAgICAgICA6IEZpbHRlck9wZXJhdGlvbih0eXBlKQotICAg
ICAgICAsIG1fYW1vdW50KGFtb3VudCkKLSAgICAgICAgLCBtX3JhZGl1cyhyYWRpdXMpCi0gICAg
ICAgICwgbV90aHJlc2hvbGQodGhyZXNob2xkKQotICAgIHsKLSAgICB9Ci0KLSAgICBkb3VibGUg
bV9hbW91bnQ7Ci0gICAgTGVuZ3RoIG1fcmFkaXVzOwotICAgIGRvdWJsZSBtX3RocmVzaG9sZDsK
LX07Ci0KLWNsYXNzIERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3Bl
cmF0aW9uIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEcm9wU2hhZG93RmlsdGVy
T3BlcmF0aW9uPiBjcmVhdGUoaW50IHgsIGludCB5LCBpbnQgc3RkRGV2aWF0aW9uLCBDb2xvciBj
b2xvciwgT3BlcmF0aW9uVHlwZSB0eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKHgsIHksIHN0ZERldmlhdGlvbiwgY29sb3Is
IHR5cGUpKTsKLSAgICB9Ci0KLSAgICBpbnQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQotICAg
IGludCB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9Ci0gICAgaW50IHN0ZERldmlhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uOyB9Ci0gICAgQ29sb3IgY29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2NvbG9yOyB9Ci0KLXByaXZhdGU6Ci0KLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAo
IWlzU2FtZVR5cGUobykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNvbnN0
IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qIG90aGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgRHJv
cFNoYWRvd0ZpbHRlck9wZXJhdGlvbio+KCZvKTsKLSAgICAgICAgcmV0dXJuIG1feCA9PSBvdGhl
ci0+bV94ICYmIG1feSA9PSBvdGhlci0+bV95ICYmIG1fc3RkRGV2aWF0aW9uID09IG90aGVyLT5t
X3N0ZERldmlhdGlvbiAmJiBtX2NvbG9yID09IG90aGVyLT5tX2NvbG9yOwotICAgIH0KLQotICAg
IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24oaW50IHgsIGludCB5LCBpbnQgc3RkRGV2aWF0aW9u
LCBDb2xvciBjb2xvciwgT3BlcmF0aW9uVHlwZSB0eXBlKQotICAgICAgICA6IEZpbHRlck9wZXJh
dGlvbih0eXBlKQotICAgICAgICAsIG1feCh4KQotICAgICAgICAsIG1feSh5KQotICAgICAgICAs
IG1fc3RkRGV2aWF0aW9uKHN0ZERldmlhdGlvbikKLSAgICAgICAgLCBtX2NvbG9yKGNvbG9yKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBpbnQgbV94OwotICAgIGludCBtX3k7Ci0gICAgaW50IG1fc3Rk
RGV2aWF0aW9uOwotICAgIENvbG9yIG1fY29sb3I7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0KLSNlbmRpZiAvLyBGaWx0ZXJP
cGVyYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDcyNzg1MmJiZjkwZDdlN2UwODZhMjVmNjQ0ZmRjYzA4MTQ4MDdjYTQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgotCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUZpbHRlck9wZXJhdGlvbnM6OkZpbHRlck9wZXJhdGlvbnMo
KQotewotfQotCi1ib29sIEZpbHRlck9wZXJhdGlvbnM6Om9wZXJhdG9yPT0oY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYgbykgY29uc3QKLXsKLSAgICBpZiAobV9vcGVyYXRpb25zLnNpemUoKSAhPSBv
Lm1fb3BlcmF0aW9ucy5zaXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0g
ICAgdW5zaWduZWQgcyA9IG1fb3BlcmF0aW9ucy5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHM7IGkrKykgewotICAgICAgICBpZiAoKm1fb3BlcmF0aW9uc1tpXSAhPSAqby5t
X29wZXJhdGlvbnNbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAot
ICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoQ1NTX0ZJTFRFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAyZWJhODI5OTQzODAwYmE3ODNhYmNkODkzMDU5ODIxODRiMmFmNGQ0
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgRmlsdGVyT3BlcmF0
aW9uc19oCi0jZGVmaW5lIEZpbHRlck9wZXJhdGlvbnNfaAotCi0jaWYgRU5BQkxFKENTU19GSUxU
RVJTKQotCi0jaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBGaWx0ZXJPcGVyYXRpb25zIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1
YmxpYzoKLSAgICBGaWx0ZXJPcGVyYXRpb25zKCk7Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0
aGlzID09IG8pOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAg
IG1fb3BlcmF0aW9ucy5jbGVhcigpOwotICAgIH0KLSAgICAKLSAgICBWZWN0b3I8UmVmUHRyPEZp
bHRlck9wZXJhdGlvbj4gPiYgb3BlcmF0aW9ucygpIHsgcmV0dXJuIG1fb3BlcmF0aW9uczsgfQot
ICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiA+JiBvcGVyYXRpb25zKCkg
Y29uc3QgeyByZXR1cm4gbV9vcGVyYXRpb25zOyB9Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fb3BlcmF0aW9ucy5zaXplKCk7IH0KLSAgICBjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIGF0KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5kZXggPCBtX29wZXJhdGlvbnMu
c2l6ZSgpID8gbV9vcGVyYXRpb25zLmF0KGluZGV4KS5nZXQoKSA6IDA7IH0KLQotcHJpdmF0ZToK
LSAgICBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gPiBtX29wZXJhdGlvbnM7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRFUlMp
Ci0KLSNlbmRpZiAvLyBGaWx0ZXJPcGVyYXRpb25zX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
OTQ2OWJlODk2NDc5M2EyNTg1ZDNjZTk5OTlkYTg5NDVlNmYzMWZiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5o
CkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUgU3lzdGVtcyBJ
bmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgor
ICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uX2gKKyNkZWZpbmUgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uX2gK
KworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKworI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbi5o
IgorI2luY2x1ZGUgIlN0eWxlU2hhZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8g
Q1NTIFNoYWRlcnMKKworY2xhc3MgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRl
ck9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAgZW51bSBNZXNoQm94VHlwZSB7CisgICAgICAgIEZJ
TFRFUl9CT1gsCisgICAgICAgIEJPUkRFUl9CT1gsCisgICAgICAgIFBBRERJTkdfQk9YLAorICAg
ICAgICBDT05URU5UX0JPWAorICAgIH07CisgICAgCisgICAgZW51bSBNZXNoVHlwZSB7CisgICAg
ICAgIEFUVEFDSEVELAorICAgICAgICBERVRBQ0hFRAorICAgIH07CisgICAgCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxTdHls
ZVNoYWRlcj4gdmVydGV4U2hhZGVyLCBQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBmcmFnbWVudFNo
YWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBtZXNoUm93cywgdW5zaWduZWQgbWVzaENvbHVtbnMsIE1lc2hCb3hUeXBlIG1l
c2hCb3hUeXBlLCBNZXNoVHlwZSBtZXNoVHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFk
ZXIsIG1lc2hSb3dzLCBtZXNoQ29sdW1ucywgbWVzaEJveFR5cGUsIG1lc2hUeXBlKSk7CisgICAg
fQorICAgIAorICAgIHZvaWQgc2V0VmVydGV4U2hhZGVyKFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+
IHNoYWRlcikgeyBtX3ZlcnRleFNoYWRlciA9IHNoYWRlcjsgfQorICAgIFN0eWxlU2hhZGVyKiB2
ZXJ0ZXhTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRleFNoYWRlci5nZXQoKTsgfQorICAg
IAorICAgIHZvaWQgc2V0RnJhZ21lbnRTaGFkZXIoUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gc2hh
ZGVyKSB7IG1fZnJhZ21lbnRTaGFkZXIgPSBzaGFkZXI7IH0KKyAgICBTdHlsZVNoYWRlciogZnJh
Z21lbnRTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50U2hhZGVyLmdldCgpOyB9Cisg
ICAgCisgICAgdW5zaWduZWQgbWVzaFJvd3MoKSBjb25zdCB7IHJldHVybiBtX21lc2hSb3dzOyB9
CisgICAgdW5zaWduZWQgbWVzaENvbHVtbnMoKSBjb25zdCB7IHJldHVybiBtX21lc2hDb2x1bW5z
OyB9CisgICAgCisgICAgTWVzaEJveFR5cGUgbWVzaEJveFR5cGUoKSBjb25zdCB7IHJldHVybiBt
X21lc2hCb3hUeXBlOyB9CisgICAgTWVzaFR5cGUgbWVzaFR5cGUoKSBjb25zdCB7IHJldHVybiBt
X21lc2hUeXBlOyB9CisgICAgCitwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghaXNT
YW1lVHlwZShvKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb25zdCBD
dXN0b21GaWx0ZXJPcGVyYXRpb24qIG90aGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3VzdG9tRmls
dGVyT3BlcmF0aW9uKj4oJm8pOworICAgICAgICByZXR1cm4gbV92ZXJ0ZXhTaGFkZXIuZ2V0KCkg
PT0gb3RoZXItPm1fdmVydGV4U2hhZGVyLmdldCgpCisgICAgICAgICAgICAgICAmJiBtX2ZyYWdt
ZW50U2hhZGVyLmdldCgpID09IG90aGVyLT5tX2ZyYWdtZW50U2hhZGVyLmdldCgpCisgICAgICAg
ICAgICAgICAmJiBtX21lc2hSb3dzID09IG90aGVyLT5tX21lc2hSb3dzCisgICAgICAgICAgICAg
ICAmJiBtX21lc2hDb2x1bW5zID09IG90aGVyLT5tX21lc2hDb2x1bW5zCisgICAgICAgICAgICAg
ICAmJiBtX21lc2hCb3hUeXBlID09IG90aGVyLT5tX21lc2hCb3hUeXBlCisgICAgICAgICAgICAg
ICAmJiBtX21lc2hUeXBlID09IG90aGVyLT5tX21lc2hUeXBlOworICAgIH0KKyAgICAKKyAgICBD
dXN0b21GaWx0ZXJPcGVyYXRpb24oUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gdmVydGV4U2hhZGVy
LCBQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBmcmFnbWVudFNoYWRlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbWVzaFJvd3MsIHVuc2lnbmVkIG1lc2hDb2x1bW5zLCBNZXNo
Qm94VHlwZSBtZXNoQm94VHlwZSwgTWVzaFR5cGUgbWVzaFR5cGUpCisgICAgICAgIDogRmlsdGVy
T3BlcmF0aW9uKENVU1RPTSkKKyAgICAgICAgLCBtX3ZlcnRleFNoYWRlcih2ZXJ0ZXhTaGFkZXIp
CisgICAgICAgICwgbV9mcmFnbWVudFNoYWRlcihmcmFnbWVudFNoYWRlcikKKyAgICAgICAgLCBt
X21lc2hSb3dzKG1lc2hSb3dzKQorICAgICAgICAsIG1fbWVzaENvbHVtbnMobWVzaENvbHVtbnMp
CisgICAgICAgICwgbV9tZXNoQm94VHlwZShtZXNoQm94VHlwZSkKKyAgICAgICAgLCBtX21lc2hU
eXBlKG1lc2hUeXBlKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8U3R5bGVTaGFkZXI+IG1f
dmVydGV4U2hhZGVyOworICAgIFJlZlB0cjxTdHlsZVNoYWRlcj4gbV9mcmFnbWVudFNoYWRlcjsK
KyAgICAKKyAgICB1bnNpZ25lZCBtX21lc2hSb3dzOworICAgIHVuc2lnbmVkIG1fbWVzaENvbHVt
bnM7CisgICAgTWVzaEJveFR5cGUgbV9tZXNoQm94VHlwZTsKKyAgICBNZXNoVHlwZSBtX21lc2hU
eXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENT
U19TSEFERVJTKQorCisjZW5kaWYgLy8gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb24uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44MWQ5YzBjNWJhOTJjMDU3NzJjMTcxNGE1NDVkOTk4NzExM2Q3ZGY0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbi5oCkBA
IC0wLDAgKzEsMzEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBGaWx0ZXJPcGVyYXRpb25faAorI2Rl
ZmluZSBGaWx0ZXJPcGVyYXRpb25faAorCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorCisjaW5j
bHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJMZW5ndGguaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKy8vIENTUyBGaWx0ZXJzCisKK2NsYXNzIEZpbHRlck9wZXJhdGlvbiA6IHB1Ymxp
YyBSZWZDb3VudGVkPEZpbHRlck9wZXJhdGlvbj4geworcHVibGljOgorICAgIGVudW0gT3BlcmF0
aW9uVHlwZSB7CisgICAgICAgIFJFRkVSRU5DRSwgLy8gdXJsKCNzb21lZmlsdGVyKQorICAgICAg
ICBHUkFZU0NBTEUsCisgICAgICAgIFNFUElBLAorICAgICAgICBTQVRVUkFURSwKKyAgICAgICAg
SFVFX1JPVEFURSwKKyAgICAgICAgSU5WRVJULAorICAgICAgICBPUEFDSVRZLAorICAgICAgICBH
QU1NQSwKKyAgICAgICAgQkxVUiwKKyAgICAgICAgU0hBUlBFTiwKKyAgICAgICAgRFJPUF9TSEFE
T1csCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgICAgICBDVVNUT00sCisjZW5kaWYKKyAg
ICAgICAgTk9ORQorICAgIH07CisKKyAgICB2aXJ0dWFsIH5GaWx0ZXJPcGVyYXRpb24oKSB7IH0K
KworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpIGNv
bnN0ID0gMDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBj
b25zdCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CisKKyAgICB2aXJ0dWFsIE9wZXJhdGlvblR5
cGUgZ2V0T3BlcmF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc1NhbWVUeXBlKGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1
cm4gby5nZXRPcGVyYXRpb25UeXBlKCkgPT0gbV90eXBlOyB9CisKK3Byb3RlY3RlZDoKKyAgICBG
aWx0ZXJPcGVyYXRpb24oT3BlcmF0aW9uVHlwZSB0eXBlKQorICAgICAgICA6IG1fdHlwZSh0eXBl
KQorICAgIHsKKyAgICB9CisKKyAgICBPcGVyYXRpb25UeXBlIG1fdHlwZTsKK307CisKKy8vIEVh
Y2ggb2YgdGhlIGluZGl2aWR1YWwgb3BlcmF0aW9ucyBhcmUgcHJvdmlkZWQgaGVyZS4gT25jZSB0
aGV5IGFjdHVhbGx5CisvLyBoYXZlIGNvZGUgdG8gYXBwbHkgdGhlaXIgZWZmZWN0IHRoZXknbGwg
bW92ZSB0byBzZXBhcmF0ZSBmaWxlcy4KKy8vIEF0IHRoZSBtb21lbnQgd2UncmUganVzdCBzdG9y
aW5nIHRoZSBkYXRhIGZvciByb3VuZHRyaXBwaW5nLgorCitjbGFzcyBSZWZlcmVuY2VGaWx0ZXJP
cGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBBdG9taWNT
dHJpbmcmIHJlZmVyZW5jZSwgT3BlcmF0aW9uVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24ocmVmZXJlbmNlLCB0eXBl
KSk7CisgICAgfQorCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiByZWZlcmVuY2UoKSBjb25zdCB7
IHJldHVybiBtX3JlZmVyZW5jZTsgfQorCitwcml2YXRlOgorCisgICAgdmlydHVhbCBib29sIG9w
ZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKCFpc1NhbWVUeXBlKG8pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBj
b25zdCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qIG90aGVyID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKj4oJm8pOworICAgICAgICByZXR1cm4gbV9yZWZlcmVu
Y2UgPT0gb3RoZXItPm1fcmVmZXJlbmNlOworICAgIH0KKworICAgIFJlZmVyZW5jZUZpbHRlck9w
ZXJhdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIHJlZmVyZW5jZSwgT3BlcmF0aW9uVHlwZSB0eXBl
KQorICAgICAgICA6IEZpbHRlck9wZXJhdGlvbih0eXBlKQorICAgICAgICAsIG1fcmVmZXJlbmNl
KHJlZmVyZW5jZSkKKyAgICB7CisgICAgfQorCisgICAgQXRvbWljU3RyaW5nIG1fcmVmZXJlbmNl
OworfTsKKworLy8gR1JBWVNDQUxFLCBTRVBJQSwgU0FUVVJBVEUgYW5kIEhVRV9ST1RBVEUgYXJl
IHZhcmlhdGlvbnMgb24gYSBiYXNpYyBjb2xvciBtYXRyaXggZWZmZWN0LgorLy8gRm9yIEhVRV9S
T1RBVEUsIHRoZSBhbmdsZSBvZiByb3RhdGlvbiBpcyBzdG9yZWQgaW4gbV9hbW91bnQuCisKK2Ns
YXNzIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0
aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYXNpY0NvbG9yTWF0cml4Rmls
dGVyT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIGFtb3VudCwgT3BlcmF0aW9uVHlwZSB0eXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY0NvbG9yTWF0cml4RmlsdGVy
T3BlcmF0aW9uKGFtb3VudCwgdHlwZSkpOworICAgIH0KKworICAgIGRvdWJsZSBhbW91bnQoKSBj
b25zdCB7IHJldHVybiBtX2Ftb3VudDsgfQorCitwcml2YXRlOgorCisgICAgdmlydHVhbCBib29s
IG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAorICAgIHsKKyAgICAg
ICAgaWYgKCFpc1NhbWVUeXBlKG8pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKiBvdGhlciA9IHN0YXRpY19j
YXN0PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPigmbyk7CisgICAgICAg
IHJldHVybiBtX2Ftb3VudCA9PSBvdGhlci0+bV9hbW91bnQ7CisgICAgfQorCisgICAgQmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbihkb3VibGUgYW1vdW50LCBPcGVyYXRpb25UeXBlIHR5
cGUpCisgICAgICAgIDogRmlsdGVyT3BlcmF0aW9uKHR5cGUpCisgICAgICAgICwgbV9hbW91bnQo
YW1vdW50KQorICAgIHsKKyAgICB9CisKKyAgICBkb3VibGUgbV9hbW91bnQ7Cit9OworCisvLyBJ
TlZFUlQgYW5kIE9QQUNJVFkgYXJlIHZhcmlhdGlvbnMgb24gYSBiYXNpYyBjb21wb25lbnQgdHJh
bnNmZXIgZWZmZWN0LgorCitjbGFzcyBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0
aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGRvdWJs
ZSBhbW91bnQsIE9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbihhbW91bnQsIHR5
cGUpKTsKKyAgICB9CisKKyAgICBkb3VibGUgYW1vdW50KCkgY29uc3QgeyByZXR1cm4gbV9hbW91
bnQ7IH0KKworcHJpdmF0ZToKKworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZp
bHRlck9wZXJhdGlvbiYgbykgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghaXNTYW1lVHlwZShv
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY29uc3QgQmFzaWNDb21wb25l
bnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiogb3RoZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNp
Y0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oJm8pOworICAgICAgICByZXR1cm4g
bV9hbW91bnQgPT0gb3RoZXItPm1fYW1vdW50OworICAgIH0KKworICAgIEJhc2ljQ29tcG9uZW50
VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24oZG91YmxlIGFtb3VudCwgT3BlcmF0aW9uVHlwZSB0eXBl
KQorICAgICAgICA6IEZpbHRlck9wZXJhdGlvbih0eXBlKQorICAgICAgICAsIG1fYW1vdW50KGFt
b3VudCkKKyAgICB7CisgICAgfQorCisgICAgZG91YmxlIG1fYW1vdW50OworfTsKKworY2xhc3Mg
R2FtbWFGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHYW1tYUZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGRvdWJs
ZSBhbXBsaXR1ZGUsIGRvdWJsZSBleHBvbmVudCwgZG91YmxlIG9mZnNldCwgT3BlcmF0aW9uVHlw
ZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHYW1tYUZpbHRlck9w
ZXJhdGlvbihhbXBsaXR1ZGUsIGV4cG9uZW50LCBvZmZzZXQsIHR5cGUpKTsKKyAgICB9CisKKyAg
ICBkb3VibGUgYW1wbGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9hbXBsaXR1ZGU7IH0KKyAgICBk
b3VibGUgZXhwb25lbnQoKSBjb25zdCB7IHJldHVybiBtX2V4cG9uZW50OyB9CisgICAgZG91Ymxl
IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisKK3ByaXZhdGU6CisKKyAgICB2
aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGNvbnN0IEdhbW1hRmlsdGVyT3BlcmF0aW9uKiBvdGhlciA9IHN0YXRpY19j
YXN0PGNvbnN0IEdhbW1hRmlsdGVyT3BlcmF0aW9uKj4oJm8pOworICAgICAgICByZXR1cm4gbV9h
bXBsaXR1ZGUgPT0gb3RoZXItPm1fYW1wbGl0dWRlICYmIG1fZXhwb25lbnQgPT0gb3RoZXItPm1f
ZXhwb25lbnQgJiYgbV9vZmZzZXQgPT0gb3RoZXItPm1fb2Zmc2V0OworICAgIH0KKworICAgIEdh
bW1hRmlsdGVyT3BlcmF0aW9uKGRvdWJsZSBhbXBsaXR1ZGUsIGRvdWJsZSBleHBvbmVudCwgZG91
YmxlIG9mZnNldCwgT3BlcmF0aW9uVHlwZSB0eXBlKQorICAgICAgICA6IEZpbHRlck9wZXJhdGlv
bih0eXBlKQorICAgICAgICAsIG1fYW1wbGl0dWRlKGFtcGxpdHVkZSkKKyAgICAgICAgLCBtX2V4
cG9uZW50KGV4cG9uZW50KQorICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICB7CisgICAg
fQorCisgICAgZG91YmxlIG1fYW1wbGl0dWRlOworICAgIGRvdWJsZSBtX2V4cG9uZW50OworICAg
IGRvdWJsZSBtX29mZnNldDsKK307CisKK2NsYXNzIEJsdXJGaWx0ZXJPcGVyYXRpb24gOiBwdWJs
aWMgRmlsdGVyT3BlcmF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbHVy
RmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoTGVuZ3RoIHN0ZERldmlhdGlvblgsIExlbmd0aCBzdGRE
ZXZpYXRpb25ZLCBPcGVyYXRpb25UeXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEJsdXJGaWx0ZXJPcGVyYXRpb24oc3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9u
WSwgdHlwZSkpOworICAgIH0KKworICAgIExlbmd0aCBzdGREZXZpYXRpb25YKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGREZXZpYXRpb25YOyB9CisgICAgTGVuZ3RoIHN0ZERldmlhdGlvblkoKSBjb25z
dCB7IHJldHVybiBtX3N0ZERldmlhdGlvblk7IH0KKworcHJpdmF0ZToKKworICAgIHZpcnR1YWwg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmICghaXNTYW1lVHlwZShvKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgY29uc3QgQmx1ckZpbHRlck9wZXJhdGlvbiogb3RoZXIgPSBzdGF0aWNfY2FzdDxjb25z
dCBCbHVyRmlsdGVyT3BlcmF0aW9uKj4oJm8pOworICAgICAgICByZXR1cm4gbV9zdGREZXZpYXRp
b25YID09IG90aGVyLT5tX3N0ZERldmlhdGlvblggJiYgbV9zdGREZXZpYXRpb25ZID09IG90aGVy
LT5tX3N0ZERldmlhdGlvblk7CisgICAgfQorCisgICAgQmx1ckZpbHRlck9wZXJhdGlvbihMZW5n
dGggc3RkRGV2aWF0aW9uWCwgTGVuZ3RoIHN0ZERldmlhdGlvblksIE9wZXJhdGlvblR5cGUgdHlw
ZSkKKyAgICAgICAgOiBGaWx0ZXJPcGVyYXRpb24odHlwZSkKKyAgICAgICAgLCBtX3N0ZERldmlh
dGlvblgoc3RkRGV2aWF0aW9uWCkKKyAgICAgICAgLCBtX3N0ZERldmlhdGlvblkoc3RkRGV2aWF0
aW9uWSkKKyAgICB7CisgICAgfQorCisgICAgTGVuZ3RoIG1fc3RkRGV2aWF0aW9uWDsKKyAgICBM
ZW5ndGggbV9zdGREZXZpYXRpb25ZOworfTsKKworY2xhc3MgU2hhcnBlbkZpbHRlck9wZXJhdGlv
biA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNoYXJwZW5GaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUgYW1vdW50LCBMZW5ndGgg
cmFkaXVzLCBkb3VibGUgdGhyZXNob2xkLCBPcGVyYXRpb25UeXBlIHR5cGUpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJwZW5GaWx0ZXJPcGVyYXRpb24oYW1vdW50LCBy
YWRpdXMsIHRocmVzaG9sZCwgdHlwZSkpOworICAgIH0KKworICAgIGRvdWJsZSBhbW91bnQoKSBj
b25zdCB7IHJldHVybiBtX2Ftb3VudDsgfQorICAgIExlbmd0aCByYWRpdXMoKSBjb25zdCB7IHJl
dHVybiBtX3JhZGl1czsgfQorICAgIGRvdWJsZSB0aHJlc2hvbGQoKSBjb25zdCB7IHJldHVybiBt
X3RocmVzaG9sZDsgfQorCitwcml2YXRlOgorCisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFpc1Nh
bWVUeXBlKG8pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjb25zdCBTaGFy
cGVuRmlsdGVyT3BlcmF0aW9uKiBvdGhlciA9IHN0YXRpY19jYXN0PGNvbnN0IFNoYXJwZW5GaWx0
ZXJPcGVyYXRpb24qPigmbyk7CisgICAgICAgIHJldHVybiBtX3JhZGl1cyA9PSBvdGhlci0+bV9y
YWRpdXMgJiYgbV90aHJlc2hvbGQgPT0gb3RoZXItPm1fdGhyZXNob2xkICYmIG1fYW1vdW50ID09
IG90aGVyLT5tX2Ftb3VudDsKKyAgICB9CisKKyAgICBTaGFycGVuRmlsdGVyT3BlcmF0aW9uKGRv
dWJsZSBhbW91bnQsIExlbmd0aCByYWRpdXMsIGRvdWJsZSB0aHJlc2hvbGQsIE9wZXJhdGlvblR5
cGUgdHlwZSkKKyAgICAgICAgOiBGaWx0ZXJPcGVyYXRpb24odHlwZSkKKyAgICAgICAgLCBtX2Ft
b3VudChhbW91bnQpCisgICAgICAgICwgbV9yYWRpdXMocmFkaXVzKQorICAgICAgICAsIG1fdGhy
ZXNob2xkKHRocmVzaG9sZCkKKyAgICB7CisgICAgfQorCisgICAgZG91YmxlIG1fYW1vdW50Owor
ICAgIExlbmd0aCBtX3JhZGl1czsKKyAgICBkb3VibGUgbV90aHJlc2hvbGQ7Cit9OworCitjbGFz
cyBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbj4g
Y3JlYXRlKGludCB4LCBpbnQgeSwgaW50IHN0ZERldmlhdGlvbiwgQ29sb3IgY29sb3IsIE9wZXJh
dGlvblR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRHJvcFNo
YWRvd0ZpbHRlck9wZXJhdGlvbih4LCB5LCBzdGREZXZpYXRpb24sIGNvbG9yLCB0eXBlKSk7Cisg
ICAgfQorCisgICAgaW50IHgoKSBjb25zdCB7IHJldHVybiBtX3g7IH0KKyAgICBpbnQgeSgpIGNv
bnN0IHsgcmV0dXJuIG1feTsgfQorICAgIGludCBzdGREZXZpYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3N0ZERldmlhdGlvbjsgfQorICAgIENvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9j
b2xvcjsgfQorCitwcml2YXRlOgorCisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFpc1NhbWVUeXBl
KG8pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjb25zdCBEcm9wU2hhZG93
RmlsdGVyT3BlcmF0aW9uKiBvdGhlciA9IHN0YXRpY19jYXN0PGNvbnN0IERyb3BTaGFkb3dGaWx0
ZXJPcGVyYXRpb24qPigmbyk7CisgICAgICAgIHJldHVybiBtX3ggPT0gb3RoZXItPm1feCAmJiBt
X3kgPT0gb3RoZXItPm1feSAmJiBtX3N0ZERldmlhdGlvbiA9PSBvdGhlci0+bV9zdGREZXZpYXRp
b24gJiYgbV9jb2xvciA9PSBvdGhlci0+bV9jb2xvcjsKKyAgICB9CisKKyAgICBEcm9wU2hhZG93
RmlsdGVyT3BlcmF0aW9uKGludCB4LCBpbnQgeSwgaW50IHN0ZERldmlhdGlvbiwgQ29sb3IgY29s
b3IsIE9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICAgICAgOiBGaWx0ZXJPcGVyYXRpb24odHlwZSkK
KyAgICAgICAgLCBtX3goeCkKKyAgICAgICAgLCBtX3koeSkKKyAgICAgICAgLCBtX3N0ZERldmlh
dGlvbihzdGREZXZpYXRpb24pCisgICAgICAgICwgbV9jb2xvcihjb2xvcikKKyAgICB7CisgICAg
fQorCisgICAgaW50IG1feDsKKyAgICBpbnQgbV95OworICAgIGludCBtX3N0ZERldmlhdGlvbjsK
KyAgICBDb2xvciBtX2NvbG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKENTU19GSUxURVJTKQorCisjZW5kaWYgLy8gRmlsdGVyT3BlcmF0aW9uX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRp
b25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb25z
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43Mjc4NTJiYmY5MGQ3ZTdlMDg2YTI1ZjY0NGZkY2MwODE0ODA3Y2E0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbHRl
ck9wZXJhdGlvbnMuY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgorCisjaWYgRU5BQkxFKENTU19G
SUxURVJTKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZpbHRlck9wZXJhdGlvbnM6OkZpbHRl
ck9wZXJhdGlvbnMoKQoreworfQorCitib29sIEZpbHRlck9wZXJhdGlvbnM6Om9wZXJhdG9yPT0o
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgbykgY29uc3QKK3sKKyAgICBpZiAobV9vcGVyYXRpb25z
LnNpemUoKSAhPSBvLm1fb3BlcmF0aW9ucy5zaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgCisgICAgdW5zaWduZWQgcyA9IG1fb3BlcmF0aW9ucy5zaXplKCk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHM7IGkrKykgeworICAgICAgICBpZiAoKm1fb3BlcmF0aW9u
c1tpXSAhPSAqby5tX29wZXJhdGlvbnNbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZWJhODI5OTQz
ODAwYmE3ODNhYmNkODkzMDU5ODIxODRiMmFmNGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbnMuaApAQCAtMCwwICsxLDY3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBGaWx0ZXJPcGVyYXRpb25zX2gKKyNkZWZpbmUgRmlsdGVy
T3BlcmF0aW9uc19oCisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisKKyNpbmNsdWRlICJGaWx0
ZXJPcGVyYXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZpbHRlck9wZXJhdGlvbnMg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIEZpbHRlck9wZXJh
dGlvbnMoKTsKKyAgICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9u
cyYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBv
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbV9vcGVyYXRpb25zLmNsZWFyKCk7
CisgICAgfQorICAgIAorICAgIFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiA+JiBvcGVy
YXRpb25zKCkgeyByZXR1cm4gbV9vcGVyYXRpb25zOyB9CisgICAgY29uc3QgVmVjdG9yPFJlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+ID4mIG9wZXJhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wZXJh
dGlvbnM7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpb25z
LnNpemUoKTsgfQorICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogYXQoc2l6ZV90IGluZGV4KSBj
b25zdCB7IHJldHVybiBpbmRleCA8IG1fb3BlcmF0aW9ucy5zaXplKCkgPyBtX29wZXJhdGlvbnMu
YXQoaW5kZXgpLmdldCgpIDogMDsgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxSZWZQdHI8Rmls
dGVyT3BlcmF0aW9uPiA+IG1fb3BlcmF0aW9uczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfRklMVEVSUykKKworI2VuZGlmIC8vIEZpbHRlck9w
ZXJhdGlvbnNfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116965</attachid>
            <date>2011-11-29 07:29:16 -0800</date>
            <delta_ts>2011-11-30 00:57:56 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-72539-20111129172859.patch</filename>
            <type>text/plain</type>
            <size>63299</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2NhMTk2MzMzYjFjNTcx
ODE1MDI1YjY5NTIzNmIwMGFkNTRmNDBhYy4uZWYxYzA0NGJhZGI5ODkwNmE2MmVmZDk5Yjg3YTY3
NTY2ZGJiYTIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDExLTExLTE3ICBBbGV4
YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KKworICAgICAgICBGaWx0ZXJPcGVy
YXRpb24qIHNob3VsZCBzdGF5IGluIHJlbmRlcmluZy9zdHlsZSwgYmVjYXVzZSBpdCBpcyBkaXJl
Y3RseSByZWZlcmVuY2VkIGZyb20gUmVuZGVyU3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVh
biBKYWNrc29uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywganVzdCBtb3Zpbmcgc29tZSBmaWxl
cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9D
dXN0b21GaWx0ZXJPcGVyYXRpb24uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmguCisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbi5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMu
Y3BwLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb25zLmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbnMuaC4KKwogMjAxMS0xMS0yOSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2VkOiBmaXhpbmcgY2xhbmcgYnVpbGQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDhjMjFhZDczNjllZWY1NjM4NTFhYzAxZGI4ZTc2ZTI2Njc0Njk5
ZjkuLmQ4MDcxNGJjYjExZWM2NzAyYTcyODZhNjg1ZWYxZTg1YTYxMWQyOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC0xMTI0LDcgKzExMjQsNiBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJP
cGVyYXRpb25zLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGlnaHRTb3VyY2Uu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcApAQCAtMTMw
Niw2ICsxMzA1LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9zdHlsZS9D
b250ZW50RGF0YS5jcHAKICAgICByZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuY3Bw
CiAgICAgcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKKyAgICByZW5kZXJpbmcvc3R5bGUv
RmlsdGVyT3BlcmF0aW9ucy5jcHAKICAgICByZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmNw
cAogICAgIHJlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKICAgICByZW5kZXJpbmcv
c3R5bGUvUXVvdGVzRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDU3
YTYxZTUxOTdmOTA5YjM3NzFiMmU2ZGEzZGVkNjI4YmUzMmY4Y2MuLmYxNjNmYmQ0Yjk1ZDk2MGQ4
YmYzZDRjODUyNzVkYmY3YzEzNWJhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpA
QCAtMjUyOSw3ICsyNTI5LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9UcmFuc2Zvcm1hdGlvbk1hdHJpeENhaXJvLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVy
Q2x1dHRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dy
YXBoaWNzTGF5ZXJDbHV0dGVyLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIFwK
QEAgLTI1NjksOSArMjU2OCw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oIFwKLQlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIFwKLQlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMu
Y3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9M
aWdodFNvdXJjZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvTGlnaHRTb3VyY2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Qb2ludExpZ2h0U291cmNlLmNwcCBcCkBAIC0zMjQ3LDkgKzMyNDMsMTMgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckRp
cmVjdGl2ZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0N1cnNvckRhdGEu
aCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0N1cnNvckxpc3QuaCBcCisJU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRGF0YVJlZi5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0ZpbGxMYXllci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
RmlsdGVyT3BlcmF0aW9uLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWx0
ZXJPcGVyYXRpb25zLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbHRl
ck9wZXJhdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1l
TGlzdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3Qu
aCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0xpbmVDbGFtcFZhbHVlLmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKaW5kZXggYzYwZGQ3YTUwMGE5ZTdhOTNkOTNiYjFlMDgwYmU1ZDExZDk3NTQyMy4u
MTQ1NGMwNjEyYmZkODMxZDU2YmE3MzhmYmJiYmU3NTYzZDZiNTQ5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBA
IC0yMDY4LDcgKzIwNjgsNiBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIFwKLSAgICBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbG9yTWF0cml4LmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b25lbnRUcmFuc2Zlci5oIFwKQEAgLTIwODcsOCArMjA4Niw2IEBAIEhFQURFUlMgKz0gXAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmggXAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0LmggXAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
T3BlcmF0aW9uLmggXAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0
aW9ucy5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0U291cmNlLmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaCBcCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmggXApAQCAtMjM2MCw3ICsyMzU3LDEw
IEBAIEhFQURFUlMgKz0gXAogICAgIHJlbmRlcmluZy9zdHlsZS9Db3VudGVyRGlyZWN0aXZlcy5o
IFwKICAgICByZW5kZXJpbmcvc3R5bGUvQ3Vyc29yRGF0YS5oIFwKICAgICByZW5kZXJpbmcvc3R5
bGUvQ3Vyc29yTGlzdC5oIFwKKyAgICByZW5kZXJpbmcvc3R5bGUvQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uLmggXAogICAgIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaCBcCisgICAgcmVuZGVyaW5n
L3N0eWxlL0ZpbHRlck9wZXJhdGlvbi5oIFwKKyAgICByZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3Bl
cmF0aW9ucy5oIFwKICAgICByZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmggXAogICAgIHJl
bmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oIFwKICAgICByZW5kZXJpbmcvc3R5bGUvUXVv
dGVzRGF0YS5oIFwKQEAgLTMyNDYsNyArMzI0Niw2IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9GSUxURVJTPTEpIHsKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUu
Y3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3Bw
IFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIFwK
LSAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcCBc
CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGlnaHRTb3VyY2UuY3BwIFwKICAg
ICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmNwcCBcCiAg
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcCBcCkBA
IC0zMjU0LDcgKzMyNTMsOCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRklMVEVSUz0xKSB7
CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAgXAog
ICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9GRUNvbXBvc2l0ZUFyaXRobWV0
aWNORU9OLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZFTGln
aHRpbmdORU9OLmNwcCBcCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZF
R2F1c3NpYW5CbHVyTkVPTi5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9h
cm0vRkVHYXVzc2lhbkJsdXJORU9OLmNwcCBcCisgICAgICAgIHJlbmRlcmluZy9zdHlsZS9GaWx0
ZXJPcGVyYXRpb25zLmNwcAogfQogCiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTUFUSE1MPTEp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjOTAwZGM1MzhiMGYyODg2ZDU4MzIwNWU2ODAyMmFlMGMz
ZjJhYjI0Li4yMzc0OWFmOTg0ZDMzNjQ4YmQ0M2FjMjE4MTIxYTAxMjhjYmY4NjlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC0zNjMxLDcgKzM2MzEsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2VmbC9JbWFnZUVmbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2VmbC9JbnRQb2ludEVmbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Vm
bC9JbnRSZWN0RWZsLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwJywKQEAgLTM2NzEsOSArMzY3MCw2
IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oJywK
LSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5o
JywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlv
bnMuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbnMuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9MaWdo
dFNvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGln
aHRTb3VyY2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2lu
dExpZ2h0U291cmNlLmNwcCcsCkBAIC00NzYzLDcgKzQ3NTksMTEgQEAKICAgICAgICAgICAgICdy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oJywKICAgICAgICAgICAgICdy
ZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcv
c3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuY3BwJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5
bGUvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHls
ZS9GaWxsTGF5ZXIuY3BwJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3Bl
cmF0aW9uLmgnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVyYXRpb25z
LmNwcCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbnMuaCcs
CiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAnLAogICAgICAg
ICAgICAgJ3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuaCcsCiAgICAgICAgICAgICAncmVu
ZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDcxYjY3NDBjZDEyMzYyZWJkNjlmMDliMTM1
MWMwNTJjOWFiYjEzYTEuLjdhMzE0NGNhMmQ2NmFlYTA5ZTVlNzc5MGJjZmFkMDZmYWJkMjJmNzUg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0y
OTU1NiwxMCArMjk1NTYsNiBAQAogCQkJCQlOYW1lPSJmaWx0ZXJzIgogCQkJCQk+CiAJCQkJCTxG
aWxlCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uLmgiCi0JCQkJCQk+Ci0JCQkJCTwvRmlsZT4KLQkJCQkJPEZpbGUK
IAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xEaXN0YW50
TGlnaHRTb3VyY2UuY3BwIgogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CkBAIC0yOTc0MCwxOCArMjk3
MzYsNiBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJCQkJCTxGaWxlCi0JCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcRmlsdGVyT3BlcmF0aW9uLmgiCi0J
CQkJCQk+Ci0JCQkJCTwvRmlsZT4KLQkJCQkJPEZpbGUKLQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xGaWx0ZXJPcGVyYXRpb25zLmNwcCIKLQkJCQkJCT4K
LQkJCQkJPC9GaWxlPgotCQkJCQk8RmlsZQotCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xmaWx0ZXJzXEZpbHRlck9wZXJhdGlvbnMuaCIKLQkJCQkJCT4KLQkJCQkJPC9G
aWxlPgotCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xmaWx0ZXJzXExpZ2h0U291cmNlLmNwcCIKIAkJCQkJCT4KIAkJCQkJPC9GaWxlPgpAQCAtNDAw
NzksNiArNDAwNjMsMjIgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdHlsZVxDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJl
bmRlcmluZ1xzdHlsZVxGaWx0ZXJPcGVyYXRpb24uaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJ
CQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdHlsZVxGaWx0ZXJPcGVy
YXRpb25zLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdHlsZVxGaWx0ZXJPcGVyYXRpb25zLmgiCisJCQkJCT4KKwkJ
CQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3R5
bGVcS2V5ZnJhbWVMaXN0LmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA2ZDVjYWVhMDlkZWNlNTNhNjgxZDBjZTBmMzhmY2U4YzljMmUyYWQ3Li5kMDhjZmE0NDg3NDk3
MzI4M2M3ZjY3MDBjN2EwZDM4Y2MyZmU4NmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NDUsOSArODQ1LDYgQEAKIAkJMzE5
NDYyMzIxMzAyMkY2NTAwNEJCM0Y4IC8qIEpTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTk0NjIzMTEz
MDIyRjY1MDA0QkIzRjggLyogSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcCAqLzsgfTsK
IAkJMzE5QUUwNjMxNDJENkIyNDAwNjU2M0ExIC8qIFN0eWxlRmlsdGVyRGF0YS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTlBRTA2MTE0MkQ2QjI0
MDA2NTYzQTEgLyogU3R5bGVGaWx0ZXJEYXRhLmNwcCAqLzsgfTsKIAkJMzE5QUUwNjQxNDJENkIy
NDAwNjU2M0ExIC8qIFN0eWxlRmlsdGVyRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzE5QUUwNjIxNDJENkIyNDAwNjU2M0ExIC8qIFN0eWxlRmls
dGVyRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTMxOUFFMDY4MTQyRDc4REQwMDY1NjNBMSAvKiBGaWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOUFFMDY1MTQyRDc4REQw
MDY1NjNBMSAvKiBGaWx0ZXJPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQkzMTlBRTA2OTE0MkQ3OEREMDA2NTYzQTEgLyogRmlsdGVy
T3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMTlBRTA2NjE0MkQ3OEREMDA2NTYzQTEgLyogRmlsdGVyT3BlcmF0aW9ucy5jcHAgKi87
IH07Ci0JCTMxOUFFMDZBMTQyRDc4REQwMDY1NjNBMSAvKiBGaWx0ZXJPcGVyYXRpb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTlBRTA2NzE0MkQ3
OEREMDA2NTYzQTEgLyogRmlsdGVyT3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxOUU2ODg3MTMyN0M5MTEwMDRBQzkxQSAvKiBK
U1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMTlFNjg4NjEzMjdDOTExMDA0QUM5MUEgLyogSlNXZWJLaXRBbmlt
YXRpb25DdXN0b20uY3BwICovOyB9OwogCQkzMTlFNjlCMjEzMjk5QkJEMDA0QUM5MUEgLyogV2Vi
S2l0QW5pbWF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxOUU2OUFDMTMyOTlCQkQwMDRBQzkxQSAvKiBXZWJLaXRBbmltYXRpb24uY3BwICov
OyB9OwogCQkzMTlFNjlCMzEzMjk5QkJEMDA0QUM5MUEgLyogV2ViS2l0QW5pbWF0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTlFNjlBRDEzMjk5
QkJEMDA0QUM5MUEgLyogV2ViS2l0QW5pbWF0aW9uLmggKi87IH07CkBAIC0xMzY0LDExICsxMzYx
LDE0IEBACiAJCTUwMUJBOUUyMTM5M0NFQTAwMEY3QUNFQiAvKiBDU1NXcmFwU2hhcGVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDFCQTlFMTEzOTND
RUEwMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUwMUJBQUE5MTM5NTBFMkMwMEY3QUNFQiAvKiBXaW5k
UnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAx
QkFBQTgxMzk1MEUyQzAwRjdBQ0VCIC8qIFdpbmRSdWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTAzOEJDMDcxNDcxMUNEQjAwOTVFMEQxIC8q
IFdlYktpdENTU1NoYWRlclZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUwMzhCQzA2MTQ3MTFDREIwMDk1RTBEMSAvKiBXZWJLaXRDU1NTaGFk
ZXJWYWx1ZS5jcHAgKi87IH07Ci0JCTUwMzhCQzBCMTQ3MTFEMzQwMDk1RTBEMSAvKiBDdXN0b21G
aWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUwMzhCQzA5MTQ3MTFEMzQwMDk1RTBEMSAvKiBDdXN0b21GaWx0ZXJPcGVyYXRpb24u
aCAqLzsgfTsKIAkJNTAzOEJFMkYxNDcyQUQyMzAwOTVFMEQxIC8qIFN0eWxlQ2FjaGVkU2hhZGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwMzhC
RTJEMTQ3MkFEMjMwMDk1RTBEMSAvKiBTdHlsZUNhY2hlZFNoYWRlci5jcHAgKi87IH07CiAJCTUw
MzhCRTMwMTQ3MkFEMjMwMDk1RTBEMSAvKiBTdHlsZUNhY2hlZFNoYWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAzOEJFMkUxNDcyQUQyMzAwOTVF
MEQxIC8qIFN0eWxlQ2FjaGVkU2hhZGVyLmggKi87IH07CiAJCTUwMzhCRTQwMTQ3MkFEOTgwMDk1
RTBEMSAvKiBDYWNoZWRTaGFkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTAzOEJFM0UxNDcyQUQ5ODAwOTVFMEQxIC8qIENhY2hlZFNoYWRlci5j
cHAgKi87IH07CiAJCTUwMzhCRTQxMTQ3MkFEOTgwMDk1RTBEMSAvKiBDYWNoZWRTaGFkZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwMzhCRTNGMTQ3
MkFEOTgwMDk1RTBEMSAvKiBDYWNoZWRTaGFkZXIuaCAqLzsgfTsKKwkJNTAzOEJGMjgxNDc1MEYx
OTAwOTVFMEQxIC8qIEN1c3RvbUZpbHRlck9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAzOEJGMjQxNDc1MEYxOTAwOTVFMEQxIC8qIEN1
c3RvbUZpbHRlck9wZXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTUwMzhCRjI5MTQ3NTBGMTkwMDk1RTBEMSAvKiBGaWx0ZXJPcGVyYXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwMzhC
RjI1MTQ3NTBGMTkwMDk1RTBEMSAvKiBGaWx0ZXJPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MDM4QkYyQTE0NzUwRjE5MDA5NUUw
RDEgLyogRmlsdGVyT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MDM4QkYyNjE0NzUwRjE5MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0
aW9ucy5jcHAgKi87IH07CisJCTUwMzhCRjJCMTQ3NTBGMTkwMDk1RTBEMSAvKiBGaWx0ZXJPcGVy
YXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MDM4QkYyNzE0NzUwRjE5MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9ucy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUwOENDQTRGMTNDRjEwNkIw
MDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MDhDQ0E0RDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxv
d1RocmVhZC5oICovOyB9OwogCQk1MDhDQ0E1MDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxv
d1RocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MDhDQ0E0RTEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5jcHAgKi87IH07
CiAJCTUwRTU2NkQ2MTM5RTM4QzUwMDIxNDQzMyAvKiBDU1NXcmFwU2hhcGVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwMUJBQUIxMTM5NTExNEIw
MEY3QUNFQiAvKiBDU1NXcmFwU2hhcGVzLmNwcCAqLzsgfTsKQEAgLTc5NzQsOSArNzk3NCw2IEBA
CiAJCTMxOTQ2MjMxMTMwMjJGNjUwMDRCQjNGOCAvKiBKU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJLaXRBbmlt
YXRpb25MaXN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE5QUUw
NjExNDJENkIyNDAwNjU2M0ExIC8qIFN0eWxlRmlsdGVyRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTdHlsZUZpbHRlckRhdGEuY3BwOyBwYXRoID0gc3R5bGUv
U3R5bGVGaWx0ZXJEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE5QUUw
NjIxNDJENkIyNDAwNjU2M0ExIC8qIFN0eWxlRmlsdGVyRGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBTdHlsZUZpbHRlckRhdGEuaDsgcGF0aCA9IHN0eWxlL1N0eWxlRmls
dGVyRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTlBRTA2NTE0MkQ3OERE
MDA2NTYzQTEgLyogRmlsdGVyT3BlcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEZpbHRlck9wZXJhdGlvbi5oOyBwYXRoID0gZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE5QUUwNjYxNDJENzhERDAwNjU2M0Ex
IC8qIEZpbHRlck9wZXJhdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRmlsdGVyT3BlcmF0aW9ucy5jcHA7IHBhdGggPSBmaWx0ZXJzL0ZpbHRlck9wZXJhdGlv
bnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTlBRTA2NzE0MkQ3OEREMDA2
NTYzQTEgLyogRmlsdGVyT3BlcmF0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBGaWx0ZXJPcGVyYXRpb25zLmg7IHBhdGggPSBmaWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE5RTY4ODYxMzI3QzkxMTAwNEFDOTFB
IC8qIEpTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzE5RTY5QUMxMzI5OUJCRDAwNEFDOTFBIC8qIFdlYktpdEFuaW1hdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRBbmltYXRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTlFNjlBRDEzMjk5QkJEMDA0
QUM5MUEgLyogV2ViS2l0QW5pbWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYktpdEFuaW1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODU2
NywxMSArODU2NCwxNCBAQAogCQk1MDFCQUFBODEzOTUwRTJDMDBGN0FDRUIgLyogV2luZFJ1bGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZFJ1bGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTAxQkFBQjExMzk1MTE0QjAwRjdBQ0VCIC8qIENTU1dyYXBT
aGFwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTV3JhcFNo
YXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwMzhCQzA2MTQ3MTFDREIw
MDk1RTBEMSAvKiBXZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTUwMzhCQzA5MTQ3MTFEMzQwMDk1RTBEMSAvKiBDdXN0b21GaWx0ZXJP
cGVyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVy
T3BlcmF0aW9uLmg7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MDM4QkUyRDE0NzJBRDIzMDA5NUUwRDEgLyogU3R5
bGVDYWNoZWRTaGFkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
U3R5bGVDYWNoZWRTaGFkZXIuY3BwOyBwYXRoID0gc3R5bGUvU3R5bGVDYWNoZWRTaGFkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MDM4QkUyRTE0NzJBRDIzMDA5NUUwRDEg
LyogU3R5bGVDYWNoZWRTaGFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
U3R5bGVDYWNoZWRTaGFkZXIuaDsgcGF0aCA9IHN0eWxlL1N0eWxlQ2FjaGVkU2hhZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwMzhCRTNFMTQ3MkFEOTgwMDk1RTBEMSAvKiBD
YWNoZWRTaGFkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2Fj
aGVkU2hhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTAzOEJFM0YxNDcy
QUQ5ODAwOTVFMEQxIC8qIENhY2hlZFNoYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYWNoZWRTaGFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTAz
OEJGMjQxNDc1MEYxOTAwOTVFMEQxIC8qIEN1c3RvbUZpbHRlck9wZXJhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdXN0b21GaWx0ZXJPcGVyYXRpb24uaDsgcGF0aCA9
IHN0eWxlL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MDM4QkYyNTE0NzUwRjE5MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbHRlck9wZXJhdGlvbi5oOyBwYXRoID0gc3R5
bGUvRmlsdGVyT3BlcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUwMzhC
RjI2MTQ3NTBGMTkwMDk1RTBEMSAvKiBGaWx0ZXJPcGVyYXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZpbHRlck9wZXJhdGlvbnMuY3BwOyBwYXRoID0gc3R5
bGUvRmlsdGVyT3BlcmF0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUw
MzhCRjI3MTQ3NTBGMTkwMDk1RTBEMSAvKiBGaWx0ZXJPcGVyYXRpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbHRlck9wZXJhdGlvbnMuaDsgcGF0aCA9IHN0eWxlL0Zp
bHRlck9wZXJhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTA4Q0NBNEQx
M0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyRmxvd1RocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MDhDQ0E0RTEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJGbG93VGhyZWFkLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTBCNDIxNTcxNDY5NzY5NjAwODdFNjA0
IC8qIFdlYktpdENTU1NoYWRlclZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYktpdENTU1NoYWRlclZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNzYxMSw3ICsxNzYxMSw2IEBACiAJCUE3NUU4QjdGMEUxREUyQjAwMDdGMjQ4MSAvKiBmaWx0
ZXJzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk1MDM4
QkMwOTE0NzExRDM0MDA5NUUwRDEgLyogQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggKi8sCiAJCQkJ
MTk4NDFCRkExMzY4MzZBMTAwNkVCQkI5IC8qIGFybSAqLywKIAkJCQlBMUUxMTU0MzEzMDE1QzNE
MDA1NEFDOEMgLyogRGlzdGFudExpZ2h0U291cmNlLmNwcCAqLywKIAkJCQk4NDczMEQ1QTEyNDhG
MEIzMDBEM0E5QzkgLyogRGlzdGFudExpZ2h0U291cmNlLmggKi8sCkBAIC0xNzY1Miw5ICsxNzY1
MSw2IEBACiAJCQkJODQ1RTcyRjcwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oICovLAogCQkJ
CTA4QzkyNTE3MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3BwICovLAogCQkJCTA4
QzkyNTE4MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCAqLywKLQkJCQkzMTlBRTA2
NTE0MkQ3OEREMDA2NTYzQTEgLyogRmlsdGVyT3BlcmF0aW9uLmggKi8sCi0JCQkJMzE5QUUwNjYx
NDJENzhERDAwNjU2M0ExIC8qIEZpbHRlck9wZXJhdGlvbnMuY3BwICovLAotCQkJCTMxOUFFMDY3
MTQyRDc4REQwMDY1NjNBMSAvKiBGaWx0ZXJPcGVyYXRpb25zLmggKi8sCiAJCQkJODQ3MzBENzMx
MjQ4RjBCMzAwRDNBOUM5IC8qIExpZ2h0U291cmNlLmNwcCAqLywKIAkJCQk4NDczMEQ3NDEyNDhG
MEIzMDBEM0E5QzkgLyogTGlnaHRTb3VyY2UuaCAqLywKIAkJCQlBMUUxMTU0NTEzMDE1QzRFMDA1
NEFDOEMgLyogUG9pbnRMaWdodFNvdXJjZS5jcHAgKi8sCkBAIC0xOTc5NCw5ICsxOTc5MCwxMyBA
QAogCQkJCUJDNUVCOTRGMEU4MjA1NkIwMEIyNTk2NSAvKiBDb3VudGVyRGlyZWN0aXZlcy5oICov
LAogCQkJCUJDMjI3MkExMEU4MkU4N0MwMEU3Rjk3NSAvKiBDdXJzb3JEYXRhLmggKi8sCiAJCQkJ
QkMyMjcyQUMwRTgyRThGMzAwRTdGOTc1IC8qIEN1cnNvckxpc3QuaCAqLywKKwkJCQk1MDM4QkYy
NDE0NzUwRjE5MDA5NUUwRDEgLyogQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggKi8sCiAJCQkJQkMy
Mjc0NkUwRTgzNjY0NTAwRTdGOTc1IC8qIERhdGFSZWYuaCAqLywKIAkJCQlCQzVFQjY5QzBFODFE
QUVCMDBCMjU5NjUgLyogRmlsbExheWVyLmNwcCAqLywKIAkJCQlCQzVFQjY5RDBFODFEQUVCMDBC
MjU5NjUgLyogRmlsbExheWVyLmggKi8sCisJCQkJNTAzOEJGMjUxNDc1MEYxOTAwOTVFMEQxIC8q
IEZpbHRlck9wZXJhdGlvbi5oICovLAorCQkJCTUwMzhCRjI2MTQ3NTBGMTkwMDk1RTBEMSAvKiBG
aWx0ZXJPcGVyYXRpb25zLmNwcCAqLywKKwkJCQk1MDM4QkYyNzE0NzUwRjE5MDA5NUUwRDEgLyog
RmlsdGVyT3BlcmF0aW9ucy5oICovLAogCQkJCUJDNUVCQTBFMEU4MjNFNDcwMEIyNTk2NSAvKiBL
ZXlmcmFtZUxpc3QuY3BwICovLAogCQkJCUJDNUVCQTBGMEU4MjNFNDcwMEIyNTk2NSAvKiBLZXlm
cmFtZUxpc3QuaCAqLywKIAkJCQlBQjMxQzkxRDEwQUUxQjhFMDAwQzdCOTIgLyogTGluZUNsYW1w
VmFsdWUuaCAqLywKQEAgLTIxNjgyLDggKzIxNjgyLDYgQEAKIAkJCQlBOEVBODAwQzBBMTk1MTZF
MDBBOEVGNUYgLyogU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTgwMDcwQTE5
NTE2RTAwQThFRjVGIC8qIENTU1N0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxOUFF
MDY0MTQyRDZCMjQwMDY1NjNBMSAvKiBTdHlsZUZpbHRlckRhdGEuaCBpbiBIZWFkZXJzICovLAot
CQkJCTMxOUFFMDY4MTQyRDc4REQwMDY1NjNBMSAvKiBGaWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFk
ZXJzICovLAotCQkJCTMxOUFFMDZBMTQyRDc4REQwMDY1NjNBMSAvKiBGaWx0ZXJPcGVyYXRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBODAwRTBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFM
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1RDhDNERDMDE0MjgyMjJDMDAyNkNFNzIgLyogRGlz
cGxheVNsZWVwRGlzYWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2RDBEMEExOTg5Q0Ew
MDdGQjhDNSAvKiBDU1NSdWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NzIyLDcgKzI0NzIwLDYg
QEAKIAkJCQlDREY2NUNDQTE0NUI0NDg4MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJm
YWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTE3QjU2MjE0NzM0OTZDMDA1MkM5RDAgLyogTGF5
ZXJGbHVzaFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjkxN0I1NjMxNDczNDk2QzAw
NTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTUwMzhCQzBCMTQ3MTFEMzQwMDk1RTBEMSAvKiBDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUwMzhCRTMwMTQ3MkFEMjMwMDk1RTBEMSAvKiBTdHlsZUNhY2hlZFNo
YWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTAzOEJFNDExNDcyQUQ5ODAwOTVFMEQxIC8qIENh
Y2hlZFNoYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTNFMjY0MzExNDc0ODk5MTAwNUE4NTg4
IC8qIFdvcmtlckV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ3MzgsNiArMjQ3MzUs
OSBAQAogCQkJCTMxMkMwQzQxMTQ2REM2Q0MwMDE2QzkxMSAvKiBOb3RpZmljYXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxMjhDQTZCMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25D
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUE1MURENjE0ODUwNkE5MDBBRDI3NTIg
LyogSW5zcGVjdG9yTWV0YUFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MDM4QkYyODE0NzUw
RjE5MDA5NUUwRDEgLyogQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MDM4QkYyOTE0NzUwRjE5MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1MDM4QkYyQjE0NzUwRjE5MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yNzU0Nyw3ICsyNzU0Nyw2IEBACiAJCQkJMDcwNzU2REYxNDIz
OUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBODVGMjIwOTE0MzAzNzdEMDA3Q0M4ODQgLyogSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTMxOUFFMDYzMTQyRDZCMjQwMDY1NjNBMSAvKiBTdHlsZUZpbHRl
ckRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMzE5QUUwNjkxNDJENzhERDAwNjU2M0ExIC8q
IEZpbHRlck9wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTkxMDJGQkIxNDMyN0Qz
QjAwM0M5RDA0IC8qIENvbnRlbnRTZWFyY2hVdGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QUE4NEYwNDE0M0JBN0JEMDA1MUQxNTMgLyogU2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xsZXIubW0g
aW4gU291cmNlcyAqLywKIAkJCQkzMTA2MDM2RjE0MzI3RDJFMDBBQkY0QkEgLyogV2ViS2l0Q1NT
RmlsdGVyVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzYxMyw2ICsyNzYxMiw3IEBACiAJ
CQkJQTEwREM3NkExNDc0N0JBQjAwNUUyNDcxIC8qIFN0eWxlR3JpZERhdGEuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMzEyOENBNjgxNDczMzE1MjAwNzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRy
b2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBNTFERDUxNDg1MDZBOTAwQUQyNzUyIC8q
IEluc3BlY3Rvck1ldGFBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MDM4QkYyQTE0NzUw
RjE5MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
OTQ2OWJlODk2NDc5M2EyNTg1ZDNjZTk5OTlkYTg5NDVlNmYzMWZiLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxMTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jw
b3JhdGVkLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg
4oCcQVMgSVPigJ0gQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIg
QkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwKLSAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRgotICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEN1c3Rv
bUZpbHRlck9wZXJhdGlvbl9oCi0jZGVmaW5lIEN1c3RvbUZpbHRlck9wZXJhdGlvbl9oCi0KLSNp
ZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi0KLSNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb24uaCIKLSNp
bmNsdWRlICJTdHlsZVNoYWRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIENTUyBT
aGFkZXJzCi0KLWNsYXNzIEN1c3RvbUZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVy
YXRpb24gewotcHVibGljOgotICAgIGVudW0gTWVzaEJveFR5cGUgewotICAgICAgICBGSUxURVJf
Qk9YLAotICAgICAgICBCT1JERVJfQk9YLAotICAgICAgICBQQURESU5HX0JPWCwKLSAgICAgICAg
Q09OVEVOVF9CT1gKLSAgICB9OwotICAgIAotICAgIGVudW0gTWVzaFR5cGUgewotICAgICAgICBB
VFRBQ0hFRCwKLSAgICAgICAgREVUQUNIRUQKLSAgICB9OwotICAgIAotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEN1c3RvbUZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8U3R5bGVTaGFk
ZXI+IHZlcnRleFNoYWRlciwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21lbnRTaGFkZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbWVzaFJvd3MsIHVuc2lnbmVkIG1lc2hDb2x1bW5zLCBNZXNoQm94VHlwZSBtZXNoQm94
VHlwZSwgTWVzaFR5cGUgbWVzaFR5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEN1c3RvbUZpbHRlck9wZXJhdGlvbih2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyLCBt
ZXNoUm93cywgbWVzaENvbHVtbnMsIG1lc2hCb3hUeXBlLCBtZXNoVHlwZSkpOwotICAgIH0KLSAg
ICAKLSAgICB2b2lkIHNldFZlcnRleFNoYWRlcihQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBzaGFk
ZXIpIHsgbV92ZXJ0ZXhTaGFkZXIgPSBzaGFkZXI7IH0KLSAgICBTdHlsZVNoYWRlciogdmVydGV4
U2hhZGVyKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0ZXhTaGFkZXIuZ2V0KCk7IH0KLSAgICAKLSAg
ICB2b2lkIHNldEZyYWdtZW50U2hhZGVyKFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IHNoYWRlcikg
eyBtX2ZyYWdtZW50U2hhZGVyID0gc2hhZGVyOyB9Ci0gICAgU3R5bGVTaGFkZXIqIGZyYWdtZW50
U2hhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudFNoYWRlci5nZXQoKTsgfQotICAgIAot
ICAgIHVuc2lnbmVkIG1lc2hSb3dzKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoUm93czsgfQotICAg
IHVuc2lnbmVkIG1lc2hDb2x1bW5zKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoQ29sdW1uczsgfQot
ICAgIAotICAgIE1lc2hCb3hUeXBlIG1lc2hCb3hUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNo
Qm94VHlwZTsgfQotICAgIE1lc2hUeXBlIG1lc2hUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNo
VHlwZTsgfQotICAgIAotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIWlzU2FtZVR5
cGUobykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgY29uc3QgQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uKiBvdGhlciA9IHN0YXRpY19jYXN0PGNvbnN0IEN1c3RvbUZpbHRlck9w
ZXJhdGlvbio+KCZvKTsKLSAgICAgICAgcmV0dXJuIG1fdmVydGV4U2hhZGVyLmdldCgpID09IG90
aGVyLT5tX3ZlcnRleFNoYWRlci5nZXQoKQotICAgICAgICAgICAgICAgJiYgbV9mcmFnbWVudFNo
YWRlci5nZXQoKSA9PSBvdGhlci0+bV9mcmFnbWVudFNoYWRlci5nZXQoKQotICAgICAgICAgICAg
ICAgJiYgbV9tZXNoUm93cyA9PSBvdGhlci0+bV9tZXNoUm93cwotICAgICAgICAgICAgICAgJiYg
bV9tZXNoQ29sdW1ucyA9PSBvdGhlci0+bV9tZXNoQ29sdW1ucwotICAgICAgICAgICAgICAgJiYg
bV9tZXNoQm94VHlwZSA9PSBvdGhlci0+bV9tZXNoQm94VHlwZQotICAgICAgICAgICAgICAgJiYg
bV9tZXNoVHlwZSA9PSBvdGhlci0+bV9tZXNoVHlwZTsKLSAgICB9Ci0gICAgCi0gICAgQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uKFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IHZlcnRleFNoYWRlciwgUGFz
c1JlZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21lbnRTaGFkZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIG1lc2hSb3dzLCB1bnNpZ25lZCBtZXNoQ29sdW1ucywgTWVzaEJveFR5
cGUgbWVzaEJveFR5cGUsIE1lc2hUeXBlIG1lc2hUeXBlKQotICAgICAgICA6IEZpbHRlck9wZXJh
dGlvbihDVVNUT00pCi0gICAgICAgICwgbV92ZXJ0ZXhTaGFkZXIodmVydGV4U2hhZGVyKQotICAg
ICAgICAsIG1fZnJhZ21lbnRTaGFkZXIoZnJhZ21lbnRTaGFkZXIpCi0gICAgICAgICwgbV9tZXNo
Um93cyhtZXNoUm93cykKLSAgICAgICAgLCBtX21lc2hDb2x1bW5zKG1lc2hDb2x1bW5zKQotICAg
ICAgICAsIG1fbWVzaEJveFR5cGUobWVzaEJveFR5cGUpCi0gICAgICAgICwgbV9tZXNoVHlwZSht
ZXNoVHlwZSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVmUHRyPFN0eWxlU2hhZGVyPiBtX3ZlcnRl
eFNoYWRlcjsKLSAgICBSZWZQdHI8U3R5bGVTaGFkZXI+IG1fZnJhZ21lbnRTaGFkZXI7Ci0gICAg
Ci0gICAgdW5zaWduZWQgbV9tZXNoUm93czsKLSAgICB1bnNpZ25lZCBtX21lc2hDb2x1bW5zOwot
ICAgIE1lc2hCb3hUeXBlIG1fbWVzaEJveFR5cGU7Ci0gICAgTWVzaFR5cGUgbV9tZXNoVHlwZTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hB
REVSUykKLQotI2VuZGlmIC8vIEN1c3RvbUZpbHRlck9wZXJhdGlvbl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODFkOWMwYzViYTkyYzA1NzcyYzE3
MTRhNTQ1ZDk5ODcxMTNkN2RmNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ck9wZXJhdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMzEyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aWZuZGVmIEZpbHRlck9wZXJhdGlvbl9oCi0jZGVmaW5lIEZpbHRlck9wZXJhdGlvbl9oCi0KLSNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0KLSNpbmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUgIkxl
bmd0aC5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRv
bWljU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gQ1NTIEZpbHRlcnMKLQot
Y2xhc3MgRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8RmlsdGVyT3BlcmF0aW9u
PiB7Ci1wdWJsaWM6Ci0gICAgZW51bSBPcGVyYXRpb25UeXBlIHsKLSAgICAgICAgUkVGRVJFTkNF
LCAvLyB1cmwoI3NvbWVmaWx0ZXIpCi0gICAgICAgIEdSQVlTQ0FMRSwKLSAgICAgICAgU0VQSUEs
Ci0gICAgICAgIFNBVFVSQVRFLAotICAgICAgICBIVUVfUk9UQVRFLAotICAgICAgICBJTlZFUlQs
Ci0gICAgICAgIE9QQUNJVFksCi0gICAgICAgIEdBTU1BLAotICAgICAgICBCTFVSLAotICAgICAg
ICBTSEFSUEVOLAotICAgICAgICBEUk9QX1NIQURPVywKLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMp
Ci0gICAgICAgIENVU1RPTSwKLSNlbmRpZgotICAgICAgICBOT05FCi0gICAgfTsKLQotICAgIHZp
cnR1YWwgfkZpbHRlck9wZXJhdGlvbigpIHsgfQotCi0gICAgdmlydHVhbCBib29sIG9wZXJhdG9y
PT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJikgY29uc3QgPSAwOwotICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7
IH0KLQotICAgIHZpcnR1YWwgT3BlcmF0aW9uVHlwZSBnZXRPcGVyYXRpb25UeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2FtZVR5cGUoY29uc3QgRmls
dGVyT3BlcmF0aW9uJiBvKSBjb25zdCB7IHJldHVybiBvLmdldE9wZXJhdGlvblR5cGUoKSA9PSBt
X3R5cGU7IH0KLQotcHJvdGVjdGVkOgotICAgIEZpbHRlck9wZXJhdGlvbihPcGVyYXRpb25UeXBl
IHR5cGUpCi0gICAgICAgIDogbV90eXBlKHR5cGUpCi0gICAgewotICAgIH0KLQotICAgIE9wZXJh
dGlvblR5cGUgbV90eXBlOwotfTsKLQotLy8gRWFjaCBvZiB0aGUgaW5kaXZpZHVhbCBvcGVyYXRp
b25zIGFyZSBwcm92aWRlZCBoZXJlLiBPbmNlIHRoZXkgYWN0dWFsbHkKLS8vIGhhdmUgY29kZSB0
byBhcHBseSB0aGVpciBlZmZlY3QgdGhleSdsbCBtb3ZlIHRvIHNlcGFyYXRlIGZpbGVzLgotLy8g
QXQgdGhlIG1vbWVudCB3ZSdyZSBqdXN0IHN0b3JpbmcgdGhlIGRhdGEgZm9yIHJvdW5kdHJpcHBp
bmcuCi0KLWNsYXNzIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVy
YXRpb24gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlZmVyZW5jZUZpbHRlck9w
ZXJhdGlvbj4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgcmVmZXJlbmNlLCBPcGVyYXRpb25U
eXBlIHR5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlZmVyZW5jZUZp
bHRlck9wZXJhdGlvbihyZWZlcmVuY2UsIHR5cGUpKTsKLSAgICB9Ci0KLSAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlOyB9Ci0KLXBy
aXZhdGU6Ci0KLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRp
b24mIG8pIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNvbnN0IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlv
biogb3RoZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qPigm
byk7Ci0gICAgICAgIHJldHVybiBtX3JlZmVyZW5jZSA9PSBvdGhlci0+bV9yZWZlcmVuY2U7Ci0g
ICAgfQotCi0gICAgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYg
cmVmZXJlbmNlLCBPcGVyYXRpb25UeXBlIHR5cGUpCi0gICAgICAgIDogRmlsdGVyT3BlcmF0aW9u
KHR5cGUpCi0gICAgICAgICwgbV9yZWZlcmVuY2UocmVmZXJlbmNlKQotICAgIHsKLSAgICB9Ci0K
LSAgICBBdG9taWNTdHJpbmcgbV9yZWZlcmVuY2U7Ci19OwotCi0vLyBHUkFZU0NBTEUsIFNFUElB
LCBTQVRVUkFURSBhbmQgSFVFX1JPVEFURSBhcmUgdmFyaWF0aW9ucyBvbiBhIGJhc2ljIGNvbG9y
IG1hdHJpeCBlZmZlY3QuCi0vLyBGb3IgSFVFX1JPVEFURSwgdGhlIGFuZ2xlIG9mIHJvdGF0aW9u
IGlzIHN0b3JlZCBpbiBtX2Ftb3VudC4KLQotY2xhc3MgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9w
ZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewotcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3VibGUg
YW1vdW50LCBPcGVyYXRpb25UeXBlIHR5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24oYW1vdW50LCB0eXBlKSk7Ci0g
ICAgfQotCi0gICAgZG91YmxlIGFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50OyB9Ci0K
LXByaXZhdGU6Ci0KLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVy
YXRpb24mIG8pIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0
ZXJPcGVyYXRpb24qIG90aGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb2xvck1hdHJpeEZp
bHRlck9wZXJhdGlvbio+KCZvKTsKLSAgICAgICAgcmV0dXJuIG1fYW1vdW50ID09IG90aGVyLT5t
X2Ftb3VudDsKLSAgICB9Ci0KLSAgICBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKGRv
dWJsZSBhbW91bnQsIE9wZXJhdGlvblR5cGUgdHlwZSkKLSAgICAgICAgOiBGaWx0ZXJPcGVyYXRp
b24odHlwZSkKLSAgICAgICAgLCBtX2Ftb3VudChhbW91bnQpCi0gICAgewotICAgIH0KLQotICAg
IGRvdWJsZSBtX2Ftb3VudDsKLX07Ci0KLS8vIElOVkVSVCBhbmQgT1BBQ0lUWSBhcmUgdmFyaWF0
aW9ucyBvbiBhIGJhc2ljIGNvbXBvbmVudCB0cmFuc2ZlciBlZmZlY3QuCi0KLWNsYXNzIEJhc2lj
Q29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9u
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYXNpY0NvbXBvbmVudFRyYW5zZmVy
RmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIGFtb3VudCwgT3BlcmF0aW9uVHlwZSB0eXBl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uKGFtb3VudCwgdHlwZSkpOwotICAgIH0KLQotICAgIGRvdWJsZSBh
bW91bnQoKSBjb25zdCB7IHJldHVybiBtX2Ftb3VudDsgfQotCi1wcml2YXRlOgotCi0gICAgdmly
dHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAotICAg
IHsKLSAgICAgICAgaWYgKCFpc1NhbWVUeXBlKG8pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICBjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKiBv
dGhlciA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVy
YXRpb24qPigmbyk7Ci0gICAgICAgIHJldHVybiBtX2Ftb3VudCA9PSBvdGhlci0+bV9hbW91bnQ7
Ci0gICAgfQotCi0gICAgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbihkb3Vi
bGUgYW1vdW50LCBPcGVyYXRpb25UeXBlIHR5cGUpCi0gICAgICAgIDogRmlsdGVyT3BlcmF0aW9u
KHR5cGUpCi0gICAgICAgICwgbV9hbW91bnQoYW1vdW50KQotICAgIHsKLSAgICB9Ci0KLSAgICBk
b3VibGUgbV9hbW91bnQ7Ci19OwotCi1jbGFzcyBHYW1tYUZpbHRlck9wZXJhdGlvbiA6IHB1Ymxp
YyBGaWx0ZXJPcGVyYXRpb24gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdhbW1h
RmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIGFtcGxpdHVkZSwgZG91YmxlIGV4cG9uZW50
LCBkb3VibGUgb2Zmc2V0LCBPcGVyYXRpb25UeXBlIHR5cGUpCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEdhbW1hRmlsdGVyT3BlcmF0aW9uKGFtcGxpdHVkZSwgZXhwb25lbnQs
IG9mZnNldCwgdHlwZSkpOwotICAgIH0KLQotICAgIGRvdWJsZSBhbXBsaXR1ZGUoKSBjb25zdCB7
IHJldHVybiBtX2FtcGxpdHVkZTsgfQotICAgIGRvdWJsZSBleHBvbmVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fZXhwb25lbnQ7IH0KLSAgICBkb3VibGUgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9v
ZmZzZXQ7IH0KLQotcHJpdmF0ZToKLQotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghaXNTYW1lVHlw
ZShvKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY29uc3QgR2FtbWFGaWx0
ZXJPcGVyYXRpb24qIG90aGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgR2FtbWFGaWx0ZXJPcGVyYXRp
b24qPigmbyk7Ci0gICAgICAgIHJldHVybiBtX2FtcGxpdHVkZSA9PSBvdGhlci0+bV9hbXBsaXR1
ZGUgJiYgbV9leHBvbmVudCA9PSBvdGhlci0+bV9leHBvbmVudCAmJiBtX29mZnNldCA9PSBvdGhl
ci0+bV9vZmZzZXQ7Ci0gICAgfQotCi0gICAgR2FtbWFGaWx0ZXJPcGVyYXRpb24oZG91YmxlIGFt
cGxpdHVkZSwgZG91YmxlIGV4cG9uZW50LCBkb3VibGUgb2Zmc2V0LCBPcGVyYXRpb25UeXBlIHR5
cGUpCi0gICAgICAgIDogRmlsdGVyT3BlcmF0aW9uKHR5cGUpCi0gICAgICAgICwgbV9hbXBsaXR1
ZGUoYW1wbGl0dWRlKQotICAgICAgICAsIG1fZXhwb25lbnQoZXhwb25lbnQpCi0gICAgICAgICwg
bV9vZmZzZXQob2Zmc2V0KQotICAgIHsKLSAgICB9Ci0KLSAgICBkb3VibGUgbV9hbXBsaXR1ZGU7
Ci0gICAgZG91YmxlIG1fZXhwb25lbnQ7Ci0gICAgZG91YmxlIG1fb2Zmc2V0OwotfTsKLQotY2xh
c3MgQmx1ckZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewotcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsdXJGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShMZW5n
dGggc3RkRGV2aWF0aW9uWCwgTGVuZ3RoIHN0ZERldmlhdGlvblksIE9wZXJhdGlvblR5cGUgdHlw
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmx1ckZpbHRlck9wZXJhdGlv
bihzdGREZXZpYXRpb25YLCBzdGREZXZpYXRpb25ZLCB0eXBlKSk7Ci0gICAgfQotCi0gICAgTGVu
Z3RoIHN0ZERldmlhdGlvblgoKSBjb25zdCB7IHJldHVybiBtX3N0ZERldmlhdGlvblg7IH0KLSAg
ICBMZW5ndGggc3RkRGV2aWF0aW9uWSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uWTsg
fQotCi1wcml2YXRlOgotCi0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVy
T3BlcmF0aW9uJiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCFpc1NhbWVUeXBlKG8pKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjb25zdCBCbHVyRmlsdGVyT3BlcmF0
aW9uKiBvdGhlciA9IHN0YXRpY19jYXN0PGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qPigmbyk7
Ci0gICAgICAgIHJldHVybiBtX3N0ZERldmlhdGlvblggPT0gb3RoZXItPm1fc3RkRGV2aWF0aW9u
WCAmJiBtX3N0ZERldmlhdGlvblkgPT0gb3RoZXItPm1fc3RkRGV2aWF0aW9uWTsKLSAgICB9Ci0K
LSAgICBCbHVyRmlsdGVyT3BlcmF0aW9uKExlbmd0aCBzdGREZXZpYXRpb25YLCBMZW5ndGggc3Rk
RGV2aWF0aW9uWSwgT3BlcmF0aW9uVHlwZSB0eXBlKQotICAgICAgICA6IEZpbHRlck9wZXJhdGlv
bih0eXBlKQotICAgICAgICAsIG1fc3RkRGV2aWF0aW9uWChzdGREZXZpYXRpb25YKQotICAgICAg
ICAsIG1fc3RkRGV2aWF0aW9uWShzdGREZXZpYXRpb25ZKQotICAgIHsKLSAgICB9Ci0KLSAgICBM
ZW5ndGggbV9zdGREZXZpYXRpb25YOwotICAgIExlbmd0aCBtX3N0ZERldmlhdGlvblk7Ci19Owot
Ci1jbGFzcyBTaGFycGVuRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcnBlbkZpbHRlck9wZXJhdGlvbj4g
Y3JlYXRlKGRvdWJsZSBhbW91bnQsIExlbmd0aCByYWRpdXMsIGRvdWJsZSB0aHJlc2hvbGQsIE9w
ZXJhdGlvblR5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hh
cnBlbkZpbHRlck9wZXJhdGlvbihhbW91bnQsIHJhZGl1cywgdGhyZXNob2xkLCB0eXBlKSk7Ci0g
ICAgfQotCi0gICAgZG91YmxlIGFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50OyB9Ci0g
ICAgTGVuZ3RoIHJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzOyB9Ci0gICAgZG91Ymxl
IHRocmVzaG9sZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyZXNob2xkOyB9Ci0KLXByaXZhdGU6Ci0K
LSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNv
bnN0Ci0gICAgewotICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIGNvbnN0IFNoYXJwZW5GaWx0ZXJPcGVyYXRpb24qIG90aGVyID0g
c3RhdGljX2Nhc3Q8Y29uc3QgU2hhcnBlbkZpbHRlck9wZXJhdGlvbio+KCZvKTsKLSAgICAgICAg
cmV0dXJuIG1fcmFkaXVzID09IG90aGVyLT5tX3JhZGl1cyAmJiBtX3RocmVzaG9sZCA9PSBvdGhl
ci0+bV90aHJlc2hvbGQgJiYgbV9hbW91bnQgPT0gb3RoZXItPm1fYW1vdW50OwotICAgIH0KLQot
ICAgIFNoYXJwZW5GaWx0ZXJPcGVyYXRpb24oZG91YmxlIGFtb3VudCwgTGVuZ3RoIHJhZGl1cywg
ZG91YmxlIHRocmVzaG9sZCwgT3BlcmF0aW9uVHlwZSB0eXBlKQotICAgICAgICA6IEZpbHRlck9w
ZXJhdGlvbih0eXBlKQotICAgICAgICAsIG1fYW1vdW50KGFtb3VudCkKLSAgICAgICAgLCBtX3Jh
ZGl1cyhyYWRpdXMpCi0gICAgICAgICwgbV90aHJlc2hvbGQodGhyZXNob2xkKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBkb3VibGUgbV9hbW91bnQ7Ci0gICAgTGVuZ3RoIG1fcmFkaXVzOwotICAgIGRv
dWJsZSBtX3RocmVzaG9sZDsKLX07Ci0KLWNsYXNzIERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24g
OiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoaW50IHgsIGludCB5LCBpbnQgc3Rk
RGV2aWF0aW9uLCBDb2xvciBjb2xvciwgT3BlcmF0aW9uVHlwZSB0eXBlKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKHgsIHksIHN0
ZERldmlhdGlvbiwgY29sb3IsIHR5cGUpKTsKLSAgICB9Ci0KLSAgICBpbnQgeCgpIGNvbnN0IHsg
cmV0dXJuIG1feDsgfQotICAgIGludCB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9Ci0gICAgaW50
IHN0ZERldmlhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uOyB9Ci0gICAgQ29s
b3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9Ci0KLXByaXZhdGU6Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0Ci0g
ICAgewotICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qIG90aGVyID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbio+KCZvKTsKLSAgICAgICAg
cmV0dXJuIG1feCA9PSBvdGhlci0+bV94ICYmIG1feSA9PSBvdGhlci0+bV95ICYmIG1fc3RkRGV2
aWF0aW9uID09IG90aGVyLT5tX3N0ZERldmlhdGlvbiAmJiBtX2NvbG9yID09IG90aGVyLT5tX2Nv
bG9yOwotICAgIH0KLQotICAgIERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24oaW50IHgsIGludCB5
LCBpbnQgc3RkRGV2aWF0aW9uLCBDb2xvciBjb2xvciwgT3BlcmF0aW9uVHlwZSB0eXBlKQotICAg
ICAgICA6IEZpbHRlck9wZXJhdGlvbih0eXBlKQotICAgICAgICAsIG1feCh4KQotICAgICAgICAs
IG1feSh5KQotICAgICAgICAsIG1fc3RkRGV2aWF0aW9uKHN0ZERldmlhdGlvbikKLSAgICAgICAg
LCBtX2NvbG9yKGNvbG9yKQotICAgIHsKLSAgICB9Ci0KLSAgICBpbnQgbV94OwotICAgIGludCBt
X3k7Ci0gICAgaW50IG1fc3RkRGV2aWF0aW9uOwotICAgIENvbG9yIG1fY29sb3I7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0K
LSNlbmRpZiAvLyBGaWx0ZXJPcGVyYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyNzg1MmJiZjkwZDdlN2UwODZhMjVmNjQ0ZmRj
YzA4MTQ4MDdjYTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b25zLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgotCi0jaWYgRU5BQkxF
KENTU19GSUxURVJTKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUZpbHRlck9wZXJhdGlvbnM6
OkZpbHRlck9wZXJhdGlvbnMoKQotewotfQotCi1ib29sIEZpbHRlck9wZXJhdGlvbnM6Om9wZXJh
dG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgbykgY29uc3QKLXsKLSAgICBpZiAobV9vcGVy
YXRpb25zLnNpemUoKSAhPSBvLm1fb3BlcmF0aW9ucy5zaXplKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgCi0gICAgdW5zaWduZWQgcyA9IG1fb3BlcmF0aW9ucy5zaXplKCk7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHM7IGkrKykgewotICAgICAgICBpZiAoKm1fb3Bl
cmF0aW9uc1tpXSAhPSAqby5tX29wZXJhdGlvbnNbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotICAgIAotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRFUlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWJhODI5OTQzODAwYmE3ODNhYmNk
ODkzMDU5ODIxODRiMmFmNGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
T3BlcmF0aW9ucy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
Zm5kZWYgRmlsdGVyT3BlcmF0aW9uc19oCi0jZGVmaW5lIEZpbHRlck9wZXJhdGlvbnNfaAotCi0j
aWYgRU5BQkxFKENTU19GSUxURVJTKQotCi0jaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9uLmgiCi0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBGaWx0ZXJPcGVyYXRpb25zIHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBGaWx0ZXJPcGVyYXRpb25zKCk7Ci0gICAgCi0g
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBjb25zdDsKLSAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgbykgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGNsZWFy
KCkKLSAgICB7Ci0gICAgICAgIG1fb3BlcmF0aW9ucy5jbGVhcigpOwotICAgIH0KLSAgICAKLSAg
ICBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gPiYgb3BlcmF0aW9ucygpIHsgcmV0dXJu
IG1fb3BlcmF0aW9uczsgfQotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9u
PiA+JiBvcGVyYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpb25zOyB9Ci0KLSAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW9ucy5zaXplKCk7IH0KLSAgICBj
b25zdCBGaWx0ZXJPcGVyYXRpb24qIGF0KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5k
ZXggPCBtX29wZXJhdGlvbnMuc2l6ZSgpID8gbV9vcGVyYXRpb25zLmF0KGluZGV4KS5nZXQoKSA6
IDA7IH0KLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gPiBt
X29wZXJhdGlvbnM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCi0KLSNlbmRpZiAvLyBGaWx0ZXJPcGVyYXRpb25zX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9DdXN0b21GaWx0ZXJPcGVyYXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9DdXN0b21GaWx0ZXJPcGVyYXRp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45OTQ2OWJlODk2NDc5M2EyNTg1ZDNjZTk5OTlkYTg5NDVlNmYzMWZi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0N1c3Rv
bUZpbHRlck9wZXJhdGlvbi5oCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IDIw
MTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcK
KyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uX2gKKyNkZWZpbmUgQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uX2gKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKworI2luY2x1ZGUg
IkZpbHRlck9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIlN0eWxlU2hhZGVyLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gQ1NTIFNoYWRlcnMKKworY2xhc3MgQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAgZW51bSBNZXNoQm94
VHlwZSB7CisgICAgICAgIEZJTFRFUl9CT1gsCisgICAgICAgIEJPUkRFUl9CT1gsCisgICAgICAg
IFBBRERJTkdfQk9YLAorICAgICAgICBDT05URU5UX0JPWAorICAgIH07CisgICAgCisgICAgZW51
bSBNZXNoVHlwZSB7CisgICAgICAgIEFUVEFDSEVELAorICAgICAgICBERVRBQ0hFRAorICAgIH07
CisgICAgCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyT3BlcmF0aW9uPiBjcmVh
dGUoUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gdmVydGV4U2hhZGVyLCBQYXNzUmVmUHRyPFN0eWxl
U2hhZGVyPiBmcmFnbWVudFNoYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtZXNoUm93cywgdW5zaWduZWQgbWVzaENvbHVt
bnMsIE1lc2hCb3hUeXBlIG1lc2hCb3hUeXBlLCBNZXNoVHlwZSBtZXNoVHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKHZlcnRleFNo
YWRlciwgZnJhZ21lbnRTaGFkZXIsIG1lc2hSb3dzLCBtZXNoQ29sdW1ucywgbWVzaEJveFR5cGUs
IG1lc2hUeXBlKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0VmVydGV4U2hhZGVyKFBhc3NS
ZWZQdHI8U3R5bGVTaGFkZXI+IHNoYWRlcikgeyBtX3ZlcnRleFNoYWRlciA9IHNoYWRlcjsgfQor
ICAgIFN0eWxlU2hhZGVyKiB2ZXJ0ZXhTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRleFNo
YWRlci5nZXQoKTsgfQorICAgIAorICAgIHZvaWQgc2V0RnJhZ21lbnRTaGFkZXIoUGFzc1JlZlB0
cjxTdHlsZVNoYWRlcj4gc2hhZGVyKSB7IG1fZnJhZ21lbnRTaGFkZXIgPSBzaGFkZXI7IH0KKyAg
ICBTdHlsZVNoYWRlciogZnJhZ21lbnRTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50
U2hhZGVyLmdldCgpOyB9CisgICAgCisgICAgdW5zaWduZWQgbWVzaFJvd3MoKSBjb25zdCB7IHJl
dHVybiBtX21lc2hSb3dzOyB9CisgICAgdW5zaWduZWQgbWVzaENvbHVtbnMoKSBjb25zdCB7IHJl
dHVybiBtX21lc2hDb2x1bW5zOyB9CisgICAgCisgICAgTWVzaEJveFR5cGUgbWVzaEJveFR5cGUo
KSBjb25zdCB7IHJldHVybiBtX21lc2hCb3hUeXBlOyB9CisgICAgTWVzaFR5cGUgbWVzaFR5cGUo
KSBjb25zdCB7IHJldHVybiBtX21lc2hUeXBlOyB9CisgICAgCitwcml2YXRlOgorICAgIHZpcnR1
YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKKyAgICB7
CisgICAgICAgIGlmICghaXNTYW1lVHlwZShvKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICBjb25zdCBDdXN0b21GaWx0ZXJPcGVyYXRpb24qIG90aGVyID0gc3RhdGljX2Nh
c3Q8Y29uc3QgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKj4oJm8pOworICAgICAgICByZXR1cm4gbV92
ZXJ0ZXhTaGFkZXIuZ2V0KCkgPT0gb3RoZXItPm1fdmVydGV4U2hhZGVyLmdldCgpCisgICAgICAg
ICAgICAgICAmJiBtX2ZyYWdtZW50U2hhZGVyLmdldCgpID09IG90aGVyLT5tX2ZyYWdtZW50U2hh
ZGVyLmdldCgpCisgICAgICAgICAgICAgICAmJiBtX21lc2hSb3dzID09IG90aGVyLT5tX21lc2hS
b3dzCisgICAgICAgICAgICAgICAmJiBtX21lc2hDb2x1bW5zID09IG90aGVyLT5tX21lc2hDb2x1
bW5zCisgICAgICAgICAgICAgICAmJiBtX21lc2hCb3hUeXBlID09IG90aGVyLT5tX21lc2hCb3hU
eXBlCisgICAgICAgICAgICAgICAmJiBtX21lc2hUeXBlID09IG90aGVyLT5tX21lc2hUeXBlOwor
ICAgIH0KKyAgICAKKyAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb24oUGFzc1JlZlB0cjxTdHlsZVNo
YWRlcj4gdmVydGV4U2hhZGVyLCBQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBmcmFnbWVudFNoYWRl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWVzaFJvd3MsIHVuc2lnbmVk
IG1lc2hDb2x1bW5zLCBNZXNoQm94VHlwZSBtZXNoQm94VHlwZSwgTWVzaFR5cGUgbWVzaFR5cGUp
CisgICAgICAgIDogRmlsdGVyT3BlcmF0aW9uKENVU1RPTSkKKyAgICAgICAgLCBtX3ZlcnRleFNo
YWRlcih2ZXJ0ZXhTaGFkZXIpCisgICAgICAgICwgbV9mcmFnbWVudFNoYWRlcihmcmFnbWVudFNo
YWRlcikKKyAgICAgICAgLCBtX21lc2hSb3dzKG1lc2hSb3dzKQorICAgICAgICAsIG1fbWVzaENv
bHVtbnMobWVzaENvbHVtbnMpCisgICAgICAgICwgbV9tZXNoQm94VHlwZShtZXNoQm94VHlwZSkK
KyAgICAgICAgLCBtX21lc2hUeXBlKG1lc2hUeXBlKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQ
dHI8U3R5bGVTaGFkZXI+IG1fdmVydGV4U2hhZGVyOworICAgIFJlZlB0cjxTdHlsZVNoYWRlcj4g
bV9mcmFnbWVudFNoYWRlcjsKKyAgICAKKyAgICB1bnNpZ25lZCBtX21lc2hSb3dzOworICAgIHVu
c2lnbmVkIG1fbWVzaENvbHVtbnM7CisgICAgTWVzaEJveFR5cGUgbV9tZXNoQm94VHlwZTsKKyAg
ICBNZXNoVHlwZSBtX21lc2hUeXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKQorCisjZW5kaWYgLy8gQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWx0
ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWx0ZXJPcGVy
YXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44MWQ5YzBjNWJhOTJjMDU3NzJjMTcxNGE1NDVkOTk4NzExM2Q3
ZGY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Zp
bHRlck9wZXJhdGlvbi5oCkBAIC0wLDAgKzEsMzEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBGaWx0
ZXJPcGVyYXRpb25faAorI2RlZmluZSBGaWx0ZXJPcGVyYXRpb25faAorCisjaWYgRU5BQkxFKENT
U19GSUxURVJTKQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJMZW5ndGguaCIKKyNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIENTUyBGaWx0ZXJzCisKK2NsYXNzIEZpbHRl
ck9wZXJhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbHRlck9wZXJhdGlvbj4geworcHVibGlj
OgorICAgIGVudW0gT3BlcmF0aW9uVHlwZSB7CisgICAgICAgIFJFRkVSRU5DRSwgLy8gdXJsKCNz
b21lZmlsdGVyKQorICAgICAgICBHUkFZU0NBTEUsCisgICAgICAgIFNFUElBLAorICAgICAgICBT
QVRVUkFURSwKKyAgICAgICAgSFVFX1JPVEFURSwKKyAgICAgICAgSU5WRVJULAorICAgICAgICBP
UEFDSVRZLAorICAgICAgICBHQU1NQSwKKyAgICAgICAgQkxVUiwKKyAgICAgICAgU0hBUlBFTiwK
KyAgICAgICAgRFJPUF9TSEFET1csCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgICAgICBD
VVNUT00sCisjZW5kaWYKKyAgICAgICAgTk9ORQorICAgIH07CisKKyAgICB2aXJ0dWFsIH5GaWx0
ZXJPcGVyYXRpb24oKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZp
bHRlck9wZXJhdGlvbiYpIGNvbnN0ID0gMDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmls
dGVyT3BlcmF0aW9uJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CisKKyAgICB2
aXJ0dWFsIE9wZXJhdGlvblR5cGUgZ2V0T3BlcmF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NhbWVUeXBlKGNvbnN0IEZpbHRlck9wZXJhdGlv
biYgbykgY29uc3QgeyByZXR1cm4gby5nZXRPcGVyYXRpb25UeXBlKCkgPT0gbV90eXBlOyB9CisK
K3Byb3RlY3RlZDoKKyAgICBGaWx0ZXJPcGVyYXRpb24oT3BlcmF0aW9uVHlwZSB0eXBlKQorICAg
ICAgICA6IG1fdHlwZSh0eXBlKQorICAgIHsKKyAgICB9CisKKyAgICBPcGVyYXRpb25UeXBlIG1f
dHlwZTsKK307CisKKy8vIEVhY2ggb2YgdGhlIGluZGl2aWR1YWwgb3BlcmF0aW9ucyBhcmUgcHJv
dmlkZWQgaGVyZS4gT25jZSB0aGV5IGFjdHVhbGx5CisvLyBoYXZlIGNvZGUgdG8gYXBwbHkgdGhl
aXIgZWZmZWN0IHRoZXknbGwgbW92ZSB0byBzZXBhcmF0ZSBmaWxlcy4KKy8vIEF0IHRoZSBtb21l
bnQgd2UncmUganVzdCBzdG9yaW5nIHRoZSBkYXRhIGZvciByb3VuZHRyaXBwaW5nLgorCitjbGFz
cyBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+IGNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHJlZmVyZW5jZSwgT3BlcmF0aW9uVHlwZSB0eXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRp
b24ocmVmZXJlbmNlLCB0eXBlKSk7CisgICAgfQorCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBy
ZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZTsgfQorCitwcml2YXRlOgorCisg
ICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25z
dAorICAgIHsKKyAgICAgICAgaWYgKCFpc1NhbWVUeXBlKG8pKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBjb25zdCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qIG90aGVyID0g
c3RhdGljX2Nhc3Q8Y29uc3QgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKj4oJm8pOworICAgICAg
ICByZXR1cm4gbV9yZWZlcmVuY2UgPT0gb3RoZXItPm1fcmVmZXJlbmNlOworICAgIH0KKworICAg
IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIHJlZmVyZW5jZSwg
T3BlcmF0aW9uVHlwZSB0eXBlKQorICAgICAgICA6IEZpbHRlck9wZXJhdGlvbih0eXBlKQorICAg
ICAgICAsIG1fcmVmZXJlbmNlKHJlZmVyZW5jZSkKKyAgICB7CisgICAgfQorCisgICAgQXRvbWlj
U3RyaW5nIG1fcmVmZXJlbmNlOworfTsKKworLy8gR1JBWVNDQUxFLCBTRVBJQSwgU0FUVVJBVEUg
YW5kIEhVRV9ST1RBVEUgYXJlIHZhcmlhdGlvbnMgb24gYSBiYXNpYyBjb2xvciBtYXRyaXggZWZm
ZWN0LgorLy8gRm9yIEhVRV9ST1RBVEUsIHRoZSBhbmdsZSBvZiByb3RhdGlvbiBpcyBzdG9yZWQg
aW4gbV9hbW91bnQuCisKK2NsYXNzIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24gOiBw
dWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxC
YXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIGFtb3VudCwgT3Bl
cmF0aW9uVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNp
Y0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKGFtb3VudCwgdHlwZSkpOworICAgIH0KKworICAg
IGRvdWJsZSBhbW91bnQoKSBjb25zdCB7IHJldHVybiBtX2Ftb3VudDsgfQorCitwcml2YXRlOgor
CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKCFpc1NhbWVUeXBlKG8pKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9u
KiBvdGhlciA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRp
b24qPigmbyk7CisgICAgICAgIHJldHVybiBtX2Ftb3VudCA9PSBvdGhlci0+bV9hbW91bnQ7Cisg
ICAgfQorCisgICAgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbihkb3VibGUgYW1vdW50
LCBPcGVyYXRpb25UeXBlIHR5cGUpCisgICAgICAgIDogRmlsdGVyT3BlcmF0aW9uKHR5cGUpCisg
ICAgICAgICwgbV9hbW91bnQoYW1vdW50KQorICAgIHsKKyAgICB9CisKKyAgICBkb3VibGUgbV9h
bW91bnQ7Cit9OworCisvLyBJTlZFUlQgYW5kIE9QQUNJVFkgYXJlIHZhcmlhdGlvbnMgb24gYSBi
YXNpYyBjb21wb25lbnQgdHJhbnNmZXIgZWZmZWN0LgorCitjbGFzcyBCYXNpY0NvbXBvbmVudFRy
YW5zZmVyRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJh
dGlvbj4gY3JlYXRlKGRvdWJsZSBhbW91bnQsIE9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9w
ZXJhdGlvbihhbW91bnQsIHR5cGUpKTsKKyAgICB9CisKKyAgICBkb3VibGUgYW1vdW50KCkgY29u
c3QgeyByZXR1cm4gbV9hbW91bnQ7IH0KKworcHJpdmF0ZToKKworICAgIHZpcnR1YWwgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKKyAgICB7CisgICAgICAg
IGlmICghaXNTYW1lVHlwZShvKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiogb3RoZXIgPSBzdGF0
aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oJm8p
OworICAgICAgICByZXR1cm4gbV9hbW91bnQgPT0gb3RoZXItPm1fYW1vdW50OworICAgIH0KKwor
ICAgIEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24oZG91YmxlIGFtb3VudCwg
T3BlcmF0aW9uVHlwZSB0eXBlKQorICAgICAgICA6IEZpbHRlck9wZXJhdGlvbih0eXBlKQorICAg
ICAgICAsIG1fYW1vdW50KGFtb3VudCkKKyAgICB7CisgICAgfQorCisgICAgZG91YmxlIG1fYW1v
dW50OworfTsKKworY2xhc3MgR2FtbWFGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3Bl
cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHYW1tYUZpbHRlck9wZXJh
dGlvbj4gY3JlYXRlKGRvdWJsZSBhbXBsaXR1ZGUsIGRvdWJsZSBleHBvbmVudCwgZG91YmxlIG9m
ZnNldCwgT3BlcmF0aW9uVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBHYW1tYUZpbHRlck9wZXJhdGlvbihhbXBsaXR1ZGUsIGV4cG9uZW50LCBvZmZzZXQsIHR5
cGUpKTsKKyAgICB9CisKKyAgICBkb3VibGUgYW1wbGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9h
bXBsaXR1ZGU7IH0KKyAgICBkb3VibGUgZXhwb25lbnQoKSBjb25zdCB7IHJldHVybiBtX2V4cG9u
ZW50OyB9CisgICAgZG91YmxlIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisK
K3ByaXZhdGU6CisKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVy
YXRpb24mIG8pIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNvbnN0IEdhbW1hRmlsdGVyT3BlcmF0aW9u
KiBvdGhlciA9IHN0YXRpY19jYXN0PGNvbnN0IEdhbW1hRmlsdGVyT3BlcmF0aW9uKj4oJm8pOwor
ICAgICAgICByZXR1cm4gbV9hbXBsaXR1ZGUgPT0gb3RoZXItPm1fYW1wbGl0dWRlICYmIG1fZXhw
b25lbnQgPT0gb3RoZXItPm1fZXhwb25lbnQgJiYgbV9vZmZzZXQgPT0gb3RoZXItPm1fb2Zmc2V0
OworICAgIH0KKworICAgIEdhbW1hRmlsdGVyT3BlcmF0aW9uKGRvdWJsZSBhbXBsaXR1ZGUsIGRv
dWJsZSBleHBvbmVudCwgZG91YmxlIG9mZnNldCwgT3BlcmF0aW9uVHlwZSB0eXBlKQorICAgICAg
ICA6IEZpbHRlck9wZXJhdGlvbih0eXBlKQorICAgICAgICAsIG1fYW1wbGl0dWRlKGFtcGxpdHVk
ZSkKKyAgICAgICAgLCBtX2V4cG9uZW50KGV4cG9uZW50KQorICAgICAgICAsIG1fb2Zmc2V0KG9m
ZnNldCkKKyAgICB7CisgICAgfQorCisgICAgZG91YmxlIG1fYW1wbGl0dWRlOworICAgIGRvdWJs
ZSBtX2V4cG9uZW50OworICAgIGRvdWJsZSBtX29mZnNldDsKK307CisKK2NsYXNzIEJsdXJGaWx0
ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxCbHVyRmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoTGVuZ3RoIHN0ZERldmlh
dGlvblgsIExlbmd0aCBzdGREZXZpYXRpb25ZLCBPcGVyYXRpb25UeXBlIHR5cGUpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJsdXJGaWx0ZXJPcGVyYXRpb24oc3RkRGV2aWF0
aW9uWCwgc3RkRGV2aWF0aW9uWSwgdHlwZSkpOworICAgIH0KKworICAgIExlbmd0aCBzdGREZXZp
YXRpb25YKCkgY29uc3QgeyByZXR1cm4gbV9zdGREZXZpYXRpb25YOyB9CisgICAgTGVuZ3RoIHN0
ZERldmlhdGlvblkoKSBjb25zdCB7IHJldHVybiBtX3N0ZERldmlhdGlvblk7IH0KKworcHJpdmF0
ZToKKworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYg
bykgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghaXNTYW1lVHlwZShvKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgY29uc3QgQmx1ckZpbHRlck9wZXJhdGlvbiogb3RoZXIg
PSBzdGF0aWNfY2FzdDxjb25zdCBCbHVyRmlsdGVyT3BlcmF0aW9uKj4oJm8pOworICAgICAgICBy
ZXR1cm4gbV9zdGREZXZpYXRpb25YID09IG90aGVyLT5tX3N0ZERldmlhdGlvblggJiYgbV9zdGRE
ZXZpYXRpb25ZID09IG90aGVyLT5tX3N0ZERldmlhdGlvblk7CisgICAgfQorCisgICAgQmx1ckZp
bHRlck9wZXJhdGlvbihMZW5ndGggc3RkRGV2aWF0aW9uWCwgTGVuZ3RoIHN0ZERldmlhdGlvblks
IE9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICAgICAgOiBGaWx0ZXJPcGVyYXRpb24odHlwZSkKKyAg
ICAgICAgLCBtX3N0ZERldmlhdGlvblgoc3RkRGV2aWF0aW9uWCkKKyAgICAgICAgLCBtX3N0ZERl
dmlhdGlvblkoc3RkRGV2aWF0aW9uWSkKKyAgICB7CisgICAgfQorCisgICAgTGVuZ3RoIG1fc3Rk
RGV2aWF0aW9uWDsKKyAgICBMZW5ndGggbV9zdGREZXZpYXRpb25ZOworfTsKKworY2xhc3MgU2hh
cnBlbkZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24geworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJwZW5GaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShkb3Vi
bGUgYW1vdW50LCBMZW5ndGggcmFkaXVzLCBkb3VibGUgdGhyZXNob2xkLCBPcGVyYXRpb25UeXBl
IHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJwZW5GaWx0ZXJP
cGVyYXRpb24oYW1vdW50LCByYWRpdXMsIHRocmVzaG9sZCwgdHlwZSkpOworICAgIH0KKworICAg
IGRvdWJsZSBhbW91bnQoKSBjb25zdCB7IHJldHVybiBtX2Ftb3VudDsgfQorICAgIExlbmd0aCBy
YWRpdXMoKSBjb25zdCB7IHJldHVybiBtX3JhZGl1czsgfQorICAgIGRvdWJsZSB0aHJlc2hvbGQo
KSBjb25zdCB7IHJldHVybiBtX3RocmVzaG9sZDsgfQorCitwcml2YXRlOgorCisgICAgdmlydHVh
bCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKCFpc1NhbWVUeXBlKG8pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBjb25zdCBTaGFycGVuRmlsdGVyT3BlcmF0aW9uKiBvdGhlciA9IHN0YXRpY19jYXN0
PGNvbnN0IFNoYXJwZW5GaWx0ZXJPcGVyYXRpb24qPigmbyk7CisgICAgICAgIHJldHVybiBtX3Jh
ZGl1cyA9PSBvdGhlci0+bV9yYWRpdXMgJiYgbV90aHJlc2hvbGQgPT0gb3RoZXItPm1fdGhyZXNo
b2xkICYmIG1fYW1vdW50ID09IG90aGVyLT5tX2Ftb3VudDsKKyAgICB9CisKKyAgICBTaGFycGVu
RmlsdGVyT3BlcmF0aW9uKGRvdWJsZSBhbW91bnQsIExlbmd0aCByYWRpdXMsIGRvdWJsZSB0aHJl
c2hvbGQsIE9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICAgICAgOiBGaWx0ZXJPcGVyYXRpb24odHlw
ZSkKKyAgICAgICAgLCBtX2Ftb3VudChhbW91bnQpCisgICAgICAgICwgbV9yYWRpdXMocmFkaXVz
KQorICAgICAgICAsIG1fdGhyZXNob2xkKHRocmVzaG9sZCkKKyAgICB7CisgICAgfQorCisgICAg
ZG91YmxlIG1fYW1vdW50OworICAgIExlbmd0aCBtX3JhZGl1czsKKyAgICBkb3VibGUgbV90aHJl
c2hvbGQ7Cit9OworCitjbGFzcyBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZp
bHRlck9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RHJvcFNoYWRv
d0ZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGludCB4LCBpbnQgeSwgaW50IHN0ZERldmlhdGlvbiwg
Q29sb3IgY29sb3IsIE9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbih4LCB5LCBzdGREZXZpYXRpb24s
IGNvbG9yLCB0eXBlKSk7CisgICAgfQorCisgICAgaW50IHgoKSBjb25zdCB7IHJldHVybiBtX3g7
IH0KKyAgICBpbnQgeSgpIGNvbnN0IHsgcmV0dXJuIG1feTsgfQorICAgIGludCBzdGREZXZpYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3N0ZERldmlhdGlvbjsgfQorICAgIENvbG9yIGNvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfQorCitwcml2YXRlOgorCisgICAgdmlydHVhbCBib29s
IG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAorICAgIHsKKyAgICAg
ICAgaWYgKCFpc1NhbWVUeXBlKG8pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBjb25zdCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKiBvdGhlciA9IHN0YXRpY19jYXN0PGNv
bnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qPigmbyk7CisgICAgICAgIHJldHVybiBtX3gg
PT0gb3RoZXItPm1feCAmJiBtX3kgPT0gb3RoZXItPm1feSAmJiBtX3N0ZERldmlhdGlvbiA9PSBv
dGhlci0+bV9zdGREZXZpYXRpb24gJiYgbV9jb2xvciA9PSBvdGhlci0+bV9jb2xvcjsKKyAgICB9
CisKKyAgICBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKGludCB4LCBpbnQgeSwgaW50IHN0ZERl
dmlhdGlvbiwgQ29sb3IgY29sb3IsIE9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICAgICAgOiBGaWx0
ZXJPcGVyYXRpb24odHlwZSkKKyAgICAgICAgLCBtX3goeCkKKyAgICAgICAgLCBtX3koeSkKKyAg
ICAgICAgLCBtX3N0ZERldmlhdGlvbihzdGREZXZpYXRpb24pCisgICAgICAgICwgbV9jb2xvcihj
b2xvcikKKyAgICB7CisgICAgfQorCisgICAgaW50IG1feDsKKyAgICBpbnQgbV95OworICAgIGlu
dCBtX3N0ZERldmlhdGlvbjsKKyAgICBDb2xvciBtX2NvbG9yOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19GSUxURVJTKQorCisjZW5kaWYgLy8g
RmlsdGVyT3BlcmF0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9GaWx0ZXJPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9GaWx0ZXJPcGVyYXRpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Mjc4NTJiYmY5MGQ3ZTdlMDg2YTI1
ZjY0NGZkY2MwODE0ODA3Y2E0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbnMuY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgor
CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZpbHRl
ck9wZXJhdGlvbnM6OkZpbHRlck9wZXJhdGlvbnMoKQoreworfQorCitib29sIEZpbHRlck9wZXJh
dGlvbnM6Om9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgbykgY29uc3QKK3sKKyAg
ICBpZiAobV9vcGVyYXRpb25zLnNpemUoKSAhPSBvLm1fb3BlcmF0aW9ucy5zaXplKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgdW5zaWduZWQgcyA9IG1fb3BlcmF0aW9u
cy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHM7IGkrKykgeworICAgICAg
ICBpZiAoKm1fb3BlcmF0aW9uc1tpXSAhPSAqby5tX29wZXJhdGlvbnNbaV0pCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRFUlMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsdGVyT3BlcmF0aW9ucy5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlvbnMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yZWJhODI5OTQzODAwYmE3ODNhYmNkODkzMDU5ODIxODRiMmFmNGQ0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbHRlck9wZXJhdGlv
bnMuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBGaWx0ZXJPcGVyYXRpb25z
X2gKKyNkZWZpbmUgRmlsdGVyT3BlcmF0aW9uc19oCisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
CisKKyNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEZpbHRlck9wZXJhdGlvbnMgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIEZpbHRlck9wZXJhdGlvbnMoKTsKKyAgICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiBvKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gbyk7CisgICAgfQorICAgIAorICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbV9v
cGVyYXRpb25zLmNsZWFyKCk7CisgICAgfQorICAgIAorICAgIFZlY3RvcjxSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPiA+JiBvcGVyYXRpb25zKCkgeyByZXR1cm4gbV9vcGVyYXRpb25zOyB9CisgICAg
Y29uc3QgVmVjdG9yPFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+ID4mIG9wZXJhdGlvbnMoKSBjb25z
dCB7IHJldHVybiBtX29wZXJhdGlvbnM7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcGVyYXRpb25zLnNpemUoKTsgfQorICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiog
YXQoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBpbmRleCA8IG1fb3BlcmF0aW9ucy5zaXpl
KCkgPyBtX29wZXJhdGlvbnMuYXQoaW5kZXgpLmdldCgpIDogMDsgfQorCitwcml2YXRlOgorICAg
IFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiA+IG1fb3BlcmF0aW9uczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfRklMVEVSUykKKwor
I2VuZGlmIC8vIEZpbHRlck9wZXJhdGlvbnNfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>