<?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>91288</bug_id>
          
          <creation_ts>2012-07-13 14:53:13 -0700</creation_ts>
          <short_desc>[chromium] Remove targetRenderSurface concept, give layers a renderTarget which is the layer whose coordinate space they draw into</short_desc>
          <delta_ts>2012-07-16 13:39:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>91418</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
    
    <cc>zlieber</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>669453</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-13 14:53:13 -0700</bug_when>
    <thetext>[chromium] Remove targetRenderSurface concept, give layers a renderTarget which is the layer whose coordinate space they draw into</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669454</commentid>
    <comment_count>1</comment_count>
      <attachid>152341</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-13 14:53:57 -0700</bug_when>
    <thetext>Created attachment 152341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669477</commentid>
    <comment_count>2</comment_count>
      <attachid>152349</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-13 15:08:01 -0700</bug_when>
    <thetext>Created attachment 152349
rm-surface-filters</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669563</commentid>
    <comment_count>3</comment_count>
      <attachid>152341</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-13 16:27:08 -0700</bug_when>
    <thetext>Comment on attachment 152341
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/RenderSurfaceChromium.h:-111
&gt; -    RenderSurfaceChromium* targetRenderSurface() const;
&gt; -

Nice!

&gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp:454
&gt; +    // The layer owns a surface which is contributing to another target.
&gt; +    ASSERT(layer-&gt;renderTarget() == layer);

Comment is kind of misleading.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp:468
&gt; -        const RenderSurfaceType* targetSurface = surface-&gt;targetRenderSurface();
&gt; -        if (targetSurface)
&gt; -            surfaceClipRect = intersection(targetSurface-&gt;contentRect(), enclosingIntRect(surface-&gt;drawableContentRect()));
&gt; -        else
&gt; -            surfaceClipRect = m_scissorRectInScreenSpace;
&gt; +        LayerType* contributingSurfaceRenderTarget = layer-&gt;parent()-&gt;renderTarget();
&gt; +        surfaceClipRect = intersection(contributingSurfaceRenderTarget-&gt;renderSurface()-&gt;contentRect(), enclosingIntRect(surface-&gt;drawableContentRect()));

&lt;3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669581</commentid>
    <comment_count>4</comment_count>
      <attachid>152349</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-13 16:38:03 -0700</bug_when>
    <thetext>Comment on attachment 152349
rm-surface-filters

This is good too.  Is there a reason not to just submit these patches separately?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669582</commentid>
    <comment_count>5</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-13 16:38:57 -0700</bug_when>
    <thetext>Nope was just wondering what you&apos;d think, and wanted to give a trajectory. I could smoosh them together but no need to, I&apos;ll submit them separately then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670578</commentid>
    <comment_count>6</comment_count>
      <attachid>152592</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-16 12:54:10 -0700</bug_when>
    <thetext>Created attachment 152592
Patch

fix comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670607</commentid>
    <comment_count>7</comment_count>
      <attachid>152592</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-16 13:24:18 -0700</bug_when>
    <thetext>Comment on attachment 152592
Patch

R=me.  Nice cleanup.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670623</commentid>
    <comment_count>8</comment_count>
      <attachid>152592</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-16 13:39:26 -0700</bug_when>
    <thetext>Comment on attachment 152592
Patch

Clearing flags on attachment: 152592

Committed r122756: &lt;http://trac.webkit.org/changeset/122756&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670624</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-16 13:39:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152341</attachid>
            <date>2012-07-13 14:53:57 -0700</date>
            <delta_ts>2012-07-16 12:54:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91288-20120713175356.patch</filename>
            <type>text/plain</type>
            <size>86707</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVkNDUxMzMxNjhhNDZl
OGQ5ZTY1NTc1NDlmNzM1NDMzNzM3N2ZlMy4uNGM2NzY4ZGI3MTQyNjdhMmI1MTIzZGE5ZjI0MTRl
NWQ2YzE4NjQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTA3LTEzICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVt
b3ZlIHRhcmdldFJlbmRlclN1cmZhY2UgY29uY2VwdCwgZ2l2ZSBsYXllcnMgYSByZW5kZXJUYXJn
ZXQgd2hpY2ggaXMgdGhlIGxheWVyIHdob3NlIGNvb3JkaW5hdGUgc3BhY2UgdGhleSBkcmF3IGlu
dG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjg4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlUmVuZGVyU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJD
aHJvbWl1bTo6cmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06
OnNldFJlbmRlclRhcmdldCk6CisgICAgICAgIChMYXllckNocm9taXVtKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6c2V0
VGV4dHVyZVByaW9yaXRpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hy
b21pdW06OnNldFRleHR1cmVQcmlvcml0aWVzSW5SZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVySW1wbDo6Q0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6
OmNyZWF0ZVJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OmR1
bXBMYXllclByb3BlcnRpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6cmVuZGVy
VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRSZW5kZXJUYXJnZXQp
OgorICAgICAgICAoQ0NMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
YWxjdWxhdGVMYXllclNjaXNzb3JSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZVN1
cmZhY2VTY2lzc29yUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVWaXNpYmxlQ29u
dGVudFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVNjcm9sbENvbXBlbnNhdGlvbkZv
clRoaXNMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0lu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50SXNDbGlwcGVkQnlTdXJmYWNlT3JDbGlw
UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNp
b25UcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6ZW50ZXJMYXllcik6CisgICAgICAg
IChXZWJDb3JlOjo6OmxlYXZlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6OjplbnRlclJlbmRl
clRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjo6OmZpbmlzaGVkUmVuZGVyVGFyZ2V0KToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cmVkdWNlT2NjbHVzaW9uQmVsb3dT
dXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6bGVhdmVUb1JlbmRlclRhcmdldCk6CisgICAg
ICAgIChXZWJDb3JlOjo6Om1hcmtPY2NsdWRlZEJlaGluZExheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ojo6b2NjbHVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Ojp1bm9jY2x1ZGVkQ29udGVudFJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Ojp1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNv
bnRlbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ojo6bGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0
U3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2Ns
dXNpb25UcmFja2VyLmg6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJCYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlckJhc2U6OlN0YWNrT2JqZWN0OjpTdGFja09i
amVjdCk6CisgICAgICAgIChTdGFja09iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUXVh
ZEN1bGxlcjo6YXBwZW5kU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaDoKKyAgICAgICAgKENDUmVuZGVyU3VyZmFj
ZSk6CisKIDIwMTItMDctMTMgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjI0NTAgYW5kIHIxMjI1
ODAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDY5MGNlYjRiODIwY2UwYjNmNDJlY2Iy
MzZjODRmYWNlOTI2N2UxYWYuLjkyODQxYmVjNzg1YWJhYjYzMDhkZTY1YjdkODMxNTQ3Y2IzNzBi
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzQgQEAKIDIwMTItMDct
MTMgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW2Nocm9t
aXVtXSBSZW1vdmUgdGFyZ2V0UmVuZGVyU3VyZmFjZSBjb25jZXB0LCBnaXZlIGxheWVycyBhIHJl
bmRlclRhcmdldCB3aGljaCBpcyB0aGUgbGF5ZXIgd2hvc2UgY29vcmRpbmF0ZSBzcGFjZSB0aGV5
IGRyYXcgaW50bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTEyODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHRlc3RzL0NDRGFtYWdlVHJhY2tlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRl
c3QuY3BwOgorICAgICAgICAqIHRlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwOgorICAg
ICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFwcGluZ1N1cmZh
Y2VTaWJsaW5nczo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lv
blRyYWNrZXJUZXN0T3ZlcmxhcHBpbmdTdXJmYWNlU2libGluZ3NXaXRoVHdvVHJhbnNmb3Jtczo6
cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0
QW5pbWF0aW9uT3BhY2l0eTFPbk1haW5UaHJlYWQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJL
aXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkwT25NYWluVGhy
ZWFkOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tl
clRlc3RBbmltYXRpb25UcmFuc2xhdGVPbk1haW5UaHJlYWQ6OnJ1bk15VGVzdCk6CisgICAgICAg
IChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFJlcGxpY2FPY2NsdWRlZDo6cnVu
TXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3Vy
ZmFjZVdpdGhSZXBsaWNhVW5vY2NsdWRlZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRl
c3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZUFuZFJlcGxpY2FPY2NsdWRlZERpZmZl
cmVudGx5OjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJh
Y2tlclRlc3RTdXJmYWNlQ2hpbGRPZlN1cmZhY2U6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJL
aXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFRvcG1vc3RTdXJmYWNlSXNDbGlwcGVkVG9T
Y2lzc29yOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJh
Y2tlclRlc3RTdXJmYWNlQ2hpbGRPZkNsaXBwaW5nU3VyZmFjZTo6cnVuTXlUZXN0KToKKyAgICAg
ICAgKiB0ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVk
TGF5ZXJUZXN0Q29tbW9uLmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlVGlsZWRMYXll
ckNocm9taXVtOjpzZXRUZXh0dXJlUHJpb3JpdGllcyk6CisgICAgICAgICogdGVzdHMvTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwOgorCisyMDEyLTA3LTEzICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hy
b21pdW0ub3JnPgorCiAgICAgICAgIHdlYmtpdF91bml0X3Rlc3QgQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QudGVzdFJlbW92ZVJlbmRlclBhc3NlcyBzdGFydGVkIGZhaWxpbmcuCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTI0NQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uY3BwCmluZGV4IDRhZThkYjM5YzU0NzhhMTliMTliNGQ3ZTYxYmM0NmMzM2JiOWYxNGEu
LjAzMjAzYmYxY2NkNjAzMjQ2ODM5YWIyYzdjMmJhOGUwNzViYjZkYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIExheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0o
KQogICAgICwgbV9yZXBsaWNhTGF5ZXIoMCkKICAgICAsIG1fZHJhd09wYWNpdHkoMCkKICAgICAs
IG1fZHJhd09wYWNpdHlJc0FuaW1hdGluZyhmYWxzZSkKLSAgICAsIG1fdGFyZ2V0UmVuZGVyU3Vy
ZmFjZSgwKQorICAgICwgbV9yZW5kZXJUYXJnZXQoMCkKICAgICAsIG1fZHJhd1RyYW5zZm9ybUlz
QW5pbWF0aW5nKGZhbHNlKQogICAgICwgbV9zY3JlZW5TcGFjZVRyYW5zZm9ybUlzQW5pbWF0aW5n
KGZhbHNlKQogICAgICwgbV9jb250ZW50c1NjYWxlKDEuMCkKQEAgLTYyOSw3ICs2MjksNyBAQCB2
b2lkIExheWVyQ2hyb21pdW06OmNyZWF0ZVJlbmRlclN1cmZhY2UoKQogewogICAgIEFTU0VSVCgh
bV9yZW5kZXJTdXJmYWNlKTsKICAgICBtX3JlbmRlclN1cmZhY2UgPSBhZG9wdFB0cihuZXcgUmVu
ZGVyU3VyZmFjZUNocm9taXVtKHRoaXMpKTsKLSAgICBzZXRUYXJnZXRSZW5kZXJTdXJmYWNlKG1f
cmVuZGVyU3VyZmFjZS5nZXQoKSk7CisgICAgc2V0UmVuZGVyVGFyZ2V0KHRoaXMpOwogfQogCiBi
b29sIExheWVyQ2hyb21pdW06OmRlc2NlbmRhbnREcmF3c0NvbnRlbnQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1
bS5oCmluZGV4IDQwNjY4ZjU1NjczN2Y4YzQ5MjdhY2UyNjZlOWM3MWIwMzZmNzA4YzcuLmU2YmE5
OGFkOGMzZTYyYWI3NjhiYjNiYjJjM2FlMGY5ZDdhMjBlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgK
QEAgLTIzNCw4ICsyMzQsOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBJbnRSZWN0JiBjbGlwUmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcFJlY3Q7IH0KICAgICB2b2lkIHNldENsaXBSZWN0KGNv
bnN0IEludFJlY3QmIGNsaXBSZWN0KSB7IG1fY2xpcFJlY3QgPSBjbGlwUmVjdDsgfQotICAgIFJl
bmRlclN1cmZhY2VDaHJvbWl1bSogdGFyZ2V0UmVuZGVyU3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdGFyZ2V0UmVuZGVyU3VyZmFjZTsgfQotICAgIHZvaWQgc2V0VGFyZ2V0UmVuZGVyU3VyZmFj
ZShSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHN1cmZhY2UpIHsgbV90YXJnZXRSZW5kZXJTdXJmYWNl
ID0gc3VyZmFjZTsgfQorICAgIExheWVyQ2hyb21pdW0qIHJlbmRlclRhcmdldCgpIGNvbnN0IHsg
QVNTRVJUKCFtX3JlbmRlclRhcmdldCB8fCBtX3JlbmRlclRhcmdldC0+cmVuZGVyU3VyZmFjZSgp
KTsgcmV0dXJuIG1fcmVuZGVyVGFyZ2V0OyB9CisgICAgdm9pZCBzZXRSZW5kZXJUYXJnZXQoTGF5
ZXJDaHJvbWl1bSogdGFyZ2V0KSB7IG1fcmVuZGVyVGFyZ2V0ID0gdGFyZ2V0OyB9CiAKICAgICBi
b29sIGRyYXdUcmFuc2Zvcm1Jc0FuaW1hdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd1RyYW5z
Zm9ybUlzQW5pbWF0aW5nOyB9CiAgICAgdm9pZCBzZXREcmF3VHJhbnNmb3JtSXNBbmltYXRpbmco
Ym9vbCBhbmltYXRpbmcpIHsgbV9kcmF3VHJhbnNmb3JtSXNBbmltYXRpbmcgPSBhbmltYXRpbmc7
IH0KQEAgLTM0OCw3ICszNDgsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gRHVyaW5nIGRyYXdpbmcs
IGlkZW50aWZpZXMgdGhlIHJlZ2lvbiBvdXRzaWRlIG9mIHdoaWNoIG5vdGhpbmcgc2hvdWxkIGJl
IGRyYXduLgogICAgIC8vIEN1cnJlbnRseSB0aGlzIGlzIHNldCB0byBsYXllcidzIGNsaXBSZWN0
IGlmIHVzZXNMYXllckNsaXBwaW5nIGlzIHRydWUsIG90aGVyd2lzZQotICAgIC8vIGl0J3MgdGFy
Z2V0UmVuZGVyU3VyZmFjZSdzIGNvbnRlbnRSZWN0LgorICAgIC8vIGl0J3MgcmVuZGVyVGFyZ2V0
J3MgUmVuZGVyU3VyZmFjZSBjb250ZW50UmVjdC4KICAgICAvLyBVc2VzIHRhcmdldCBzdXJmYWNl
J3Mgc3BhY2UuCiAgICAgSW50UmVjdCBtX3NjaXNzb3JSZWN0OwogICAgIEludFBvaW50IG1fc2Ny
b2xsUG9zaXRpb247CkBAIC0zOTUsNyArMzk1LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFVzZXMg
dGFyZ2V0IHN1cmZhY2Ugc3BhY2UuCiAgICAgSW50UmVjdCBtX2NsaXBSZWN0OwotICAgIFJlbmRl
clN1cmZhY2VDaHJvbWl1bSogbV90YXJnZXRSZW5kZXJTdXJmYWNlOworICAgIExheWVyQ2hyb21p
dW0qIG1fcmVuZGVyVGFyZ2V0OwogICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
bV9kcmF3VHJhbnNmb3JtOwogICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9z
Y3JlZW5TcGFjZVRyYW5zZm9ybTsKICAgICBib29sIG1fZHJhd1RyYW5zZm9ybUlzQW5pbWF0aW5n
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
UmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAKaW5kZXggZmIyZGQ4YmM2NzZl
MzZiNmJlYWVlYzQ5ZTgxM2Q4OGY1MmFmYWMzZS4uMGJiOWQ5YjA1OWYzYjVkYTY4NmQ1NTNiYjc1
OGU5MjQ0YTUwMzg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwCkBA
IC02NSwxNCArNjUsNiBAQCBGbG9hdFJlY3QgUmVuZGVyU3VyZmFjZUNocm9taXVtOjpkcmF3YWJs
ZUNvbnRlbnRSZWN0KCkgY29uc3QKICAgICByZXR1cm4gZHJhd2FibGVDb250ZW50UmVjdDsKIH0K
IAotUmVuZGVyU3VyZmFjZUNocm9taXVtKiBSZW5kZXJTdXJmYWNlQ2hyb21pdW06OnRhcmdldFJl
bmRlclN1cmZhY2UoKSBjb25zdAotewotICAgIExheWVyQ2hyb21pdW0qIHBhcmVudCA9IG1fb3du
aW5nTGF5ZXItPnBhcmVudCgpOwotICAgIGlmICghcGFyZW50KQotICAgICAgICByZXR1cm4gMDsK
LSAgICByZXR1cm4gcGFyZW50LT50YXJnZXRSZW5kZXJTdXJmYWNlKCk7Ci19Ci0KIGJvb2wgUmVu
ZGVyU3VyZmFjZUNocm9taXVtOjpoYXNSZXBsaWNhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9v
d25pbmdMYXllci0+cmVwbGljYUxheWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1
bS5oCmluZGV4IDJiNjA4ZjRlNzI3MjdlM2ExMDhkMWU2OTY0ZGU2Mzk0MDk2ZDI5N2QuLmNkOWRl
OGRhNDg1NDhiZDBhNWFkMWFlYWEzM2QwZTQyNjA0Njg2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1
cmZhY2VDaHJvbWl1bS5oCkBAIC0xMDcsOCArMTA3LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
TmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzKFJlbmRlclN1cmZhY2VDaHJvbWl1bSogc3Vy
ZmFjZSkgeyBtX25lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVscyA9IHN1cmZhY2U7IH0KICAg
ICBjb25zdCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIG5lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1Bp
eGVscygpIGNvbnN0IHsgcmV0dXJuIG1fbmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzOyB9
CiAKLSAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHRhcmdldFJlbmRlclN1cmZhY2UoKSBjb25z
dDsKLQogICAgIGJvb2wgaGFzUmVwbGljYSgpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNNYXNrKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDU2Yzk2
YTc0YTBiYjZjNTE1OTU3Mzg0ODQ5OGFhYzdlZTU3ZDU5YzUuLmUwMGEyNmUzOWY5ZmM3OTIyYzcz
Y2ViMTQ5NzI1MGE2OGJiMGJkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21p
dW0uY3BwCkBAIC0yNTgsMTkgKzI1OCwxOSBAQCB2b2lkIFNjcm9sbGJhckxheWVyQ2hyb21pdW06
OnNldFRleHR1cmVQcmlvcml0aWVzKGNvbnN0IENDUHJpb3JpdHlDYWxjdWxhdG9yJikKIAogICAg
IGNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKTsKIAotICAgIGJvb2wgZHJhd3NUb1Jvb3RT
dXJmYWNlID0gIXRhcmdldFJlbmRlclN1cmZhY2UoKS0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpOwor
ICAgIGJvb2wgZHJhd3NUb1Jvb3QgPSAhcmVuZGVyVGFyZ2V0KCktPnBhcmVudCgpOwogICAgIGlm
IChtX2JhY2tUcmFjaykgewogICAgICAgICBtX2JhY2tUcmFjay0+dGV4dHVyZSgpLT5zZXREaW1l
bnNpb25zKGNvbnRlbnRCb3VuZHMoKSwgbV90ZXh0dXJlRm9ybWF0KTsKLSAgICAgICAgbV9iYWNr
VHJhY2stPnRleHR1cmUoKS0+c2V0UmVxdWVzdFByaW9yaXR5KENDUHJpb3JpdHlDYWxjdWxhdG9y
Ojp1aVByaW9yaXR5KGRyYXdzVG9Sb290U3VyZmFjZSkpOworICAgICAgICBtX2JhY2tUcmFjay0+
dGV4dHVyZSgpLT5zZXRSZXF1ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnVpUHJp
b3JpdHkoZHJhd3NUb1Jvb3QpKTsKICAgICB9CiAgICAgaWYgKG1fZm9yZVRyYWNrKSB7CiAgICAg
ICAgIG1fZm9yZVRyYWNrLT50ZXh0dXJlKCktPnNldERpbWVuc2lvbnMoY29udGVudEJvdW5kcygp
LCBtX3RleHR1cmVGb3JtYXQpOwotICAgICAgICBtX2ZvcmVUcmFjay0+dGV4dHVyZSgpLT5zZXRS
ZXF1ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnVpUHJpb3JpdHkoZHJhd3NUb1Jv
b3RTdXJmYWNlKSk7CisgICAgICAgIG1fZm9yZVRyYWNrLT50ZXh0dXJlKCktPnNldFJlcXVlc3RQ
cmlvcml0eShDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6dWlQcmlvcml0eShkcmF3c1RvUm9vdCkpOwog
ICAgIH0KICAgICBpZiAobV90aHVtYikgewogICAgICAgICBJbnRTaXplIHRodW1iU2l6ZSA9IHRo
ZW1lKCktPnRodW1iUmVjdChtX3Njcm9sbGJhci5nZXQoKSkuc2l6ZSgpOwogICAgICAgICBtX3Ro
dW1iLT50ZXh0dXJlKCktPnNldERpbWVuc2lvbnModGh1bWJTaXplLCBtX3RleHR1cmVGb3JtYXQp
OwotICAgICAgICBtX3RodW1iLT50ZXh0dXJlKCktPnNldFJlcXVlc3RQcmlvcml0eShDQ1ByaW9y
aXR5Q2FsY3VsYXRvcjo6dWlQcmlvcml0eShkcmF3c1RvUm9vdFN1cmZhY2UpKTsKKyAgICAgICAg
bV90aHVtYi0+dGV4dHVyZSgpLT5zZXRSZXF1ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0
b3I6OnVpUHJpb3JpdHkoZHJhd3NUb1Jvb3QpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExh
eWVyQ2hyb21pdW0uY3BwCmluZGV4IGQwODVjOWRkMTVhOGUxNDg2MDEwZmQ5MmU2NWUxZmUwODUx
NGE0MGQuLmVlZDVjZmM5YWNlMTY5ZjU1MTUyODc2YTE0ZTc0ZGM2NDIxYTYxY2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgVGlsZWRM
YXllckNocm9taXVtOjpzZXRUZXh0dXJlUHJpb3JpdGllc0luUmVjdChjb25zdCBDQ1ByaW9yaXR5
Q2FsY3VsYXRvciYKICAgICByZXNldFVwZGF0ZVN0YXRlKCk7CiAKICAgICBJbnRSZWN0IHByZXBh
aW50UmVjdCA9IGlkbGVQYWludFJlY3QodmlzaWJsZUNvbnRlbnRSZWN0KTsKLSAgICBib29sIGRy
YXdzVG9Sb290U3VyZmFjZSA9ICF0YXJnZXRSZW5kZXJTdXJmYWNlKCktPnRhcmdldFJlbmRlclN1
cmZhY2UoKTsKKyAgICBib29sIGRyYXdzVG9Sb290ID0gIXJlbmRlclRhcmdldCgpLT5wYXJlbnQo
KTsKIAogICAgIC8vIE1pbmltYWxseSBjcmVhdGUgdGhlIHRpbGVzIGluIHRoZSBkZXNpcmVkIHBy
ZS1wYWludCByZWN0LgogICAgIGlmICghcHJlcGFpbnRSZWN0LmlzRW1wdHkoKSkgewpAQCAtNTYx
LDcgKzU2MSw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpzZXRUZXh0dXJlUHJpb3JpdGll
c0luUmVjdChjb25zdCBDQ1ByaW9yaXR5Q2FsY3VsYXRvciYKIAogICAgICAgICAgICAgICAgIHRp
bGUtPmRpcnR5UmVjdCA9IG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpOwogICAgICAgICAgICAgICAg
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIGJhY2tCdWZmZXIgPSB0aWxlLT50ZXh0dXJl
KCk7Ci0gICAgICAgICAgICAgICAgYmFja0J1ZmZlci0+dGV4dHVyZSgpLT5zZXRSZXF1ZXN0UHJp
b3JpdHkocHJpb3JpdHlDYWxjLnByaW9yaXR5RnJvbVZpc2liaWxpdHkodHJ1ZSwgZHJhd3NUb1Jv
b3RTdXJmYWNlKSk7CisgICAgICAgICAgICAgICAgYmFja0J1ZmZlci0+dGV4dHVyZSgpLT5zZXRS
ZXF1ZXN0UHJpb3JpdHkocHJpb3JpdHlDYWxjLnByaW9yaXR5RnJvbVZpc2liaWxpdHkodHJ1ZSwg
ZHJhd3NUb1Jvb3QpKTsKICAgICAgICAgICAgICAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1
cmU+IGZyb250QnVmZmVyID0gQ0NQcmlvcml0aXplZFRleHR1cmU6OmNyZWF0ZShiYWNrQnVmZmVy
LT50ZXh0dXJlKCktPnRleHR1cmVNYW5hZ2VyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYmFja0J1ZmZlci0+dGV4dHVyZSgpLT5zaXplKCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmFja0J1ZmZlci0+dGV4dHVyZSgpLT5mb3JtYXQoKSk7CkBAIC01ODEsOSAr
NTgxLDkgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnNldFRleHR1cmVQcmlvcml0aWVzSW5S
ZWN0KGNvbnN0IENDUHJpb3JpdHlDYWxjdWxhdG9yJgogICAgICAgICAvLyA1MTIgcGl4ZWxzIG9m
IHByZS1wYWludGluZy4gTGF0ZXIgd2UgY2FuIGp1c3QgcGFzcyBhbiBhbmltYXRpbmcgZmxhZyBl
dGMuIHRvIHRoZQogICAgICAgICAvLyBjYWxjdWxhdG9yIGFuZCBpdCBjYW4gdGFrZSBjYXJlIG9m
IHRoaXMgc3BlY2lhbCBjYXNlIGlmIHdlIHN0aWxsIG5lZWQgaXQuCiAgICAgICAgIGlmICh2aXNp
YmxlQ29udGVudFJlY3QuaXNFbXB0eSgpICYmICFwcmVwYWludFJlY3QuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+c2V0UmVxdWVzdFByaW9yaXR5KHByaW9y
aXR5Q2FsYy5wcmlvcml0eUZyb21EaXN0YW5jZSg1MTIsIGRyYXdzVG9Sb290U3VyZmFjZSkpOwor
ICAgICAgICAgICAgdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+c2V0UmVxdWVzdFByaW9yaXR5KHBy
aW9yaXR5Q2FsYy5wcmlvcml0eUZyb21EaXN0YW5jZSg1MTIsIGRyYXdzVG9Sb290KSk7CiAgICAg
ICAgIGVsc2UgaWYgKCF2aXNpYmxlQ29udGVudFJlY3QuaXNFbXB0eSgpKQotICAgICAgICAgICAg
dGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+c2V0UmVxdWVzdFByaW9yaXR5KHByaW9yaXR5Q2FsYy5w
cmlvcml0eUZyb21EaXN0YW5jZSh2aXNpYmxlQ29udGVudFJlY3QsIHRpbGVSZWN0LCBkcmF3c1Rv
Um9vdFN1cmZhY2UpKTsKKyAgICAgICAgICAgIHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnNldFJl
cXVlc3RQcmlvcml0eShwcmlvcml0eUNhbGMucHJpb3JpdHlGcm9tRGlzdGFuY2UodmlzaWJsZUNv
bnRlbnRSZWN0LCB0aWxlUmVjdCwgZHJhd3NUb1Jvb3QpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmNwcAppbmRleCA5YTg4Mzc2YzJkNjE1ZDg3MGFhZWVlYzdmNDJhNjcwYjA5ODQ5
OTBkLi5kOTg1N2E0ZDQzZmFjYWJlMDY5MjQ4OWQ3NDk0NzRkNTM4OTE1Zjg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckltcGwuY3BwCkBAIC03MSw3ICs3MSw3IEBAIENDTGF5ZXJJbXBsOjpDQ0xheWVySW1w
bChpbnQgaWQpCiAgICAgLCBtX2lzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhmYWxz
ZSkKICAgICAsIG1fZml4ZWRUb0NvbnRhaW5lckxheWVyKGZhbHNlKQogICAgICwgbV9wYWdlU2Nh
bGVEZWx0YSgxKQotICAgICwgbV90YXJnZXRSZW5kZXJTdXJmYWNlKDApCisgICAgLCBtX3JlbmRl
clRhcmdldCgwKQogICAgICwgbV9kcmF3RGVwdGgoMCkKICAgICAsIG1fZHJhd09wYWNpdHkoMCkK
ICAgICAsIG1fZHJhd09wYWNpdHlJc0FuaW1hdGluZyhmYWxzZSkKQEAgLTEzMyw3ICsxMzMsNyBA
QCB2b2lkIENDTGF5ZXJJbXBsOjpjcmVhdGVSZW5kZXJTdXJmYWNlKCkKIHsKICAgICBBU1NFUlQo
IW1fcmVuZGVyU3VyZmFjZSk7CiAgICAgbV9yZW5kZXJTdXJmYWNlID0gYWRvcHRQdHIobmV3IEND
UmVuZGVyU3VyZmFjZSh0aGlzKSk7Ci0gICAgc2V0VGFyZ2V0UmVuZGVyU3VyZmFjZShtX3JlbmRl
clN1cmZhY2UuZ2V0KCkpOworICAgIHNldFJlbmRlclRhcmdldCh0aGlzKTsKIH0KIAogYm9vbCBD
Q0xheWVySW1wbDo6ZGVzY2VuZGFudERyYXdzQ29udGVudCgpCkBAIC0yNjAsOSArMjYwLDkgQEAg
dm9pZCBDQ0xheWVySW1wbDo6ZHVtcExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgaW50
IGluZGVudCkgY29uc3QKICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50KTsKICAgICB0cyA8PCAi
Ym91bmRzOiAiIDw8IGJvdW5kcygpLndpZHRoKCkgPDwgIiwgIiA8PCBib3VuZHMoKS5oZWlnaHQo
KSA8PCAiXG4iOwogCi0gICAgaWYgKG1fdGFyZ2V0UmVuZGVyU3VyZmFjZSkgeworICAgIGlmICht
X3JlbmRlclRhcmdldCkgewogICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50KTsKLSAgICAg
ICAgdHMgPDwgInRhcmdldFJlbmRlclN1cmZhY2U6ICIgPDwgbV90YXJnZXRSZW5kZXJTdXJmYWNl
LT5uYW1lKCkgPDwgIlxuIjsKKyAgICAgICAgdHMgPDwgInJlbmRlclRhcmdldDogIiA8PCBtX3Jl
bmRlclRhcmdldC0+bV9sYXllcklkIDw8ICJcbiI7CiAgICAgfQogCiAgICAgd3JpdGVJbmRlbnQo
dHMsIGluZGVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAppbmRleCAyYjlhNDliZDMwMzZmZGZmNGI4
Yzk3MWQ2MmYwMzE5ZDU2NzgxMzUzLi40MmRhYmQzNjZiZjdjMmI5OWJkMWU5NjRiNTdiZGMyNzY2
ODdlMWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTE4MSw4ICsxODEsOCBAQCBwdWJsaWM6
CiAgICAgY29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QoKSBjb25zdCB7IHJldHVybiBtX3NjaXNz
b3JSZWN0OyB9CiAgICAgdm9pZCBzZXRTY2lzc29yUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KSB7
IG1fc2Npc3NvclJlY3QgPSByZWN0OyB9CiAKLSAgICBDQ1JlbmRlclN1cmZhY2UqIHRhcmdldFJl
bmRlclN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldFJlbmRlclN1cmZhY2U7IH0KLSAg
ICB2b2lkIHNldFRhcmdldFJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiBzdXJmYWNlKSB7
IG1fdGFyZ2V0UmVuZGVyU3VyZmFjZSA9IHN1cmZhY2U7IH0KKyAgICBDQ0xheWVySW1wbCogcmVu
ZGVyVGFyZ2V0KCkgY29uc3QgeyBBU1NFUlQoIW1fcmVuZGVyVGFyZ2V0IHx8IG1fcmVuZGVyVGFy
Z2V0LT5yZW5kZXJTdXJmYWNlKCkpOyByZXR1cm4gbV9yZW5kZXJUYXJnZXQ7IH0KKyAgICB2b2lk
IHNldFJlbmRlclRhcmdldChDQ0xheWVySW1wbCogdGFyZ2V0KSB7IG1fcmVuZGVyVGFyZ2V0ID0g
dGFyZ2V0OyB9CiAKICAgICB2b2lkIHNldEJvdW5kcyhjb25zdCBJbnRTaXplJik7CiAgICAgY29u
c3QgSW50U2l6ZSYgYm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZHM7IH0KQEAgLTM1OCwx
MSArMzU4LDEwIEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBtX21heFNjcm9sbFBvc2l0aW9uOwog
ICAgIGZsb2F0IG1fcGFnZVNjYWxlRGVsdGE7CiAKLSAgICAvLyBSZW5kZXIgc3VyZmFjZSB0aGlz
IGxheWVyIGRyYXdzIGludG8uIFRoaXMgaXMgYSBzdXJmYWNlIHRoYXQgY2FuIGJlbG9uZwotICAg
IC8vIGVpdGhlciB0byB0aGlzIGxheWVyIChpZiBtX3RhcmdldFJlbmRlclN1cmZhY2UgPT0gbV9y
ZW5kZXJTdXJmYWNlKSBvcgotICAgIC8vIHRvIGFuIGFuY2VzdG9yIG9mIHRoaXMgbGF5ZXIuIFRo
ZSB0YXJnZXQgcmVuZGVyIHN1cmZhY2UgZGV0ZXJtaW5lcyB0aGUKLSAgICAvLyBjb29yZGluYXRl
IHN5c3RlbSB0aGUgbGF5ZXIncyB0cmFuc2Zvcm1zIGFyZSByZWxhdGl2ZSB0by4KLSAgICBDQ1Jl
bmRlclN1cmZhY2UqIG1fdGFyZ2V0UmVuZGVyU3VyZmFjZTsKKyAgICAvLyBUaGUgbGF5ZXIgd2hv
c2UgY29vcmRpbmF0ZSBzcGFjZSB0aGlzIGxheWVyIGRyYXdzIGludG8uIFRoaXMgY2FuIGJlCisg
ICAgLy8gZWl0aGVyIHRoZSBzYW1lIGxheWVyIChtX3JlbmRlclRhcmdldCA9PSB0aGlzKSBvciBh
biBhbmNlc3RvciBvZiB0aGlzCisgICAgLy8gbGF5ZXIuCisgICAgQ0NMYXllckltcGwqIG1fcmVu
ZGVyVGFyZ2V0OwogCiAgICAgLy8gVGhlIGdsb2JhbCBkZXB0aCB2YWx1ZSBvZiB0aGUgY2VudGVy
IG9mIHRoZSBsYXllci4gVGhpcyB2YWx1ZSBpcyB1c2VkCiAgICAgLy8gdG8gc29ydCBsYXllcnMg
ZnJvbSBiYWNrIHRvIGZyb250LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1v
bi5jcHAKaW5kZXggMWM2Nzc1NTVhNzkyNTI1ZGNkMWFjMzEzYTM1NzFjYzc1YTdlNmNjMy4uMThk
NDhmOWVlMjgzYTdhZmFhY2IxODYzNDcyZjUzMTMzMGY5NDQzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29t
bW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCkBAIC02OCw3ICs2OCw4IEBAIEludFJlY3QgQ0NM
YXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVWaXNpYmxlUmVjdChjb25zdCBJbnRSZWN0JiB0
YXJnZXRTdXJmYWNlCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRl
clN1cmZhY2VUeXBlPgogc3RhdGljIEludFJlY3QgY2FsY3VsYXRlTGF5ZXJTY2lzc29yUmVjdChM
YXllclR5cGUqIGxheWVyLCBjb25zdCBGbG9hdFJlY3QmIHJvb3RTY2lzc29yUmVjdCkKIHsKLSAg
ICBSZW5kZXJTdXJmYWNlVHlwZSogdGFyZ2V0U3VyZmFjZSA9IGxheWVyLT50YXJnZXRSZW5kZXJT
dXJmYWNlKCk7CisgICAgTGF5ZXJUeXBlKiByZW5kZXJUYXJnZXQgPSBsYXllci0+cmVuZGVyVGFy
Z2V0KCk7CisgICAgUmVuZGVyU3VyZmFjZVR5cGUqIHRhcmdldFN1cmZhY2UgPSByZW5kZXJUYXJn
ZXQtPnJlbmRlclN1cmZhY2UoKTsKIAogICAgIEZsb2F0UmVjdCByb290U2Npc3NvclJlY3RJblRh
cmdldFN1cmZhY2UgPSB0YXJnZXRTdXJmYWNlLT5jb21wdXRlUm9vdFNjaXNzb3JSZWN0SW5DdXJy
ZW50U3VyZmFjZShyb290U2Npc3NvclJlY3QpOwogICAgIEZsb2F0UmVjdCBjbGlwQW5kRGFtYWdl
OwpAQCAtODQsNyArODUsOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1l
IFJlbmRlclN1cmZhY2VUeXBlPgogc3RhdGljIEludFJlY3QgY2FsY3VsYXRlU3VyZmFjZVNjaXNz
b3JSZWN0KExheWVyVHlwZSogbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgcm9vdFNjaXNzb3JSZWN0
KQogewogICAgIExheWVyVHlwZSogcGFyZW50TGF5ZXIgPSBsYXllci0+cGFyZW50KCk7Ci0gICAg
UmVuZGVyU3VyZmFjZVR5cGUqIHRhcmdldFN1cmZhY2UgPSBwYXJlbnRMYXllci0+dGFyZ2V0UmVu
ZGVyU3VyZmFjZSgpOworICAgIExheWVyVHlwZSogcmVuZGVyVGFyZ2V0ID0gcGFyZW50TGF5ZXIt
PnJlbmRlclRhcmdldCgpOworCisgICAgUmVuZGVyU3VyZmFjZVR5cGUqIHRhcmdldFN1cmZhY2Ug
PSByZW5kZXJUYXJnZXQtPnJlbmRlclN1cmZhY2UoKTsKICAgICBBU1NFUlQodGFyZ2V0U3VyZmFj
ZSk7CiAKICAgICBSZW5kZXJTdXJmYWNlVHlwZSogY3VycmVudFN1cmZhY2UgPSBsYXllci0+cmVu
ZGVyU3VyZmFjZSgpOwpAQCAtMTU1LDkgKzE1OCw5IEBAIHN0YXRpYyBib29sIGlzU3VyZmFjZUJh
Y2tGYWNlVmlzaWJsZShMYXllclR5cGUqIGxheWVyLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1h
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CiBzdGF0aWMgSW50UmVjdCBjYWxjdWxhdGVW
aXNpYmxlQ29udGVudFJlY3QoTGF5ZXJUeXBlKiBsYXllcikKIHsKLSAgICBBU1NFUlQobGF5ZXIt
PnRhcmdldFJlbmRlclN1cmZhY2UoKSk7CisgICAgQVNTRVJUKGxheWVyLT5yZW5kZXJUYXJnZXQo
KSk7CiAKLSAgICBJbnRSZWN0IHRhcmdldFN1cmZhY2VSZWN0ID0gbGF5ZXItPnRhcmdldFJlbmRl
clN1cmZhY2UoKS0+Y29udGVudFJlY3QoKTsKKyAgICBJbnRSZWN0IHRhcmdldFN1cmZhY2VSZWN0
ID0gbGF5ZXItPnJlbmRlclRhcmdldCgpLT5yZW5kZXJTdXJmYWNlKCktPmNvbnRlbnRSZWN0KCk7
CiAKICAgICBpZiAobGF5ZXItPnVzZXNMYXllckNsaXBwaW5nKCkpCiAgICAgICAgIHRhcmdldFN1
cmZhY2VSZWN0LmludGVyc2VjdChsYXllci0+Y2xpcFJlY3QoKSk7CkBAIC0zMjEsNyArMzI0LDcg
QEAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggY29tcHV0ZVNjcm9sbENvbXBlbnNhdGlvbkZvclRo
aXNMYXllcihDQ0xheWVySW1wbCogc2Nyb2wKICAgICAvLwogICAgIC8vIFRoZXNlIHN0ZXBzIGNy
ZWF0ZSBhIG1hdHJpeCB0aGF0IGJvdGggc3RhcnQgYW5kIGVuZCBpbiB0YXJnZXRTdXJmYWNlU3Bh
Y2UuIFNvIHRoaXMgbWF0cml4IGNhbgogICAgIC8vIHByZS1tdWx0aXBseSBhbnkgZml4ZWQtcG9z
aXRpb24gbGF5ZXIncyBkcmF3VHJhbnNmb3JtIHRvIHVuZG8gdGhlIHNjcm9sbERlbHRhcyAtLSBh
cyBsb25nIGFzCi0gICAgLy8gdGhhdCBmaXhlZCBwb3NpdGlvbiBsYXllciBpcyBmaXhlZCBvbnRv
IHRoZSBzYW1lIHRhcmdldFJlbmRlclN1cmZhY2UgYXMgdGhpcyBzY3JvbGxpbmdMYXllci4KKyAg
ICAvLyB0aGF0IGZpeGVkIHBvc2l0aW9uIGxheWVyIGlzIGZpeGVkIG9udG8gdGhlIHNhbWUgcmVu
ZGVyVGFyZ2V0IGFzIHRoaXMgc2Nyb2xsaW5nTGF5ZXIuCiAgICAgLy8KIAogICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IHBhcnRpYWxMYXllck9yaWdpblRyYW5zZm9ybSA9IHBhcmVudE1hdHJp
eDsKQEAgLTYxMCwxMCArNjEzLDEwIEBAIHN0YXRpYyBib29sIGNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zSW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXJUeXBlKiByb290TGF5CiAgICAgICAg
IGxheWVyLT5zZXRDbGlwUmVjdChJbnRSZWN0KCkpOwogCiAgICAgICAgIGlmIChsYXllci0+bWFz
a0xheWVyKCkpCi0gICAgICAgICAgICBsYXllci0+bWFza0xheWVyKCktPnNldFRhcmdldFJlbmRl
clN1cmZhY2UocmVuZGVyU3VyZmFjZSk7CisgICAgICAgICAgICBsYXllci0+bWFza0xheWVyKCkt
PnNldFJlbmRlclRhcmdldChsYXllcik7CiAKICAgICAgICAgaWYgKGxheWVyLT5yZXBsaWNhTGF5
ZXIoKSAmJiBsYXllci0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpKQotICAgICAgICAgICAg
bGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKS0+c2V0VGFyZ2V0UmVuZGVyU3VyZmFj
ZShyZW5kZXJTdXJmYWNlKTsKKyAgICAgICAgICAgIGxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFz
a0xheWVyKCktPnNldFJlbmRlclRhcmdldChsYXllcik7CiAKICAgICAgICAgcmVuZGVyU3VyZmFj
ZS0+c2V0RmlsdGVycyhsYXllci0+ZmlsdGVycygpKTsKICAgICAgICAgaWYgKHJlbmRlclN1cmZh
Y2UtPmZpbHRlcnMoKS5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKSkKQEAgLTY0MSw4ICs2NDQs
OCBAQCBzdGF0aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0ludGVybmFsKExheWVyVHlw
ZSogbGF5ZXIsIExheWVyVHlwZSogcm9vdExheQogICAgICAgICAgICAgaWYgKGxheWVyLT5wYXJl
bnQoKS0+dXNlc0xheWVyQ2xpcHBpbmcoKSkKICAgICAgICAgICAgICAgICBsYXllci0+c2V0VXNl
c0xheWVyQ2xpcHBpbmcodHJ1ZSk7CiAKLSAgICAgICAgICAgIC8vIExheWVycyB3aXRob3V0IHRo
ZWlyIG93biByZW5kZXJTdXJmYWNlIHdpbGwgcmVuZGVyIGludG8gdGhlIG5lYXJlc3QgYW5jZXN0
b3Igc3VyZmFjZS4KLSAgICAgICAgICAgIGxheWVyLT5zZXRUYXJnZXRSZW5kZXJTdXJmYWNlKGxh
eWVyLT5wYXJlbnQoKS0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgICAgIC8vIExh
eWVycyB0aGF0IGFyZSBub3QgdGhlaXIgb3duIHJlbmRlclRhcmdldCB3aWxsIHJlbmRlciBpbnRv
IHRoZSB0YXJnZXQgb2YgdGhlaXIgbmVhcmVzdCBhbmNlc3Rvci4KKyAgICAgICAgICAgIGxheWVy
LT5zZXRSZW5kZXJUYXJnZXQobGF5ZXItPnBhcmVudCgpLT5yZW5kZXJUYXJnZXQoKSk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTkxOCw3ICs5MjEsOCBAQCBzdGF0aWMgYm9vbCBwb2ludElzQ2xp
cHBlZEJ5U3VyZmFjZU9yQ2xpcFJlY3QoY29uc3QgSW50UG9pbnQmIHZpZXdwb3J0UG9pbnQsIEND
TAogCiAgICAgICAgIC8vIE5vdGUgdGhhdCBjbGlwUmVjdHMgYXJlIGFjdHVhbGx5IGluIHRhcmdl
dFN1cmZhY2Ugc3BhY2UsIHNvIHRoZSB0cmFuc2Zvcm0gd2UKICAgICAgICAgLy8gaGF2ZSB0byBw
cm92aWRlIGlzIHRoZSB0YXJnZXQgc3VyZmFjZSdzIHNjcmVlblNwYWNlVHJhbnNmb3JtLgotICAg
ICAgICBpZiAoY3VycmVudExheWVyLT51c2VzTGF5ZXJDbGlwcGluZygpICYmICFwb2ludEhpdHNS
ZWN0KHZpZXdwb3J0UG9pbnQsIGN1cnJlbnRMYXllci0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5z
Y3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBjdXJyZW50TGF5ZXItPmNsaXBSZWN0KCkpKQorICAgICAg
ICBDQ0xheWVySW1wbCogcmVuZGVyVGFyZ2V0ID0gY3VycmVudExheWVyLT5yZW5kZXJUYXJnZXQo
KTsKKyAgICAgICAgaWYgKGN1cnJlbnRMYXllci0+dXNlc0xheWVyQ2xpcHBpbmcoKSAmJiAhcG9p
bnRIaXRzUmVjdCh2aWV3cG9ydFBvaW50LCByZW5kZXJUYXJnZXQtPnJlbmRlclN1cmZhY2UoKS0+
c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgY3VycmVudExheWVyLT5jbGlwUmVjdCgpKSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIGN1cnJlbnRMYXllciA9IGN1cnJlbnRMYXll
ci0+cGFyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAppbmRleCA2
MTI0ZGRjOWNjOGYwOGI0ZWFiMTJmMTRmNDFjYTMxNmYzMjZkYTM3Li5jNzViZjEwMWNiYzUxYmM0
YWUyZDQyNWMyOTcwOWY2MjZlZDcxMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJh
Y2tlci5jcHAKQEAgLTUyLDM0ICs1MiwzNCBAQCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVy
VHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlKEludAogdGVt
cGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KIHZv
aWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6
ZW50ZXJMYXllcihjb25zdCBDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllclR5cGU+JiBsYXll
ckl0ZXJhdG9yKQogewotICAgIFJlbmRlclN1cmZhY2VUeXBlKiByZW5kZXJTdXJmYWNlID0gbGF5
ZXJJdGVyYXRvci50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKKyAg
ICBMYXllclR5cGUqIHJlbmRlclRhcmdldCA9IGxheWVySXRlcmF0b3IudGFyZ2V0UmVuZGVyU3Vy
ZmFjZUxheWVyOwogCiAgICAgaWYgKGxheWVySXRlcmF0b3IucmVwcmVzZW50c0l0c2VsZikKLSAg
ICAgICAgZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZhY2UpOworICAgICAgICBl
bnRlclJlbmRlclRhcmdldChyZW5kZXJUYXJnZXQpOwogICAgIGVsc2UgaWYgKGxheWVySXRlcmF0
b3IucmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2UpCi0gICAgICAgIGZpbmlzaGVkVGFyZ2V0
UmVuZGVyU3VyZmFjZShsYXllckl0ZXJhdG9yLmN1cnJlbnRMYXllciwgcmVuZGVyU3VyZmFjZSk7
CisgICAgICAgIGZpbmlzaGVkUmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCk7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+CiB2b2lk
IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Omxl
YXZlTGF5ZXIoY29uc3QgQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlPiYgbGF5ZXJJ
dGVyYXRvcikKIHsKLSAgICBSZW5kZXJTdXJmYWNlVHlwZSogcmVuZGVyU3VyZmFjZSA9IGxheWVy
SXRlcmF0b3IudGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CisgICAg
TGF5ZXJUeXBlKiByZW5kZXJUYXJnZXQgPSBsYXllckl0ZXJhdG9yLnRhcmdldFJlbmRlclN1cmZh
Y2VMYXllcjsKIAogICAgIGlmIChsYXllckl0ZXJhdG9yLnJlcHJlc2VudHNJdHNlbGYpCiAgICAg
ICAgIG1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVySXRlcmF0b3IuY3VycmVudExheWVyKTsK
ICAgICBlbHNlIGlmIChsYXllckl0ZXJhdG9yLnJlcHJlc2VudHNDb250cmlidXRpbmdSZW5kZXJT
dXJmYWNlKQotICAgICAgICBsZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShyZW5kZXJTdXJmYWNl
KTsKKyAgICAgICAgbGVhdmVUb1JlbmRlclRhcmdldChyZW5kZXJUYXJnZXQpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgotdm9p
ZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+Ojpl
bnRlclRhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIG5ld1Rhcmdl
dCkKK3ZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VU
eXBlPjo6ZW50ZXJSZW5kZXJUYXJnZXQoY29uc3QgTGF5ZXJUeXBlKiBuZXdUYXJnZXQpCiB7Ci0g
ICAgaWYgKCFtX3N0YWNrLmlzRW1wdHkoKSAmJiBtX3N0YWNrLmxhc3QoKS5zdXJmYWNlID09IG5l
d1RhcmdldCkKKyAgICBpZiAoIW1fc3RhY2suaXNFbXB0eSgpICYmIG1fc3RhY2subGFzdCgpLnRh
cmdldCA9PSBuZXdUYXJnZXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IFJlbmRlclN1
cmZhY2VUeXBlKiBvbGRUYXJnZXQgPSBtX3N0YWNrLmlzRW1wdHkoKSA/IDAgOiBtX3N0YWNrLmxh
c3QoKS5zdXJmYWNlOwotICAgIGNvbnN0IFJlbmRlclN1cmZhY2VUeXBlKiBvbGRBbmNlc3RvclRo
YXRNb3Zlc1BpeGVscyA9ICFvbGRUYXJnZXQgPyAwIDogb2xkVGFyZ2V0LT5uZWFyZXN0QW5jZXN0
b3JUaGF0TW92ZXNQaXhlbHMoKTsKLSAgICBjb25zdCBSZW5kZXJTdXJmYWNlVHlwZSogbmV3QW5j
ZXN0b3JUaGF0TW92ZXNQaXhlbHMgPSBuZXdUYXJnZXQtPm5lYXJlc3RBbmNlc3RvclRoYXRNb3Zl
c1BpeGVscygpOworICAgIGNvbnN0IExheWVyVHlwZSogb2xkVGFyZ2V0ID0gbV9zdGFjay5pc0Vt
cHR5KCkgPyAwIDogbV9zdGFjay5sYXN0KCkudGFyZ2V0OworICAgIGNvbnN0IFJlbmRlclN1cmZh
Y2VUeXBlKiBvbGRBbmNlc3RvclRoYXRNb3Zlc1BpeGVscyA9ICFvbGRUYXJnZXQgPyAwIDogb2xk
VGFyZ2V0LT5yZW5kZXJTdXJmYWNlKCktPm5lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVscygp
OworICAgIGNvbnN0IFJlbmRlclN1cmZhY2VUeXBlKiBuZXdBbmNlc3RvclRoYXRNb3Zlc1BpeGVs
cyA9IG5ld1RhcmdldC0+cmVuZGVyU3VyZmFjZSgpLT5uZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQ
aXhlbHMoKTsKIAogICAgIG1fc3RhY2suYXBwZW5kKFN0YWNrT2JqZWN0KG5ld1RhcmdldCkpOwog
CkBAIC0xMTYsMjIgKzExNiwyMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbGF5ZXJJc0luVW5zb3J0
ZWQzZFJlbmRlcmluZ0NvbnRleHQoY29uc3QgTGF5ZXJDaHJvbWl1bSogbGF5ZQogc3RhdGljIGlu
bGluZSBib29sIGxheWVySXNJblVuc29ydGVkM2RSZW5kZXJpbmdDb250ZXh0KGNvbnN0IENDTGF5
ZXJJbXBsKikgeyByZXR1cm4gZmFsc2U7IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBl
LCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLXZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFz
ZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6ZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJm
YWNlKGNvbnN0IExheWVyVHlwZSogb3duaW5nTGF5ZXIsIGNvbnN0IFJlbmRlclN1cmZhY2VUeXBl
KiBmaW5pc2hlZFRhcmdldCkKK3ZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUs
IFJlbmRlclN1cmZhY2VUeXBlPjo6ZmluaXNoZWRSZW5kZXJUYXJnZXQoY29uc3QgTGF5ZXJUeXBl
KiBmaW5pc2hlZFRhcmdldCkKIHsKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBvd25pbmdMYXll
ciBwYXJhbWV0ZXIgd2hlbiB3ZSBjYW4gZ2V0IGFsbCB0aGUgaW5mbyBmcm9tIHRoZSBzdXJmYWNl
LgotICAgIEFTU0VSVChvd25pbmdMYXllci0+cmVuZGVyU3VyZmFjZSgpID09IGZpbmlzaGVkVGFy
Z2V0KTsKLQogICAgIC8vIE1ha2Ugc3VyZSB3ZSBrbm93IGFib3V0IHRoZSB0YXJnZXQgc3VyZmFj
ZS4KLSAgICBlbnRlclRhcmdldFJlbmRlclN1cmZhY2UoZmluaXNoZWRUYXJnZXQpOworICAgIGVu
dGVyUmVuZGVyVGFyZ2V0KGZpbmlzaGVkVGFyZ2V0KTsKKworICAgIFJlbmRlclN1cmZhY2VUeXBl
KiBzdXJmYWNlID0gZmluaXNoZWRUYXJnZXQtPnJlbmRlclN1cmZhY2UoKTsKIAogICAgIC8vIElm
IHRoZSBvY2NsdXNpb24gd2l0aGluIHRoZSBzdXJmYWNlIGNhbiBub3QgYmUgYXBwbGllZCB0byB0
aGluZ3Mgb3V0c2lkZSBvZiB0aGUgc3VyZmFjZSdzIHN1YnRyZWUsIHRoZW4gY2xlYXIgdGhlIG9j
Y2x1c2lvbiBoZXJlIHNvIGl0IHdvbid0IGJlIHVzZWQuCi0gICAgaWYgKG93bmluZ0xheWVyLT5t
YXNrTGF5ZXIoKSB8fCAhc3VyZmFjZU9wYWNpdHlLbm93bihmaW5pc2hlZFRhcmdldCkgfHwgZmlu
aXNoZWRUYXJnZXQtPmRyYXdPcGFjaXR5KCkgPCAxIHx8IGZpbmlzaGVkVGFyZ2V0LT5maWx0ZXJz
KCkuaGFzRmlsdGVyVGhhdEFmZmVjdHNPcGFjaXR5KCkpIHsKKyAgICBpZiAoZmluaXNoZWRUYXJn
ZXQtPm1hc2tMYXllcigpIHx8ICFzdXJmYWNlT3BhY2l0eUtub3duKHN1cmZhY2UpIHx8IHN1cmZh
Y2UtPmRyYXdPcGFjaXR5KCkgPCAxIHx8IHN1cmZhY2UtPmZpbHRlcnMoKS5oYXNGaWx0ZXJUaGF0
QWZmZWN0c09wYWNpdHkoKSkgewogICAgICAgICBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNj
cmVlbiA9IFJlZ2lvbigpOwogICAgICAgICBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdl
dCA9IFJlZ2lvbigpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghc3VyZmFjZVRyYW5zZm9y
bXNUb1RhcmdldEtub3duKGZpbmlzaGVkVGFyZ2V0KSkKKyAgICAgICAgaWYgKCFzdXJmYWNlVHJh
bnNmb3Jtc1RvVGFyZ2V0S25vd24oc3VyZmFjZSkpCiAgICAgICAgICAgICBtX3N0YWNrLmxhc3Qo
KS5vY2NsdXNpb25JblRhcmdldCA9IFJlZ2lvbigpOwotICAgICAgICBpZiAoIXN1cmZhY2VUcmFu
c2Zvcm1zVG9TY3JlZW5Lbm93bihmaW5pc2hlZFRhcmdldCkpCisgICAgICAgIGlmICghc3VyZmFj
ZVRyYW5zZm9ybXNUb1NjcmVlbktub3duKHN1cmZhY2UpKQogICAgICAgICAgICAgbV9zdGFjay5s
YXN0KCkub2NjbHVzaW9uSW5TY3JlZW4gPSBSZWdpb24oKTsKICAgICB9CiB9CkBAIC0xOTksNTIg
KzE5OCw1MyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVkdWNlT2NjbHVzaW9uKGNvbnN0IEludFJl
Y3QmIGFmZmVjdGVkQXJlYSwgY29uc3QgSW50UmVjdCYgZQogICAgIH0KIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+Ci1zdGF0aWMgdm9pZCByZWR1Y2VPY2NsdXNpb25C
ZWxvd1N1cmZhY2UoUmVuZGVyU3VyZmFjZVR5cGUqIHN1cmZhY2UsIGNvbnN0IEludFJlY3QmIHN1
cmZhY2VSZWN0LCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc3VyZmFjZVRyYW5zZm9y
bSwgUmVuZGVyU3VyZmFjZVR5cGUqIHN1cmZhY2VUYXJnZXQsIFJlZ2lvbiYgb2NjbHVzaW9uSW5U
YXJnZXQsIFJlZ2lvbiYgb2NjbHVzaW9uSW5TY3JlZW4pCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXll
clR5cGU+CitzdGF0aWMgdm9pZCByZWR1Y2VPY2NsdXNpb25CZWxvd1N1cmZhY2UoTGF5ZXJUeXBl
KiBjb250cmlidXRpbmdMYXllciwgY29uc3QgSW50UmVjdCYgc3VyZmFjZVJlY3QsIGNvbnN0IFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JiBzdXJmYWNlVHJhbnNmb3JtLCBMYXllclR5cGUqIHJlbmRl
clRhcmdldCwgUmVnaW9uJiBvY2NsdXNpb25JblRhcmdldCwgUmVnaW9uJiBvY2NsdXNpb25JblNj
cmVlbikKIHsKICAgICBpZiAoc3VyZmFjZVJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBJbnRSZWN0IGJvdW5kc0luVGFyZ2V0ID0gZW5jbG9zaW5nSW50UmVjdChDQ01hdGhV
dGlsOjptYXBDbGlwcGVkUmVjdChzdXJmYWNlVHJhbnNmb3JtLCBGbG9hdFJlY3Qoc3VyZmFjZVJl
Y3QpKSk7Ci0gICAgaWYgKCFzdXJmYWNlLT5jbGlwUmVjdCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
Ym91bmRzSW5UYXJnZXQuaW50ZXJzZWN0KHN1cmZhY2UtPmNsaXBSZWN0KCkpOworICAgIGlmICgh
Y29udHJpYnV0aW5nTGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+Y2xpcFJlY3QoKS5pc0VtcHR5KCkp
CisgICAgICAgIGJvdW5kc0luVGFyZ2V0LmludGVyc2VjdChjb250cmlidXRpbmdMYXllci0+cmVu
ZGVyU3VyZmFjZSgpLT5jbGlwUmVjdCgpKTsKIAogICAgIGludCBvdXRzZXRUb3AsIG91dHNldFJp
Z2h0LCBvdXRzZXRCb3R0b20sIG91dHNldExlZnQ7Ci0gICAgc3VyZmFjZS0+YmFja2dyb3VuZEZp
bHRlcnMoKS5nZXRPdXRzZXRzKG91dHNldFRvcCwgb3V0c2V0UmlnaHQsIG91dHNldEJvdHRvbSwg
b3V0c2V0TGVmdCk7CisgICAgY29udHJpYnV0aW5nTGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+YmFj
a2dyb3VuZEZpbHRlcnMoKS5nZXRPdXRzZXRzKG91dHNldFRvcCwgb3V0c2V0UmlnaHQsIG91dHNl
dEJvdHRvbSwgb3V0c2V0TGVmdCk7CiAKICAgICAvLyBUaGUgZmlsdGVyIGNhbiBtb3ZlIHBpeGVs
cyBmcm9tIG91dHNpZGUgb2YgdGhlIGNsaXAsIHNvIGFsbG93IGFmZmVjdGVkQXJlYSB0byBleHBh
bmQgb3V0c2lkZSB0aGUgY2xpcC4KICAgICBib3VuZHNJblRhcmdldC5tb3ZlKC1vdXRzZXRMZWZ0
LCAtb3V0c2V0VG9wKTsKICAgICBib3VuZHNJblRhcmdldC5leHBhbmQob3V0c2V0TGVmdCArIG91
dHNldFJpZ2h0LCBvdXRzZXRUb3AgKyBvdXRzZXRCb3R0b20pOwogCi0gICAgSW50UmVjdCBib3Vu
ZHNJblNjcmVlbiA9IGVuY2xvc2luZ0ludFJlY3QoQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3Qo
c3VyZmFjZVRhcmdldC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgRmxvYXRSZWN0KGJvdW5kc0lu
VGFyZ2V0KSkpOworICAgIEludFJlY3QgYm91bmRzSW5TY3JlZW4gPSBlbmNsb3NpbmdJbnRSZWN0
KENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KHJlbmRlclRhcmdldC0+cmVuZGVyU3VyZmFjZSgp
LT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBGbG9hdFJlY3QoYm91bmRzSW5UYXJnZXQpKSk7CiAK
ICAgICBJbnRSZWN0IGZpbHRlck91dHNldHNJblRhcmdldCgtb3V0c2V0TGVmdCwgLW91dHNldFRv
cCwgb3V0c2V0TGVmdCArIG91dHNldFJpZ2h0LCBvdXRzZXRUb3AgKyBvdXRzZXRCb3R0b20pOwot
ICAgIEludFJlY3QgZmlsdGVyT3V0c2V0c0luU2NyZWVuID0gZW5jbG9zaW5nSW50UmVjdChDQ01h
dGhVdGlsOjptYXBDbGlwcGVkUmVjdChzdXJmYWNlVGFyZ2V0LT5zY3JlZW5TcGFjZVRyYW5zZm9y
bSgpLCBGbG9hdFJlY3QoZmlsdGVyT3V0c2V0c0luVGFyZ2V0KSkpOworICAgIEludFJlY3QgZmls
dGVyT3V0c2V0c0luU2NyZWVuID0gZW5jbG9zaW5nSW50UmVjdChDQ01hdGhVdGlsOjptYXBDbGlw
cGVkUmVjdChyZW5kZXJUYXJnZXQtPnJlbmRlclN1cmZhY2UoKS0+c2NyZWVuU3BhY2VUcmFuc2Zv
cm0oKSwgRmxvYXRSZWN0KGZpbHRlck91dHNldHNJblRhcmdldCkpKTsKIAogICAgIHJlZHVjZU9j
Y2x1c2lvbihib3VuZHNJblRhcmdldCwgZmlsdGVyT3V0c2V0c0luVGFyZ2V0LCBvY2NsdXNpb25J
blRhcmdldCk7CiAgICAgcmVkdWNlT2NjbHVzaW9uKGJvdW5kc0luU2NyZWVuLCBmaWx0ZXJPdXRz
ZXRzSW5TY3JlZW4sIG9jY2x1c2lvbkluU2NyZWVuKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
TGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLXZvaWQgQ0NPY2NsdXNpb25U
cmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UoY29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIG5ld1RhcmdldCkKK3ZvaWQgQ0NP
Y2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bGVhdmVU
b1JlbmRlclRhcmdldChjb25zdCBMYXllclR5cGUqIG5ld1RhcmdldCkKIHsKICAgICBpbnQgbGFz
dEluZGV4ID0gbV9zdGFjay5zaXplKCkgLSAxOwotICAgIGJvb2wgc3VyZmFjZVdpbGxCZUF0VG9w
QWZ0ZXJQb3AgPSBtX3N0YWNrLnNpemUoKSA+IDEgJiYgbV9zdGFja1tsYXN0SW5kZXggLSAxXS5z
dXJmYWNlID09IG5ld1RhcmdldDsKKyAgICBib29sIHN1cmZhY2VXaWxsQmVBdFRvcEFmdGVyUG9w
ID0gbV9zdGFjay5zaXplKCkgPiAxICYmIG1fc3RhY2tbbGFzdEluZGV4IC0gMV0udGFyZ2V0ID09
IG5ld1RhcmdldDsKIAogICAgIC8vIFdlIG1lcmdlIHRoZSBzY3JlZW4gb2NjbHVzaW9uIGZyb20g
dGhlIGN1cnJlbnQgUmVuZGVyU3VyZmFjZSBzdWJ0cmVlIG91dCB0byBpdHMgcGFyZW50IHRhcmdl
dCBSZW5kZXJTdXJmYWNlLgogICAgIC8vIFRoZSB0YXJnZXQgb2NjbHVzaW9uIGNhbiBiZSBtZXJn
ZWQgb3V0IGFzIHdlbGwgYnV0IG5lZWRzIHRvIGJlIHRyYW5zZm9ybWVkIHRvIHRoZSBuZXcgdGFy
Z2V0LgogCi0gICAgY29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIG9sZFRhcmdldCA9IG1fc3RhY2tb
bGFzdEluZGV4XS5zdXJmYWNlOwotICAgIFJlZ2lvbiBvbGRUYXJnZXRPY2NsdXNpb25Jbk5ld1Rh
cmdldCA9IHRyYW5zZm9ybVN1cmZhY2VPcGFxdWVSZWdpb248UmVuZGVyU3VyZmFjZVR5cGU+KG9s
ZFRhcmdldCwgbV9zdGFja1tsYXN0SW5kZXhdLm9jY2x1c2lvbkluVGFyZ2V0LCBvbGRUYXJnZXQt
Pm9yaWdpblRyYW5zZm9ybSgpKTsKLSAgICBpZiAob2xkVGFyZ2V0LT5oYXNSZXBsaWNhKCkgJiYg
IW9sZFRhcmdldC0+cmVwbGljYUhhc01hc2soKSkKLSAgICAgICAgb2xkVGFyZ2V0T2NjbHVzaW9u
SW5OZXdUYXJnZXQudW5pdGUodHJhbnNmb3JtU3VyZmFjZU9wYXF1ZVJlZ2lvbjxSZW5kZXJTdXJm
YWNlVHlwZT4ob2xkVGFyZ2V0LCBtX3N0YWNrW2xhc3RJbmRleF0ub2NjbHVzaW9uSW5UYXJnZXQs
IG9sZFRhcmdldC0+cmVwbGljYU9yaWdpblRyYW5zZm9ybSgpKSk7CisgICAgY29uc3QgTGF5ZXJU
eXBlKiBvbGRUYXJnZXQgPSBtX3N0YWNrW2xhc3RJbmRleF0udGFyZ2V0OworICAgIGNvbnN0IFJl
bmRlclN1cmZhY2VUeXBlKiBvbGRTdXJmYWNlID0gb2xkVGFyZ2V0LT5yZW5kZXJTdXJmYWNlKCk7
CisgICAgUmVnaW9uIG9sZFRhcmdldE9jY2x1c2lvbkluTmV3VGFyZ2V0ID0gdHJhbnNmb3JtU3Vy
ZmFjZU9wYXF1ZVJlZ2lvbjxSZW5kZXJTdXJmYWNlVHlwZT4ob2xkU3VyZmFjZSwgbV9zdGFja1ts
YXN0SW5kZXhdLm9jY2x1c2lvbkluVGFyZ2V0LCBvbGRTdXJmYWNlLT5vcmlnaW5UcmFuc2Zvcm0o
KSk7CisgICAgaWYgKG9sZFN1cmZhY2UtPmhhc1JlcGxpY2EoKSAmJiAhb2xkU3VyZmFjZS0+cmVw
bGljYUhhc01hc2soKSkKKyAgICAgICAgb2xkVGFyZ2V0T2NjbHVzaW9uSW5OZXdUYXJnZXQudW5p
dGUodHJhbnNmb3JtU3VyZmFjZU9wYXF1ZVJlZ2lvbjxSZW5kZXJTdXJmYWNlVHlwZT4ob2xkU3Vy
ZmFjZSwgbV9zdGFja1tsYXN0SW5kZXhdLm9jY2x1c2lvbkluVGFyZ2V0LCBvbGRTdXJmYWNlLT5y
ZXBsaWNhT3JpZ2luVHJhbnNmb3JtKCkpKTsKIAogICAgIEludFJlY3QgdW5vY2NsdWRlZFN1cmZh
Y2VSZWN0OwogICAgIEludFJlY3QgdW5vY2NsdWRlZFJlcGxpY2FSZWN0OwotICAgIGlmIChvbGRU
YXJnZXQtPmJhY2tncm91bmRGaWx0ZXJzKCkuaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkpIHsK
LSAgICAgICAgdW5vY2NsdWRlZFN1cmZhY2VSZWN0ID0gdW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1
cmZhY2VDb250ZW50UmVjdChvbGRUYXJnZXQsIGZhbHNlLCBvbGRUYXJnZXQtPmNvbnRlbnRSZWN0
KCkpOwotICAgICAgICBpZiAob2xkVGFyZ2V0LT5oYXNSZXBsaWNhKCkpCi0gICAgICAgICAgICB1
bm9jY2x1ZGVkUmVwbGljYVJlY3QgPSB1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRl
bnRSZWN0KG9sZFRhcmdldCwgdHJ1ZSwgb2xkVGFyZ2V0LT5jb250ZW50UmVjdCgpKTsKKyAgICBp
ZiAob2xkU3VyZmFjZS0+YmFja2dyb3VuZEZpbHRlcnMoKS5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhl
bHMoKSkgeworICAgICAgICB1bm9jY2x1ZGVkU3VyZmFjZVJlY3QgPSB1bm9jY2x1ZGVkQ29udHJp
YnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KG9sZFRhcmdldCwgZmFsc2UsIG9sZFN1cmZhY2UtPmNv
bnRlbnRSZWN0KCkpOworICAgICAgICBpZiAob2xkU3VyZmFjZS0+aGFzUmVwbGljYSgpKQorICAg
ICAgICAgICAgdW5vY2NsdWRlZFJlcGxpY2FSZWN0ID0gdW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1
cmZhY2VDb250ZW50UmVjdChvbGRUYXJnZXQsIHRydWUsIG9sZFN1cmZhY2UtPmNvbnRlbnRSZWN0
KCkpOwogICAgIH0KIAogICAgIGlmIChzdXJmYWNlV2lsbEJlQXRUb3BBZnRlclBvcCkgewpAQCAt
MjU0LDE0ICsyNTQsMTQgQEAgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwg
UmVuZGVyU3VyZmFjZVR5cGU+OjpsZWF2ZVRvVGFyZ2V0UmVuZGVyU3UKICAgICAgICAgbV9zdGFj
ay5yZW1vdmVMYXN0KCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gUmVwbGFjZSB0aGUgdG9w
IG9mIHRoZSBzdGFjayB3aXRoIHRoZSBuZXcgcHVzaGVkIHN1cmZhY2UuIENvcHkgdGhlIG9jY2x1
ZGVkIHNjcmVlbiByZWdpb24gdG8gdGhlIHRvcC4KLSAgICAgICAgbV9zdGFjay5sYXN0KCkuc3Vy
ZmFjZSA9IG5ld1RhcmdldDsKKyAgICAgICAgbV9zdGFjay5sYXN0KCkudGFyZ2V0ID0gbmV3VGFy
Z2V0OwogICAgICAgICBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldCA9IG9sZFRhcmdl
dE9jY2x1c2lvbkluTmV3VGFyZ2V0OwogICAgIH0KIAotICAgIGlmIChvbGRUYXJnZXQtPmJhY2tn
cm91bmRGaWx0ZXJzKCkuaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkpIHsKLSAgICAgICAgcmVk
dWNlT2NjbHVzaW9uQmVsb3dTdXJmYWNlKG9sZFRhcmdldCwgdW5vY2NsdWRlZFN1cmZhY2VSZWN0
LCBvbGRUYXJnZXQtPm9yaWdpblRyYW5zZm9ybSgpLCBuZXdUYXJnZXQsIG1fc3RhY2subGFzdCgp
Lm9jY2x1c2lvbkluVGFyZ2V0LCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbik7Ci0g
ICAgICAgIGlmIChvbGRUYXJnZXQtPmhhc1JlcGxpY2EoKSkKLSAgICAgICAgICAgIHJlZHVjZU9j
Y2x1c2lvbkJlbG93U3VyZmFjZShvbGRUYXJnZXQsIHVub2NjbHVkZWRSZXBsaWNhUmVjdCwgb2xk
VGFyZ2V0LT5yZXBsaWNhT3JpZ2luVHJhbnNmb3JtKCksIG5ld1RhcmdldCwgbV9zdGFjay5sYXN0
KCkub2NjbHVzaW9uSW5UYXJnZXQsIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuKTsK
KyAgICBpZiAob2xkU3VyZmFjZS0+YmFja2dyb3VuZEZpbHRlcnMoKS5oYXNGaWx0ZXJUaGF0TW92
ZXNQaXhlbHMoKSkgeworICAgICAgICByZWR1Y2VPY2NsdXNpb25CZWxvd1N1cmZhY2Uob2xkVGFy
Z2V0LCB1bm9jY2x1ZGVkU3VyZmFjZVJlY3QsIG9sZFN1cmZhY2UtPm9yaWdpblRyYW5zZm9ybSgp
LCBuZXdUYXJnZXQsIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0LCBtX3N0YWNrLmxh
c3QoKS5vY2NsdXNpb25JblNjcmVlbik7CisgICAgICAgIGlmIChvbGRTdXJmYWNlLT5oYXNSZXBs
aWNhKCkpCisgICAgICAgICAgICByZWR1Y2VPY2NsdXNpb25CZWxvd1N1cmZhY2Uob2xkVGFyZ2V0
LCB1bm9jY2x1ZGVkUmVwbGljYVJlY3QsIG9sZFN1cmZhY2UtPnJlcGxpY2FPcmlnaW5UcmFuc2Zv
cm0oKSwgbmV3VGFyZ2V0LCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldCwgbV9zdGFj
ay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4pOwogICAgIH0KIH0KIApAQCAtMzM1LDcgKzMzNSw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5
cGU+CiB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNl
VHlwZT46Om1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNvbnN0IExheWVyVHlwZSogbGF5ZXIpCiB7
CiAgICAgQVNTRVJUKCFtX3N0YWNrLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKGxheWVyLT50YXJn
ZXRSZW5kZXJTdXJmYWNlKCkgPT0gbV9zdGFjay5sYXN0KCkuc3VyZmFjZSk7CisgICAgQVNTRVJU
KGxheWVyLT5yZW5kZXJUYXJnZXQoKSA9PSBtX3N0YWNrLmxhc3QoKS50YXJnZXQpOwogICAgIGlm
IChtX3N0YWNrLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTcsNyArMzU3LDcg
QEAgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5
cGU+OjptYXJrT2NjbHVkZWRCZWhpbmRMYXkKICAgICAvLyByZW1haW4gcmVjdGlsaW5lYXIsIHRo
ZW4gd2UgZG9uJ3QgYWRkIGFueSBvY2NsdXNpb24gaW4gc2NyZWVuIHNwYWNlLgogCiAgICAgaWYg
KGxheWVyVHJhbnNmb3Jtc1RvU2NyZWVuS25vd24obGF5ZXIpKSB7Ci0gICAgICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IHRhcmdldFRvU2NyZWVuVHJhbnNmb3JtID0gbV9zdGFjay5sYXN0KCku
c3VyZmFjZS0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKTsKKyAgICAgICAgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXggdGFyZ2V0VG9TY3JlZW5UcmFuc2Zvcm0gPSBtX3N0YWNrLmxhc3QoKS50YXJnZXQt
PnJlbmRlclN1cmZhY2UoKS0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKTsKICAgICAgICAgYm9vbCBj
bGlwcGVkOwogICAgICAgICBGbG9hdFF1YWQgc2Npc3NvckluU2NyZWVuUXVhZCA9IENDTWF0aFV0
aWw6Om1hcFF1YWQodGFyZ2V0VG9TY3JlZW5UcmFuc2Zvcm0sIEZsb2F0UXVhZChGbG9hdFJlY3Qo
c2Npc3NvckluVGFyZ2V0KSksIGNsaXBwZWQpOwogICAgICAgICAvLyBGSVhNRTogRmluZCBhIHJl
Y3QgaW50ZXJpb3IgdG8gdGhlIHRyYW5zZm9ybWVkIHNjaXNzb3IgcXVhZC4KQEAgLTM4NSw3ICsz
ODUsNyBAQCBib29sIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJm
YWNlVHlwZT46Om9jY2x1ZGVkKGNvbnN0IExheWVyVAogICAgIGlmIChjb250ZW50UmVjdC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgQVNTRVJUKGxheWVyLT50YXJnZXRS
ZW5kZXJTdXJmYWNlKCkgPT0gbV9zdGFjay5sYXN0KCkuc3VyZmFjZSk7CisgICAgQVNTRVJUKGxh
eWVyLT5yZW5kZXJUYXJnZXQoKSA9PSBtX3N0YWNrLmxhc3QoKS50YXJnZXQpOwogCiAgICAgaWYg
KGxheWVyVHJhbnNmb3Jtc1RvU2NyZWVuS25vd24obGF5ZXIpICYmIHRlc3RDb250ZW50UmVjdE9j
Y2x1ZGVkKGNvbnRlbnRSZWN0LCBjb250ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9ybTxMYXllclR5
cGU+KGxheWVyKSwgbV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIG1fc3RhY2subGFzdCgpLm9j
Y2x1c2lvbkluU2NyZWVuKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00MjUsNyArNDI1LDcg
QEAgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFj
ZVR5cGU+Ojp1bm9jY2x1ZGVkQ29udGVudFIKICAgICBpZiAoY29udGVudFJlY3QuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29udGVudFJlY3Q7CiAKLSAgICBBU1NFUlQobGF5ZXItPnRhcmdl
dFJlbmRlclN1cmZhY2UoKSA9PSBtX3N0YWNrLmxhc3QoKS5zdXJmYWNlKTsKKyAgICBBU1NFUlQo
bGF5ZXItPnJlbmRlclRhcmdldCgpID09IG1fc3RhY2subGFzdCgpLnRhcmdldCk7CiAKICAgICAv
LyBXZSB3YW50IHRvIHJldHVybiBhIHJlY3QgdGhhdCBjb250YWlucyBhbGwgdGhlIHZpc2libGUg
cGFydHMgb2YgfGNvbnRlbnRSZWN0fCBpbiBib3RoIHNjcmVlbiBzcGFjZSBhbmQgaW4gdGhlIHRh
cmdldCBzdXJmYWNlLgogICAgIC8vIFNvIHdlIGZpbmQgdGhlIHZpc2libGUgcGFydHMgb2YgfGNv
bnRlbnRSZWN0fCBpbiBlYWNoIHNwYWNlLCBhbmQgdGFrZSB0aGUgaW50ZXJzZWN0aW9uLgpAQCAt
NDQ1LDIyICs0NDUsMjcgQEAgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlw
ZSwgUmVuZGVyU3VyZmFjZVR5cGU+Ojp1bm9jY2x1ZGVkQ29udGVudFIKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLUludFJlY3Qg
Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6dW5v
Y2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjb25zdCBSZW5kZXJTdXJmYWNl
VHlwZSogc3VyZmFjZSwgYm9vbCBmb3JSZXBsaWNhLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCkgY29uc3QKK0ludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRl
clN1cmZhY2VUeXBlPjo6dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChj
b25zdCBMYXllclR5cGUqIGxheWVyLCBib29sIGZvclJlcGxpY2EsIGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0KSBjb25zdAogewogICAgIEFTU0VSVCghbV9zdGFjay5pc0VtcHR5KCkpOwotICAg
IC8vIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCB3aGlsZSB0aGUgY29udHJpYnV0aW5nIHJlbmRlciBz
dXJmYWNlIGlzIHN0aWxsIGNvbnNpZGVyZWQgdGhlIGN1cnJlbnQgdGFyZ2V0IGluIHRoZSBvY2Ns
dXNpb24gdHJhY2tlci4KLSAgICBBU1NFUlQoc3VyZmFjZSA9PSBtX3N0YWNrLmxhc3QoKS5zdXJm
YWNlKTsKKyAgICAvLyBUaGUgbGF5ZXIgaXMgYSBjb250cmlidXRpbmcgcmVuZGVyVGFyZ2V0IHNv
IGl0IHNob3VsZCBoYXZlIGEgc3VyZmFjZS4KKyAgICBBU1NFUlQobGF5ZXItPnJlbmRlclN1cmZh
Y2UoKSk7CisgICAgLy8gVGhlIGxheWVyIG93bnMgYSBzdXJmYWNlIHdoaWNoIGlzIGNvbnRyaWJ1
dGluZyB0byBhbm90aGVyIHRhcmdldC4KKyAgICBBU1NFUlQobGF5ZXItPnJlbmRlclRhcmdldCgp
ID09IGxheWVyKTsKKyAgICAvLyBUaGUgbGF5ZXIgc2hvdWxkIG5vdCBiZSB0aGUgcm9vdCwgZWxz
ZSB3aGF0IGlzIGlzIGNvbnRyaWJ1dGluZyB0bz8KKyAgICBBU1NFUlQobGF5ZXItPnBhcmVudCgp
KTsKKyAgICAvLyBUaGlzIHNob3VsZCBiZSBjYWxsZWQgd2hpbGUgdGhlIGxheWVyIGlzIHN0aWxs
IGNvbnNpZGVyZWQgdGhlIGN1cnJlbnQgdGFyZ2V0IGluIHRoZSBvY2NsdXNpb24gdHJhY2tlci4K
KyAgICBBU1NFUlQobGF5ZXIgPT0gbV9zdGFjay5sYXN0KCkudGFyZ2V0KTsKIAogICAgIGlmIChj
b250ZW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBjb250ZW50UmVjdDsKIAorICAg
IFJlbmRlclN1cmZhY2VUeXBlKiBzdXJmYWNlID0gbGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKKwog
ICAgIEludFJlY3Qgc3VyZmFjZUNsaXBSZWN0ID0gc3VyZmFjZS0+Y2xpcFJlY3QoKTsKICAgICBp
ZiAoc3VyZmFjZUNsaXBSZWN0LmlzRW1wdHkoKSkgewotICAgICAgICBjb25zdCBSZW5kZXJTdXJm
YWNlVHlwZSogdGFyZ2V0U3VyZmFjZSA9IHN1cmZhY2UtPnRhcmdldFJlbmRlclN1cmZhY2UoKTsK
LSAgICAgICAgaWYgKHRhcmdldFN1cmZhY2UpCi0gICAgICAgICAgICBzdXJmYWNlQ2xpcFJlY3Qg
PSBpbnRlcnNlY3Rpb24odGFyZ2V0U3VyZmFjZS0+Y29udGVudFJlY3QoKSwgZW5jbG9zaW5nSW50
UmVjdChzdXJmYWNlLT5kcmF3YWJsZUNvbnRlbnRSZWN0KCkpKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgc3VyZmFjZUNsaXBSZWN0ID0gbV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2U7Cisg
ICAgICAgIExheWVyVHlwZSogY29udHJpYnV0aW5nU3VyZmFjZVJlbmRlclRhcmdldCA9IGxheWVy
LT5wYXJlbnQoKS0+cmVuZGVyVGFyZ2V0KCk7CisgICAgICAgIHN1cmZhY2VDbGlwUmVjdCA9IGlu
dGVyc2VjdGlvbihjb250cmlidXRpbmdTdXJmYWNlUmVuZGVyVGFyZ2V0LT5yZW5kZXJTdXJmYWNl
KCktPmNvbnRlbnRSZWN0KCksIGVuY2xvc2luZ0ludFJlY3Qoc3VyZmFjZS0+ZHJhd2FibGVDb250
ZW50UmVjdCgpKSk7CiAgICAgfQogCiAgICAgLy8gQSBjb250cmlidXRpbmcgc3VyZmFjZSBkb2Vz
bid0IGdldCBvY2NsdWRlZCBieSB0aGluZ3MgaW5zaWRlIGl0cyBvd24gc3VyZmFjZSwgc28gb25s
eSB0aGluZ3Mgb3V0c2lkZSB0aGUgc3VyZmFjZSBjYW4gb2NjbHVkZSBpdC4gVGhhdCBvY2NsdXNp
b24gaXMKQEAgLTQ5Nyw4ICs1MDIsOCBAQCBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8
TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OnVub2NjbHVkZWRDb250cmlidQogdGVtcGxh
dGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KIEludFJl
Y3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6
bGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShjb25zdCBMYXllclR5cGUqIGxheWVyKSBj
b25zdAogewotICAgIGNvbnN0IFJlbmRlclN1cmZhY2VUeXBlKiB0YXJnZXRTdXJmYWNlID0gbV9z
dGFjay5sYXN0KCkuc3VyZmFjZTsKLSAgICBGbG9hdFJlY3QgdG90YWxTY2lzc29yID0gdGFyZ2V0
U3VyZmFjZS0+Y29udGVudFJlY3QoKTsKKyAgICBjb25zdCBMYXllclR5cGUqIHJlbmRlclRhcmdl
dCA9IG1fc3RhY2subGFzdCgpLnRhcmdldDsKKyAgICBGbG9hdFJlY3QgdG90YWxTY2lzc29yID0g
cmVuZGVyVGFyZ2V0LT5yZW5kZXJTdXJmYWNlKCktPmNvbnRlbnRSZWN0KCk7CiAgICAgaWYgKGxh
eWVyLT51c2VzTGF5ZXJDbGlwcGluZygpKQogICAgICAgICB0b3RhbFNjaXNzb3IuaW50ZXJzZWN0
KGxheWVyLT5jbGlwUmVjdCgpKTsKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdCh0b3RhbFNj
aXNzb3IpOwpAQCAtNTA4LDI1ICs1MTMsMjUgQEAgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJC
YXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpsYXllclNjaXNzb3JSZWN0SW4KIHRl
bXBsYXRlIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFj
ZUNocm9taXVtPjo6Q0NPY2NsdXNpb25UcmFja2VyQmFzZShJbnRSZWN0IHNjaXNzb3JSZWN0SW5T
Y3JlZW5TcGFjZSwgYm9vbCByZWNvcmRNZXRyaWNzRm9yRnJhbWUpOwogdGVtcGxhdGUgdm9pZCBD
Q09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1
bT46OmVudGVyTGF5ZXIoY29uc3QgQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJDaHJvbWl1
bT4mKTsKIHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVt
LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpsZWF2ZUxheWVyKGNvbnN0IENDTGF5ZXJJdGVyYXRv
clBvc2l0aW9uPExheWVyQ2hyb21pdW0+Jik7Ci10ZW1wbGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6ZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bSogbmV3VGFyZ2V0KTsK
LXRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5k
ZXJTdXJmYWNlQ2hyb21pdW0+OjpmaW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgTGF5
ZXJDaHJvbWl1bSogb3duaW5nTGF5ZXIsIGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bSogZmlu
aXNoZWRUYXJnZXQpOwotdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVy
Q2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46OmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJm
YWNlKGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bSogbmV3VGFyZ2V0KTsKK3RlbXBsYXRlIHZv
aWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hy
b21pdW0+OjplbnRlclJlbmRlclRhcmdldChjb25zdCBMYXllckNocm9taXVtKiBuZXdUYXJnZXQp
OwordGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJl
bmRlclN1cmZhY2VDaHJvbWl1bT46OmZpbmlzaGVkUmVuZGVyVGFyZ2V0KGNvbnN0IExheWVyQ2hy
b21pdW0qIGZpbmlzaGVkVGFyZ2V0KTsKK3RlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2Vy
QmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpsZWF2ZVRvUmVuZGVy
VGFyZ2V0KGNvbnN0IExheWVyQ2hyb21pdW0qIG5ld1RhcmdldCk7CiB0ZW1wbGF0ZSB2b2lkIEND
T2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVt
Pjo6bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY29uc3QgTGF5ZXJDaHJvbWl1bSopOwogdGVtcGxh
dGUgYm9vbCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZh
Y2VDaHJvbWl1bT46Om9jY2x1ZGVkKGNvbnN0IExheWVyQ2hyb21pdW0qLCBjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCkgY29uc3Q7CiB0ZW1wbGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tl
ckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6dW5vY2NsdWRlZENv
bnRlbnRSZWN0KGNvbnN0IExheWVyQ2hyb21pdW0qLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCkgY29uc3Q7Ci10ZW1wbGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJD
aHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1
cmZhY2VDb250ZW50UmVjdChjb25zdCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qLCBib29sIGZvclJl
cGxpY2EsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdDsKK3RlbXBsYXRlIEludFJl
Y3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hy
b21pdW0+Ojp1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNvbnN0IExh
eWVyQ2hyb21pdW0qLCBib29sIGZvclJlcGxpY2EsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
KSBjb25zdDsKIHRlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNo
cm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRT
dXJmYWNlKGNvbnN0IExheWVyQ2hyb21pdW0qKSBjb25zdDsKIAogdGVtcGxhdGUgQ0NPY2NsdXNp
b25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6Q0NPY2NsdXNpb25U
cmFja2VyQmFzZShJbnRSZWN0IHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgYm9vbCByZWNvcmRN
ZXRyaWNzRm9yRnJhbWUpOwogdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPEND
TGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjplbnRlckxheWVyKGNvbnN0IENDTGF5ZXJJdGVy
YXRvclBvc2l0aW9uPENDTGF5ZXJJbXBsPiYpOwogdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRy
YWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjpsZWF2ZUxheWVyKGNvbnN0
IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPENDTGF5ZXJJbXBsPiYpOwotdGVtcGxhdGUgdm9pZCBD
Q09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjplbnRl
clRhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgQ0NSZW5kZXJTdXJmYWNlKiBuZXdUYXJnZXQpOwot
dGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRl
clN1cmZhY2U+OjpmaW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgQ0NMYXllckltcGwq
IG93bmluZ0xheWVyLCBjb25zdCBDQ1JlbmRlclN1cmZhY2UqIGZpbmlzaGVkVGFyZ2V0KTsKLXRl
bXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJT
dXJmYWNlPjo6bGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgQ0NSZW5kZXJTdXJmYWNl
KiBuZXdUYXJnZXQpOwordGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5
ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjplbnRlclJlbmRlclRhcmdldChjb25zdCBDQ0xheWVy
SW1wbCogbmV3VGFyZ2V0KTsKK3RlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxD
Q0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6ZmluaXNoZWRSZW5kZXJUYXJnZXQoY29uc3Qg
Q0NMYXllckltcGwqIGZpbmlzaGVkVGFyZ2V0KTsKK3RlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25U
cmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6bGVhdmVUb1JlbmRlclRh
cmdldChjb25zdCBDQ0xheWVySW1wbCogbmV3VGFyZ2V0KTsKIHRlbXBsYXRlIHZvaWQgQ0NPY2Ns
dXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6bWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIoY29uc3QgQ0NMYXllckltcGwqKTsKIHRlbXBsYXRlIGJvb2wgQ0NPY2Ns
dXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6b2NjbHVkZWQo
Y29uc3QgQ0NMYXllckltcGwqLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3Q7CiB0
ZW1wbGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVu
ZGVyU3VyZmFjZT46OnVub2NjbHVkZWRDb250ZW50UmVjdChjb25zdCBDQ0xheWVySW1wbCosIGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdDsKLXRlbXBsYXRlIEludFJlY3QgQ0NPY2Ns
dXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6dW5vY2NsdWRl
ZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjb25zdCBDQ1JlbmRlclN1cmZhY2UqLCBi
b29sIGZvclJlcGxpY2EsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdDsKK3RlbXBs
YXRlIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJT
dXJmYWNlPjo6dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjb25zdCBD
Q0xheWVySW1wbCosIGJvb2wgZm9yUmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qp
IGNvbnN0OwogdGVtcGxhdGUgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJ
bXBsLCBDQ1JlbmRlclN1cmZhY2U+OjpsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGNv
bnN0IENDTGF5ZXJJbXBsKikgY29uc3Q7CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNr
ZXIuaAppbmRleCAwY2E5NjZkOTYzMjM5ZjdlNTcwMzA3ZDNlMDY0NDE4MDFhMWQ1MDExLi5hZTg1
NzUxZWExZjgxMmVhYjViNDRlNTAwZmM1YTg4Yjk3YmZmYzUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09j
Y2x1c2lvblRyYWNrZXIuaApAQCAtNTgsOSArNTgsOSBAQCBwdWJsaWM6CiAgICAgLy8gR2l2ZXMg
YW4gdW5vY2NsdWRlZCBzdWItcmVjdCBvZiB8Y29udGVudFJlY3R8IGluIHRoZSBjb250ZW50IHNw
YWNlIG9mIHRoZSBsYXllci4gVXNlZCB3aGVuIGNvbnNpZGVyaW5nIG9jY2x1c2lvbiBmb3IgYSBs
YXllciB0aGF0IHBhaW50cy9kcmF3cyBzb21ldGhpbmcuCiAgICAgSW50UmVjdCB1bm9jY2x1ZGVk
Q29udGVudFJlY3QoY29uc3QgTGF5ZXJUeXBlKiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qp
IGNvbnN0OwogCi0gICAgLy8gR2l2ZXMgYW4gdW5vY2NsdWRlZCBzdWItcmVjdCBvZiB8Y29udGVu
dFJlY3R8IGluIHRoZSBjb250ZW50IHNwYWNlIG9mIHRoZSBzdXJmYWNlLiBVc2VkIHdoZW4gY29u
c2lkZXJpbmcgb2NjbHVzaW9uIGZvciBhIGNvbnRyaWJ1dGluZyBzdXJmYWNlCi0gICAgLy8gdGhh
dCBpcyByZW5kZXJpbmcgaW50byBhbm90aGVyIHRhcmdldCBzdXJmYWNlLgotICAgIEludFJlY3Qg
dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjb25zdCBSZW5kZXJTdXJm
YWNlVHlwZSosIGJvb2wgZm9yUmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNv
bnN0OworICAgIC8vIEdpdmVzIGFuIHVub2NjbHVkZWQgc3ViLXJlY3Qgb2YgfGNvbnRlbnRSZWN0
fCBpbiB0aGUgY29udGVudCBzcGFjZSBvZiB0aGUgcmVuZGVyVGFyZ2V0IG93bmVkIGJ5IHRoZSBs
YXllci4KKyAgICAvLyBVc2VkIHdoZW4gY29uc2lkZXJpbmcgb2NjbHVzaW9uIGZvciBhIGNvbnRy
aWJ1dGluZyBzdXJmYWNlIHRoYXQgaXMgcmVuZGVyaW5nIGludG8gYW5vdGhlciB0YXJnZXQuCisg
ICAgSW50UmVjdCB1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNvbnN0
IExheWVyVHlwZSosIGJvb2wgZm9yUmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qp
IGNvbnN0OwogCiAgICAgLy8gUmVwb3J0IG9wZXJhdGlvbnMgZm9yIHJlY29yZGluZyBvdmVyZHJh
dyBtZXRyaWNzLgogICAgIENDT3ZlcmRyYXdNZXRyaWNzJiBvdmVyZHJhd01ldHJpY3MoKSBjb25z
dCB7IHJldHVybiAqbV9vdmVyZHJhd01ldHJpY3MuZ2V0KCk7IH0KQEAgLTc1LDkgKzc1LDkgQEAg
cHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgc3RydWN0IFN0YWNrT2JqZWN0IHsKLSAgICAgICAg
U3RhY2tPYmplY3QoKSA6IHN1cmZhY2UoMCkgeyB9Ci0gICAgICAgIFN0YWNrT2JqZWN0KGNvbnN0
IFJlbmRlclN1cmZhY2VUeXBlKiBzdXJmYWNlKSA6IHN1cmZhY2Uoc3VyZmFjZSkgeyB9Ci0gICAg
ICAgIGNvbnN0IFJlbmRlclN1cmZhY2VUeXBlKiBzdXJmYWNlOworICAgICAgICBTdGFja09iamVj
dCgpIDogdGFyZ2V0KDApIHsgfQorICAgICAgICBTdGFja09iamVjdChjb25zdCBMYXllclR5cGUq
IHRhcmdldCkgOiB0YXJnZXQodGFyZ2V0KSB7IH0KKyAgICAgICAgY29uc3QgTGF5ZXJUeXBlKiB0
YXJnZXQ7CiAgICAgICAgIFJlZ2lvbiBvY2NsdXNpb25JblNjcmVlbjsKICAgICAgICAgUmVnaW9u
IG9jY2x1c2lvbkluVGFyZ2V0OwogICAgIH07CkBAIC05NiwxNSArOTYsMTUgQEAgcHJvdGVjdGVk
OgogCiBwcml2YXRlOgogICAgIC8vIENhbGxlZCB3aGVuIHZpc2l0aW5nIGEgbGF5ZXIgcmVwcmVz
ZW50aW5nIGl0c2VsZi4gSWYgdGhlIHRhcmdldCB3YXMgbm90IGFscmVhZHkgY3VycmVudCwgdGhl
biB0aGlzIGluZGljYXRlcyB3ZSBoYXZlIGVudGVyZWQgYSBuZXcgc3VyZmFjZSBzdWJ0cmVlLgot
ICAgIHZvaWQgZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNvbnN0IFJlbmRlclN1cmZhY2VUeXBl
KiBuZXdUYXJnZXQpOworICAgIHZvaWQgZW50ZXJSZW5kZXJUYXJnZXQoY29uc3QgTGF5ZXJUeXBl
KiBuZXdUYXJnZXQpOwogCiAgICAgLy8gQ2FsbGVkIHdoZW4gdmlzaXRpbmcgYSBsYXllciByZXBy
ZXNlbnRpbmcgYSB0YXJnZXQgc3VyZmFjZS4gVGhpcyBpbmRpY2F0ZXMgd2UgaGF2ZSB2aXNpdGVk
IGFsbCB0aGUgbGF5ZXJzIHdpdGhpbiB0aGUgc3VyZmFjZSwgYW5kIHdlIG1heQogICAgIC8vIHBl
cmZvcm0gYW55IHN1cmZhY2Utd2lkZSBvcGVyYXRpb25zLgotICAgIHZvaWQgZmluaXNoZWRUYXJn
ZXRSZW5kZXJTdXJmYWNlKGNvbnN0IExheWVyVHlwZSosIGNvbnN0IFJlbmRlclN1cmZhY2VUeXBl
KiBmaW5pc2hlZFRhcmdldCk7CisgICAgdm9pZCBmaW5pc2hlZFJlbmRlclRhcmdldChjb25zdCBM
YXllclR5cGUqIGZpbmlzaGVkVGFyZ2V0KTsKIAogICAgIC8vIENhbGxlZCB3aGVuIHZpc2l0aW5n
IGEgbGF5ZXIgcmVwcmVzZW50aW5nIGEgY29udHJpYnV0aW5nIHN1cmZhY2UuIFRoaXMgaW5kaWNh
dGVzIHRoYXQgd2UgYXJlIGxlYXZpbmcgb3VyIGN1cnJlbnQgc3VyZmFjZSwgYW5kCiAgICAgLy8g
ZW50ZXJpbmcgdGhlIG5ldyBvbmUuIFdlIHRoZW4gcGVyZm9ybSBhbnkgb3BlcmF0aW9ucyByZXF1
aXJlZCBmb3IgbWVyZ2luZyByZXN1bHRzIGZyb20gdGhlIGNoaWxkIHN1YnRyZWUgaW50byBpdHMg
cGFyZW50LgotICAgIHZvaWQgbGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgUmVuZGVy
U3VyZmFjZVR5cGUqIG5ld1RhcmdldCk7CisgICAgdm9pZCBsZWF2ZVRvUmVuZGVyVGFyZ2V0KGNv
bnN0IExheWVyVHlwZSogbmV3VGFyZ2V0KTsKIAogICAgIC8vIEFkZCB0aGUgbGF5ZXIncyBvY2Ns
dXNpb24gdG8gdGhlIHRyYWNrZWQgc3RhdGUuCiAgICAgdm9pZCBtYXJrT2NjbHVkZWRCZWhpbmRM
YXllcihjb25zdCBMYXllclR5cGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCmluZGV4IGRh
ODk4MDI5NTIxNTIzOTEyNmIwZTk4YjExM2Q1YjllYjhiYzhkZDkuLjY1Zjc4Nzg4ZWQ0OWFlMjQy
ODVmN2RhY2NlYjcxZGUxZjQ5YTNlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcApAQCAt
ODQsNyArODQsNyBAQCBib29sIENDUXVhZEN1bGxlcjo6YXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3
UXVhZD4gcGFzc0RyYXdRdWFkKQogCiBib29sIENDUXVhZEN1bGxlcjo6YXBwZW5kU3VyZmFjZShQ
YXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCkKIHsKLSAgICBJbnRSZWN0IGN1bGxl
ZFJlY3QgPSBtX29jY2x1c2lvblRyYWNrZXItPnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNl
Q29udGVudFJlY3QobV9sYXllci0+cmVuZGVyU3VyZmFjZSgpLCBmYWxzZSwgcGFzc0RyYXdRdWFk
LT5xdWFkUmVjdCgpKTsKKyAgICBJbnRSZWN0IGN1bGxlZFJlY3QgPSBtX29jY2x1c2lvblRyYWNr
ZXItPnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QobV9sYXllciwgZmFs
c2UsIHBhc3NEcmF3UXVhZC0+cXVhZFJlY3QoKSk7CiAgICAgcmV0dXJuIGFwcGVuZFF1YWRJbnRl
cm5hbChwYXNzRHJhd1F1YWQsIGN1bGxlZFJlY3QsIG1fcXVhZExpc3QsICptX29jY2x1c2lvblRy
YWNrZXIsIG1fc2hvd0N1bGxpbmdXaXRoRGVidWdCb3JkZXJRdWFkcyk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
U3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2UuY3BwCmluZGV4IDhiZDQ2YmYwMGJjYjRhNTIwYWY2ZWMzZTNlMWJj
MjU2Y2M4OTMxYzEuLjJjOTM3MTg3MjIyMWI0YzM1YWQ5OGQyYWY0NDBlY2Q3MmJkODFmN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcApAQCAtMTIwLDE0ICsxMjAsNiBAQCBpbnQg
Q0NSZW5kZXJTdXJmYWNlOjpvd25pbmdMYXllcklkKCkgY29uc3QKICAgICByZXR1cm4gbV9vd25p
bmdMYXllciA/IG1fb3duaW5nTGF5ZXItPmlkKCkgOiAwOwogfQogCi1DQ1JlbmRlclN1cmZhY2Uq
IENDUmVuZGVyU3VyZmFjZTo6dGFyZ2V0UmVuZGVyU3VyZmFjZSgpIGNvbnN0Ci17Ci0gICAgQ0NM
YXllckltcGwqIHBhcmVudCA9IG1fb3duaW5nTGF5ZXItPnBhcmVudCgpOwotICAgIGlmICghcGFy
ZW50KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gcGFyZW50LT50YXJnZXRSZW5kZXJT
dXJmYWNlKCk7Ci19Ci0KIGJvb2wgQ0NSZW5kZXJTdXJmYWNlOjpoYXNSZXBsaWNhKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9vd25pbmdMYXllci0+cmVwbGljYUxheWVyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1
cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyU3VyZmFjZS5oCmluZGV4IDU0MTBiZWZlZDM4YjZiZWIxZGE3MjEyZGU3OTIyZTQ3NWQy
NGZmOGEuLjc5MDhlODQxYWMzNTg1YzA0NmZkYzRmZWQ5MGI1NDYxYzJjNjEzNDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
U3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyU3VyZmFjZS5oCkBAIC0xMTQsNyArMTE0LDYgQEAgcHVibGljOgogICAgIFZl
Y3RvcjxDQ0xheWVySW1wbCo+JiBsYXllckxpc3QoKSB7IHJldHVybiBtX2xheWVyTGlzdDsgfQog
CiAgICAgaW50IG93bmluZ0xheWVySWQoKSBjb25zdDsKLSAgICBDQ1JlbmRlclN1cmZhY2UqIHRh
cmdldFJlbmRlclN1cmZhY2UoKSBjb25zdDsKIAogICAgIGJvb2wgaGFzUmVwbGljYSgpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDRGFtYWdlVHJh
Y2tlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0RhbWFnZVRyYWNr
ZXJUZXN0LmNwcAppbmRleCBmNDk4MDY5ZjBlZWE3OWYzMjg5ZmQ2NGI0MDVhZDk3NmE5MWE4Njkw
Li45NDMzZDg5ZGE3YzY0ODhmNmEyY2RkNzJjNTBhMzM3ZDA3ODM0NjYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDRGFtYWdlVHJhY2tlclRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NEYW1hZ2VUcmFja2VyVGVzdC5jcHAKQEAg
LTExMDcsNyArMTEwNyw3IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1h
Z2VGb3JFbXB0eUxheWVyTGlzdCkKICAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xh
eWVySW1wbDo6Y3JlYXRlKDEpOwogICAgIHJvb3QtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKIAot
ICAgIEFTU0VSVF9UUlVFKHJvb3QtPnJlbmRlclN1cmZhY2UoKSA9PSByb290LT50YXJnZXRSZW5k
ZXJTdXJmYWNlKCkpOworICAgIEFTU0VSVF9UUlVFKHJvb3QgPT0gcm9vdC0+cmVuZGVyVGFyZ2V0
KCkpOwogICAgIENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0U3VyZmFjZSA9IHJvb3QtPnJlbmRlclN1
cmZhY2UoKTsKICAgICB0YXJnZXRTdXJmYWNlLT5jbGVhckxheWVyTGlzdCgpOwogICAgIHRhcmdl
dFN1cmZhY2UtPmRhbWFnZVRyYWNrZXIoKS0+dXBkYXRlRGFtYWdlVHJhY2tpbmdTdGF0ZSh0YXJn
ZXRTdXJmYWNlLT5sYXllckxpc3QoKSwgdGFyZ2V0U3VyZmFjZS0+b3duaW5nTGF5ZXJJZCgpLCBm
YWxzZSwgSW50UmVjdCgpLCAwLCBXZWJGaWx0ZXJPcGVyYXRpb25zKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwCmluZGV4IDg5MmRhNGYy
ZjRiNmJlY2FkODNjZTZlZjA1M2NjNDQ1ZDQ0ODg4ODYuLjIyY2Y4OTdjYjg1YzAxMzEwNjk4ZDhj
ZWM4MzNiMTZjMzBhZmFlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllckltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBURVNUKENDTGF5ZXJJbXBs
VGVzdCwgdmVyaWZ5TGF5ZXJDaGFuZ2VzQXJlVHJhY2tlZFByb3Blcmx5KQogICAgIEVYRUNVVEVf
QU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldENsaXBSZWN0KGFyYml0
cmFyeUludFJlY3QpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NI
QU5HRShyb290LT5zZXRVc2VzTGF5ZXJDbGlwcGluZyh0cnVlKSk7CiAgICAgRVhFQ1VURV9BTkRf
VkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0RHJhd09wYWNpdHkoYXJiaXRy
YXJ5TnVtYmVyKSk7Ci0gICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFO
R0Uocm9vdC0+c2V0VGFyZ2V0UmVuZGVyU3VyZmFjZSgwKSk7CisgICAgRVhFQ1VURV9BTkRfVkVS
SUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0UmVuZGVyVGFyZ2V0KDApKTsKICAg
ICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXREcmF3
VHJhbnNmb3JtKGFyYml0cmFyeVRyYW5zZm9ybSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9T
VUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKGFyYml0
cmFyeVRyYW5zZm9ybSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1Rf
Q0hBTkdFKHJvb3QtPnNldERyYXdhYmxlQ29udGVudFJlY3QoYXJiaXRyYXJ5SW50UmVjdCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RD
b21tb25UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0Q29tbW9uVGVzdC5jcHAKaW5kZXggNTQ0MDk1MTRjZTYzMzg5ZDA4YTZkMTdlZGU2YjhhYjk3
NjdiOGQ0ZC4uMGZhNzQyNTQ4MWMyYzdhYTgyMjUxMjRhMmI3ZGZjNWVmMTU5Njk5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25U
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dENvbW1vblRlc3QuY3BwCkBAIC0zNTcsNyArMzU3LDcgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RD
b21tb25UZXN0LCB2ZXJpZnlUcmFuc2Zvcm1zRm9yU2luZ2xlUmVuZGVyU3VyZmFjZSkKIAogICAg
IC8vIFJlbmRlciBzdXJmYWNlIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBub3cuCiAgICAgQVNT
RVJUX1RSVUUoY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgQVNTRVJUX0VRKGNoaWxkLT5y
ZW5kZXJTdXJmYWNlKCksIGNoaWxkLT50YXJnZXRSZW5kZXJTdXJmYWNlKCkpOworICAgIEFTU0VS
VF9FUShjaGlsZCwgY2hpbGQtPnJlbmRlclRhcmdldCgpKTsKIAogICAgIC8vIFRoZSBjaGlsZCBs
YXllcidzIGRyYXcgdHJhbnNmb3JtIHNob3VsZCByZWZlciB0byBpdHMgbmV3IHJlbmRlciBzdXJm
YWNlOyB0aGV5IG9ubHkgZGlmZmVyIGJ5IGEgdHJhbnNsYXRpb24gdG8gY2VudGVyLgogICAgIC8v
IFRoZSBzY3JlZW4tc3BhY2UgdHJhbnNmb3JtLCBob3dldmVyLCBzaG91bGQgc3RpbGwgcmVmZXIg
dG8gdGhlIHJvb3QuCkBAIC0zNjUsMTEgKzM2NSwxMSBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENv
bW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JTaW5nbGVSZW5kZXJTdXJmYWNlKQogICAgIEVY
UEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEocGFyZW50Q29tcG9zaXRlVHJhbnNmb3JtLCBj
aGlsZC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSk7CiAKICAgICAvLyBXaXRob3V0IGNsaXBwaW5n
LCB0aGUgb3JpZ2luIHRyYW5zZm9ybSBhbmQgZHJhdyB0cmFuc2Zvcm0gKGluIHRoaXMgcGFydGlj
dWxhciBjYXNlKSBzaG91bGQgYmUgdGhlIHNhbWUuCi0gICAgRVhQRUNUX1RSQU5TRk9STUFUSU9O
X01BVFJJWF9FUShwYXJlbnRDb21wb3NpdGVUcmFuc2Zvcm0sIGNoaWxkLT50YXJnZXRSZW5kZXJT
dXJmYWNlKCktPm9yaWdpblRyYW5zZm9ybSgpKTsKLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05f
TUFUUklYX0VRKHBhcmVudENvbXBvc2l0ZVRyYW5zZm9ybSwgY2hpbGQtPnRhcmdldFJlbmRlclN1
cmZhY2UoKS0+ZHJhd1RyYW5zZm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFU
UklYX0VRKHBhcmVudENvbXBvc2l0ZVRyYW5zZm9ybSwgY2hpbGQtPnJlbmRlclRhcmdldCgpLT5y
ZW5kZXJTdXJmYWNlKCktPm9yaWdpblRyYW5zZm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JN
QVRJT05fTUFUUklYX0VRKHBhcmVudENvbXBvc2l0ZVRyYW5zZm9ybSwgY2hpbGQtPnJlbmRlclRh
cmdldCgpLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdUcmFuc2Zvcm0oKSk7CiAKICAgICAvLyBUaGUg
c2NyZWVuIHNwYWNlIGlzIHRoZSBzYW1lIGFzIHRoZSB0YXJnZXQgc2luY2UgdGhlIGNoaWxkIHN1
cmZhY2UgZHJhd3MgaW50byB0aGUgcm9vdC4KLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFU
UklYX0VRKHBhcmVudENvbXBvc2l0ZVRyYW5zZm9ybSwgY2hpbGQtPnRhcmdldFJlbmRlclN1cmZh
Y2UoKS0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9O
X01BVFJJWF9FUShwYXJlbnRDb21wb3NpdGVUcmFuc2Zvcm0sIGNoaWxkLT5yZW5kZXJUYXJnZXQo
KS0+cmVuZGVyU3VyZmFjZSgpLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpKTsKIH0KIAogVEVTVChD
Q0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCBzY2lzc29yUmVjdE5vQ2xpcCkKQEAgLTQ2NCwxMSAr
NDY0LDExIEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgc2Npc3NvclJlY3ROb0Ns
aXApCiAgICAgSW50UmVjdCByb290RGFtYWdlKHJvb3RSZWN0KTsKICAgICBDQ0xheWVyVHJlZUhv
c3RDb21tb246OmNhbGN1bGF0ZVZpc2libGVBbmRTY2lzc29yUmVjdHMocmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCwgcm9vdERhbWFnZSk7CiAgICAgCi0gICAgRVhQRUNUX0VRKHJvb3QtPnRhcmdldFJl
bmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7CisgICAg
RVhQRUNUX0VRKHJvb3QtPnJlbmRlclRhcmdldCgpLT5yZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JS
ZWN0KCksIEludFJlY3QoMCwgMCwgMCwgMCkpOwogCiAgICAgLy8gY2hpbGQgc3VyZmFjZSBkb2Vz
bid0IGhhdmUgYSBjbGlwIHJlY3QsIHRoZXJlZm9yZSBpdCB3aWxsIGJlIGNvbXB1dGVkIGFzIGlu
dGVyc2VjdGlvbgogICAgIC8vIGJldHdlZW4gcm9vdCBzdXJmYWNlJ3MgY29udGVudHJlY3QgYW5k
IGNoaWxkIHN1cmZhY2UncyBkcmF3YWJsZSBjb250ZW50IHJlY3QuCi0gICAgRVhQRUNUX0VRKGNo
aWxkUHRyLT50YXJnZXRSZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIEludFJlY3QoY2hp
bGRSZWN0LngoKSwgY2hpbGRSZWN0LnkoKSwgcm9vdFJlY3Qud2lkdGgoKSAtIGNoaWxkUmVjdC54
KCksIHJvb3RSZWN0LmhlaWdodCgpIC0gY2hpbGRSZWN0LnkoKSkpOworICAgIEVYUEVDVF9FUShj
aGlsZFB0ci0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwg
SW50UmVjdChjaGlsZFJlY3QueCgpLCBjaGlsZFJlY3QueSgpLCByb290UmVjdC53aWR0aCgpIC0g
Y2hpbGRSZWN0LngoKSwgcm9vdFJlY3QuaGVpZ2h0KCkgLSBjaGlsZFJlY3QueSgpKSk7CiAKICAg
ICBFWFBFQ1RfRVEocm9vdC0+c2Npc3NvclJlY3QoKSwgSW50UmVjdChyb290UmVjdCkpOwogCkBA
IC00ODYsOCArNDg2LDggQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCBzY2lzc29y
UmVjdE5vQ2xpcCkKICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZVZpc2libGVB
bmRTY2lzc29yUmVjdHMocmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgcm9vdERhbWFnZSk7CiAgICAg
CiAgICAgLy8gRW1wdHkgZGFtYWdlID09IGVtcHR5IHNjaXNzb3IKLSAgICBFWFBFQ1RfRVEocm9v
dC0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJbnRSZWN0KDAsIDAsIDAs
IDApKTsKLSAgICBFWFBFQ1RfRVEoY2hpbGRQdHItPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+c2Np
c3NvclJlY3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7CisgICAgRVhQRUNUX0VRKHJvb3QtPnJl
bmRlclRhcmdldCgpLT5yZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIEludFJlY3QoMCwg
MCwgMCwgMCkpOworICAgIEVYUEVDVF9FUShjaGlsZFB0ci0+cmVuZGVyVGFyZ2V0KCktPnJlbmRl
clN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7CiAgICAgCiAg
ICAgRVhQRUNUX0VRKHJvb3QtPnNjaXNzb3JSZWN0KCksIEludFJlY3QoMCwgMCwgMCwgMCkpOwog
ICAgIEVYUEVDVF9FUShjaGlsZFB0ci0+c2Npc3NvclJlY3QoKSwgSW50UmVjdCgwLCAwLCAwLCAw
KSk7CkBAIC00OTgsMTAgKzQ5OCwxMCBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3Qs
IHNjaXNzb3JSZWN0Tm9DbGlwKQogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRl
VmlzaWJsZUFuZFNjaXNzb3JSZWN0cyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCByb290RGFtYWdl
KTsKICAgICAKICAgICAvLyBTY2lzc29ycyBhcmUgbm90IGNvbXB1dGVkIGZvciByb290Ci0gICAg
RVhQRUNUX0VRKHJvb3QtPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgSW50
UmVjdCgwLCAwLCAwLCAwKSk7CisgICAgRVhQRUNUX0VRKHJvb3QtPnJlbmRlclRhcmdldCgpLT5y
ZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIEludFJlY3QoMCwgMCwgMCwgMCkpOwogCiAg
ICAgLy8gRW50aXJlIGRhbWFnZSByZWN0IGlzIHdpdGhpbiB0aGUgcm9vdCBzdXJmYWNlCi0gICAg
RVhQRUNUX0VRKGNoaWxkUHRyLT50YXJnZXRSZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCks
IHJvb3REYW1hZ2UpOworICAgIEVYUEVDVF9FUShjaGlsZFB0ci0+cmVuZGVyVGFyZ2V0KCktPnJl
bmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgcm9vdERhbWFnZSk7CiAgICAgCiAgICAgLy8g
RW50aXJlIGRhbWFnZSByZWN0IGlzIHdpdGhpbiB0aGUgbGF5ZXIKICAgICBFWFBFQ1RfRVEocm9v
dC0+c2Npc3NvclJlY3QoKSwgcm9vdERhbWFnZSk7CkBAIC01MTcsMTAgKzUxNywxMCBAQCBURVNU
KENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHNjaXNzb3JSZWN0Tm9DbGlwKQogICAgIENDTGF5
ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUFuZFNjaXNzb3JSZWN0cyhyZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LCByb290RGFtYWdlKTsKICAgICAKICAgICAvLyBTY2lzc29ycyBhcmUg
bm90IGNvbXB1dGVkIGZvciByb290Ci0gICAgRVhQRUNUX0VRKHJvb3QtPnRhcmdldFJlbmRlclN1
cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7CisgICAgRVhQRUNU
X0VRKHJvb3QtPnJlbmRlclRhcmdldCgpLT5yZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCks
IEludFJlY3QoMCwgMCwgMCwgMCkpOwogCiAgICAgLy8gRW50aXJlIGRhbWFnZSByZWN0IGlzIHdp
dGhpbiB0aGUgcm9vdCBzdXJmYWNlCi0gICAgRVhQRUNUX0VRKGNoaWxkUHRyLT50YXJnZXRSZW5k
ZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIHJvb3REYW1hZ2UpOworICAgIEVYUEVDVF9FUShj
aGlsZFB0ci0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwg
cm9vdERhbWFnZSk7CiAgICAgCiAgICAgLy8gRW50aXJlIGRhbWFnZSByZWN0IGlzIHdpdGhpbiB0
aGUgbGF5ZXIKICAgICBFWFBFQ1RfRVEocm9vdC0+c2Npc3NvclJlY3QoKSwgcm9vdERhbWFnZSk7
CkBAIC01MzYsMTEgKzUzNiwxMSBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHNj
aXNzb3JSZWN0Tm9DbGlwKQogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlz
aWJsZUFuZFNjaXNzb3JSZWN0cyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCByb290RGFtYWdlKTsK
ICAgICAKICAgICAvLyBTY2lzc29ycyBhcmUgbm90IGNvbXB1dGVkIGZvciByb290Ci0gICAgRVhQ
RUNUX0VRKHJvb3QtPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgSW50UmVj
dCgwLCAwLCAwLCAwKSk7CisgICAgRVhQRUNUX0VRKHJvb3QtPnJlbmRlclRhcmdldCgpLT5yZW5k
ZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIEludFJlY3QoMCwgMCwgMCwgMCkpOwogCiAgICAg
Ly8gUm9vdCBzdXJmYWNlIGRvZXMgbm90IGhhdmUgYSBjbGlwUmVjdCwgc28gaXRzIGNvbnRlbnRS
ZWN0IHdpbGwgYmUgdXNlZCB0byBpbnRlcnNlY3Qgd2l0aCBkYW1hZ2UuCiAgICAgLy8gUmVzdWx0
IGlzIHRoYXQgcm9vdCBkYW1hZ2UgcmVjdCBpcyBjbGlwcGVkIGF0IHJvb3QgbGF5ZXIgYm91bmRh
cnkKLSAgICBFWFBFQ1RfRVEoY2hpbGRQdHItPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+c2Npc3Nv
clJlY3QoKSwgSW50UmVjdChyb290RGFtYWdlLngoKSwgcm9vdERhbWFnZS55KCksIHJvb3RSZWN0
LndpZHRoKCkgLSByb290RGFtYWdlLngoKSwgcm9vdFJlY3QuaGVpZ2h0KCkgLSByb290RGFtYWdl
LnkoKSkpOworICAgIEVYUEVDVF9FUShjaGlsZFB0ci0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1
cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgSW50UmVjdChyb290RGFtYWdlLngoKSwgcm9vdERhbWFn
ZS55KCksIHJvb3RSZWN0LndpZHRoKCkgLSByb290RGFtYWdlLngoKSwgcm9vdFJlY3QuaGVpZ2h0
KCkgLSByb290RGFtYWdlLnkoKSkpOwogICAgIAogICAgIC8vIFJvb3QgZG9lcyBub3QgdXNlIGxh
eWVyIGNsaXBwaW5nLCBzbyBpdHMgY29udGVudCByZWN0IHdpbGwgYmUgdXNlZCB0byBpbnRlcnNl
Y3Qgd2l0aCBkYW1hZ2UKICAgICAvLyBSZXN1bHQgaXMgdGhhdCByb290IGRhbWFnZSByZWN0IGlz
IGNsaXBwZWQgYXQgcm9vdCBsYXllciBib3VuZGFyeQpAQCAtNjQ4LDggKzY0OCw4IEBAIFRFU1Qo
Q0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgc2Npc3NvclJlY3RXaXRoQ2xpcCkKICAgICBJbnRS
ZWN0IHJvb3REYW1hZ2Uocm9vdFJlY3QpOwogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2Fs
Y3VsYXRlVmlzaWJsZUFuZFNjaXNzb3JSZWN0cyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCByb290
RGFtYWdlKTsKICAgICAKLSAgICBFWFBFQ1RfRVEocm9vdC0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgp
LT5zY2lzc29yUmVjdCgpLCBJbnRSZWN0KDAsIDAsIDAsIDApKTsKLSAgICBFWFBFQ1RfRVEoY2hp
bGRQdHItPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgSW50UmVjdChyb290
UmVjdCkpOworICAgIEVYUEVDVF9FUShyb290LT5yZW5kZXJUYXJnZXQoKS0+cmVuZGVyU3VyZmFj
ZSgpLT5zY2lzc29yUmVjdCgpLCBJbnRSZWN0KDAsIDAsIDAsIDApKTsKKyAgICBFWFBFQ1RfRVEo
Y2hpbGRQdHItPnJlbmRlclRhcmdldCgpLT5yZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCks
IEludFJlY3Qocm9vdFJlY3QpKTsKICAgICAKICAgICBFWFBFQ1RfRVEocm9vdC0+c2Npc3NvclJl
Y3QoKSwgSW50UmVjdChyb290UmVjdCkpOwogCkBAIC02NjcsOCArNjY3LDggQEAgVEVTVChDQ0xh
eWVyVHJlZUhvc3RDb21tb25UZXN0LCBzY2lzc29yUmVjdFdpdGhDbGlwKQogICAgIENDTGF5ZXJU
cmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUFuZFNjaXNzb3JSZWN0cyhyZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LCByb290RGFtYWdlKTsKICAgICAKICAgICAvLyBFbXB0eSBkYW1hZ2UgPT0g
ZW1wdHkgc2Npc3NvcgotICAgIEVYUEVDVF9FUShyb290LT50YXJnZXRSZW5kZXJTdXJmYWNlKCkt
PnNjaXNzb3JSZWN0KCksIEludFJlY3QoMCwgMCwgMCwgMCkpOwotICAgIEVYUEVDVF9FUShjaGls
ZFB0ci0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJbnRSZWN0KDAsIDAs
IDAsIDApKTsKKyAgICBFWFBFQ1RfRVEocm9vdC0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZh
Y2UoKS0+c2Npc3NvclJlY3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7CisgICAgRVhQRUNUX0VR
KGNoaWxkUHRyLT5yZW5kZXJUYXJnZXQoKS0+cmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgp
LCBJbnRSZWN0KDAsIDAsIDAsIDApKTsKICAgICAKICAgICBFWFBFQ1RfRVEocm9vdC0+c2Npc3Nv
clJlY3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7CiAgICAgRVhQRUNUX0VRKGNoaWxkUHRyLT5z
Y2lzc29yUmVjdCgpLCBJbnRSZWN0KDAsIDAsIDAsIDApKTsKQEAgLTY3OSwxMCArNjc5LDEwIEBA
IFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgc2Npc3NvclJlY3RXaXRoQ2xpcCkKICAg
ICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZVZpc2libGVBbmRTY2lzc29yUmVjdHMo
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgcm9vdERhbWFnZSk7CiAgICAgCiAgICAgLy8gU2Npc3Nv
cnMgYXJlIG5vdCBjb21wdXRlZCBmb3Igcm9vdAotICAgIEVYUEVDVF9FUShyb290LT50YXJnZXRS
ZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIEludFJlY3QoMCwgMCwgMCwgMCkpOworICAg
IEVYUEVDVF9FUShyb290LT5yZW5kZXJUYXJnZXQoKS0+cmVuZGVyU3VyZmFjZSgpLT5zY2lzc29y
UmVjdCgpLCBJbnRSZWN0KDAsIDAsIDAsIDApKTsKIAogICAgIC8vIEVudGlyZSBkYW1hZ2UgcmVj
dCBpcyB3aXRoaW4gdGhlIHJvb3Qgc3VyZmFjZQotICAgIEVYUEVDVF9FUShjaGlsZFB0ci0+dGFy
Z2V0UmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCByb290RGFtYWdlKTsKKyAgICBFWFBF
Q1RfRVEoY2hpbGRQdHItPnJlbmRlclRhcmdldCgpLT5yZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JS
ZWN0KCksIHJvb3REYW1hZ2UpOwogICAgIAogICAgIC8vIEVudGlyZSBkYW1hZ2UgcmVjdCBpcyB3
aXRoaW4gdGhlIGxheWVyCiAgICAgRVhQRUNUX0VRKHJvb3QtPnNjaXNzb3JSZWN0KCksIHJvb3RE
YW1hZ2UpOwpAQCAtNjk4LDEwICs2OTgsMTAgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25U
ZXN0LCBzY2lzc29yUmVjdFdpdGhDbGlwKQogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2Fs
Y3VsYXRlVmlzaWJsZUFuZFNjaXNzb3JSZWN0cyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCByb290
RGFtYWdlKTsKICAgICAKICAgICAvLyBTY2lzc29ycyBhcmUgbm90IGNvbXB1dGVkIGZvciByb290
Ci0gICAgRVhQRUNUX0VRKHJvb3QtPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3Qo
KSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7CisgICAgRVhQRUNUX0VRKHJvb3QtPnJlbmRlclRhcmdl
dCgpLT5yZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIEludFJlY3QoMCwgMCwgMCwgMCkp
OwogCiAgICAgLy8gRW50aXJlIGRhbWFnZSByZWN0IGlzIHdpdGhpbiB0aGUgcm9vdCBzdXJmYWNl
Ci0gICAgRVhQRUNUX0VRKGNoaWxkUHRyLT50YXJnZXRSZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JS
ZWN0KCksIHJvb3REYW1hZ2UpOworICAgIEVYUEVDVF9FUShjaGlsZFB0ci0+cmVuZGVyVGFyZ2V0
KCktPnJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgcm9vdERhbWFnZSk7CiAgICAgCiAg
ICAgLy8gRW50aXJlIGRhbWFnZSByZWN0IGlzIHdpdGhpbiB0aGUgbGF5ZXIKICAgICBFWFBFQ1Rf
RVEocm9vdC0+c2Npc3NvclJlY3QoKSwgcm9vdERhbWFnZSk7CkBAIC03MTcsMTEgKzcxNywxMSBA
QCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHNjaXNzb3JSZWN0V2l0aENsaXApCiAg
ICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVWaXNpYmxlQW5kU2Npc3NvclJlY3Rz
KHJlbmRlclN1cmZhY2VMYXllckxpc3QsIHJvb3REYW1hZ2UpOwogICAgIAogICAgIC8vIFNjaXNz
b3JzIGFyZSBub3QgY29tcHV0ZWQgZm9yIHJvb3QKLSAgICBFWFBFQ1RfRVEocm9vdC0+dGFyZ2V0
UmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJbnRSZWN0KDAsIDAsIDAsIDApKTsKKyAg
ICBFWFBFQ1RfRVEocm9vdC0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2UoKS0+c2Npc3Nv
clJlY3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7CiAKICAgICAvLyBSb290IHN1cmZhY2UgZG9l
cyBub3QgaGF2ZSBhIGNsaXBSZWN0LCBzbyBpdHMgY29udGVudFJlY3Qgd2lsbCBiZSB1c2VkIHRv
IGludGVyc2VjdCB3aXRoIGRhbWFnZS4KICAgICAvLyBSZXN1bHQgaXMgdGhhdCByb290IGRhbWFn
ZSByZWN0IGlzIGNsaXBwZWQgYXQgcm9vdCBsYXllciBib3VuZGFyeQotICAgIEVYUEVDVF9FUShj
aGlsZFB0ci0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJbnRSZWN0KHJv
b3REYW1hZ2UueCgpLCByb290RGFtYWdlLnkoKSwgcm9vdFJlY3Qud2lkdGgoKSAtIHJvb3REYW1h
Z2UueCgpLCByb290UmVjdC5oZWlnaHQoKSAtIHJvb3REYW1hZ2UueSgpKSk7CisgICAgRVhQRUNU
X0VRKGNoaWxkUHRyLT5yZW5kZXJUYXJnZXQoKS0+cmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVj
dCgpLCBJbnRSZWN0KHJvb3REYW1hZ2UueCgpLCByb290RGFtYWdlLnkoKSwgcm9vdFJlY3Qud2lk
dGgoKSAtIHJvb3REYW1hZ2UueCgpLCByb290UmVjdC5oZWlnaHQoKSAtIHJvb3REYW1hZ2UueSgp
KSk7CiAgICAgCiAgICAgLy8gUm9vdCBkb2VzIG5vdCB1c2UgbGF5ZXIgY2xpcHBpbmcsIHNvIGl0
cyBjb250ZW50IHJlY3Qgd2lsbCBiZSB1c2VkIHRvIGludGVyc2VjdCB3aXRoIGRhbWFnZQogICAg
IC8vIFJlc3VsdCBpcyB0aGF0IHJvb3QgZGFtYWdlIHJlY3QgaXMgY2xpcHBlZCBhdCByb290IGxh
eWVyIGJvdW5kYXJ5CkBAIC04MzksOCArODM5LDggQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21t
b25UZXN0LCBzY2lzc29yUmVjdFdpdGhDbGlwQW5kU3BhY2VUcmFuc2Zvcm0pCiAgICAgSW50UmVj
dCByb290RGFtYWdlKHJvb3RSZWN0KTsKICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1
bGF0ZVZpc2libGVBbmRTY2lzc29yUmVjdHMocmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgcm9vdERh
bWFnZSk7CiAgICAgCi0gICAgRVhQRUNUX0VRKHJvb3QtPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+
c2Npc3NvclJlY3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7Ci0gICAgRVhQRUNUX0VRKGNoaWxk
UHRyLT50YXJnZXRSZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIEludFJlY3Qocm9vdFJl
Y3QpKTsKKyAgICBFWFBFQ1RfRVEocm9vdC0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2Uo
KS0+c2Npc3NvclJlY3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7CisgICAgRVhQRUNUX0VRKGNo
aWxkUHRyLT5yZW5kZXJUYXJnZXQoKS0+cmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJ
bnRSZWN0KHJvb3RSZWN0KSk7CiAgICAgCiAgICAgRVhQRUNUX0VRKHJvb3QtPnNjaXNzb3JSZWN0
KCksIEludFJlY3Qocm9vdFJlY3QpKTsKIApAQCAtODU3LDggKzg1Nyw4IEBAIFRFU1QoQ0NMYXll
clRyZWVIb3N0Q29tbW9uVGVzdCwgc2Npc3NvclJlY3RXaXRoQ2xpcEFuZFNwYWNlVHJhbnNmb3Jt
KQogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUFuZFNjaXNzb3JS
ZWN0cyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCByb290RGFtYWdlKTsKICAgICAKICAgICAvLyBF
bXB0eSBkYW1hZ2UgPT0gZW1wdHkgc2Npc3NvcgotICAgIEVYUEVDVF9FUShyb290LT50YXJnZXRS
ZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIEludFJlY3QoMCwgMCwgMCwgMCkpOwotICAg
IEVYUEVDVF9FUShjaGlsZFB0ci0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgp
LCBJbnRSZWN0KDAsIDAsIDAsIDApKTsKKyAgICBFWFBFQ1RfRVEocm9vdC0+cmVuZGVyVGFyZ2V0
KCktPnJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7
CisgICAgRVhQRUNUX0VRKGNoaWxkUHRyLT5yZW5kZXJUYXJnZXQoKS0+cmVuZGVyU3VyZmFjZSgp
LT5zY2lzc29yUmVjdCgpLCBJbnRSZWN0KDAsIDAsIDAsIDApKTsKICAgICAKICAgICBFWFBFQ1Rf
RVEocm9vdC0+c2Npc3NvclJlY3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7CiAgICAgRVhQRUNU
X0VRKGNoaWxkUHRyLT5zY2lzc29yUmVjdCgpLCBJbnRSZWN0KDAsIDAsIDAsIDApKTsKQEAgLTg2
OSwxMCArODY5LDEwIEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgc2Npc3NvclJl
Y3RXaXRoQ2xpcEFuZFNwYWNlVHJhbnNmb3JtKQogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6
Y2FsY3VsYXRlVmlzaWJsZUFuZFNjaXNzb3JSZWN0cyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBy
b290RGFtYWdlKTsKICAgICAKICAgICAvLyBTY2lzc29ycyBhcmUgbm90IGNvbXB1dGVkIGZvciBy
b290Ci0gICAgRVhQRUNUX0VRKHJvb3QtPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJl
Y3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7CisgICAgRVhQRUNUX0VRKHJvb3QtPnJlbmRlclRh
cmdldCgpLT5yZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIEludFJlY3QoMCwgMCwgMCwg
MCkpOwogCiAgICAgLy8gRW50aXJlIGRhbWFnZSByZWN0IGlzIHdpdGhpbiB0aGUgcm9vdCBzdXJm
YWNlCi0gICAgRVhQRUNUX0VRKGNoaWxkUHRyLT50YXJnZXRSZW5kZXJTdXJmYWNlKCktPnNjaXNz
b3JSZWN0KCksIHJvb3REYW1hZ2UpOworICAgIEVYUEVDVF9FUShjaGlsZFB0ci0+cmVuZGVyVGFy
Z2V0KCktPnJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgcm9vdERhbWFnZSk7CiAgICAg
CiAgICAgLy8gRW50aXJlIGRhbWFnZSByZWN0IGlzIHdpdGhpbiB0aGUgbGF5ZXIKICAgICBFWFBF
Q1RfRVEocm9vdC0+c2Npc3NvclJlY3QoKSwgcm9vdERhbWFnZSk7CkBAIC04ODgsMTAgKzg4OCwx
MCBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHNjaXNzb3JSZWN0V2l0aENsaXBB
bmRTcGFjZVRyYW5zZm9ybSkKICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZVZp
c2libGVBbmRTY2lzc29yUmVjdHMocmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgcm9vdERhbWFnZSk7
CiAgICAgCiAgICAgLy8gU2Npc3NvcnMgYXJlIG5vdCBjb21wdXRlZCBmb3Igcm9vdAotICAgIEVY
UEVDVF9FUShyb290LT50YXJnZXRSZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIEludFJl
Y3QoMCwgMCwgMCwgMCkpOworICAgIEVYUEVDVF9FUShyb290LT5yZW5kZXJUYXJnZXQoKS0+cmVu
ZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJbnRSZWN0KDAsIDAsIDAsIDApKTsKIAogICAg
IC8vIEVudGlyZSBkYW1hZ2UgcmVjdCBpcyB3aXRoaW4gdGhlIHJvb3Qgc3VyZmFjZQotICAgIEVY
UEVDVF9FUShjaGlsZFB0ci0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBy
b290RGFtYWdlKTsKKyAgICBFWFBFQ1RfRVEoY2hpbGRQdHItPnJlbmRlclRhcmdldCgpLT5yZW5k
ZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIHJvb3REYW1hZ2UpOwogICAgIAogICAgIC8vIEVu
dGlyZSBkYW1hZ2UgcmVjdCBpcyB3aXRoaW4gdGhlIGxheWVyCiAgICAgRVhQRUNUX0VRKHJvb3Qt
PnNjaXNzb3JSZWN0KCksIHJvb3REYW1hZ2UpOwpAQCAtOTA3LDExICs5MDcsMTEgQEAgVEVTVChD
Q0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCBzY2lzc29yUmVjdFdpdGhDbGlwQW5kU3BhY2VUcmFu
c2Zvcm0pCiAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVWaXNpYmxlQW5kU2Np
c3NvclJlY3RzKHJlbmRlclN1cmZhY2VMYXllckxpc3QsIHJvb3REYW1hZ2UpOwogICAgIAogICAg
IC8vIFNjaXNzb3JzIGFyZSBub3QgY29tcHV0ZWQgZm9yIHJvb3QKLSAgICBFWFBFQ1RfRVEocm9v
dC0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJbnRSZWN0KDAsIDAsIDAs
IDApKTsKKyAgICBFWFBFQ1RfRVEocm9vdC0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2Uo
KS0+c2Npc3NvclJlY3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7CiAKICAgICAvLyBSb290IHN1
cmZhY2UgZG9lcyBub3QgaGF2ZSBhIGNsaXBSZWN0LCBzbyBpdHMgY29udGVudFJlY3Qgd2lsbCBi
ZSB1c2VkIHRvIGludGVyc2VjdCB3aXRoIGRhbWFnZS4KICAgICAvLyBSZXN1bHQgaXMgdGhhdCBy
b290IGRhbWFnZSByZWN0IGlzIGNsaXBwZWQgYXQgcm9vdCBsYXllciBib3VuZGFyeQotICAgIEVY
UEVDVF9FUShjaGlsZFB0ci0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJ
bnRSZWN0KHJvb3REYW1hZ2UueCgpLCByb290RGFtYWdlLnkoKSwgcm9vdFJlY3Qud2lkdGgoKSAt
IHJvb3REYW1hZ2UueCgpLCByb290UmVjdC5oZWlnaHQoKSAtIHJvb3REYW1hZ2UueSgpKSk7Cisg
ICAgRVhQRUNUX0VRKGNoaWxkUHRyLT5yZW5kZXJUYXJnZXQoKS0+cmVuZGVyU3VyZmFjZSgpLT5z
Y2lzc29yUmVjdCgpLCBJbnRSZWN0KHJvb3REYW1hZ2UueCgpLCByb290RGFtYWdlLnkoKSwgcm9v
dFJlY3Qud2lkdGgoKSAtIHJvb3REYW1hZ2UueCgpLCByb290UmVjdC5oZWlnaHQoKSAtIHJvb3RE
YW1hZ2UueSgpKSk7CiAgICAgCiAgICAgLy8gUm9vdCBkb2VzIG5vdCB1c2UgbGF5ZXIgY2xpcHBp
bmcsIHNvIGl0cyBjb250ZW50IHJlY3Qgd2lsbCBiZSB1c2VkIHRvIGludGVyc2VjdCB3aXRoIGRh
bWFnZQogICAgIC8vIFJlc3VsdCBpcyB0aGF0IHJvb3QgZGFtYWdlIHJlY3QgaXMgY2xpcHBlZCBh
dCByb290IGxheWVyIGJvdW5kYXJ5CkBAIC05NjYsMTAgKzk2NiwxMCBAQCBURVNUKENDTGF5ZXJU
cmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JSZXBsaWNhKQogCiAgICAgLy8g
UmVuZGVyIHN1cmZhY2Ugc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIG5vdy4KICAgICBBU1NFUlRf
VFJVRShjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBBU1NFUlRfRVEoY2hpbGQtPnJlbmRl
clN1cmZhY2UoKSwgY2hpbGQtPnRhcmdldFJlbmRlclN1cmZhY2UoKSk7CisgICAgQVNTRVJUX0VR
KGNoaWxkLCBjaGlsZC0+cmVuZGVyVGFyZ2V0KCkpOwogCi0gICAgRVhQRUNUX1RSQU5TRk9STUFU
SU9OX01BVFJJWF9FUShyZXBsaWNhQ29tcG9zaXRlVHJhbnNmb3JtLCBjaGlsZC0+dGFyZ2V0UmVu
ZGVyU3VyZmFjZSgpLT5yZXBsaWNhT3JpZ2luVHJhbnNmb3JtKCkpOwotICAgIEVYUEVDVF9UUkFO
U0ZPUk1BVElPTl9NQVRSSVhfRVEocmVwbGljYUNvbXBvc2l0ZVRyYW5zZm9ybSwgY2hpbGQtPnRh
cmdldFJlbmRlclN1cmZhY2UoKS0+cmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOworICAg
IEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEocmVwbGljYUNvbXBvc2l0ZVRyYW5zZm9y
bSwgY2hpbGQtPnJlbmRlclRhcmdldCgpLT5yZW5kZXJTdXJmYWNlKCktPnJlcGxpY2FPcmlnaW5U
cmFuc2Zvcm0oKSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShyZXBsaWNh
Q29tcG9zaXRlVHJhbnNmb3JtLCBjaGlsZC0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2Uo
KS0+cmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOwogfQogCiBURVNUKENDTGF5ZXJUcmVl
SG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JSZW5kZXJTdXJmYWNlSGllcmFyY2h5
KQpAQCAtOTc5LDcgKzk3OSw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVy
aWZ5VHJhbnNmb3Jtc0ZvclJlbmRlclN1cmZhY2VIaWVyYXJjaHkpCiAgICAgLy8gICAtIEEgcmVu
ZGVyIHN1cmZhY2UgZGVzY3JpYmVkIHcuci50LiBhbiBhbmNlc3RvciByZW5kZXIgc3VyZmFjZTog
c2hvdWxkIGhhdmUgYSBkcmF3IHRyYW5zZm9ybSBkZXNjcmliZWQgdy5yLnQuIHRoYXQgYW5jZXN0
b3Igc3VyZmFjZQogICAgIC8vICAgLSBSZXBsaWNhcyBvZiBhIHJlbmRlciBzdXJmYWNlIGFyZSBk
ZXNjcmliZWQgdy5yLnQuIHRoZSByZXBsaWNhJ3MgdHJhbnNmb3JtIGFyb3VuZCBpdHMgYW5jaG9y
LCBhbG9uZyB3aXRoIHRoZSBzdXJmYWNlIGl0c2VsZi4KICAgICAvLyAgIC0gU2FuaXR5IGNoZWNr
IG9uIHJlY3Vyc2lvbjogdmVyaWZ5IHRyYW5zZm9ybXMgb2YgbGF5ZXJzIGRlc2NyaWJlZCB3LnIu
dC4gYSByZW5kZXIgc3VyZmFjZSB0aGF0IGlzIGRlc2NyaWJlZCB3LnIudC4gYW4gYW5jZXN0b3Ig
cmVuZGVyIHN1cmZhY2UuCi0gICAgLy8gICAtIHZlcmlmeWluZyB0aGF0IGVhY2ggbGF5ZXIgaGFz
IGEgcmVmZXJlbmNlIHRvIHRoZSBjb3JyZWN0IHJlbmRlclN1cmZhY2UgYW5kIHRhcmdldFJlbmRl
clN1cmZhY2UgdmFsdWVzLgorICAgIC8vICAgLSB2ZXJpZnlpbmcgdGhhdCBlYWNoIGxheWVyIGhh
cyBhIHJlZmVyZW5jZSB0byB0aGUgY29ycmVjdCByZW5kZXJTdXJmYWNlIGFuZCByZW5kZXJUYXJn
ZXQgdmFsdWVzLgogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZW5kZXJTdXJmYWNl
MSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwpAQCAtMTA1OCwxOSArMTA1OCwxOSBAQCBURVNU
KENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JSZW5kZXJTdXJm
YWNlSGllcmFyY2h5KQogICAgIEFTU0VSVF9GQUxTRShjaGlsZE9mUlMyLT5yZW5kZXJTdXJmYWNl
KCkpOwogICAgIEFTU0VSVF9GQUxTRShncmFuZENoaWxkT2ZSUzItPnJlbmRlclN1cmZhY2UoKSk7
CiAKLSAgICAvLyBWZXJpZnkgYWxsIHRhcmdldFJlbmRlclN1cmZhY2UgYWNjZXNzb3JzCisgICAg
Ly8gVmVyaWZ5IGFsbCByZW5kZXJUYXJnZXQgYWNjZXNzb3JzCiAgICAgLy8KLSAgICBFWFBFQ1Rf
RVEocGFyZW50LT5yZW5kZXJTdXJmYWNlKCksIHBhcmVudC0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgp
KTsKLSAgICBFWFBFQ1RfRVEocGFyZW50LT5yZW5kZXJTdXJmYWNlKCksIGNoaWxkT2ZSb290LT50
YXJnZXRSZW5kZXJTdXJmYWNlKCkpOwotICAgIEVYUEVDVF9FUShwYXJlbnQtPnJlbmRlclN1cmZh
Y2UoKSwgZ3JhbmRDaGlsZE9mUm9vdC0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpKTsKKyAgICBFWFBF
Q1RfRVEocGFyZW50LCBwYXJlbnQtPnJlbmRlclRhcmdldCgpKTsKKyAgICBFWFBFQ1RfRVEocGFy
ZW50LCBjaGlsZE9mUm9vdC0+cmVuZGVyVGFyZ2V0KCkpOworICAgIEVYUEVDVF9FUShwYXJlbnQs
IGdyYW5kQ2hpbGRPZlJvb3QtPnJlbmRlclRhcmdldCgpKTsKIAotICAgIEVYUEVDVF9FUShyZW5k
ZXJTdXJmYWNlMS0+cmVuZGVyU3VyZmFjZSgpLCByZW5kZXJTdXJmYWNlMS0+dGFyZ2V0UmVuZGVy
U3VyZmFjZSgpKTsKLSAgICBFWFBFQ1RfRVEocmVuZGVyU3VyZmFjZTEtPnJlbmRlclN1cmZhY2Uo
KSwgY2hpbGRPZlJTMS0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpKTsKLSAgICBFWFBFQ1RfRVEocmVu
ZGVyU3VyZmFjZTEtPnJlbmRlclN1cmZhY2UoKSwgZ3JhbmRDaGlsZE9mUlMxLT50YXJnZXRSZW5k
ZXJTdXJmYWNlKCkpOworICAgIEVYUEVDVF9FUShyZW5kZXJTdXJmYWNlMSwgcmVuZGVyU3VyZmFj
ZTEtPnJlbmRlclRhcmdldCgpKTsKKyAgICBFWFBFQ1RfRVEocmVuZGVyU3VyZmFjZTEsIGNoaWxk
T2ZSUzEtPnJlbmRlclRhcmdldCgpKTsKKyAgICBFWFBFQ1RfRVEocmVuZGVyU3VyZmFjZTEsIGdy
YW5kQ2hpbGRPZlJTMS0+cmVuZGVyVGFyZ2V0KCkpOwogCi0gICAgRVhQRUNUX0VRKHJlbmRlclN1
cmZhY2UyLT5yZW5kZXJTdXJmYWNlKCksIHJlbmRlclN1cmZhY2UyLT50YXJnZXRSZW5kZXJTdXJm
YWNlKCkpOwotICAgIEVYUEVDVF9FUShyZW5kZXJTdXJmYWNlMi0+cmVuZGVyU3VyZmFjZSgpLCBj
aGlsZE9mUlMyLT50YXJnZXRSZW5kZXJTdXJmYWNlKCkpOwotICAgIEVYUEVDVF9FUShyZW5kZXJT
dXJmYWNlMi0+cmVuZGVyU3VyZmFjZSgpLCBncmFuZENoaWxkT2ZSUzItPnRhcmdldFJlbmRlclN1
cmZhY2UoKSk7CisgICAgRVhQRUNUX0VRKHJlbmRlclN1cmZhY2UyLCByZW5kZXJTdXJmYWNlMi0+
cmVuZGVyVGFyZ2V0KCkpOworICAgIEVYUEVDVF9FUShyZW5kZXJTdXJmYWNlMiwgY2hpbGRPZlJT
Mi0+cmVuZGVyVGFyZ2V0KCkpOworICAgIEVYUEVDVF9FUShyZW5kZXJTdXJmYWNlMiwgZ3JhbmRD
aGlsZE9mUlMyLT5yZW5kZXJUYXJnZXQoKSk7CiAKICAgICAvLyBWZXJpZnkgbGF5ZXIgZHJhdyB0
cmFuc2Zvcm1zCiAgICAgLy8gIG5vdGUgdGhhdCBkcmF3IHRyYW5zZm9ybXMgYXJlIGRlc2NyaWJl
ZCB3aXRoIHJlc3BlY3QgdG8gdGhlIG5lYXJlc3QgYW5jZXN0b3IgcmVuZGVyIHN1cmZhY2UKQEAg
LTEyNzgsNyArMTI3OCw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5
U2Nyb2xsQ29tcGVuc2F0aW9uRm9yRml4ZWRQb3NpdGlvbkxheWVyV2l0CiAgICAgQ0NMYXllcklt
cGwqIGNoaWxkID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKICAgICBDQ0xheWVySW1wbCog
Z3JhbmRDaGlsZCA9IGNoaWxkLT5jaGlsZHJlbigpWzBdLmdldCgpOwogCi0gICAgLy8gVGhpcyBz
Y2FsZSB3aWxsIGNhdXNlIGNoaWxkIGFuZCBncmFuZENoaWxkIHRvIGJlIGVmZmVjdGl2ZWx5IDIw
MCB4IDgwMCB3aXRoIHJlc3BlY3QgdG8gdGhlIHRhcmdldFJlbmRlclN1cmZhY2UuCisgICAgLy8g
VGhpcyBzY2FsZSB3aWxsIGNhdXNlIGNoaWxkIGFuZCBncmFuZENoaWxkIHRvIGJlIGVmZmVjdGl2
ZWx5IDIwMCB4IDgwMCB3aXRoIHJlc3BlY3QgdG8gdGhlIHJlbmRlclRhcmdldC4KICAgICBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBub25Vbmlmb3JtU2NhbGU7CiAgICAgbm9uVW5pZm9ybVNjYWxl
LnNjYWxlTm9uVW5pZm9ybSgyLCA4KTsKICAgICBjaGlsZC0+c2V0VHJhbnNmb3JtKG5vblVuaWZv
cm1TY2FsZSk7CkBAIC0xMzc4LDcgKzEzNzgsNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1v
blRlc3QsIHZlcmlmeVNjcm9sbENvbXBlbnNhdGlvbkZvckZpeGVkUG9zaXRpb25MYXllcldpdAog
ICAgIGNoaWxkLT5zZXRUcmFuc2Zvcm0ocm90YXRpb25BYm91dFopOwogICAgIGdyYW5kQ2hpbGQt
PnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoOCwgNikpOwogICAgIGdyYW5kQ2hpbGQtPnNldFRyYW5z
Zm9ybShyb3RhdGlvbkFib3V0Wik7Ci0gICAgZ3JlYXRHcmFuZENoaWxkLT5zZXRGaXhlZFRvQ29u
dGFpbmVyTGF5ZXIodHJ1ZSk7IC8vIGdyZWF0R3JhbmRDaGlsZCBpcyBwb3NpdGlvbmVkIHVwc2lk
ZS1kb3duIHdpdGggcmVzcGVjdCB0byB0aGUgdGFyZ2V0UmVuZGVyU3VyZmFjZQorICAgIGdyZWF0
R3JhbmRDaGlsZC0+c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKHRydWUpOyAvLyBncmVhdEdyYW5k
Q2hpbGQgaXMgcG9zaXRpb25lZCB1cHNpZGUtZG93biB3aXRoIHJlc3BlY3QgdG8gdGhlIHJlbmRl
clRhcmdldC4KIAogICAgIC8vIENhc2UgMTogc2Nyb2xsRGVsdGEgb2YgMCwgMAogICAgIGNoaWxk
LT5zZXRTY3JvbGxEZWx0YShJbnRTaXplKDAsIDApKTsKQEAgLTE0NDQsNyArMTQ0NCw3IEBAIFRF
U1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5U2Nyb2xsQ29tcGVuc2F0aW9uRm9y
Rml4ZWRQb3NpdGlvbkxheWVyV2l0CiAgICAgY2hpbGQtPnNldFRyYW5zZm9ybShyb3RhdGlvbkFi
b3V0Wik7CiAgICAgZ3JhbmRDaGlsZC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCg4LCA2KSk7CiAg
ICAgZ3JhbmRDaGlsZC0+c2V0VHJhbnNmb3JtKHJvdGF0aW9uQWJvdXRaKTsKLSAgICBncmVhdEdy
YW5kQ2hpbGQtPnNldEZpeGVkVG9Db250YWluZXJMYXllcih0cnVlKTsgLy8gZ3JlYXRHcmFuZENo
aWxkIGlzIHBvc2l0aW9uZWQgdXBzaWRlLWRvd24gd2l0aCByZXNwZWN0IHRvIHRoZSB0YXJnZXRS
ZW5kZXJTdXJmYWNlCisgICAgZ3JlYXRHcmFuZENoaWxkLT5zZXRGaXhlZFRvQ29udGFpbmVyTGF5
ZXIodHJ1ZSk7IC8vIGdyZWF0R3JhbmRDaGlsZCBpcyBwb3NpdGlvbmVkIHVwc2lkZS1kb3duIHdp
dGggcmVzcGVjdCB0byB0aGUgcmVuZGVyVGFyZ2V0LgogCiAgICAgLy8gQ2FzZSAxOiBzY3JvbGxE
ZWx0YSBvZiAwLCAwCiAgICAgY2hpbGQtPnNldFNjcm9sbERlbHRhKEludFNpemUoMCwgMCkpOwpA
QCAtMTY4NSw3ICsxNjg1LDcgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJp
ZnlTY3JvbGxDb21wZW5zYXRpb25Gb3JGaXhlZFBvc2l0aW9uTGF5ZXJXaXQKIHsKICAgICAvLyBU
aGlzIHRlc3QgY2hlY2tzIGZvciBjb3JyZWN0IHNjcm9sbCBjb21wZW5zYXRpb24gd2hlbiB0aGUg
Zml4ZWQtcG9zaXRpb24gY29udGFpbmVyCiAgICAgLy8gaXRzZWxmIGhhcyBhIHJlbmRlclN1cmZh
Y2UuIEluIHRoaXMgY2FzZSwgdGhlIGNvbnRhaW5lciBsYXllciBzaG91bGQgYmUgdHJlYXRlZAot
ICAgIC8vIGxpa2UgYSBsYXllciB0aGF0IGNvbnRyaWJ1dGVzIHRvIGEgdGFyZ2V0UmVuZGVyU3Vy
ZmFjZSwgYW5kIHRoYXQgdGFyZ2V0UmVuZGVyU3VyZmFjZQorICAgIC8vIGxpa2UgYSBsYXllciB0
aGF0IGNvbnRyaWJ1dGVzIHRvIGEgcmVuZGVyVGFyZ2V0LCBhbmQgdGhhdCByZW5kZXJUYXJnZXQK
ICAgICAvLyBpcyBjb21wbGV0ZWx5IGlycmVsZXZhbnQ7IGl0IHNob3VsZCBub3QgYWZmZWN0IHRo
ZSBzY3JvbGwgY29tcGVuc2F0aW9uLgogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBzY29w
ZWRJbXBsVGhyZWFkOwogCkBAIC0yMjMxLDE5ICsyMjMxLDE5IEBAIFRFU1QoQ0NMYXllclRyZWVI
b3N0Q29tbW9uVGVzdCwgdmVyaWZ5QW5pbWF0aW9uc0ZvclJlbmRlclN1cmZhY2VIaWVyYXJjaHkp
CiAgICAgQVNTRVJUX0ZBTFNFKGNoaWxkT2ZSUzItPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgQVNT
RVJUX0ZBTFNFKGdyYW5kQ2hpbGRPZlJTMi0+cmVuZGVyU3VyZmFjZSgpKTsKIAotICAgIC8vIFZl
cmlmeSBhbGwgdGFyZ2V0UmVuZGVyU3VyZmFjZSBhY2Nlc3NvcnMKKyAgICAvLyBWZXJpZnkgYWxs
IHJlbmRlclRhcmdldCBhY2Nlc3NvcnMKICAgICAvLwotICAgIEVYUEVDVF9FUShwYXJlbnQtPnJl
bmRlclN1cmZhY2UoKSwgcGFyZW50LT50YXJnZXRSZW5kZXJTdXJmYWNlKCkpOwotICAgIEVYUEVD
VF9FUShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSwgY2hpbGRPZlJvb3QtPnRhcmdldFJlbmRlclN1
cmZhY2UoKSk7Ci0gICAgRVhQRUNUX0VRKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLCBncmFuZENo
aWxkT2ZSb290LT50YXJnZXRSZW5kZXJTdXJmYWNlKCkpOworICAgIEVYUEVDVF9FUShwYXJlbnQs
IHBhcmVudC0+cmVuZGVyVGFyZ2V0KCkpOworICAgIEVYUEVDVF9FUShwYXJlbnQsIGNoaWxkT2ZS
b290LT5yZW5kZXJUYXJnZXQoKSk7CisgICAgRVhQRUNUX0VRKHBhcmVudCwgZ3JhbmRDaGlsZE9m
Um9vdC0+cmVuZGVyVGFyZ2V0KCkpOwogCi0gICAgRVhQRUNUX0VRKHJlbmRlclN1cmZhY2UxLT5y
ZW5kZXJTdXJmYWNlKCksIHJlbmRlclN1cmZhY2UxLT50YXJnZXRSZW5kZXJTdXJmYWNlKCkpOwot
ICAgIEVYUEVDVF9FUShyZW5kZXJTdXJmYWNlMS0+cmVuZGVyU3VyZmFjZSgpLCBjaGlsZE9mUlMx
LT50YXJnZXRSZW5kZXJTdXJmYWNlKCkpOwotICAgIEVYUEVDVF9FUShyZW5kZXJTdXJmYWNlMS0+
cmVuZGVyU3VyZmFjZSgpLCBncmFuZENoaWxkT2ZSUzEtPnRhcmdldFJlbmRlclN1cmZhY2UoKSk7
CisgICAgRVhQRUNUX0VRKHJlbmRlclN1cmZhY2UxLCByZW5kZXJTdXJmYWNlMS0+cmVuZGVyVGFy
Z2V0KCkpOworICAgIEVYUEVDVF9FUShyZW5kZXJTdXJmYWNlMSwgY2hpbGRPZlJTMS0+cmVuZGVy
VGFyZ2V0KCkpOworICAgIEVYUEVDVF9FUShyZW5kZXJTdXJmYWNlMSwgZ3JhbmRDaGlsZE9mUlMx
LT5yZW5kZXJUYXJnZXQoKSk7CiAKLSAgICBFWFBFQ1RfRVEocmVuZGVyU3VyZmFjZTItPnJlbmRl
clN1cmZhY2UoKSwgcmVuZGVyU3VyZmFjZTItPnRhcmdldFJlbmRlclN1cmZhY2UoKSk7Ci0gICAg
RVhQRUNUX0VRKHJlbmRlclN1cmZhY2UyLT5yZW5kZXJTdXJmYWNlKCksIGNoaWxkT2ZSUzItPnRh
cmdldFJlbmRlclN1cmZhY2UoKSk7Ci0gICAgRVhQRUNUX0VRKHJlbmRlclN1cmZhY2UyLT5yZW5k
ZXJTdXJmYWNlKCksIGdyYW5kQ2hpbGRPZlJTMi0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpKTsKKyAg
ICBFWFBFQ1RfRVEocmVuZGVyU3VyZmFjZTIsIHJlbmRlclN1cmZhY2UyLT5yZW5kZXJUYXJnZXQo
KSk7CisgICAgRVhQRUNUX0VRKHJlbmRlclN1cmZhY2UyLCBjaGlsZE9mUlMyLT5yZW5kZXJUYXJn
ZXQoKSk7CisgICAgRVhQRUNUX0VRKHJlbmRlclN1cmZhY2UyLCBncmFuZENoaWxkT2ZSUzItPnJl
bmRlclRhcmdldCgpKTsKIAogICAgIC8vIFZlcmlmeSBkcmF3T3BhY2l0eUlzQW5pbWF0aW5nIHZh
bHVlcwogICAgIC8vCkBAIC0zNzg5LDcgKzM3ODksNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENv
bW1vblRlc3QsIHZlcmlmeVN1YnRyZWVTZWFyY2gpCiAvLyAgLSBhZGQgYSBjYXNlIHRoYXQgY2hl
Y2tzIGlmIGEgcmVuZGVyIHN1cmZhY2UncyByZXBsaWNhVHJhbnNmb3JtIGlzIGNvbXB1dGVkIGNv
cnJlY3RseS4KIC8vICAtIHRlc3QgYWxsIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHJlbmRl
ciBzdXJmYWNlcyBhcmUgY3JlYXRlZAogLy8gIC0gaWYgcG9zc2libGUsIHRlc3QgYWxsIGNvbmRp
dGlvbnMgdW5kZXIgd2hpY2ggcmVuZGVyIHN1cmZhY2VzIGFyZSBub3QgY3JlYXRlZAotLy8gIC0g
dmVyaWZ5IHRoYXQgdGhlIGxheWVyIGxpc3RzIG9mIHJlbmRlciBzdXJmYWNlcyBhcmUgY29ycmVj
dCwgdmVyaWZ5IHRoYXQgInRhcmdldFJlbmRlclN1cmZhY2UiIHZhbHVlcyBmb3IgZWFjaCBsYXll
ciBhcmUgY29ycmVjdC4KKy8vICAtIHZlcmlmeSB0aGF0IHRoZSBsYXllciBsaXN0cyBvZiByZW5k
ZXIgc3VyZmFjZXMgYXJlIGNvcnJlY3QsIHZlcmlmeSB0aGF0IHJlbmRlclRhcmdldCdzIFJlbmRl
clN1cmZhY2UgdmFsdWVzIGZvciBlYWNoIGxheWVyIGFyZSBjb3JyZWN0LgogLy8gIC0gdGVzdCB0
aGUgY29tcHV0YXRpb24gb2YgY2xpcCByZWN0cyBhbmQgY29udGVudCByZWN0cwogLy8gIC0gdGVz
dCB0aGUgc3BlY2lhbCBjYXNlcyBmb3IgbWFzayBsYXllcnMgYW5kIHJlcGxpY2EgbGF5ZXJzCiAv
LyAgLSB0ZXN0IHRoZSBvdGhlciBmdW5jdGlvbnMgaW4gQ0NMYXllclRyZWVIb3N0Q29tbW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tl
clRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNr
ZXJUZXN0LmNwcAppbmRleCBmMGJmZDBlYTMzNDQyYzkzYTYzYWMyNDgzNzczYTE2Y2VmMzdhYTRk
Li44N2JkZTUxMTcyMjg1MTc2ODM2M2JjODg5NTRjM2JjYTcwZTliYjY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5j
cHAKQEAgLTEwNDQsNyArMTA0NCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgb2NjbHVzaW9uLnNl
dExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgtMjAsIC0yMCwgMTAwMCwgMTAwMCkpOwogCiAgICAg
ICAgIC8vIFRoZXJlIGlzIG5vdGhpbmcgYWJvdmUgY2hpbGQyJ3Mgc3VyZmFjZSBpbiB0aGUgei1v
cmRlci4KLSAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoLTEwLCA0MjAsIDcwLCA4
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNo
aWxkMi0+cmVuZGVyU3VyZmFjZSgpLCBmYWxzZSwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSkp
OworICAgICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY2hpbGQy
LCBmYWxzZSwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSkpOwogCiAgICAgICAgIHRoaXMtPmxl
YXZlQ29udHJpYnV0aW5nU3VyZmFjZShjaGlsZDIsIG9jY2x1c2lvbik7CiAgICAgICAgIHRoaXMt
PnZpc2l0TGF5ZXIobGF5ZXIxLCBvY2NsdXNpb24pOwpAQCAtMTA2Miw3ICsxMDYyLDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwg
SW50UmVjdCgtMTAsIDQzMCwgODAsIDcxKSkpOwogCiAgICAgICAgIC8vIGNoaWxkMidzIGNvbnRl
bnRzIHdpbGwgb2NjbHVkZSBjaGlsZDEgYmVsb3cgaXQuCi0gICAgICAgIEVYUEVDVF9JTlRfUkVD
VF9FUShJbnRSZWN0KC0xMCwgNDMwLCAxMCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRy
aWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjaGlsZDEtPnJlbmRlclN1cmZhY2UoKSwgZmFsc2Us
IEludFJlY3QoLTEwLCA0MzAsIDgwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VR
KEludFJlY3QoLTEwLCA0MzAsIDEwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0
aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNoaWxkMSwgZmFsc2UsIEludFJlY3QoLTEwLCA0MzAsIDgw
LCA3MCkpKTsKIAogICAgICAgICB0aGlzLT5sZWF2ZUNvbnRyaWJ1dGluZ1N1cmZhY2UoY2hpbGQx
LCBvY2NsdXNpb24pOwogICAgICAgICB0aGlzLT5lbnRlckxheWVyKHBhcmVudCwgb2NjbHVzaW9u
KTsKQEAgLTExNTMsNyArMTE1Myw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdGhpcy0+ZW50ZXJD
b250cmlidXRpbmdTdXJmYWNlKGNoaWxkMiwgb2NjbHVzaW9uKTsKIAogICAgICAgICAvLyBUaGVy
ZSBpcyBub3RoaW5nIGFib3ZlIGNoaWxkMidzIHN1cmZhY2UgaW4gdGhlIHotb3JkZXIuCi0gICAg
ICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjaGlsZDItPnJlbmRl
clN1cmZhY2UoKSwgZmFsc2UsIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCkpKTsKKyAgICAgICAg
RVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNoaWxkMiwgZmFsc2UsIElu
dFJlY3QoLTEwLCA0MjAsIDcwLCA4MCkpKTsKIAogICAgICAgICB0aGlzLT5sZWF2ZUNvbnRyaWJ1
dGluZ1N1cmZhY2UoY2hpbGQyLCBvY2NsdXNpb24pOwogICAgICAgICB0aGlzLT52aXNpdExheWVy
KGxheWVyMSwgb2NjbHVzaW9uKTsKQEAgLTExNzEsOSArMTE3MSw5IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEsIEludFJlY3QoNDIx
LCAtMjAsIDgwLCA5MCkpKTsKIAogICAgICAgICAvLyBjaGlsZDIncyBjb250ZW50cyB3aWxsIG9j
Y2x1ZGUgY2hpbGQxIGJlbG93IGl0LgotICAgICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVj
dCg0MjAsIC0yMCwgODAsIDkwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJm
YWNlQ29udGVudFJlY3QoY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCksIGZhbHNlLCBJbnRSZWN0KDQy
MCwgLTIwLCA4MCwgOTApKSk7Ci0gICAgICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KDQ5
MCwgLTEwLCAxMCwgODApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VD
b250ZW50UmVjdChjaGlsZDEtPnJlbmRlclN1cmZhY2UoKSwgZmFsc2UsIEludFJlY3QoNDIwLCAt
MTAsIDgwLCA5MCkpKTsKLSAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoNDIwLCAt
MjAsIDcwLCAxMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRl
bnRSZWN0KGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpLCBmYWxzZSwgSW50UmVjdCg0MjAsIC0yMCwg
NzAsIDkwKSkpOworICAgICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCg0MjAsIC0yMCwg
ODAsIDkwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJl
Y3QoY2hpbGQxLCBmYWxzZSwgSW50UmVjdCg0MjAsIC0yMCwgODAsIDkwKSkpOworICAgICAgICBF
WFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCg0OTAsIC0xMCwgMTAsIDgwKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY2hpbGQxLCBmYWxzZSwgSW50
UmVjdCg0MjAsIC0xMCwgODAsIDkwKSkpOworICAgICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50
UmVjdCg0MjAsIC0yMCwgNzAsIDEwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250cmlidXRpbmdT
dXJmYWNlQ29udGVudFJlY3QoY2hpbGQxLCBmYWxzZSwgSW50UmVjdCg0MjAsIC0yMCwgNzAsIDkw
KSkpOwogCiAgICAgICAgIHRoaXMtPmxlYXZlQ29udHJpYnV0aW5nU3VyZmFjZShjaGlsZDEsIG9j
Y2x1c2lvbik7CiAgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIocGFyZW50LCBvY2NsdXNpb24pOwpA
QCAtMjA3Nyw3ICsyMDc3LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIHRoaXMtPmVudGVyQ29u
dHJpYnV0aW5nU3VyZmFjZShzdXJmYWNlLCBvY2NsdXNpb24pOwogICAgICAgICAvLyBPY2NsdXNp
b24gd2l0aGluIHRoZSBzdXJmYWNlIGlzIGxvc3Qgd2hlbiBsZWF2aW5nIHRoZSBhbmltYXRpbmcg
c3VyZmFjZS4KLSAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoMCwgMCwgMjUwLCAz
MDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChz
dXJmYWNlLT5yZW5kZXJTdXJmYWNlKCksIGZhbHNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkp
OworICAgICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCgwLCAwLCAyNTAsIDMwMCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KHN1cmZhY2Us
IGZhbHNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwogICAgICAgICB0aGlzLT5sZWF2ZUNv
bnRyaWJ1dGluZ1N1cmZhY2Uoc3VyZmFjZSwgb2NjbHVzaW9uKTsKIAogICAgICAgICB0aGlzLT52
aXNpdExheWVyKGxheWVyLCBvY2NsdXNpb24pOwpAQCAtMjEyOSw3ICsyMTI5LDcgQEAgcHJvdGVj
dGVkOgogCiAgICAgICAgIHRoaXMtPmVudGVyQ29udHJpYnV0aW5nU3VyZmFjZShzdXJmYWNlLCBv
Y2NsdXNpb24pOwogICAgICAgICAvLyBPY2NsdXNpb24gd2l0aGluIHRoZSBzdXJmYWNlIGlzIGxv
c3Qgd2hlbiBsZWF2aW5nIHRoZSBhbmltYXRpbmcgc3VyZmFjZS4KLSAgICAgICAgRVhQRUNUX0lO
VF9SRUNUX0VRKEludFJlY3QoMCwgMCwgMjUwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCksIGZh
bHNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgICAgICBFWFBFQ1RfSU5UX1JFQ1Rf
RVEoSW50UmVjdCgwLCAwLCAyNTAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0
aW5nU3VyZmFjZUNvbnRlbnRSZWN0KHN1cmZhY2UsIGZhbHNlLCBJbnRSZWN0KDAsIDAsIDMwMCwg
MzAwKSkpOwogICAgICAgICB0aGlzLT5sZWF2ZUNvbnRyaWJ1dGluZ1N1cmZhY2Uoc3VyZmFjZSwg
b2NjbHVzaW9uKTsKIAogICAgICAgICB0aGlzLT52aXNpdExheWVyKGxheWVyLCBvY2NsdXNpb24p
OwpAQCAtMjIxOCw3ICsyMjE4LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIHRoaXMtPmVudGVy
Q29udHJpYnV0aW5nU3VyZmFjZShzdXJmYWNlLCBvY2NsdXNpb24pOwogICAgICAgICAvLyBUaGUg
Y29udHJpYnV0aW5nIHxzdXJmYWNlfCBpcyBhbmltYXRpbmcgc28gaXQgY2FuJ3QgYmUgb2NjbHVk
ZWQuCi0gICAgICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3Qoc3VyZmFj
ZS0+cmVuZGVyU3VyZmFjZSgpLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAg
ICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoMCwgMCwgMzAwLCAzMDApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLCBmYWxz
ZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKICAgICAgICAgdGhpcy0+bGVhdmVDb250cmli
dXRpbmdTdXJmYWNlKHN1cmZhY2UsIG9jY2x1c2lvbik7CiAKICAgICAgICAgdGhpcy0+ZW50ZXJM
YXllcihsYXllciwgb2NjbHVzaW9uKTsKQEAgLTIzMzMsNyArMjMzMyw3IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgdGhpcy0+ZW50ZXJDb250cmlidXRpbmdTdXJmYWNlKHN1cmZhY2UsIG9jY2x1c2lv
bik7CiAKICAgICAgICAgLy8gU3VyZmFjZSBpcyBub3Qgb2NjbHVkZWQgc28gaXQgc2hvdWxkbid0
IHRoaW5rIGl0IGlzLgotICAgICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRS
ZWN0KHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSwgZmFsc2UsIEludFJlY3QoMCwgMCwgMTAwLCAx
MDApKSk7CisgICAgICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KDAsIDAsIDEwMCwgMTAw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3Qoc3Vy
ZmFjZSwgZmFsc2UsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CiAgICAgfQogfTsKIApAQCAt
MjM3MSw4ICsyMzcxLDggQEAgcHJvdGVjdGVkOgogICAgICAgICB0aGlzLT5lbnRlckNvbnRyaWJ1
dGluZ1N1cmZhY2Uoc3VyZmFjZSwgb2NjbHVzaW9uKTsKIAogICAgICAgICAvLyBTdXJmYWNlIGlz
IG9jY2x1ZGVkLCBidXQgb25seSB0aGUgdG9wIDEwcHggb2YgdGhlIHJlcGxpY2EuCi0gICAgICAg
IEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KDAsIDAsIDAsIDApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLT5yZW5kZXJTdXJmYWNl
KCksIGZhbHNlLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfSU5U
X1JFQ1RfRVEoSW50UmVjdCgwLCAxMCwgMTAwLCA5MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSwgdHJ1
ZSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VR
KEludFJlY3QoMCwgMCwgMCwgMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3Vy
ZmFjZUNvbnRlbnRSZWN0KHN1cmZhY2UsIGZhbHNlLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkp
OworICAgICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCgwLCAxMCwgMTAwLCA5MCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KHN1cmZhY2Us
IHRydWUsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CiAgICAgfQogfTsKIApAQCAtMjQxMiw4
ICsyNDEyLDggQEAgcHJvdGVjdGVkOgogICAgICAgICB0aGlzLT5lbnRlckNvbnRyaWJ1dGluZ1N1
cmZhY2Uoc3VyZmFjZSwgb2NjbHVzaW9uKTsKIAogICAgICAgICAvLyBTdXJmYWNlIGFuZCByZXBs
aWNhIGFyZSBvY2NsdWRlZCBkaWZmZXJlbnQgYW1vdW50cy4KLSAgICAgICAgRVhQRUNUX0lOVF9S
RUNUX0VRKEludFJlY3QoNDAsIDAsIDYwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRy
aWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCksIGZhbHNl
LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEo
SW50UmVjdCg1MCwgMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5n
U3VyZmFjZUNvbnRlbnRSZWN0KHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSwgdHJ1ZSwgSW50UmVj
dCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3Qo
NDAsIDAsIDYwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VD
b250ZW50UmVjdChzdXJmYWNlLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAg
ICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoNTAsIDAsIDUwLCAxMDApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLCB0cnVl
LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwogICAgIH0KIH07CiAKQEAgLTI0NTgsNyArMjQ1
OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdGhpcy0+ZW50ZXJDb250cmlidXRpbmdTdXJmYWNl
KHN1cmZhY2VDaGlsZCwgb2NjbHVzaW9uKTsKICAgICAgICAgLy8gVGhlIHN1cmZhY2VDaGlsZCdz
IHBhcmVudCBkb2VzIG5vdCBoYXZlIGEgY2xpcFJlY3QgYXMgaXQgb3ducyBhIHJlbmRlciBzdXJm
YWNlLiBNYWtlIHN1cmUgdGhlIHVub2NjbHVkZWQgcmVjdAogICAgICAgICAvLyBkb2VzIG5vdCBn
ZXQgY2xpcHBlZCBhd2F5IGluYXBwcm9wcmlhdGVseS4KLSAgICAgICAgRVhQRUNUX0lOVF9SRUNU
X0VRKEludFJlY3QoMCwgNDAsIDEwMCwgMTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1
dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlQ2hpbGQtPnJlbmRlclN1cmZhY2UoKSwgZmFs
c2UsIEludFJlY3QoMCwgMCwgMTAwLCA1MCkpKTsKKyAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VR
KEludFJlY3QoMCwgNDAsIDEwMCwgMTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGlu
Z1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlQ2hpbGQsIGZhbHNlLCBJbnRSZWN0KDAsIDAsIDEw
MCwgNTApKSk7CiAgICAgICAgIHRoaXMtPmxlYXZlQ29udHJpYnV0aW5nU3VyZmFjZShzdXJmYWNl
Q2hpbGQsIG9jY2x1c2lvbik7CiAKICAgICAgICAgLy8gV2hlbiB0aGUgc3VyZmFjZUNoaWxkJ3Mg
b2NjbHVzaW9uIGlzIHRyYW5zZm9ybWVkIHVwIHRvIGl0cyBwYXJlbnQsIG1ha2Ugc3VyZSBpdCBp
cyBub3QgY2xpcHBlZCBhd2F5IGluYXBwcm9wcmlhdGVseSBhbHNvLgpAQCAtMjQ3MSw3ICsyNDcx
LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIHRoaXMtPmVudGVyQ29udHJpYnV0aW5nU3VyZmFj
ZShzdXJmYWNlLCBvY2NsdXNpb24pOwogICAgICAgICAvLyBUaGUgc3VyZmFjZSdzIHBhcmVudCBk
b2VzIGhhdmUgYSBjbGlwUmVjdCBhcyBpdCBpcyB0aGUgcm9vdCBsYXllci4KLSAgICAgICAgRVhQ
RUNUX0lOVF9SRUNUX0VRKEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLT5yZW5kZXJTdXJmYWNl
KCksIGZhbHNlLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfSU5U
X1JFQ1RfRVEoSW50UmVjdCgwLCA1MCwgMTAwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KHN1cmZhY2UsIGZhbHNlLCBJbnRSZWN0KDAsIDAs
IDEwMCwgMTAwKSkpOwogICAgIH0KIH07CiAKQEAgLTI0OTcsNyArMjQ5Nyw3IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgICAgIC8vIFRoZSByb290IGxheWVyIGFsd2F5cyBoYXMgYSBjbGlwUmVjdC4g
U28gdGhlIHBhcmVudCBvZiB8c3VyZmFjZXwgaGFzIGEgY2xpcFJlY3QgZ2l2aW5nIHRoZSBzdXJm
YWNlIGl0c2VsZiBhIGNsaXBSZWN0LgogICAgICAgICAgICAgdGhpcy0+ZW50ZXJDb250cmlidXRp
bmdTdXJmYWNlKHN1cmZhY2UsIG9jY2x1c2lvbik7CiAgICAgICAgICAgICAvLyBNYWtlIHN1cmUg
dGhlIHBhcmVudCdzIGNsaXBSZWN0IGNsaXBzIHRoZSB1bm9jY2x1ZGVkIHJlZ2lvbiBvZiB0aGUg
Y2hpbGQgc3VyZmFjZS4KLSAgICAgICAgICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29u
dGVudFJlY3Qoc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAx
MDAsIDMwMCkpKTsKKyAgICAgICAgICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVu
dFJlY3Qoc3VyZmFjZSwgZmFsc2UsIEludFJlY3QoMCwgMCwgMTAwLCAzMDApKSk7CiAgICAgICAg
IH0KICAgICAgICAgdGhpcy0+cmVzZXRMYXllckl0ZXJhdG9yKCk7CiAgICAgICAgIHsKQEAgLTI1
MDksNyArMjUwOSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIC8vIFRoZSByb290IGxheWVy
IGFsd2F5cyBoYXMgYSBjbGlwUmVjdC4gU28gdGhlIHBhcmVudCBvZiB8c3VyZmFjZXwgaGFzIGEg
Y2xpcFJlY3QgZ2l2aW5nIHRoZSBzdXJmYWNlIGl0c2VsZiBhIGNsaXBSZWN0LgogICAgICAgICAg
ICAgdGhpcy0+ZW50ZXJDb250cmlidXRpbmdTdXJmYWNlKHN1cmZhY2UsIG9jY2x1c2lvbik7CiAg
ICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHNjcmVlbiBzY2lzc29yIHJlY3QgY2xpcHMgdGhl
IHVub2NjbHVkZWQgcmVnaW9uIG9mIHRoZSBjaGlsZCBzdXJmYWNlLgotICAgICAgICAgICAgRVhQ
RUNUX0lOVF9SRUNUX0VRKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLT5yZW5kZXJTdXJmYWNl
KCksIGZhbHNlLCBJbnRSZWN0KDAsIDAsIDEwMCwgMzAwKSkpOworICAgICAgICAgICAgRVhQRUNU
X0lOVF9SRUNUX0VRKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLCBmYWxzZSwgSW50UmVjdCgw
LCAwLCAxMDAsIDMwMCkpKTsKICAgICAgICAgfQogICAgIH0KIH07CkBAIC0yNTU0LDEzICsyNTU0
LDEzIEBAIHByb3RlY3RlZDoKIAogICAgICAgICB0aGlzLT5lbnRlckNvbnRyaWJ1dGluZ1N1cmZh
Y2Uoc3VyZmFjZUNoaWxkLCBvY2NsdXNpb24pOwogICAgICAgICAvLyBUaGUgc3VyZmFjZUNoaWxk
J3MgcGFyZW50IGRvZXMgbm90IGhhdmUgYSBjbGlwUmVjdCBhcyBpdCBvd25zIGEgcmVuZGVyIHN1
cmZhY2UuCi0gICAgICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KDAsIDUwLCA4MCwgNTAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJm
YWNlQ2hpbGQtPnJlbmRlclN1cmZhY2UoKSwgZmFsc2UsIEludFJlY3QoMCwgMCwgMTAwLCAxMDAp
KSk7CisgICAgICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KDAsIDUwLCA4MCwgNTApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNl
Q2hpbGQsIGZhbHNlLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwogICAgICAgICB0aGlzLT5s
ZWF2ZUNvbnRyaWJ1dGluZ1N1cmZhY2Uoc3VyZmFjZUNoaWxkLCBvY2NsdXNpb24pOwogCiAgICAg
ICAgIHRoaXMtPnZpc2l0TGF5ZXIoc3VyZmFjZSwgb2NjbHVzaW9uKTsKICAgICAgICAgdGhpcy0+
ZW50ZXJDb250cmlidXRpbmdTdXJmYWNlKHN1cmZhY2UsIG9jY2x1c2lvbik7CiAgICAgICAgIC8v
IFRoZSBzdXJmYWNlJ3MgcGFyZW50IGRvZXMgaGF2ZSBhIGNsaXBSZWN0IGFzIGl0IGlzIHRoZSBy
b290IGxheWVyLgotICAgICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCgwLCA1MCwgODAs
IDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3Qo
c3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkp
KTsKKyAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoMCwgNTAsIDgwLCA1MCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KHN1cmZhY2Us
IGZhbHNlLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwogICAgIH0KIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCmluZGV4IDYy
NGQyNDcxMTQ5YWIwNmM2ODgyZDhkNmJjOGI5OWM4ZjhlZjkyOWQuLjQ3Yjk0MDBlMWE4ODM2YTk1
YzRkODUxY2ViZDU5NmZiN2MzZmFlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcApAQCAtODAsMTEgKzgwLDEwIEBAIHN0YXRpYyBQ
YXNzT3duUHRyPENDVGlsZWRMYXllckltcGw+IG1ha2VMYXllcihDQ1RpbGVkTGF5ZXJJbXBsKiBw
YXJlbnQsIGNvbnN0IFdlCiAKICAgICBpZiAoIXBhcmVudCkgewogICAgICAgICBsYXllci0+Y3Jl
YXRlUmVuZGVyU3VyZmFjZSgpOwotICAgICAgICBsYXllci0+c2V0VGFyZ2V0UmVuZGVyU3VyZmFj
ZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKICAgICAgICAgc3VyZmFjZUxheWVyTGlzdC5hcHBl
bmQobGF5ZXIuZ2V0KCkpOwogICAgICAgICBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5sYXllckxp
c3QoKS5hcHBlbmQobGF5ZXIuZ2V0KCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGxheWVyLT5z
ZXRUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpKTsKKyAg
ICAgICAgbGF5ZXItPnNldFJlbmRlclRhcmdldChwYXJlbnQtPnJlbmRlclRhcmdldCgpKTsKICAg
ICAgICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPmxheWVyTGlzdCgpLmFwcGVuZChsYXllci5n
ZXQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcAppbmRleCAyZDE2MDNlNDg4NDI0YWVjNTc0OGVl
YjQ0N2QxOTYzNDI0OGEwMzU5Li4yNmZmZDkwNzljZmRhMzRhZTBiZGJmMGRhNGQxNTU0ZGJmZjU1
MTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXll
clRlc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxl
ZExheWVyVGVzdENvbW1vbi5jcHAKQEAgLTEyNSwxOCArMTI1LDE2IEBAIHZvaWQgRmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZVByaW9yaXRpZXMoY29uc3QgQ0NQcmlvcml0eUNhbGN1
bGF0b3ImIGNhCiB7CiAgICAgLy8gRW5zdXJlIHRoZXJlIGlzIGFsd2F5cyBhIHRhcmdldCByZW5k
ZXIgc3VyZmFjZSBhdmFpbGFibGUuIElmIG5vbmUgaGFzIGJlZW4KICAgICAvLyBzZXQgKHRoZSBs
YXllciBpcyBhbiBvcnBoYW4gZm9yIHRoZSB0ZXN0KSwgdGhlbiBqdXN0IHNldCBhIHN1cmZhY2Ug
b24gaXRzZWxmLgotICAgIGJvb2wgbWlzc2luZ1RhcmdldFJlbmRlclN1cmZhY2UgPSAhdGFyZ2V0
UmVuZGVyU3VyZmFjZSgpOworICAgIGJvb2wgbWlzc2luZ1RhcmdldFJlbmRlclN1cmZhY2UgPSAh
cmVuZGVyVGFyZ2V0KCk7CiAKLSAgICBpZiAobWlzc2luZ1RhcmdldFJlbmRlclN1cmZhY2UpIHsK
KyAgICBpZiAobWlzc2luZ1RhcmdldFJlbmRlclN1cmZhY2UpCiAgICAgICAgIGNyZWF0ZVJlbmRl
clN1cmZhY2UoKTsKLSAgICAgICAgc2V0VGFyZ2V0UmVuZGVyU3VyZmFjZShyZW5kZXJTdXJmYWNl
KCkpOwotICAgIH0KIAogICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZVByaW9yaXRp
ZXMoY2FsY3VsYXRvcik7CiAKICAgICBpZiAobWlzc2luZ1RhcmdldFJlbmRlclN1cmZhY2UpIHsK
ICAgICAgICAgY2xlYXJSZW5kZXJTdXJmYWNlKCk7Ci0gICAgICAgIHNldFRhcmdldFJlbmRlclN1
cmZhY2UoMCk7CisgICAgICAgIHNldFJlbmRlclRhcmdldCgwKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKaW5k
ZXggZmRhZTM3YzZhZGYxNjFiYTk4YWMxODc2NDM1NWZmNTBiMWM4Mjg4ZS4uYTc5NGEyODQ2YWFl
ZDNkMTk3YzNiOTI3MjhmNWFkNTVlMTkxZTg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTQ5OSw3ICs0OTksNyBAQCBU
RVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGNoZWNrUHJvcGVydHlDaGFuZ2VDYXVzZXNDb3JyZWN0
QmVoYXZpb3IpCiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJ
T1IoMCwgdGVzdExheWVyLT5zZXRJc05vbkNvbXBvc2l0ZWRDb250ZW50KHRydWUpKTsKICAgICBF
WEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigwLCB0ZXN0TGF5ZXIt
PnNldERyYXdPcGFjaXR5KDAuNWYpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURT
X0NPTU1JVF9CRUhBVklPUigwLCB0ZXN0TGF5ZXItPnNldENsaXBSZWN0KEludFJlY3QoMywgMywg
OCwgOCkpKTsKLSAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklP
UigwLCB0ZXN0TGF5ZXItPnNldFRhcmdldFJlbmRlclN1cmZhY2UoMCkpOworICAgIEVYRUNVVEVf
QU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDAsIHRlc3RMYXllci0+c2V0UmVu
ZGVyVGFyZ2V0KDApKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9C
RUhBVklPUigwLCB0ZXN0TGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFW
SU9SKDAsIHRlc3RMYXllci0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JF
SEFWSU9SKDAsIHRlc3RMYXllci0+c2V0RHJhd2FibGVDb250ZW50UmVjdChJbnRSZWN0KDQsIDUs
IDYsIDcpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152349</attachid>
            <date>2012-07-13 15:08:01 -0700</date>
            <delta_ts>2012-07-16 12:54:06 -0700</delta_ts>
            <desc>rm-surface-filters</desc>
            <filename>bug-91288-20120713180800.patch</filename>
            <type>text/plain</type>
            <size>11144</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggZTZiYTk4
YWQ4YzNlNjJhYjc2OGJiM2JiMmMzYWUwZjlkN2EyMGVjNC4uNmU2NjUwMjI4MTMyOTUwZDY3YWEz
Y2I1ODZjMGJjZDE1NDE5YmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMTI5LDEyICsxMjks
MTIgQEAgcHVibGljOgogICAgIGJvb2wgb3BhY2l0eUlzQW5pbWF0aW5nKCkgY29uc3Q7CiAKICAg
ICB2b2lkIHNldEZpbHRlcnMoY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJik7Ci0g
ICAgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKCkgeyByZXR1cm4g
bV9maWx0ZXJzOyB9CisgICAgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJzOyB9CiAKICAgICAvLyBCYWNrZ3JvdW5kIGZp
bHRlcnMgYXJlIGZpbHRlcnMgYXBwbGllZCB0byB3aGF0IGlzIGJlaGluZCB0aGlzIGxheWVyLCB3
aGVuIHRoZXkgYXJlIHZpZXdlZCB0aHJvdWdoIG5vbi1vcGFxdWUKICAgICAvLyByZWdpb25zIGlu
IHRoaXMgbGF5ZXIuIFRoZXkgYXJlIHVzZWQgdGhyb3VnaCB0aGUgV2ViTGF5ZXIgaW50ZXJmYWNl
LCBhbmQgYXJlIG5vdCBleHBvc2VkIHRvIEhUTUwuCiAgICAgdm9pZCBzZXRCYWNrZ3JvdW5kRmls
dGVycyhjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmKTsKLSAgICBjb25zdCBXZWJL
aXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzKCkgeyByZXR1cm4gbV9i
YWNrZ3JvdW5kRmlsdGVyczsgfQorICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9u
cyYgYmFja2dyb3VuZEZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRGaWx0ZXJz
OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpOwogICAgIGJvb2wgb3BhcXVl
KCkgY29uc3QgeyByZXR1cm4gbV9vcGFxdWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9t
aXVtLmgKaW5kZXggY2Q5ZGU4ZGE0ODU0OGJkMGE1YWQxYWVhYTMzZDBlNDI2MDQ2ODZmMy4uM2Qz
NDY5YzliZmRhZDBmYzVkNjQyMDA5OGRiM2RjOTlkYmE0NThiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVy
U3VyZmFjZUNocm9taXVtLmgKQEAgLTMxLDEzICszMSwxMSBAQAogCiAjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJP
cGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKIGNsYXNzIExheWVyQ2hyb21pdW07CiBjbGFzcyBMYXll
clJlbmRlcmVyQ2hyb21pdW07CiAKQEAgLTkwLDEyICs4OCw2IEBAIHB1YmxpYzoKICAgICBjb25z
dCBJbnRSZWN0JiBzY2lzc29yUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Npc3NvclJlY3Q7IH0K
ICAgICB2b2lkIHNldFNjaXNzb3JSZWN0KGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0KSB7IG1f
c2Npc3NvclJlY3QgPSBzY2lzc29yUmVjdDsgfQogCi0gICAgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0
IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgeyBtX2ZpbHRlcnMgPSBmaWx0
ZXJzOyB9Ci0gICAgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9maWx0ZXJzOyB9Ci0KLSAgICB2b2lkIHNldEJhY2tncm91bmRGaWx0
ZXJzKGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgeyBtX2JhY2tn
cm91bmRGaWx0ZXJzID0gZmlsdGVyczsgfQotICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3Bl
cmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRG
aWx0ZXJzOyB9Ci0KICAgICBib29sIHNraXBzRHJhdygpIGNvbnN0IHsgcmV0dXJuIG1fc2tpcHNE
cmF3OyB9CiAgICAgdm9pZCBzZXRTa2lwc0RyYXcoYm9vbCBza2lwc0RyYXcpIHsgbV9za2lwc0Ry
YXcgPSBza2lwc0RyYXc7IH0KIApAQCAtMTMxLDggKzEyMyw2IEBAIHByaXZhdGU6CiAgICAgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3JlcGxpY2FTY3JlZW5TcGFjZVRyYW5zZm9y
bTsKICAgICBib29sIG1fdGFyZ2V0U3VyZmFjZVRyYW5zZm9ybXNBcmVBbmltYXRpbmc7CiAgICAg
Ym9vbCBtX3NjcmVlblNwYWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGluZzsKLSAgICBXZWJLaXQ6Oldl
YkZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOwotICAgIFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0
aW9ucyBtX2JhY2tncm91bmRGaWx0ZXJzOwogCiAgICAgLy8gVXNlcyB0aGUgc3BhY2Ugb2YgdGhl
IHN1cmZhY2UncyB0YXJnZXQgc3VyZmFjZS4KICAgICBJbnRSZWN0IG1fY2xpcFJlY3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCAxYTQzNTllZGJkNDY5Nzc5YTA3ZjQwZmQ2
MDlkYTJlNzJmODNjN2E0Li4yZThkZDdkOTEyODgwZWNiNTgyM2U2NGViZjczMjUyOWJmN2YwZjdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTUzMSw3ICs1MzEsNyBAQCB2
b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJpb3JpdGl6ZVRleHR1cmVzKGNvbnN0IExheWVyTGlzdCYg
dXBkYXRlTGlzdCkKICAgICAgICAgc2l6ZV90IGJ5dGVzID0gQ0NUZXh0dXJlOjptZW1vcnlTaXpl
Qnl0ZXMocmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3QoKS5zaXplKCksIEdyYXBoaWNzQ29udGV4
dDNEOjpSR0JBKTsKICAgICAgICAgY29udGVudHNUZXh0dXJlQnl0ZXMgKz0gYnl0ZXM7CiAKLSAg
ICAgICAgaWYgKHJlbmRlclN1cmZhY2UtPmJhY2tncm91bmRGaWx0ZXJzKCkuaXNFbXB0eSgpKQor
ICAgICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5iYWNrZ3JvdW5kRmlsdGVycygpLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChieXRlcyA+IG1heEJh
Y2tncm91bmRUZXh0dXJlQnl0ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29t
bW9uLmNwcAppbmRleCAxOGQ0OGY5ZWUyODNhN2FmYWFjYjE4NjM0NzJmNTMxMzMwZjk0NDMxLi5j
NzVkNTQ4ZjhkNGM4ZWEwNmIxY2U4NjcyNDE3ZjMxZjBlMjRlZjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKQEAgLTYxOCwxMyArNjE4LDEwIEBAIHN0YXRp
YyBib29sIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zSW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwg
TGF5ZXJUeXBlKiByb290TGF5CiAgICAgICAgIGlmIChsYXllci0+cmVwbGljYUxheWVyKCkgJiYg
bGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKSkKICAgICAgICAgICAgIGxheWVyLT5y
ZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCktPnNldFJlbmRlclRhcmdldChsYXllcik7CiAKLSAg
ICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0RmlsdGVycyhsYXllci0+ZmlsdGVycygpKTsKLSAgICAg
ICAgaWYgKHJlbmRlclN1cmZhY2UtPmZpbHRlcnMoKS5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMo
KSkKKyAgICAgICAgaWYgKGxheWVyLT5maWx0ZXJzKCkuaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxz
KCkpCiAgICAgICAgICAgICBuZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMgPSByZW5kZXJT
dXJmYWNlOwogICAgICAgICByZW5kZXJTdXJmYWNlLT5zZXROZWFyZXN0QW5jZXN0b3JUaGF0TW92
ZXNQaXhlbHMobmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzKTsKIAotICAgICAgICByZW5k
ZXJTdXJmYWNlLT5zZXRCYWNrZ3JvdW5kRmlsdGVycyhsYXllci0+YmFja2dyb3VuZEZpbHRlcnMo
KSk7Ci0KICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQobGF5ZXIpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKGNvbWJpbmVkVHJhbnNm
b3JtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCmluZGV4IGM3NWJmMTAx
Y2JjNTFiYzRhZTJkNDI1YzI5NzA5ZjYyNmVkNzExYzIuLmFiY2U2NTI1MzFlMmIzYzg3MzI2MDYw
YjdmMTBkYjk5NmJiMDc0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNw
cApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5
cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6ZmluaXNoZWRSZW5kZXJUYXJnZXQoCiAgICAgUmVuZGVy
U3VyZmFjZVR5cGUqIHN1cmZhY2UgPSBmaW5pc2hlZFRhcmdldC0+cmVuZGVyU3VyZmFjZSgpOwog
CiAgICAgLy8gSWYgdGhlIG9jY2x1c2lvbiB3aXRoaW4gdGhlIHN1cmZhY2UgY2FuIG5vdCBiZSBh
cHBsaWVkIHRvIHRoaW5ncyBvdXRzaWRlIG9mIHRoZSBzdXJmYWNlJ3Mgc3VidHJlZSwgdGhlbiBj
bGVhciB0aGUgb2NjbHVzaW9uIGhlcmUgc28gaXQgd29uJ3QgYmUgdXNlZC4KLSAgICBpZiAoZmlu
aXNoZWRUYXJnZXQtPm1hc2tMYXllcigpIHx8ICFzdXJmYWNlT3BhY2l0eUtub3duKHN1cmZhY2Up
IHx8IHN1cmZhY2UtPmRyYXdPcGFjaXR5KCkgPCAxIHx8IHN1cmZhY2UtPmZpbHRlcnMoKS5oYXNG
aWx0ZXJUaGF0QWZmZWN0c09wYWNpdHkoKSkgeworICAgIGlmIChmaW5pc2hlZFRhcmdldC0+bWFz
a0xheWVyKCkgfHwgIXN1cmZhY2VPcGFjaXR5S25vd24oc3VyZmFjZSkgfHwgc3VyZmFjZS0+ZHJh
d09wYWNpdHkoKSA8IDEgfHwgZmluaXNoZWRUYXJnZXQtPmZpbHRlcnMoKS5oYXNGaWx0ZXJUaGF0
QWZmZWN0c09wYWNpdHkoKSkgewogICAgICAgICBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNj
cmVlbiA9IFJlZ2lvbigpOwogICAgICAgICBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdl
dCA9IFJlZ2lvbigpOwogICAgIH0gZWxzZSB7CkBAIC0yMDksNyArMjA5LDcgQEAgc3RhdGljIHZv
aWQgcmVkdWNlT2NjbHVzaW9uQmVsb3dTdXJmYWNlKExheWVyVHlwZSogY29udHJpYnV0aW5nTGF5
ZXIsIGNvbnN0IEludFIKICAgICAgICAgYm91bmRzSW5UYXJnZXQuaW50ZXJzZWN0KGNvbnRyaWJ1
dGluZ0xheWVyLT5yZW5kZXJTdXJmYWNlKCktPmNsaXBSZWN0KCkpOwogCiAgICAgaW50IG91dHNl
dFRvcCwgb3V0c2V0UmlnaHQsIG91dHNldEJvdHRvbSwgb3V0c2V0TGVmdDsKLSAgICBjb250cmli
dXRpbmdMYXllci0+cmVuZGVyU3VyZmFjZSgpLT5iYWNrZ3JvdW5kRmlsdGVycygpLmdldE91dHNl
dHMob3V0c2V0VG9wLCBvdXRzZXRSaWdodCwgb3V0c2V0Qm90dG9tLCBvdXRzZXRMZWZ0KTsKKyAg
ICBjb250cmlidXRpbmdMYXllci0+YmFja2dyb3VuZEZpbHRlcnMoKS5nZXRPdXRzZXRzKG91dHNl
dFRvcCwgb3V0c2V0UmlnaHQsIG91dHNldEJvdHRvbSwgb3V0c2V0TGVmdCk7CiAKICAgICAvLyBU
aGUgZmlsdGVyIGNhbiBtb3ZlIHBpeGVscyBmcm9tIG91dHNpZGUgb2YgdGhlIGNsaXAsIHNvIGFs
bG93IGFmZmVjdGVkQXJlYSB0byBleHBhbmQgb3V0c2lkZSB0aGUgY2xpcC4KICAgICBib3VuZHNJ
blRhcmdldC5tb3ZlKC1vdXRzZXRMZWZ0LCAtb3V0c2V0VG9wKTsKQEAgLTI0MSw3ICsyNDEsNyBA
QCB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlw
ZT46OmxlYXZlVG9SZW5kZXJUYXJnZXQoYwogCiAgICAgSW50UmVjdCB1bm9jY2x1ZGVkU3VyZmFj
ZVJlY3Q7CiAgICAgSW50UmVjdCB1bm9jY2x1ZGVkUmVwbGljYVJlY3Q7Ci0gICAgaWYgKG9sZFN1
cmZhY2UtPmJhY2tncm91bmRGaWx0ZXJzKCkuaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkpIHsK
KyAgICBpZiAob2xkVGFyZ2V0LT5iYWNrZ3JvdW5kRmlsdGVycygpLmhhc0ZpbHRlclRoYXRNb3Zl
c1BpeGVscygpKSB7CiAgICAgICAgIHVub2NjbHVkZWRTdXJmYWNlUmVjdCA9IHVub2NjbHVkZWRD
b250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3Qob2xkVGFyZ2V0LCBmYWxzZSwgb2xkU3VyZmFj
ZS0+Y29udGVudFJlY3QoKSk7CiAgICAgICAgIGlmIChvbGRTdXJmYWNlLT5oYXNSZXBsaWNhKCkp
CiAgICAgICAgICAgICB1bm9jY2x1ZGVkUmVwbGljYVJlY3QgPSB1bm9jY2x1ZGVkQ29udHJpYnV0
aW5nU3VyZmFjZUNvbnRlbnRSZWN0KG9sZFRhcmdldCwgdHJ1ZSwgb2xkU3VyZmFjZS0+Y29udGVu
dFJlY3QoKSk7CkBAIC0yNTgsNyArMjU4LDcgQEAgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNl
PExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpsZWF2ZVRvUmVuZGVyVGFyZ2V0KGMKICAg
ICAgICAgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQgPSBvbGRUYXJnZXRPY2NsdXNp
b25Jbk5ld1RhcmdldDsKICAgICB9CiAKLSAgICBpZiAob2xkU3VyZmFjZS0+YmFja2dyb3VuZEZp
bHRlcnMoKS5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKSkgeworICAgIGlmIChvbGRUYXJnZXQt
PmJhY2tncm91bmRGaWx0ZXJzKCkuaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkpIHsKICAgICAg
ICAgcmVkdWNlT2NjbHVzaW9uQmVsb3dTdXJmYWNlKG9sZFRhcmdldCwgdW5vY2NsdWRlZFN1cmZh
Y2VSZWN0LCBvbGRTdXJmYWNlLT5vcmlnaW5UcmFuc2Zvcm0oKSwgbmV3VGFyZ2V0LCBtX3N0YWNr
Lmxhc3QoKS5vY2NsdXNpb25JblRhcmdldCwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3Jl
ZW4pOwogICAgICAgICBpZiAob2xkU3VyZmFjZS0+aGFzUmVwbGljYSgpKQogICAgICAgICAgICAg
cmVkdWNlT2NjbHVzaW9uQmVsb3dTdXJmYWNlKG9sZFRhcmdldCwgdW5vY2NsdWRlZFJlcGxpY2FS
ZWN0LCBvbGRTdXJmYWNlLT5yZXBsaWNhT3JpZ2luVHJhbnNmb3JtKCksIG5ld1RhcmdldCwgbV9z
dGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQsIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbklu
U2NyZWVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCmluZGV4IDJjOTM3MTg3MjIy
MWI0YzM1YWQ5OGQyYWY0NDBlY2Q3MmJkODFmN2UuLjE5ZjJmOGQzNzAzZGJlNWU0ODJkZjk2NWQy
YTkwY2Y4ZTI2NTk3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcApAQCAtMjI3
LDcgKzIyNywxMCBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3Vs
bGVyJiBxdWFkTGlzdCwgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYQogICAgIFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4IGRyYXdUcmFuc2Zvcm0gPSBmb3JSZXBsaWNhID8gbV9yZXBsaWNhRHJhd1RyYW5z
Zm9ybSA6IG1fZHJhd1RyYW5zZm9ybTsKICAgICBJbnRSZWN0IGNvbnRlbnRzQ2hhbmdlZFNpbmNl
TGFzdEZyYW1lID0gY29udGVudHNDaGFuZ2VkKCkgPyBtX2NvbnRlbnRSZWN0IDogSW50UmVjdCgp
OwogCi0gICAgcXVhZExpc3QuYXBwZW5kU3VyZmFjZShDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3Jl
YXRlKHNoYXJlZFF1YWRTdGF0ZSwgY29udGVudFJlY3QoKSwgcmVuZGVyUGFzc0lkLCBmb3JSZXBs
aWNhLCBkcmF3VHJhbnNmb3JtLCBmaWx0ZXJzKCksIGJhY2tncm91bmRGaWx0ZXJzKCksIG1hc2tU
ZXh0dXJlSWQsIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKSk7CisgICAgY29uc3QgV2Vi
S2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzID0gbV9vd25pbmdMYXllci0+ZmlsdGVy
cygpOworICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZp
bHRlcnMgPSBtX293bmluZ0xheWVyLT5iYWNrZ3JvdW5kRmlsdGVycygpOworCisgICAgcXVhZExp
c3QuYXBwZW5kU3VyZmFjZShDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRT
dGF0ZSwgY29udGVudFJlY3QoKSwgcmVuZGVyUGFzc0lkLCBmb3JSZXBsaWNhLCBkcmF3VHJhbnNm
b3JtLCBmaWx0ZXJzLCBiYWNrZ3JvdW5kRmlsdGVycywgbWFza1RleHR1cmVJZCwgY29udGVudHND
aGFuZ2VkU2luY2VMYXN0RnJhbWUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2Uu
aAppbmRleCA3OTA4ZTg0MWFjMzU4NWMwNDZmZGM0ZmVkOTBiNTQ2MWMyYzYxMzQ2Li42NzQ3YWNl
NThjNGQyNTlkMTdkNTcwODE2YWJjOTJjZGUyN2MxZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1
cmZhY2UuaApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1
ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIgotI2luY2x1
ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlRy
YW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC02MywxMiArNjIsNiBAQCBwdWJsaWM6CiAg
ICAgZmxvYXQgZHJhd09wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2RyYXdPcGFjaXR5OyB9CiAg
ICAgdm9pZCBzZXREcmF3T3BhY2l0eShmbG9hdCBvcGFjaXR5KSB7IG1fZHJhd09wYWNpdHkgPSBv
cGFjaXR5OyB9CiAKLSAgICB2b2lkIHNldEZpbHRlcnMoY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJP
cGVyYXRpb25zJiBmaWx0ZXJzKSB7IG1fZmlsdGVycyA9IGZpbHRlcnM7IH0KLSAgICBjb25zdCBX
ZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2Zp
bHRlcnM7IH0KLQotICAgIHZvaWQgc2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgV2ViS2l0OjpX
ZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSB7IG1fYmFja2dyb3VuZEZpbHRlcnMgPSBmaWx0
ZXJzOyB9Ci0gICAgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5k
RmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZEZpbHRlcnM7IH0KLQogICAgIHZv
aWQgc2V0TmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzKENDUmVuZGVyU3VyZmFjZSogc3Vy
ZmFjZSkgeyBtX25lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVscyA9IHN1cmZhY2U7IH0KICAg
ICBjb25zdCBDQ1JlbmRlclN1cmZhY2UqIG5lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVscygp
IGNvbnN0IHsgcmV0dXJuIG1fbmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzOyB9CiAKQEAg
LTE1MCw4ICsxNDMsNiBAQCBwcml2YXRlOgogICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggbV9yZXBsaWNhU2NyZWVuU3BhY2VUcmFuc2Zvcm07CiAgICAgYm9vbCBtX3RhcmdldFN1
cmZhY2VUcmFuc2Zvcm1zQXJlQW5pbWF0aW5nOwogICAgIGJvb2wgbV9zY3JlZW5TcGFjZVRyYW5z
Zm9ybXNBcmVBbmltYXRpbmc7Ci0gICAgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zIG1fZmls
dGVyczsKLSAgICBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMgbV9iYWNrZ3JvdW5kRmlsdGVy
czsKIAogICAgIC8vIFVzZXMgdGhlIHNwYWNlIG9mIHRoZSBzdXJmYWNlJ3MgdGFyZ2V0IHN1cmZh
Y2UuCiAgICAgSW50UmVjdCBtX2NsaXBSZWN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152592</attachid>
            <date>2012-07-16 12:54:10 -0700</date>
            <delta_ts>2012-07-16 13:39:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91288-20120716155409.patch</filename>
            <type>text/plain</type>
            <size>86860</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRlNGU2NTFkYjA0NGZk
OWJjYjViNjMwNTZkODgzMjlhYjQ0YTU3MS4uYzU4OGRlNmVhOTVhNzFlOTljYjRjOGExMzA5Mjc3
MGUwNDMwODdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTA3LTE2ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVt
b3ZlIHRhcmdldFJlbmRlclN1cmZhY2UgY29uY2VwdCwgZ2l2ZSBsYXllcnMgYSByZW5kZXJUYXJn
ZXQgd2hpY2ggaXMgdGhlIGxheWVyIHdob3NlIGNvb3JkaW5hdGUgc3BhY2UgdGhleSBkcmF3IGlu
dG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjg4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWx3YXlz
IHVzZSBwb2ludGVycyB0byBsYXllcnMgd2hlbiBkaXNjdXNzaW5nIHJlbmRlciB0YXJnZXRzIGlu
c3RlYWQgb2YKKyAgICAgICAgcG9pbnRpbmcgZGlyZWN0bHkgdG8gYSBSZW5kZXJTdXJmYWNlLgor
CisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlUmVuZGVyU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bTo6cmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnNl
dFJlbmRlclRhcmdldCk6CisgICAgICAgIChMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6c2V0VGV4
dHVyZVByaW9yaXRpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21p
dW06OnNldFRleHR1cmVQcmlvcml0aWVzSW5SZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVySW1wbDo6Q0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OmNy
ZWF0ZVJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OmR1bXBM
YXllclByb3BlcnRpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6cmVuZGVyVGFy
Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRSZW5kZXJUYXJnZXQpOgor
ICAgICAgICAoQ0NMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxj
dWxhdGVMYXllclNjaXNzb3JSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZVN1cmZh
Y2VTY2lzc29yUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVWaXNpYmxlQ29udGVu
dFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVNjcm9sbENvbXBlbnNhdGlvbkZvclRo
aXNMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0ludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50SXNDbGlwcGVkQnlTdXJmYWNlT3JDbGlwUmVj
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25U
cmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6ZW50ZXJMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjo6OmxlYXZlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6OjplbnRlclJlbmRlclRh
cmdldCk6CisgICAgICAgIChXZWJDb3JlOjo6OmZpbmlzaGVkUmVuZGVyVGFyZ2V0KToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cmVkdWNlT2NjbHVzaW9uQmVsb3dTdXJm
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6bGVhdmVUb1JlbmRlclRhcmdldCk6CisgICAgICAg
IChXZWJDb3JlOjo6Om1hcmtPY2NsdWRlZEJlaGluZExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ojo6b2NjbHVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Ojp1bm9jY2x1ZGVkQ29udGVudFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Ojp1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRl
bnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ojo6bGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3Vy
ZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNp
b25UcmFja2VyLmg6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJCYXNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlckJhc2U6OlN0YWNrT2JqZWN0OjpTdGFja09iamVj
dCk6CisgICAgICAgIChTdGFja09iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUXVhZEN1
bGxlcjo6YXBwZW5kU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaDoKKyAgICAgICAgKENDUmVuZGVyU3VyZmFjZSk6
CisKIDIwMTItMDctMTYgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZC4gUmVtb3ZlIHVubmVjZXNzYXJ5IGV4ZWN1dGFibGUgYml0cyBhZnRl
ciByMTIyNzIwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBjYTAwNDkxNjhkZGU2NTVk
ZjhkZDkwNzJmZDBmZGYxMTVlYWJhMGU4Li43ZjQwZTRmNmExYTA5NzUwY2Q5MGQ4NTk4ZTYxMmY0
MzRkYmZmMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisy
MDEyLTA3LTE2ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFtjaHJvbWl1bV0gUmVtb3ZlIHRhcmdldFJlbmRlclN1cmZhY2UgY29uY2VwdCwgZ2l2ZSBsYXll
cnMgYSByZW5kZXJUYXJnZXQgd2hpY2ggaXMgdGhlIGxheWVyIHdob3NlIGNvb3JkaW5hdGUgc3Bh
Y2UgdGhleSBkcmF3IGludG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkxMjg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB0ZXN0cy9DQ0RhbWFnZVRyYWNrZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktp
dFRlc3RzOjpURVNUX0YpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RD
b21tb25UZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNw
cDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3ZlcmxhcHBp
bmdTdXJmYWNlU2libGluZ3M6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NP
Y2NsdXNpb25UcmFja2VyVGVzdE92ZXJsYXBwaW5nU3VyZmFjZVNpYmxpbmdzV2l0aFR3b1RyYW5z
Zm9ybXM6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFj
a2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkxT25NYWluVGhyZWFkOjpydW5NeVRlc3QpOgorICAgICAg
ICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25PcGFjaXR5ME9u
TWFpblRocmVhZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lv
blRyYWNrZXJUZXN0QW5pbWF0aW9uVHJhbnNsYXRlT25NYWluVGhyZWFkOjpydW5NeVRlc3QpOgor
ICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RSZXBsaWNhT2NjbHVk
ZWQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2Vy
VGVzdFN1cmZhY2VXaXRoUmVwbGljYVVub2NjbHVkZWQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChX
ZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFN1cmZhY2VBbmRSZXBsaWNhT2NjbHVk
ZWREaWZmZXJlbnRseTo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1
c2lvblRyYWNrZXJUZXN0U3VyZmFjZUNoaWxkT2ZTdXJmYWNlOjpydW5NeVRlc3QpOgorICAgICAg
ICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RUb3Btb3N0U3VyZmFjZUlzQ2xp
cHBlZFRvU2Npc3Nvcjo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1
c2lvblRyYWNrZXJUZXN0U3VyZmFjZUNoaWxkT2ZDbGlwcGluZ1N1cmZhY2U6OnJ1bk15VGVzdCk6
CisgICAgICAgICogdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMv
Q0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZVRp
bGVkTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZVByaW9yaXRpZXMpOgorICAgICAgICAqIHRlc3Rz
L0xheWVyQ2hyb21pdW1UZXN0LmNwcDoKKwogMjAxMi0wNy0xMyAgRXJpYyBQZW5uZXIgIDxlcGVu
bmVyQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgJ3NlbGYtbWFuYWdlZCcg
b3B0aW9uIHRvIENDUHJpb3JpdGl6ZWRUZXh0dXJlIHRvIGVuYWJsZSByZW5kZXItc3VyZmFjZSBh
bmQgY2FudmFzIHVzZSBjYXNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNGFlOGRiMzlj
NTQ3OGExOWIxOWI0ZDdlNjFiYzQ2YzMzYmI5ZjE0YS4uMDMyMDNiZjFjY2Q2MDMyNDY4MzlhYjJj
N2MyYmE4ZTA3NWJiNmRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTg3LDcgKzg3LDcg
QEAgTGF5ZXJDaHJvbWl1bTo6TGF5ZXJDaHJvbWl1bSgpCiAgICAgLCBtX3JlcGxpY2FMYXllcigw
KQogICAgICwgbV9kcmF3T3BhY2l0eSgwKQogICAgICwgbV9kcmF3T3BhY2l0eUlzQW5pbWF0aW5n
KGZhbHNlKQotICAgICwgbV90YXJnZXRSZW5kZXJTdXJmYWNlKDApCisgICAgLCBtX3JlbmRlclRh
cmdldCgwKQogICAgICwgbV9kcmF3VHJhbnNmb3JtSXNBbmltYXRpbmcoZmFsc2UpCiAgICAgLCBt
X3NjcmVlblNwYWNlVHJhbnNmb3JtSXNBbmltYXRpbmcoZmFsc2UpCiAgICAgLCBtX2NvbnRlbnRz
U2NhbGUoMS4wKQpAQCAtNjI5LDcgKzYyOSw3IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
UmVuZGVyU3VyZmFjZSgpCiB7CiAgICAgQVNTRVJUKCFtX3JlbmRlclN1cmZhY2UpOwogICAgIG1f
cmVuZGVyU3VyZmFjZSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJTdXJmYWNlQ2hyb21pdW0odGhpcykp
OwotICAgIHNldFRhcmdldFJlbmRlclN1cmZhY2UobV9yZW5kZXJTdXJmYWNlLmdldCgpKTsKKyAg
ICBzZXRSZW5kZXJUYXJnZXQodGhpcyk7CiB9CiAKIGJvb2wgTGF5ZXJDaHJvbWl1bTo6ZGVzY2Vu
ZGFudERyYXdzQ29udGVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggNDA2NjhmNTU2NzM3Zjhj
NDkyN2FjZTI2NmU5YzcxYjAzNmY3MDhjNy4uZTZiYTk4YWQ4YzNlNjJhYjc2OGJiM2JiMmMzYWUw
ZjlkN2EyMGVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMjM0LDggKzIzNCw4IEBAIHB1Ymxp
YzoKIAogICAgIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jbGlw
UmVjdDsgfQogICAgIHZvaWQgc2V0Q2xpcFJlY3QoY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpIHsg
bV9jbGlwUmVjdCA9IGNsaXBSZWN0OyB9Ci0gICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiB0YXJn
ZXRSZW5kZXJTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRSZW5kZXJTdXJmYWNlOyB9
Ci0gICAgdm9pZCBzZXRUYXJnZXRSZW5kZXJTdXJmYWNlKFJlbmRlclN1cmZhY2VDaHJvbWl1bSog
c3VyZmFjZSkgeyBtX3RhcmdldFJlbmRlclN1cmZhY2UgPSBzdXJmYWNlOyB9CisgICAgTGF5ZXJD
aHJvbWl1bSogcmVuZGVyVGFyZ2V0KCkgY29uc3QgeyBBU1NFUlQoIW1fcmVuZGVyVGFyZ2V0IHx8
IG1fcmVuZGVyVGFyZ2V0LT5yZW5kZXJTdXJmYWNlKCkpOyByZXR1cm4gbV9yZW5kZXJUYXJnZXQ7
IH0KKyAgICB2b2lkIHNldFJlbmRlclRhcmdldChMYXllckNocm9taXVtKiB0YXJnZXQpIHsgbV9y
ZW5kZXJUYXJnZXQgPSB0YXJnZXQ7IH0KIAogICAgIGJvb2wgZHJhd1RyYW5zZm9ybUlzQW5pbWF0
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3VHJhbnNmb3JtSXNBbmltYXRpbmc7IH0KICAgICB2
b2lkIHNldERyYXdUcmFuc2Zvcm1Jc0FuaW1hdGluZyhib29sIGFuaW1hdGluZykgeyBtX2RyYXdU
cmFuc2Zvcm1Jc0FuaW1hdGluZyA9IGFuaW1hdGluZzsgfQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBEdXJpbmcgZHJhd2luZywgaWRlbnRpZmllcyB0aGUgcmVnaW9uIG91
dHNpZGUgb2Ygd2hpY2ggbm90aGluZyBzaG91bGQgYmUgZHJhd24uCiAgICAgLy8gQ3VycmVudGx5
IHRoaXMgaXMgc2V0IHRvIGxheWVyJ3MgY2xpcFJlY3QgaWYgdXNlc0xheWVyQ2xpcHBpbmcgaXMg
dHJ1ZSwgb3RoZXJ3aXNlCi0gICAgLy8gaXQncyB0YXJnZXRSZW5kZXJTdXJmYWNlJ3MgY29udGVu
dFJlY3QuCisgICAgLy8gaXQncyByZW5kZXJUYXJnZXQncyBSZW5kZXJTdXJmYWNlIGNvbnRlbnRS
ZWN0LgogICAgIC8vIFVzZXMgdGFyZ2V0IHN1cmZhY2UncyBzcGFjZS4KICAgICBJbnRSZWN0IG1f
c2Npc3NvclJlY3Q7CiAgICAgSW50UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKQEAgLTM5NSw3ICsz
OTUsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gVXNlcyB0YXJnZXQgc3VyZmFjZSBzcGFjZS4KICAg
ICBJbnRSZWN0IG1fY2xpcFJlY3Q7Ci0gICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiBtX3Rhcmdl
dFJlbmRlclN1cmZhY2U7CisgICAgTGF5ZXJDaHJvbWl1bSogbV9yZW5kZXJUYXJnZXQ7CiAgICAg
V2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2RyYXdUcmFuc2Zvcm07CiAgICAgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3NjcmVlblNwYWNlVHJhbnNmb3JtOwogICAg
IGJvb2wgbV9kcmF3VHJhbnNmb3JtSXNBbmltYXRpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFj
ZUNocm9taXVtLmNwcAppbmRleCBmYjJkZDhiYzY3NmUzNmI2YmVhZWVjNDllODEzZDg4ZjUyYWZh
YzNlLi4wYmI5ZDliMDU5ZjNiNWRhNjg2ZDU1M2JiNzU4ZTkyNDRhNTAzODRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNl
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAKQEAgLTY1LDE0ICs2NSw2IEBAIEZsb2F0UmVj
dCBSZW5kZXJTdXJmYWNlQ2hyb21pdW06OmRyYXdhYmxlQ29udGVudFJlY3QoKSBjb25zdAogICAg
IHJldHVybiBkcmF3YWJsZUNvbnRlbnRSZWN0OwogfQogCi1SZW5kZXJTdXJmYWNlQ2hyb21pdW0q
IFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6dGFyZ2V0UmVuZGVyU3VyZmFjZSgpIGNvbnN0Ci17Ci0g
ICAgTGF5ZXJDaHJvbWl1bSogcGFyZW50ID0gbV9vd25pbmdMYXllci0+cGFyZW50KCk7Ci0gICAg
aWYgKCFwYXJlbnQpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBwYXJlbnQtPnRhcmdl
dFJlbmRlclN1cmZhY2UoKTsKLX0KLQogYm9vbCBSZW5kZXJTdXJmYWNlQ2hyb21pdW06Omhhc1Jl
cGxpY2EoKSBjb25zdAogewogICAgIHJldHVybiBtX293bmluZ0xheWVyLT5yZXBsaWNhTGF5ZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKaW5kZXggMmI2MDhmNGU3MjcyN2Uz
YTEwOGQxZTY5NjRkZTYzOTQwOTZkMjk3ZC4uY2Q5ZGU4ZGE0ODU0OGJkMGE1YWQxYWVhYTMzZDBl
NDI2MDQ2ODZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKQEAgLTEwNyw4
ICsxMDcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQ
aXhlbHMoUmVuZGVyU3VyZmFjZUNocm9taXVtKiBzdXJmYWNlKSB7IG1fbmVhcmVzdEFuY2VzdG9y
VGhhdE1vdmVzUGl4ZWxzID0gc3VyZmFjZTsgfQogICAgIGNvbnN0IFJlbmRlclN1cmZhY2VDaHJv
bWl1bSogbmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gbV9u
ZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHM7IH0KIAotICAgIFJlbmRlclN1cmZhY2VDaHJv
bWl1bSogdGFyZ2V0UmVuZGVyU3VyZmFjZSgpIGNvbnN0OwotCiAgICAgYm9vbCBoYXNSZXBsaWNh
KCkgY29uc3Q7CiAKICAgICBib29sIGhhc01hc2soKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNTZjOTZhNzRhMGJiNmM1MTU5NTczODQ4NDk4YWFj
N2VlNTdkNTljNS4uZTAwYTI2ZTM5ZjlmYzc5MjJjNzNjZWIxNDk3MjUwYTY4YmIwYmQ1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTI1OCwxOSArMjU4LDE5
IEBAIHZvaWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZVByaW9yaXRpZXMoY29u
c3QgQ0NQcmlvcml0eUNhbGN1bGF0b3ImKQogCiAgICAgY3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5l
ZWRlZCgpOwogCi0gICAgYm9vbCBkcmF3c1RvUm9vdFN1cmZhY2UgPSAhdGFyZ2V0UmVuZGVyU3Vy
ZmFjZSgpLT50YXJnZXRSZW5kZXJTdXJmYWNlKCk7CisgICAgYm9vbCBkcmF3c1RvUm9vdCA9ICFy
ZW5kZXJUYXJnZXQoKS0+cGFyZW50KCk7CiAgICAgaWYgKG1fYmFja1RyYWNrKSB7CiAgICAgICAg
IG1fYmFja1RyYWNrLT50ZXh0dXJlKCktPnNldERpbWVuc2lvbnMoY29udGVudEJvdW5kcygpLCBt
X3RleHR1cmVGb3JtYXQpOwotICAgICAgICBtX2JhY2tUcmFjay0+dGV4dHVyZSgpLT5zZXRSZXF1
ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnVpUHJpb3JpdHkoZHJhd3NUb1Jvb3RT
dXJmYWNlKSk7CisgICAgICAgIG1fYmFja1RyYWNrLT50ZXh0dXJlKCktPnNldFJlcXVlc3RQcmlv
cml0eShDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6dWlQcmlvcml0eShkcmF3c1RvUm9vdCkpOwogICAg
IH0KICAgICBpZiAobV9mb3JlVHJhY2spIHsKICAgICAgICAgbV9mb3JlVHJhY2stPnRleHR1cmUo
KS0+c2V0RGltZW5zaW9ucyhjb250ZW50Qm91bmRzKCksIG1fdGV4dHVyZUZvcm1hdCk7Ci0gICAg
ICAgIG1fZm9yZVRyYWNrLT50ZXh0dXJlKCktPnNldFJlcXVlc3RQcmlvcml0eShDQ1ByaW9yaXR5
Q2FsY3VsYXRvcjo6dWlQcmlvcml0eShkcmF3c1RvUm9vdFN1cmZhY2UpKTsKKyAgICAgICAgbV9m
b3JlVHJhY2stPnRleHR1cmUoKS0+c2V0UmVxdWVzdFByaW9yaXR5KENDUHJpb3JpdHlDYWxjdWxh
dG9yOjp1aVByaW9yaXR5KGRyYXdzVG9Sb290KSk7CiAgICAgfQogICAgIGlmIChtX3RodW1iKSB7
CiAgICAgICAgIEludFNpemUgdGh1bWJTaXplID0gdGhlbWUoKS0+dGh1bWJSZWN0KG1fc2Nyb2xs
YmFyLmdldCgpKS5zaXplKCk7CiAgICAgICAgIG1fdGh1bWItPnRleHR1cmUoKS0+c2V0RGltZW5z
aW9ucyh0aHVtYlNpemUsIG1fdGV4dHVyZUZvcm1hdCk7Ci0gICAgICAgIG1fdGh1bWItPnRleHR1
cmUoKS0+c2V0UmVxdWVzdFByaW9yaXR5KENDUHJpb3JpdHlDYWxjdWxhdG9yOjp1aVByaW9yaXR5
KGRyYXdzVG9Sb290U3VyZmFjZSkpOworICAgICAgICBtX3RodW1iLT50ZXh0dXJlKCktPnNldFJl
cXVlc3RQcmlvcml0eShDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6dWlQcmlvcml0eShkcmF3c1RvUm9v
dCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZDA4
NWM5ZGQxNWE4ZTE0ODYwMTBmZDkyZTY1ZTFmZTA4NTE0YTQwZC4uZWVkNWNmYzlhY2UxNjlmNTUx
NTI4NzZhMTRlNzRkYzY0MjFhNjFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
CkBAIC01MjUsNyArNTI1LDcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnNldFRleHR1cmVQ
cmlvcml0aWVzSW5SZWN0KGNvbnN0IENDUHJpb3JpdHlDYWxjdWxhdG9yJgogICAgIHJlc2V0VXBk
YXRlU3RhdGUoKTsKIAogICAgIEludFJlY3QgcHJlcGFpbnRSZWN0ID0gaWRsZVBhaW50UmVjdCh2
aXNpYmxlQ29udGVudFJlY3QpOwotICAgIGJvb2wgZHJhd3NUb1Jvb3RTdXJmYWNlID0gIXRhcmdl
dFJlbmRlclN1cmZhY2UoKS0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpOworICAgIGJvb2wgZHJhd3NU
b1Jvb3QgPSAhcmVuZGVyVGFyZ2V0KCktPnBhcmVudCgpOwogCiAgICAgLy8gTWluaW1hbGx5IGNy
ZWF0ZSB0aGUgdGlsZXMgaW4gdGhlIGRlc2lyZWQgcHJlLXBhaW50IHJlY3QuCiAgICAgaWYgKCFw
cmVwYWludFJlY3QuaXNFbXB0eSgpKSB7CkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OnNldFRleHR1cmVQcmlvcml0aWVzSW5SZWN0KGNvbnN0IENDUHJpb3JpdHlD
YWxjdWxhdG9yJgogCiAgICAgICAgICAgICAgICAgdGlsZS0+ZGlydHlSZWN0ID0gbV90aWxlci0+
dGlsZVJlY3QodGlsZSk7CiAgICAgICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSogYmFja0J1ZmZlciA9IHRpbGUtPnRleHR1cmUoKTsKLSAgICAgICAgICAgICAgICBiYWNr
QnVmZmVyLT50ZXh0dXJlKCktPnNldFJlcXVlc3RQcmlvcml0eShwcmlvcml0eUNhbGMucHJpb3Jp
dHlGcm9tVmlzaWJpbGl0eSh0cnVlLCBkcmF3c1RvUm9vdFN1cmZhY2UpKTsKKyAgICAgICAgICAg
ICAgICBiYWNrQnVmZmVyLT50ZXh0dXJlKCktPnNldFJlcXVlc3RQcmlvcml0eShwcmlvcml0eUNh
bGMucHJpb3JpdHlGcm9tVmlzaWJpbGl0eSh0cnVlLCBkcmF3c1RvUm9vdCkpOwogICAgICAgICAg
ICAgICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4gZnJvbnRCdWZmZXIgPSBDQ1ByaW9y
aXRpemVkVGV4dHVyZTo6Y3JlYXRlKGJhY2tCdWZmZXItPnRleHR1cmUoKS0+dGV4dHVyZU1hbmFn
ZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrQnVmZmVyLT50ZXh0dXJl
KCktPnNpemUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrQnVmZmVyLT50
ZXh0dXJlKCktPmZvcm1hdCgpKTsKQEAgLTU4MSw5ICs1ODEsOSBAQCB2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6c2V0VGV4dHVyZVByaW9yaXRpZXNJblJlY3QoY29uc3QgQ0NQcmlvcml0eUNhbGN1
bGF0b3ImCiAgICAgICAgIC8vIDUxMiBwaXhlbHMgb2YgcHJlLXBhaW50aW5nLiBMYXRlciB3ZSBj
YW4ganVzdCBwYXNzIGFuIGFuaW1hdGluZyBmbGFnIGV0Yy4gdG8gdGhlCiAgICAgICAgIC8vIGNh
bGN1bGF0b3IgYW5kIGl0IGNhbiB0YWtlIGNhcmUgb2YgdGhpcyBzcGVjaWFsIGNhc2UgaWYgd2Ug
c3RpbGwgbmVlZCBpdC4KICAgICAgICAgaWYgKHZpc2libGVDb250ZW50UmVjdC5pc0VtcHR5KCkg
JiYgIXByZXBhaW50UmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICB0aWxlLT5tYW5hZ2VkVGV4
dHVyZSgpLT5zZXRSZXF1ZXN0UHJpb3JpdHkocHJpb3JpdHlDYWxjLnByaW9yaXR5RnJvbURpc3Rh
bmNlKDUxMiwgZHJhd3NUb1Jvb3RTdXJmYWNlKSk7CisgICAgICAgICAgICB0aWxlLT5tYW5hZ2Vk
VGV4dHVyZSgpLT5zZXRSZXF1ZXN0UHJpb3JpdHkocHJpb3JpdHlDYWxjLnByaW9yaXR5RnJvbURp
c3RhbmNlKDUxMiwgZHJhd3NUb1Jvb3QpKTsKICAgICAgICAgZWxzZSBpZiAoIXZpc2libGVDb250
ZW50UmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICB0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5z
ZXRSZXF1ZXN0UHJpb3JpdHkocHJpb3JpdHlDYWxjLnByaW9yaXR5RnJvbURpc3RhbmNlKHZpc2li
bGVDb250ZW50UmVjdCwgdGlsZVJlY3QsIGRyYXdzVG9Sb290U3VyZmFjZSkpOworICAgICAgICAg
ICAgdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+c2V0UmVxdWVzdFByaW9yaXR5KHByaW9yaXR5Q2Fs
Yy5wcmlvcml0eUZyb21EaXN0YW5jZSh2aXNpYmxlQ29udGVudFJlY3QsIHRpbGVSZWN0LCBkcmF3
c1RvUm9vdCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmluZGV4IDlhODgz
NzZjMmQ2MTVkODcwYWFlZWVjN2Y0MmE2NzBiMDk4NDk5MGQuLmQ5ODU3YTRkNDNmYWNhYmUwNjky
NDg5ZDc0OTQ3NGQ1Mzg5MTVmODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKQEAgLTcxLDcg
KzcxLDcgQEAgQ0NMYXllckltcGw6OkNDTGF5ZXJJbXBsKGludCBpZCkKICAgICAsIG1faXNDb250
YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGZhbHNlKQogICAgICwgbV9maXhlZFRvQ29udGFp
bmVyTGF5ZXIoZmFsc2UpCiAgICAgLCBtX3BhZ2VTY2FsZURlbHRhKDEpCi0gICAgLCBtX3Rhcmdl
dFJlbmRlclN1cmZhY2UoMCkKKyAgICAsIG1fcmVuZGVyVGFyZ2V0KDApCiAgICAgLCBtX2RyYXdE
ZXB0aCgwKQogICAgICwgbV9kcmF3T3BhY2l0eSgwKQogICAgICwgbV9kcmF3T3BhY2l0eUlzQW5p
bWF0aW5nKGZhbHNlKQpAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgQ0NMYXllckltcGw6OmNyZWF0
ZVJlbmRlclN1cmZhY2UoKQogewogICAgIEFTU0VSVCghbV9yZW5kZXJTdXJmYWNlKTsKICAgICBt
X3JlbmRlclN1cmZhY2UgPSBhZG9wdFB0cihuZXcgQ0NSZW5kZXJTdXJmYWNlKHRoaXMpKTsKLSAg
ICBzZXRUYXJnZXRSZW5kZXJTdXJmYWNlKG1fcmVuZGVyU3VyZmFjZS5nZXQoKSk7CisgICAgc2V0
UmVuZGVyVGFyZ2V0KHRoaXMpOwogfQogCiBib29sIENDTGF5ZXJJbXBsOjpkZXNjZW5kYW50RHJh
d3NDb250ZW50KCkKQEAgLTI2MCw5ICsyNjAsOSBAQCB2b2lkIENDTGF5ZXJJbXBsOjpkdW1wTGF5
ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdAogICAgIHdyaXRl
SW5kZW50KHRzLCBpbmRlbnQpOwogICAgIHRzIDw8ICJib3VuZHM6ICIgPDwgYm91bmRzKCkud2lk
dGgoKSA8PCAiLCAiIDw8IGJvdW5kcygpLmhlaWdodCgpIDw8ICJcbiI7CiAKLSAgICBpZiAobV90
YXJnZXRSZW5kZXJTdXJmYWNlKSB7CisgICAgaWYgKG1fcmVuZGVyVGFyZ2V0KSB7CiAgICAgICAg
IHdyaXRlSW5kZW50KHRzLCBpbmRlbnQpOwotICAgICAgICB0cyA8PCAidGFyZ2V0UmVuZGVyU3Vy
ZmFjZTogIiA8PCBtX3RhcmdldFJlbmRlclN1cmZhY2UtPm5hbWUoKSA8PCAiXG4iOworICAgICAg
ICB0cyA8PCAicmVuZGVyVGFyZ2V0OiAiIDw8IG1fcmVuZGVyVGFyZ2V0LT5tX2xheWVySWQgPDwg
IlxuIjsKICAgICB9CiAKICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5oCmluZGV4IDJiOWE0OWJkMzAzNmZkZmY0YjhjOTcxZDYyZjAzMTlkNTY3ODEzNTMuLjQy
ZGFiZDM2NmJmN2MyYjk5YmQxZTk2NGI1N2JkYzI3NjY4N2UxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuaApAQCAtMTgxLDggKzE4MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRSZWN0JiBzY2lz
c29yUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Npc3NvclJlY3Q7IH0KICAgICB2b2lkIHNldFNj
aXNzb3JSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIHsgbV9zY2lzc29yUmVjdCA9IHJlY3Q7IH0K
IAotICAgIENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0UmVuZGVyU3VyZmFjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdGFyZ2V0UmVuZGVyU3VyZmFjZTsgfQotICAgIHZvaWQgc2V0VGFyZ2V0UmVuZGVyU3Vy
ZmFjZShDQ1JlbmRlclN1cmZhY2UqIHN1cmZhY2UpIHsgbV90YXJnZXRSZW5kZXJTdXJmYWNlID0g
c3VyZmFjZTsgfQorICAgIENDTGF5ZXJJbXBsKiByZW5kZXJUYXJnZXQoKSBjb25zdCB7IEFTU0VS
VCghbV9yZW5kZXJUYXJnZXQgfHwgbV9yZW5kZXJUYXJnZXQtPnJlbmRlclN1cmZhY2UoKSk7IHJl
dHVybiBtX3JlbmRlclRhcmdldDsgfQorICAgIHZvaWQgc2V0UmVuZGVyVGFyZ2V0KENDTGF5ZXJJ
bXBsKiB0YXJnZXQpIHsgbV9yZW5kZXJUYXJnZXQgPSB0YXJnZXQ7IH0KIAogICAgIHZvaWQgc2V0
Qm91bmRzKGNvbnN0IEludFNpemUmKTsKICAgICBjb25zdCBJbnRTaXplJiBib3VuZHMoKSBjb25z
dCB7IHJldHVybiBtX2JvdW5kczsgfQpAQCAtMzU4LDExICszNTgsMTAgQEAgcHJpdmF0ZToKICAg
ICBJbnRTaXplIG1fbWF4U2Nyb2xsUG9zaXRpb247CiAgICAgZmxvYXQgbV9wYWdlU2NhbGVEZWx0
YTsKIAotICAgIC8vIFJlbmRlciBzdXJmYWNlIHRoaXMgbGF5ZXIgZHJhd3MgaW50by4gVGhpcyBp
cyBhIHN1cmZhY2UgdGhhdCBjYW4gYmVsb25nCi0gICAgLy8gZWl0aGVyIHRvIHRoaXMgbGF5ZXIg
KGlmIG1fdGFyZ2V0UmVuZGVyU3VyZmFjZSA9PSBtX3JlbmRlclN1cmZhY2UpIG9yCi0gICAgLy8g
dG8gYW4gYW5jZXN0b3Igb2YgdGhpcyBsYXllci4gVGhlIHRhcmdldCByZW5kZXIgc3VyZmFjZSBk
ZXRlcm1pbmVzIHRoZQotICAgIC8vIGNvb3JkaW5hdGUgc3lzdGVtIHRoZSBsYXllcidzIHRyYW5z
Zm9ybXMgYXJlIHJlbGF0aXZlIHRvLgotICAgIENDUmVuZGVyU3VyZmFjZSogbV90YXJnZXRSZW5k
ZXJTdXJmYWNlOworICAgIC8vIFRoZSBsYXllciB3aG9zZSBjb29yZGluYXRlIHNwYWNlIHRoaXMg
bGF5ZXIgZHJhd3MgaW50by4gVGhpcyBjYW4gYmUKKyAgICAvLyBlaXRoZXIgdGhlIHNhbWUgbGF5
ZXIgKG1fcmVuZGVyVGFyZ2V0ID09IHRoaXMpIG9yIGFuIGFuY2VzdG9yIG9mIHRoaXMKKyAgICAv
LyBsYXllci4KKyAgICBDQ0xheWVySW1wbCogbV9yZW5kZXJUYXJnZXQ7CiAKICAgICAvLyBUaGUg
Z2xvYmFsIGRlcHRoIHZhbHVlIG9mIHRoZSBjZW50ZXIgb2YgdGhlIGxheWVyLiBUaGlzIHZhbHVl
IGlzIHVzZWQKICAgICAvLyB0byBzb3J0IGxheWVycyBmcm9tIGJhY2sgdG8gZnJvbnQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAppbmRleCAxYzY3NzU1NWE3OTI1
MjVkY2QxYWMzMTNhMzU3MWNjNzVhN2U2Y2MzLi4xOGQ0OGY5ZWUyODNhN2FmYWFjYjE4NjM0NzJm
NTMxMzMwZjk0NDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5j
cHAKQEAgLTY4LDcgKzY4LDggQEAgSW50UmVjdCBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1
bGF0ZVZpc2libGVSZWN0KGNvbnN0IEludFJlY3QmIHRhcmdldFN1cmZhY2UKIHRlbXBsYXRlPHR5
cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+CiBzdGF0aWMgSW50
UmVjdCBjYWxjdWxhdGVMYXllclNjaXNzb3JSZWN0KExheWVyVHlwZSogbGF5ZXIsIGNvbnN0IEZs
b2F0UmVjdCYgcm9vdFNjaXNzb3JSZWN0KQogewotICAgIFJlbmRlclN1cmZhY2VUeXBlKiB0YXJn
ZXRTdXJmYWNlID0gbGF5ZXItPnRhcmdldFJlbmRlclN1cmZhY2UoKTsKKyAgICBMYXllclR5cGUq
IHJlbmRlclRhcmdldCA9IGxheWVyLT5yZW5kZXJUYXJnZXQoKTsKKyAgICBSZW5kZXJTdXJmYWNl
VHlwZSogdGFyZ2V0U3VyZmFjZSA9IHJlbmRlclRhcmdldC0+cmVuZGVyU3VyZmFjZSgpOwogCiAg
ICAgRmxvYXRSZWN0IHJvb3RTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZSA9IHRhcmdldFN1cmZh
Y2UtPmNvbXB1dGVSb290U2Npc3NvclJlY3RJbkN1cnJlbnRTdXJmYWNlKHJvb3RTY2lzc29yUmVj
dCk7CiAgICAgRmxvYXRSZWN0IGNsaXBBbmREYW1hZ2U7CkBAIC04NCw3ICs4NSw5IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+CiBzdGF0
aWMgSW50UmVjdCBjYWxjdWxhdGVTdXJmYWNlU2Npc3NvclJlY3QoTGF5ZXJUeXBlKiBsYXllciwg
Y29uc3QgRmxvYXRSZWN0JiByb290U2Npc3NvclJlY3QpCiB7CiAgICAgTGF5ZXJUeXBlKiBwYXJl
bnRMYXllciA9IGxheWVyLT5wYXJlbnQoKTsKLSAgICBSZW5kZXJTdXJmYWNlVHlwZSogdGFyZ2V0
U3VyZmFjZSA9IHBhcmVudExheWVyLT50YXJnZXRSZW5kZXJTdXJmYWNlKCk7CisgICAgTGF5ZXJU
eXBlKiByZW5kZXJUYXJnZXQgPSBwYXJlbnRMYXllci0+cmVuZGVyVGFyZ2V0KCk7CisKKyAgICBS
ZW5kZXJTdXJmYWNlVHlwZSogdGFyZ2V0U3VyZmFjZSA9IHJlbmRlclRhcmdldC0+cmVuZGVyU3Vy
ZmFjZSgpOwogICAgIEFTU0VSVCh0YXJnZXRTdXJmYWNlKTsKIAogICAgIFJlbmRlclN1cmZhY2VU
eXBlKiBjdXJyZW50U3VyZmFjZSA9IGxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CkBAIC0xNTUsOSAr
MTU4LDkgQEAgc3RhdGljIGJvb2wgaXNTdXJmYWNlQmFja0ZhY2VWaXNpYmxlKExheWVyVHlwZSog
bGF5ZXIsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWEKIHRlbXBsYXRlPHR5cGVuYW1lIExheWVy
VHlwZT4KIHN0YXRpYyBJbnRSZWN0IGNhbGN1bGF0ZVZpc2libGVDb250ZW50UmVjdChMYXllclR5
cGUqIGxheWVyKQogewotICAgIEFTU0VSVChsYXllci0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpKTsK
KyAgICBBU1NFUlQobGF5ZXItPnJlbmRlclRhcmdldCgpKTsKIAotICAgIEludFJlY3QgdGFyZ2V0
U3VyZmFjZVJlY3QgPSBsYXllci0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5jb250ZW50UmVjdCgp
OworICAgIEludFJlY3QgdGFyZ2V0U3VyZmFjZVJlY3QgPSBsYXllci0+cmVuZGVyVGFyZ2V0KCkt
PnJlbmRlclN1cmZhY2UoKS0+Y29udGVudFJlY3QoKTsKIAogICAgIGlmIChsYXllci0+dXNlc0xh
eWVyQ2xpcHBpbmcoKSkKICAgICAgICAgdGFyZ2V0U3VyZmFjZVJlY3QuaW50ZXJzZWN0KGxheWVy
LT5jbGlwUmVjdCgpKTsKQEAgLTMyMSw3ICszMjQsNyBAQCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBjb21wdXRlU2Nyb2xsQ29tcGVuc2F0aW9uRm9yVGhpc0xheWVyKENDTGF5ZXJJbXBsKiBzY3Jv
bAogICAgIC8vCiAgICAgLy8gVGhlc2Ugc3RlcHMgY3JlYXRlIGEgbWF0cml4IHRoYXQgYm90aCBz
dGFydCBhbmQgZW5kIGluIHRhcmdldFN1cmZhY2VTcGFjZS4gU28gdGhpcyBtYXRyaXggY2FuCiAg
ICAgLy8gcHJlLW11bHRpcGx5IGFueSBmaXhlZC1wb3NpdGlvbiBsYXllcidzIGRyYXdUcmFuc2Zv
cm0gdG8gdW5kbyB0aGUgc2Nyb2xsRGVsdGFzIC0tIGFzIGxvbmcgYXMKLSAgICAvLyB0aGF0IGZp
eGVkIHBvc2l0aW9uIGxheWVyIGlzIGZpeGVkIG9udG8gdGhlIHNhbWUgdGFyZ2V0UmVuZGVyU3Vy
ZmFjZSBhcyB0aGlzIHNjcm9sbGluZ0xheWVyLgorICAgIC8vIHRoYXQgZml4ZWQgcG9zaXRpb24g
bGF5ZXIgaXMgZml4ZWQgb250byB0aGUgc2FtZSByZW5kZXJUYXJnZXQgYXMgdGhpcyBzY3JvbGxp
bmdMYXllci4KICAgICAvLwogCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcGFydGlhbExh
eWVyT3JpZ2luVHJhbnNmb3JtID0gcGFyZW50TWF0cml4OwpAQCAtNjEwLDEwICs2MTMsMTAgQEAg
c3RhdGljIGJvb2wgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRlcm5hbChMYXllclR5cGUqIGxh
eWVyLCBMYXllclR5cGUqIHJvb3RMYXkKICAgICAgICAgbGF5ZXItPnNldENsaXBSZWN0KEludFJl
Y3QoKSk7CiAKICAgICAgICAgaWYgKGxheWVyLT5tYXNrTGF5ZXIoKSkKLSAgICAgICAgICAgIGxh
eWVyLT5tYXNrTGF5ZXIoKS0+c2V0VGFyZ2V0UmVuZGVyU3VyZmFjZShyZW5kZXJTdXJmYWNlKTsK
KyAgICAgICAgICAgIGxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0UmVuZGVyVGFyZ2V0KGxheWVyKTsK
IAogICAgICAgICBpZiAobGF5ZXItPnJlcGxpY2FMYXllcigpICYmIGxheWVyLT5yZXBsaWNhTGF5
ZXIoKS0+bWFza0xheWVyKCkpCi0gICAgICAgICAgICBsYXllci0+cmVwbGljYUxheWVyKCktPm1h
c2tMYXllcigpLT5zZXRUYXJnZXRSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZhY2UpOworICAgICAg
ICAgICAgbGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKS0+c2V0UmVuZGVyVGFyZ2V0
KGxheWVyKTsKIAogICAgICAgICByZW5kZXJTdXJmYWNlLT5zZXRGaWx0ZXJzKGxheWVyLT5maWx0
ZXJzKCkpOwogICAgICAgICBpZiAocmVuZGVyU3VyZmFjZS0+ZmlsdGVycygpLmhhc0ZpbHRlclRo
YXRNb3Zlc1BpeGVscygpKQpAQCAtNjQxLDggKzY0NCw4IEBAIHN0YXRpYyBib29sIGNhbGN1bGF0
ZURyYXdUcmFuc2Zvcm1zSW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXJUeXBlKiByb290
TGF5CiAgICAgICAgICAgICBpZiAobGF5ZXItPnBhcmVudCgpLT51c2VzTGF5ZXJDbGlwcGluZygp
KQogICAgICAgICAgICAgICAgIGxheWVyLT5zZXRVc2VzTGF5ZXJDbGlwcGluZyh0cnVlKTsKIAot
ICAgICAgICAgICAgLy8gTGF5ZXJzIHdpdGhvdXQgdGhlaXIgb3duIHJlbmRlclN1cmZhY2Ugd2ls
bCByZW5kZXIgaW50byB0aGUgbmVhcmVzdCBhbmNlc3RvciBzdXJmYWNlLgotICAgICAgICAgICAg
bGF5ZXItPnNldFRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnBhcmVudCgpLT50YXJnZXRSZW5k
ZXJTdXJmYWNlKCkpOworICAgICAgICAgICAgLy8gTGF5ZXJzIHRoYXQgYXJlIG5vdCB0aGVpciBv
d24gcmVuZGVyVGFyZ2V0IHdpbGwgcmVuZGVyIGludG8gdGhlIHRhcmdldCBvZiB0aGVpciBuZWFy
ZXN0IGFuY2VzdG9yLgorICAgICAgICAgICAgbGF5ZXItPnNldFJlbmRlclRhcmdldChsYXllci0+
cGFyZW50KCktPnJlbmRlclRhcmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTE4LDcg
KzkyMSw4IEBAIHN0YXRpYyBib29sIHBvaW50SXNDbGlwcGVkQnlTdXJmYWNlT3JDbGlwUmVjdChj
b25zdCBJbnRQb2ludCYgdmlld3BvcnRQb2ludCwgQ0NMCiAKICAgICAgICAgLy8gTm90ZSB0aGF0
IGNsaXBSZWN0cyBhcmUgYWN0dWFsbHkgaW4gdGFyZ2V0U3VyZmFjZSBzcGFjZSwgc28gdGhlIHRy
YW5zZm9ybSB3ZQogICAgICAgICAvLyBoYXZlIHRvIHByb3ZpZGUgaXMgdGhlIHRhcmdldCBzdXJm
YWNlJ3Mgc2NyZWVuU3BhY2VUcmFuc2Zvcm0uCi0gICAgICAgIGlmIChjdXJyZW50TGF5ZXItPnVz
ZXNMYXllckNsaXBwaW5nKCkgJiYgIXBvaW50SGl0c1JlY3Qodmlld3BvcnRQb2ludCwgY3VycmVu
dExheWVyLT50YXJnZXRSZW5kZXJTdXJmYWNlKCktPnNjcmVlblNwYWNlVHJhbnNmb3JtKCksIGN1
cnJlbnRMYXllci0+Y2xpcFJlY3QoKSkpCisgICAgICAgIENDTGF5ZXJJbXBsKiByZW5kZXJUYXJn
ZXQgPSBjdXJyZW50TGF5ZXItPnJlbmRlclRhcmdldCgpOworICAgICAgICBpZiAoY3VycmVudExh
eWVyLT51c2VzTGF5ZXJDbGlwcGluZygpICYmICFwb2ludEhpdHNSZWN0KHZpZXdwb3J0UG9pbnQs
IHJlbmRlclRhcmdldC0+cmVuZGVyU3VyZmFjZSgpLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBj
dXJyZW50TGF5ZXItPmNsaXBSZWN0KCkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICAgICAgY3VycmVudExheWVyID0gY3VycmVudExheWVyLT5wYXJlbnQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9u
VHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCmluZGV4IDYxMjRkZGM5Y2M4ZjA4YjRlYWIxMmYxNGY0
MWNhMzE2ZjMyNmRhMzcuLmU5MzdjZTBmM2U2OTNjZTA5MDhhZGMyZjkzZDUxODJhMjdhZWI2YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcApAQCAtNTIsMzQgKzUyLDM0
IEBAIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46
OkNDT2NjbHVzaW9uVHJhY2tlckJhc2UoSW50CiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUs
IHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgogdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNl
PExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjplbnRlckxheWVyKGNvbnN0IENDTGF5ZXJJ
dGVyYXRvclBvc2l0aW9uPExheWVyVHlwZT4mIGxheWVySXRlcmF0b3IpCiB7Ci0gICAgUmVuZGVy
U3VyZmFjZVR5cGUqIHJlbmRlclN1cmZhY2UgPSBsYXllckl0ZXJhdG9yLnRhcmdldFJlbmRlclN1
cmZhY2VMYXllci0+cmVuZGVyU3VyZmFjZSgpOworICAgIExheWVyVHlwZSogcmVuZGVyVGFyZ2V0
ID0gbGF5ZXJJdGVyYXRvci50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXI7CiAKICAgICBpZiAobGF5
ZXJJdGVyYXRvci5yZXByZXNlbnRzSXRzZWxmKQotICAgICAgICBlbnRlclRhcmdldFJlbmRlclN1
cmZhY2UocmVuZGVyU3VyZmFjZSk7CisgICAgICAgIGVudGVyUmVuZGVyVGFyZ2V0KHJlbmRlclRh
cmdldCk7CiAgICAgZWxzZSBpZiAobGF5ZXJJdGVyYXRvci5yZXByZXNlbnRzVGFyZ2V0UmVuZGVy
U3VyZmFjZSkKLSAgICAgICAgZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVySXRlcmF0
b3IuY3VycmVudExheWVyLCByZW5kZXJTdXJmYWNlKTsKKyAgICAgICAgZmluaXNoZWRSZW5kZXJU
YXJnZXQocmVuZGVyVGFyZ2V0KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0
eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxM
YXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bGVhdmVMYXllcihjb25zdCBDQ0xheWVySXRl
cmF0b3JQb3NpdGlvbjxMYXllclR5cGU+JiBsYXllckl0ZXJhdG9yKQogewotICAgIFJlbmRlclN1
cmZhY2VUeXBlKiByZW5kZXJTdXJmYWNlID0gbGF5ZXJJdGVyYXRvci50YXJnZXRSZW5kZXJTdXJm
YWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKKyAgICBMYXllclR5cGUqIHJlbmRlclRhcmdldCA9
IGxheWVySXRlcmF0b3IudGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyOwogCiAgICAgaWYgKGxheWVy
SXRlcmF0b3IucmVwcmVzZW50c0l0c2VsZikKICAgICAgICAgbWFya09jY2x1ZGVkQmVoaW5kTGF5
ZXIobGF5ZXJJdGVyYXRvci5jdXJyZW50TGF5ZXIpOwogICAgIGVsc2UgaWYgKGxheWVySXRlcmF0
b3IucmVwcmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UpCi0gICAgICAgIGxlYXZlVG9U
YXJnZXRSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZhY2UpOworICAgICAgICBsZWF2ZVRvUmVuZGVy
VGFyZ2V0KHJlbmRlclRhcmdldCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwg
dHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+Ci12b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8
TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShj
b25zdCBSZW5kZXJTdXJmYWNlVHlwZSogbmV3VGFyZ2V0KQordm9pZCBDQ09jY2x1c2lvblRyYWNr
ZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjplbnRlclJlbmRlclRhcmdldChj
b25zdCBMYXllclR5cGUqIG5ld1RhcmdldCkKIHsKLSAgICBpZiAoIW1fc3RhY2suaXNFbXB0eSgp
ICYmIG1fc3RhY2subGFzdCgpLnN1cmZhY2UgPT0gbmV3VGFyZ2V0KQorICAgIGlmICghbV9zdGFj
ay5pc0VtcHR5KCkgJiYgbV9zdGFjay5sYXN0KCkudGFyZ2V0ID09IG5ld1RhcmdldCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgY29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIG9sZFRhcmdldCA9IG1f
c3RhY2suaXNFbXB0eSgpID8gMCA6IG1fc3RhY2subGFzdCgpLnN1cmZhY2U7Ci0gICAgY29uc3Qg
UmVuZGVyU3VyZmFjZVR5cGUqIG9sZEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzID0gIW9sZFRhcmdl
dCA/IDAgOiBvbGRUYXJnZXQtPm5lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVscygpOwotICAg
IGNvbnN0IFJlbmRlclN1cmZhY2VUeXBlKiBuZXdBbmNlc3RvclRoYXRNb3Zlc1BpeGVscyA9IG5l
d1RhcmdldC0+bmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzKCk7CisgICAgY29uc3QgTGF5
ZXJUeXBlKiBvbGRUYXJnZXQgPSBtX3N0YWNrLmlzRW1wdHkoKSA/IDAgOiBtX3N0YWNrLmxhc3Qo
KS50YXJnZXQ7CisgICAgY29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIG9sZEFuY2VzdG9yVGhhdE1v
dmVzUGl4ZWxzID0gIW9sZFRhcmdldCA/IDAgOiBvbGRUYXJnZXQtPnJlbmRlclN1cmZhY2UoKS0+
bmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzKCk7CisgICAgY29uc3QgUmVuZGVyU3VyZmFj
ZVR5cGUqIG5ld0FuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzID0gbmV3VGFyZ2V0LT5yZW5kZXJTdXJm
YWNlKCktPm5lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVscygpOwogCiAgICAgbV9zdGFjay5h
cHBlbmQoU3RhY2tPYmplY3QobmV3VGFyZ2V0KSk7CiAKQEAgLTExNiwyMiArMTE2LDIxIEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBsYXllcklzSW5VbnNvcnRlZDNkUmVuZGVyaW5nQ29udGV4dChjb25z
dCBMYXllckNocm9taXVtKiBsYXllCiBzdGF0aWMgaW5saW5lIGJvb2wgbGF5ZXJJc0luVW5zb3J0
ZWQzZFJlbmRlcmluZ0NvbnRleHQoY29uc3QgQ0NMYXllckltcGwqKSB7IHJldHVybiBmYWxzZTsg
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VU
eXBlPgotdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFj
ZVR5cGU+OjpmaW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgTGF5ZXJUeXBlKiBvd25p
bmdMYXllciwgY29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIGZpbmlzaGVkVGFyZ2V0KQordm9pZCBD
Q09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpmaW5p
c2hlZFJlbmRlclRhcmdldChjb25zdCBMYXllclR5cGUqIGZpbmlzaGVkVGFyZ2V0KQogewotICAg
IC8vIEZJWE1FOiBSZW1vdmUgdGhlIG93bmluZ0xheWVyIHBhcmFtZXRlciB3aGVuIHdlIGNhbiBn
ZXQgYWxsIHRoZSBpbmZvIGZyb20gdGhlIHN1cmZhY2UuCi0gICAgQVNTRVJUKG93bmluZ0xheWVy
LT5yZW5kZXJTdXJmYWNlKCkgPT0gZmluaXNoZWRUYXJnZXQpOwotCiAgICAgLy8gTWFrZSBzdXJl
IHdlIGtub3cgYWJvdXQgdGhlIHRhcmdldCBzdXJmYWNlLgotICAgIGVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShmaW5pc2hlZFRhcmdldCk7CisgICAgZW50ZXJSZW5kZXJUYXJnZXQoZmluaXNoZWRU
YXJnZXQpOworCisgICAgUmVuZGVyU3VyZmFjZVR5cGUqIHN1cmZhY2UgPSBmaW5pc2hlZFRhcmdl
dC0+cmVuZGVyU3VyZmFjZSgpOwogCiAgICAgLy8gSWYgdGhlIG9jY2x1c2lvbiB3aXRoaW4gdGhl
IHN1cmZhY2UgY2FuIG5vdCBiZSBhcHBsaWVkIHRvIHRoaW5ncyBvdXRzaWRlIG9mIHRoZSBzdXJm
YWNlJ3Mgc3VidHJlZSwgdGhlbiBjbGVhciB0aGUgb2NjbHVzaW9uIGhlcmUgc28gaXQgd29uJ3Qg
YmUgdXNlZC4KLSAgICBpZiAob3duaW5nTGF5ZXItPm1hc2tMYXllcigpIHx8ICFzdXJmYWNlT3Bh
Y2l0eUtub3duKGZpbmlzaGVkVGFyZ2V0KSB8fCBmaW5pc2hlZFRhcmdldC0+ZHJhd09wYWNpdHko
KSA8IDEgfHwgZmluaXNoZWRUYXJnZXQtPmZpbHRlcnMoKS5oYXNGaWx0ZXJUaGF0QWZmZWN0c09w
YWNpdHkoKSkgeworICAgIGlmIChmaW5pc2hlZFRhcmdldC0+bWFza0xheWVyKCkgfHwgIXN1cmZh
Y2VPcGFjaXR5S25vd24oc3VyZmFjZSkgfHwgc3VyZmFjZS0+ZHJhd09wYWNpdHkoKSA8IDEgfHwg
c3VyZmFjZS0+ZmlsdGVycygpLmhhc0ZpbHRlclRoYXRBZmZlY3RzT3BhY2l0eSgpKSB7CiAgICAg
ICAgIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuID0gUmVnaW9uKCk7CiAgICAgICAg
IG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0ID0gUmVnaW9uKCk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgaWYgKCFzdXJmYWNlVHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24oZmluaXNoZWRU
YXJnZXQpKQorICAgICAgICBpZiAoIXN1cmZhY2VUcmFuc2Zvcm1zVG9UYXJnZXRLbm93bihzdXJm
YWNlKSkKICAgICAgICAgICAgIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0ID0gUmVn
aW9uKCk7Ci0gICAgICAgIGlmICghc3VyZmFjZVRyYW5zZm9ybXNUb1NjcmVlbktub3duKGZpbmlz
aGVkVGFyZ2V0KSkKKyAgICAgICAgaWYgKCFzdXJmYWNlVHJhbnNmb3Jtc1RvU2NyZWVuS25vd24o
c3VyZmFjZSkpCiAgICAgICAgICAgICBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbiA9
IFJlZ2lvbigpOwogICAgIH0KIH0KQEAgLTE5OSw1MiArMTk4LDUzIEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCByZWR1Y2VPY2NsdXNpb24oY29uc3QgSW50UmVjdCYgYWZmZWN0ZWRBcmVhLCBjb25zdCBJ
bnRSZWN0JiBlCiAgICAgfQogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlw
ZT4KLXN0YXRpYyB2b2lkIHJlZHVjZU9jY2x1c2lvbkJlbG93U3VyZmFjZShSZW5kZXJTdXJmYWNl
VHlwZSogc3VyZmFjZSwgY29uc3QgSW50UmVjdCYgc3VyZmFjZVJlY3QsIGNvbnN0IFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBzdXJmYWNlVHJhbnNmb3JtLCBSZW5kZXJTdXJmYWNlVHlwZSogc3Vy
ZmFjZVRhcmdldCwgUmVnaW9uJiBvY2NsdXNpb25JblRhcmdldCwgUmVnaW9uJiBvY2NsdXNpb25J
blNjcmVlbikKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KK3N0YXRpYyB2b2lkIHJlZHVj
ZU9jY2x1c2lvbkJlbG93U3VyZmFjZShMYXllclR5cGUqIGNvbnRyaWJ1dGluZ0xheWVyLCBjb25z
dCBJbnRSZWN0JiBzdXJmYWNlUmVjdCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1
cmZhY2VUcmFuc2Zvcm0sIExheWVyVHlwZSogcmVuZGVyVGFyZ2V0LCBSZWdpb24mIG9jY2x1c2lv
bkluVGFyZ2V0LCBSZWdpb24mIG9jY2x1c2lvbkluU2NyZWVuKQogewogICAgIGlmIChzdXJmYWNl
UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEludFJlY3QgYm91bmRzSW5U
YXJnZXQgPSBlbmNsb3NpbmdJbnRSZWN0KENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KHN1cmZh
Y2VUcmFuc2Zvcm0sIEZsb2F0UmVjdChzdXJmYWNlUmVjdCkpKTsKLSAgICBpZiAoIXN1cmZhY2Ut
PmNsaXBSZWN0KCkuaXNFbXB0eSgpKQotICAgICAgICBib3VuZHNJblRhcmdldC5pbnRlcnNlY3Qo
c3VyZmFjZS0+Y2xpcFJlY3QoKSk7CisgICAgaWYgKCFjb250cmlidXRpbmdMYXllci0+cmVuZGVy
U3VyZmFjZSgpLT5jbGlwUmVjdCgpLmlzRW1wdHkoKSkKKyAgICAgICAgYm91bmRzSW5UYXJnZXQu
aW50ZXJzZWN0KGNvbnRyaWJ1dGluZ0xheWVyLT5yZW5kZXJTdXJmYWNlKCktPmNsaXBSZWN0KCkp
OwogCiAgICAgaW50IG91dHNldFRvcCwgb3V0c2V0UmlnaHQsIG91dHNldEJvdHRvbSwgb3V0c2V0
TGVmdDsKLSAgICBzdXJmYWNlLT5iYWNrZ3JvdW5kRmlsdGVycygpLmdldE91dHNldHMob3V0c2V0
VG9wLCBvdXRzZXRSaWdodCwgb3V0c2V0Qm90dG9tLCBvdXRzZXRMZWZ0KTsKKyAgICBjb250cmli
dXRpbmdMYXllci0+cmVuZGVyU3VyZmFjZSgpLT5iYWNrZ3JvdW5kRmlsdGVycygpLmdldE91dHNl
dHMob3V0c2V0VG9wLCBvdXRzZXRSaWdodCwgb3V0c2V0Qm90dG9tLCBvdXRzZXRMZWZ0KTsKIAog
ICAgIC8vIFRoZSBmaWx0ZXIgY2FuIG1vdmUgcGl4ZWxzIGZyb20gb3V0c2lkZSBvZiB0aGUgY2xp
cCwgc28gYWxsb3cgYWZmZWN0ZWRBcmVhIHRvIGV4cGFuZCBvdXRzaWRlIHRoZSBjbGlwLgogICAg
IGJvdW5kc0luVGFyZ2V0Lm1vdmUoLW91dHNldExlZnQsIC1vdXRzZXRUb3ApOwogICAgIGJvdW5k
c0luVGFyZ2V0LmV4cGFuZChvdXRzZXRMZWZ0ICsgb3V0c2V0UmlnaHQsIG91dHNldFRvcCArIG91
dHNldEJvdHRvbSk7CiAKLSAgICBJbnRSZWN0IGJvdW5kc0luU2NyZWVuID0gZW5jbG9zaW5nSW50
UmVjdChDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChzdXJmYWNlVGFyZ2V0LT5zY3JlZW5TcGFj
ZVRyYW5zZm9ybSgpLCBGbG9hdFJlY3QoYm91bmRzSW5UYXJnZXQpKSk7CisgICAgSW50UmVjdCBi
b3VuZHNJblNjcmVlbiA9IGVuY2xvc2luZ0ludFJlY3QoQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJl
Y3QocmVuZGVyVGFyZ2V0LT5yZW5kZXJTdXJmYWNlKCktPnNjcmVlblNwYWNlVHJhbnNmb3JtKCks
IEZsb2F0UmVjdChib3VuZHNJblRhcmdldCkpKTsKIAogICAgIEludFJlY3QgZmlsdGVyT3V0c2V0
c0luVGFyZ2V0KC1vdXRzZXRMZWZ0LCAtb3V0c2V0VG9wLCBvdXRzZXRMZWZ0ICsgb3V0c2V0Umln
aHQsIG91dHNldFRvcCArIG91dHNldEJvdHRvbSk7Ci0gICAgSW50UmVjdCBmaWx0ZXJPdXRzZXRz
SW5TY3JlZW4gPSBlbmNsb3NpbmdJbnRSZWN0KENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KHN1
cmZhY2VUYXJnZXQtPnNjcmVlblNwYWNlVHJhbnNmb3JtKCksIEZsb2F0UmVjdChmaWx0ZXJPdXRz
ZXRzSW5UYXJnZXQpKSk7CisgICAgSW50UmVjdCBmaWx0ZXJPdXRzZXRzSW5TY3JlZW4gPSBlbmNs
b3NpbmdJbnRSZWN0KENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KHJlbmRlclRhcmdldC0+cmVu
ZGVyU3VyZmFjZSgpLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBGbG9hdFJlY3QoZmlsdGVyT3V0
c2V0c0luVGFyZ2V0KSkpOwogCiAgICAgcmVkdWNlT2NjbHVzaW9uKGJvdW5kc0luVGFyZ2V0LCBm
aWx0ZXJPdXRzZXRzSW5UYXJnZXQsIG9jY2x1c2lvbkluVGFyZ2V0KTsKICAgICByZWR1Y2VPY2Ns
dXNpb24oYm91bmRzSW5TY3JlZW4sIGZpbHRlck91dHNldHNJblNjcmVlbiwgb2NjbHVzaW9uSW5T
Y3JlZW4pOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRl
clN1cmZhY2VUeXBlPgotdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVu
ZGVyU3VyZmFjZVR5cGU+OjpsZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShjb25zdCBSZW5kZXJT
dXJmYWNlVHlwZSogbmV3VGFyZ2V0KQordm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVy
VHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpsZWF2ZVRvUmVuZGVyVGFyZ2V0KGNvbnN0IExheWVy
VHlwZSogbmV3VGFyZ2V0KQogewogICAgIGludCBsYXN0SW5kZXggPSBtX3N0YWNrLnNpemUoKSAt
IDE7Ci0gICAgYm9vbCBzdXJmYWNlV2lsbEJlQXRUb3BBZnRlclBvcCA9IG1fc3RhY2suc2l6ZSgp
ID4gMSAmJiBtX3N0YWNrW2xhc3RJbmRleCAtIDFdLnN1cmZhY2UgPT0gbmV3VGFyZ2V0OworICAg
IGJvb2wgc3VyZmFjZVdpbGxCZUF0VG9wQWZ0ZXJQb3AgPSBtX3N0YWNrLnNpemUoKSA+IDEgJiYg
bV9zdGFja1tsYXN0SW5kZXggLSAxXS50YXJnZXQgPT0gbmV3VGFyZ2V0OwogCiAgICAgLy8gV2Ug
bWVyZ2UgdGhlIHNjcmVlbiBvY2NsdXNpb24gZnJvbSB0aGUgY3VycmVudCBSZW5kZXJTdXJmYWNl
IHN1YnRyZWUgb3V0IHRvIGl0cyBwYXJlbnQgdGFyZ2V0IFJlbmRlclN1cmZhY2UuCiAgICAgLy8g
VGhlIHRhcmdldCBvY2NsdXNpb24gY2FuIGJlIG1lcmdlZCBvdXQgYXMgd2VsbCBidXQgbmVlZHMg
dG8gYmUgdHJhbnNmb3JtZWQgdG8gdGhlIG5ldyB0YXJnZXQuCiAKLSAgICBjb25zdCBSZW5kZXJT
dXJmYWNlVHlwZSogb2xkVGFyZ2V0ID0gbV9zdGFja1tsYXN0SW5kZXhdLnN1cmZhY2U7Ci0gICAg
UmVnaW9uIG9sZFRhcmdldE9jY2x1c2lvbkluTmV3VGFyZ2V0ID0gdHJhbnNmb3JtU3VyZmFjZU9w
YXF1ZVJlZ2lvbjxSZW5kZXJTdXJmYWNlVHlwZT4ob2xkVGFyZ2V0LCBtX3N0YWNrW2xhc3RJbmRl
eF0ub2NjbHVzaW9uSW5UYXJnZXQsIG9sZFRhcmdldC0+b3JpZ2luVHJhbnNmb3JtKCkpOwotICAg
IGlmIChvbGRUYXJnZXQtPmhhc1JlcGxpY2EoKSAmJiAhb2xkVGFyZ2V0LT5yZXBsaWNhSGFzTWFz
aygpKQotICAgICAgICBvbGRUYXJnZXRPY2NsdXNpb25Jbk5ld1RhcmdldC51bml0ZSh0cmFuc2Zv
cm1TdXJmYWNlT3BhcXVlUmVnaW9uPFJlbmRlclN1cmZhY2VUeXBlPihvbGRUYXJnZXQsIG1fc3Rh
Y2tbbGFzdEluZGV4XS5vY2NsdXNpb25JblRhcmdldCwgb2xkVGFyZ2V0LT5yZXBsaWNhT3JpZ2lu
VHJhbnNmb3JtKCkpKTsKKyAgICBjb25zdCBMYXllclR5cGUqIG9sZFRhcmdldCA9IG1fc3RhY2tb
bGFzdEluZGV4XS50YXJnZXQ7CisgICAgY29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIG9sZFN1cmZh
Y2UgPSBvbGRUYXJnZXQtPnJlbmRlclN1cmZhY2UoKTsKKyAgICBSZWdpb24gb2xkVGFyZ2V0T2Nj
bHVzaW9uSW5OZXdUYXJnZXQgPSB0cmFuc2Zvcm1TdXJmYWNlT3BhcXVlUmVnaW9uPFJlbmRlclN1
cmZhY2VUeXBlPihvbGRTdXJmYWNlLCBtX3N0YWNrW2xhc3RJbmRleF0ub2NjbHVzaW9uSW5UYXJn
ZXQsIG9sZFN1cmZhY2UtPm9yaWdpblRyYW5zZm9ybSgpKTsKKyAgICBpZiAob2xkU3VyZmFjZS0+
aGFzUmVwbGljYSgpICYmICFvbGRTdXJmYWNlLT5yZXBsaWNhSGFzTWFzaygpKQorICAgICAgICBv
bGRUYXJnZXRPY2NsdXNpb25Jbk5ld1RhcmdldC51bml0ZSh0cmFuc2Zvcm1TdXJmYWNlT3BhcXVl
UmVnaW9uPFJlbmRlclN1cmZhY2VUeXBlPihvbGRTdXJmYWNlLCBtX3N0YWNrW2xhc3RJbmRleF0u
b2NjbHVzaW9uSW5UYXJnZXQsIG9sZFN1cmZhY2UtPnJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0oKSkp
OwogCiAgICAgSW50UmVjdCB1bm9jY2x1ZGVkU3VyZmFjZVJlY3Q7CiAgICAgSW50UmVjdCB1bm9j
Y2x1ZGVkUmVwbGljYVJlY3Q7Ci0gICAgaWYgKG9sZFRhcmdldC0+YmFja2dyb3VuZEZpbHRlcnMo
KS5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKSkgewotICAgICAgICB1bm9jY2x1ZGVkU3VyZmFj
ZVJlY3QgPSB1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KG9sZFRhcmdl
dCwgZmFsc2UsIG9sZFRhcmdldC0+Y29udGVudFJlY3QoKSk7Ci0gICAgICAgIGlmIChvbGRUYXJn
ZXQtPmhhc1JlcGxpY2EoKSkKLSAgICAgICAgICAgIHVub2NjbHVkZWRSZXBsaWNhUmVjdCA9IHVu
b2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3Qob2xkVGFyZ2V0LCB0cnVlLCBv
bGRUYXJnZXQtPmNvbnRlbnRSZWN0KCkpOworICAgIGlmIChvbGRTdXJmYWNlLT5iYWNrZ3JvdW5k
RmlsdGVycygpLmhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpKSB7CisgICAgICAgIHVub2NjbHVk
ZWRTdXJmYWNlUmVjdCA9IHVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3Qo
b2xkVGFyZ2V0LCBmYWxzZSwgb2xkU3VyZmFjZS0+Y29udGVudFJlY3QoKSk7CisgICAgICAgIGlm
IChvbGRTdXJmYWNlLT5oYXNSZXBsaWNhKCkpCisgICAgICAgICAgICB1bm9jY2x1ZGVkUmVwbGlj
YVJlY3QgPSB1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KG9sZFRhcmdl
dCwgdHJ1ZSwgb2xkU3VyZmFjZS0+Y29udGVudFJlY3QoKSk7CiAgICAgfQogCiAgICAgaWYgKHN1
cmZhY2VXaWxsQmVBdFRvcEFmdGVyUG9wKSB7CkBAIC0yNTQsMTQgKzI1NCwxNCBAQCB2b2lkIEND
T2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OmxlYXZl
VG9UYXJnZXRSZW5kZXJTdQogICAgICAgICBtX3N0YWNrLnJlbW92ZUxhc3QoKTsKICAgICB9IGVs
c2UgewogICAgICAgICAvLyBSZXBsYWNlIHRoZSB0b3Agb2YgdGhlIHN0YWNrIHdpdGggdGhlIG5l
dyBwdXNoZWQgc3VyZmFjZS4gQ29weSB0aGUgb2NjbHVkZWQgc2NyZWVuIHJlZ2lvbiB0byB0aGUg
dG9wLgotICAgICAgICBtX3N0YWNrLmxhc3QoKS5zdXJmYWNlID0gbmV3VGFyZ2V0OworICAgICAg
ICBtX3N0YWNrLmxhc3QoKS50YXJnZXQgPSBuZXdUYXJnZXQ7CiAgICAgICAgIG1fc3RhY2subGFz
dCgpLm9jY2x1c2lvbkluVGFyZ2V0ID0gb2xkVGFyZ2V0T2NjbHVzaW9uSW5OZXdUYXJnZXQ7CiAg
ICAgfQogCi0gICAgaWYgKG9sZFRhcmdldC0+YmFja2dyb3VuZEZpbHRlcnMoKS5oYXNGaWx0ZXJU
aGF0TW92ZXNQaXhlbHMoKSkgewotICAgICAgICByZWR1Y2VPY2NsdXNpb25CZWxvd1N1cmZhY2Uo
b2xkVGFyZ2V0LCB1bm9jY2x1ZGVkU3VyZmFjZVJlY3QsIG9sZFRhcmdldC0+b3JpZ2luVHJhbnNm
b3JtKCksIG5ld1RhcmdldCwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQsIG1fc3Rh
Y2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuKTsKLSAgICAgICAgaWYgKG9sZFRhcmdldC0+aGFz
UmVwbGljYSgpKQotICAgICAgICAgICAgcmVkdWNlT2NjbHVzaW9uQmVsb3dTdXJmYWNlKG9sZFRh
cmdldCwgdW5vY2NsdWRlZFJlcGxpY2FSZWN0LCBvbGRUYXJnZXQtPnJlcGxpY2FPcmlnaW5UcmFu
c2Zvcm0oKSwgbmV3VGFyZ2V0LCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldCwgbV9z
dGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4pOworICAgIGlmIChvbGRTdXJmYWNlLT5iYWNr
Z3JvdW5kRmlsdGVycygpLmhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpKSB7CisgICAgICAgIHJl
ZHVjZU9jY2x1c2lvbkJlbG93U3VyZmFjZShvbGRUYXJnZXQsIHVub2NjbHVkZWRTdXJmYWNlUmVj
dCwgb2xkU3VyZmFjZS0+b3JpZ2luVHJhbnNmb3JtKCksIG5ld1RhcmdldCwgbV9zdGFjay5sYXN0
KCkub2NjbHVzaW9uSW5UYXJnZXQsIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuKTsK
KyAgICAgICAgaWYgKG9sZFN1cmZhY2UtPmhhc1JlcGxpY2EoKSkKKyAgICAgICAgICAgIHJlZHVj
ZU9jY2x1c2lvbkJlbG93U3VyZmFjZShvbGRUYXJnZXQsIHVub2NjbHVkZWRSZXBsaWNhUmVjdCwg
b2xkU3VyZmFjZS0+cmVwbGljYU9yaWdpblRyYW5zZm9ybSgpLCBuZXdUYXJnZXQsIG1fc3RhY2su
bGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0LCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVl
bik7CiAgICAgfQogfQogCkBAIC0zMzUsNyArMzM1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5
ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KIHZvaWQgQ0NPY2NsdXNpb25UcmFj
a2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIoY29uc3QgTGF5ZXJUeXBlKiBsYXllcikKIHsKICAgICBBU1NFUlQoIW1fc3RhY2suaXNF
bXB0eSgpKTsKLSAgICBBU1NFUlQobGF5ZXItPnRhcmdldFJlbmRlclN1cmZhY2UoKSA9PSBtX3N0
YWNrLmxhc3QoKS5zdXJmYWNlKTsKKyAgICBBU1NFUlQobGF5ZXItPnJlbmRlclRhcmdldCgpID09
IG1fc3RhY2subGFzdCgpLnRhcmdldCk7CiAgICAgaWYgKG1fc3RhY2suaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIENDT2NjbHVzaW9uVHJhY2tl
ckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Om1hcmtPY2NsdWRlZEJlaGluZExh
eQogICAgIC8vIHJlbWFpbiByZWN0aWxpbmVhciwgdGhlbiB3ZSBkb24ndCBhZGQgYW55IG9jY2x1
c2lvbiBpbiBzY3JlZW4gc3BhY2UuCiAKICAgICBpZiAobGF5ZXJUcmFuc2Zvcm1zVG9TY3JlZW5L
bm93bihsYXllcikpIHsKLSAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdGFyZ2V0VG9T
Y3JlZW5UcmFuc2Zvcm0gPSBtX3N0YWNrLmxhc3QoKS5zdXJmYWNlLT5zY3JlZW5TcGFjZVRyYW5z
Zm9ybSgpOworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0YXJnZXRUb1NjcmVlblRy
YW5zZm9ybSA9IG1fc3RhY2subGFzdCgpLnRhcmdldC0+cmVuZGVyU3VyZmFjZSgpLT5zY3JlZW5T
cGFjZVRyYW5zZm9ybSgpOwogICAgICAgICBib29sIGNsaXBwZWQ7CiAgICAgICAgIEZsb2F0UXVh
ZCBzY2lzc29ySW5TY3JlZW5RdWFkID0gQ0NNYXRoVXRpbDo6bWFwUXVhZCh0YXJnZXRUb1NjcmVl
blRyYW5zZm9ybSwgRmxvYXRRdWFkKEZsb2F0UmVjdChzY2lzc29ySW5UYXJnZXQpKSwgY2xpcHBl
ZCk7CiAgICAgICAgIC8vIEZJWE1FOiBGaW5kIGEgcmVjdCBpbnRlcmlvciB0byB0aGUgdHJhbnNm
b3JtZWQgc2Npc3NvciBxdWFkLgpAQCAtMzg1LDcgKzM4NSw3IEBAIGJvb2wgQ0NPY2NsdXNpb25U
cmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6b2NjbHVkZWQoY29uc3Qg
TGF5ZXJUCiAgICAgaWYgKGNvbnRlbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBBU1NFUlQobGF5ZXItPnRhcmdldFJlbmRlclN1cmZhY2UoKSA9PSBtX3N0YWNr
Lmxhc3QoKS5zdXJmYWNlKTsKKyAgICBBU1NFUlQobGF5ZXItPnJlbmRlclRhcmdldCgpID09IG1f
c3RhY2subGFzdCgpLnRhcmdldCk7CiAKICAgICBpZiAobGF5ZXJUcmFuc2Zvcm1zVG9TY3JlZW5L
bm93bihsYXllcikgJiYgdGVzdENvbnRlbnRSZWN0T2NjbHVkZWQoY29udGVudFJlY3QsIGNvbnRl
bnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIpLCBtX3NjaXNzb3JSZWN0
SW5TY3JlZW5TcGFjZSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4pKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTQyNSw3ICs0MjUsNyBAQCBJbnRSZWN0IENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OnVub2NjbHVkZWRDb250ZW50
UgogICAgIGlmIChjb250ZW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBjb250ZW50
UmVjdDsKIAotICAgIEFTU0VSVChsYXllci0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpID09IG1fc3Rh
Y2subGFzdCgpLnN1cmZhY2UpOworICAgIEFTU0VSVChsYXllci0+cmVuZGVyVGFyZ2V0KCkgPT0g
bV9zdGFjay5sYXN0KCkudGFyZ2V0KTsKIAogICAgIC8vIFdlIHdhbnQgdG8gcmV0dXJuIGEgcmVj
dCB0aGF0IGNvbnRhaW5zIGFsbCB0aGUgdmlzaWJsZSBwYXJ0cyBvZiB8Y29udGVudFJlY3R8IGlu
IGJvdGggc2NyZWVuIHNwYWNlIGFuZCBpbiB0aGUgdGFyZ2V0IHN1cmZhY2UuCiAgICAgLy8gU28g
d2UgZmluZCB0aGUgdmlzaWJsZSBwYXJ0cyBvZiB8Y29udGVudFJlY3R8IGluIGVhY2ggc3BhY2Us
IGFuZCB0YWtlIHRoZSBpbnRlcnNlY3Rpb24uCkBAIC00NDUsMjIgKzQ0NSwyNyBAQCBJbnRSZWN0
IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OnVu
b2NjbHVkZWRDb250ZW50UgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVu
YW1lIFJlbmRlclN1cmZhY2VUeXBlPgotSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExh
eWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+Ojp1bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFj
ZUNvbnRlbnRSZWN0KGNvbnN0IFJlbmRlclN1cmZhY2VUeXBlKiBzdXJmYWNlLCBib29sIGZvclJl
cGxpY2EsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdAorSW50UmVjdCBDQ09jY2x1
c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+Ojp1bm9jY2x1ZGVk
Q29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNvbnN0IExheWVyVHlwZSogbGF5ZXIsIGJv
b2wgZm9yUmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKCFtX3N0YWNrLmlzRW1wdHkoKSk7Ci0gICAgLy8gVGhpcyBzaG91bGQgYmUgY2FsbGVk
IHdoaWxlIHRoZSBjb250cmlidXRpbmcgcmVuZGVyIHN1cmZhY2UgaXMgc3RpbGwgY29uc2lkZXJl
ZCB0aGUgY3VycmVudCB0YXJnZXQgaW4gdGhlIG9jY2x1c2lvbiB0cmFja2VyLgotICAgIEFTU0VS
VChzdXJmYWNlID09IG1fc3RhY2subGFzdCgpLnN1cmZhY2UpOworICAgIC8vIFRoZSBsYXllciBp
cyBhIGNvbnRyaWJ1dGluZyByZW5kZXJUYXJnZXQgc28gaXQgc2hvdWxkIGhhdmUgYSBzdXJmYWNl
LgorICAgIEFTU0VSVChsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAvLyBUaGUgbGF5ZXIg
aXMgYSBjb250cmlidXRpbmcgcmVuZGVyVGFyZ2V0IHNvIGl0cyB0YXJnZXQgc2hvdWxkIGJlIGl0
c2VsZi4KKyAgICBBU1NFUlQobGF5ZXItPnJlbmRlclRhcmdldCgpID09IGxheWVyKTsKKyAgICAv
LyBUaGUgbGF5ZXIgc2hvdWxkIG5vdCBiZSB0aGUgcm9vdCwgZWxzZSB3aGF0IGlzIGlzIGNvbnRy
aWJ1dGluZyB0bz8KKyAgICBBU1NFUlQobGF5ZXItPnBhcmVudCgpKTsKKyAgICAvLyBUaGlzIHNo
b3VsZCBiZSBjYWxsZWQgd2hpbGUgdGhlIGxheWVyIGlzIHN0aWxsIGNvbnNpZGVyZWQgdGhlIGN1
cnJlbnQgdGFyZ2V0IGluIHRoZSBvY2NsdXNpb24gdHJhY2tlci4KKyAgICBBU1NFUlQobGF5ZXIg
PT0gbV9zdGFjay5sYXN0KCkudGFyZ2V0KTsKIAogICAgIGlmIChjb250ZW50UmVjdC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBjb250ZW50UmVjdDsKIAorICAgIFJlbmRlclN1cmZhY2VUeXBl
KiBzdXJmYWNlID0gbGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKKwogICAgIEludFJlY3Qgc3VyZmFj
ZUNsaXBSZWN0ID0gc3VyZmFjZS0+Y2xpcFJlY3QoKTsKICAgICBpZiAoc3VyZmFjZUNsaXBSZWN0
LmlzRW1wdHkoKSkgewotICAgICAgICBjb25zdCBSZW5kZXJTdXJmYWNlVHlwZSogdGFyZ2V0U3Vy
ZmFjZSA9IHN1cmZhY2UtPnRhcmdldFJlbmRlclN1cmZhY2UoKTsKLSAgICAgICAgaWYgKHRhcmdl
dFN1cmZhY2UpCi0gICAgICAgICAgICBzdXJmYWNlQ2xpcFJlY3QgPSBpbnRlcnNlY3Rpb24odGFy
Z2V0U3VyZmFjZS0+Y29udGVudFJlY3QoKSwgZW5jbG9zaW5nSW50UmVjdChzdXJmYWNlLT5kcmF3
YWJsZUNvbnRlbnRSZWN0KCkpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3VyZmFjZUNs
aXBSZWN0ID0gbV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2U7CisgICAgICAgIExheWVyVHlwZSog
Y29udHJpYnV0aW5nU3VyZmFjZVJlbmRlclRhcmdldCA9IGxheWVyLT5wYXJlbnQoKS0+cmVuZGVy
VGFyZ2V0KCk7CisgICAgICAgIHN1cmZhY2VDbGlwUmVjdCA9IGludGVyc2VjdGlvbihjb250cmli
dXRpbmdTdXJmYWNlUmVuZGVyVGFyZ2V0LT5yZW5kZXJTdXJmYWNlKCktPmNvbnRlbnRSZWN0KCks
IGVuY2xvc2luZ0ludFJlY3Qoc3VyZmFjZS0+ZHJhd2FibGVDb250ZW50UmVjdCgpKSk7CiAgICAg
fQogCiAgICAgLy8gQSBjb250cmlidXRpbmcgc3VyZmFjZSBkb2Vzbid0IGdldCBvY2NsdWRlZCBi
eSB0aGluZ3MgaW5zaWRlIGl0cyBvd24gc3VyZmFjZSwgc28gb25seSB0aGluZ3Mgb3V0c2lkZSB0
aGUgc3VyZmFjZSBjYW4gb2NjbHVkZSBpdC4gVGhhdCBvY2NsdXNpb24gaXMKQEAgLTQ5Nyw4ICs1
MDIsOCBAQCBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJT
dXJmYWNlVHlwZT46OnVub2NjbHVkZWRDb250cmlidQogdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJU
eXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KIEludFJlY3QgQ0NPY2NsdXNpb25UcmFj
a2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bGF5ZXJTY2lzc29yUmVjdElu
VGFyZ2V0U3VyZmFjZShjb25zdCBMYXllclR5cGUqIGxheWVyKSBjb25zdAogewotICAgIGNvbnN0
IFJlbmRlclN1cmZhY2VUeXBlKiB0YXJnZXRTdXJmYWNlID0gbV9zdGFjay5sYXN0KCkuc3VyZmFj
ZTsKLSAgICBGbG9hdFJlY3QgdG90YWxTY2lzc29yID0gdGFyZ2V0U3VyZmFjZS0+Y29udGVudFJl
Y3QoKTsKKyAgICBjb25zdCBMYXllclR5cGUqIHJlbmRlclRhcmdldCA9IG1fc3RhY2subGFzdCgp
LnRhcmdldDsKKyAgICBGbG9hdFJlY3QgdG90YWxTY2lzc29yID0gcmVuZGVyVGFyZ2V0LT5yZW5k
ZXJTdXJmYWNlKCktPmNvbnRlbnRSZWN0KCk7CiAgICAgaWYgKGxheWVyLT51c2VzTGF5ZXJDbGlw
cGluZygpKQogICAgICAgICB0b3RhbFNjaXNzb3IuaW50ZXJzZWN0KGxheWVyLT5jbGlwUmVjdCgp
KTsKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdCh0b3RhbFNjaXNzb3IpOwpAQCAtNTA4LDI1
ICs1MTMsMjUgQEAgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVu
ZGVyU3VyZmFjZVR5cGU+OjpsYXllclNjaXNzb3JSZWN0SW4KIHRlbXBsYXRlIENDT2NjbHVzaW9u
VHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6Q0NPY2Ns
dXNpb25UcmFja2VyQmFzZShJbnRSZWN0IHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgYm9vbCBy
ZWNvcmRNZXRyaWNzRm9yRnJhbWUpOwogdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJC
YXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46OmVudGVyTGF5ZXIoY29u
c3QgQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJDaHJvbWl1bT4mKTsKIHRlbXBsYXRlIHZv
aWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hy
b21pdW0+OjpsZWF2ZUxheWVyKGNvbnN0IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyQ2hy
b21pdW0+Jik7Ci10ZW1wbGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJv
bWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6ZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNv
bnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bSogbmV3VGFyZ2V0KTsKLXRlbXBsYXRlIHZvaWQgQ0NP
Y2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+
OjpmaW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgTGF5ZXJDaHJvbWl1bSogb3duaW5n
TGF5ZXIsIGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bSogZmluaXNoZWRUYXJnZXQpOwotdGVt
cGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1
cmZhY2VDaHJvbWl1bT46OmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKGNvbnN0IFJlbmRlclN1
cmZhY2VDaHJvbWl1bSogbmV3VGFyZ2V0KTsKK3RlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFj
a2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjplbnRlclJlbmRl
clRhcmdldChjb25zdCBMYXllckNocm9taXVtKiBuZXdUYXJnZXQpOwordGVtcGxhdGUgdm9pZCBD
Q09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1
bT46OmZpbmlzaGVkUmVuZGVyVGFyZ2V0KGNvbnN0IExheWVyQ2hyb21pdW0qIGZpbmlzaGVkVGFy
Z2V0KTsKK3RlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVt
LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpsZWF2ZVRvUmVuZGVyVGFyZ2V0KGNvbnN0IExheWVy
Q2hyb21pdW0qIG5ld1RhcmdldCk7CiB0ZW1wbGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJh
c2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6bWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIoY29uc3QgTGF5ZXJDaHJvbWl1bSopOwogdGVtcGxhdGUgYm9vbCBDQ09jY2x1c2lv
blRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46Om9jY2x1
ZGVkKGNvbnN0IExheWVyQ2hyb21pdW0qLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29u
c3Q7CiB0ZW1wbGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1
bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6dW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnN0IExh
eWVyQ2hyb21pdW0qLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3Q7Ci10ZW1wbGF0
ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3Vy
ZmFjZUNocm9taXVtPjo6dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChj
b25zdCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qLCBib29sIGZvclJlcGxpY2EsIGNvbnN0IEludFJl
Y3QmIGNvbnRlbnRSZWN0KSBjb25zdDsKK3RlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25UcmFj
a2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+Ojp1bm9jY2x1ZGVk
Q29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNvbnN0IExheWVyQ2hyb21pdW0qLCBib29s
IGZvclJlcGxpY2EsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdDsKIHRlbXBsYXRl
IEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJm
YWNlQ2hyb21pdW0+OjpsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGNvbnN0IExheWVy
Q2hyb21pdW0qKSBjb25zdDsKIAogdGVtcGxhdGUgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xh
eWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6Q0NPY2NsdXNpb25UcmFja2VyQmFzZShJbnRSZWN0
IHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgYm9vbCByZWNvcmRNZXRyaWNzRm9yRnJhbWUpOwog
dGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRl
clN1cmZhY2U+OjplbnRlckxheWVyKGNvbnN0IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPENDTGF5
ZXJJbXBsPiYpOwogdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJ
bXBsLCBDQ1JlbmRlclN1cmZhY2U+OjpsZWF2ZUxheWVyKGNvbnN0IENDTGF5ZXJJdGVyYXRvclBv
c2l0aW9uPENDTGF5ZXJJbXBsPiYpOwotdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJC
YXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjplbnRlclRhcmdldFJlbmRlclN1cmZh
Y2UoY29uc3QgQ0NSZW5kZXJTdXJmYWNlKiBuZXdUYXJnZXQpOwotdGVtcGxhdGUgdm9pZCBDQ09j
Y2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjpmaW5pc2hl
ZFRhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgQ0NMYXllckltcGwqIG93bmluZ0xheWVyLCBjb25z
dCBDQ1JlbmRlclN1cmZhY2UqIGZpbmlzaGVkVGFyZ2V0KTsKLXRlbXBsYXRlIHZvaWQgQ0NPY2Ns
dXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6bGVhdmVUb1Rh
cmdldFJlbmRlclN1cmZhY2UoY29uc3QgQ0NSZW5kZXJTdXJmYWNlKiBuZXdUYXJnZXQpOwordGVt
cGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1
cmZhY2U+OjplbnRlclJlbmRlclRhcmdldChjb25zdCBDQ0xheWVySW1wbCogbmV3VGFyZ2V0KTsK
K3RlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5k
ZXJTdXJmYWNlPjo6ZmluaXNoZWRSZW5kZXJUYXJnZXQoY29uc3QgQ0NMYXllckltcGwqIGZpbmlz
aGVkVGFyZ2V0KTsKK3RlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVy
SW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6bGVhdmVUb1JlbmRlclRhcmdldChjb25zdCBDQ0xheWVy
SW1wbCogbmV3VGFyZ2V0KTsKIHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxD
Q0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY29u
c3QgQ0NMYXllckltcGwqKTsKIHRlbXBsYXRlIGJvb2wgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxD
Q0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6b2NjbHVkZWQoY29uc3QgQ0NMYXllckltcGwq
LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3Q7CiB0ZW1wbGF0ZSBJbnRSZWN0IEND
T2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46OnVub2Nj
bHVkZWRDb250ZW50UmVjdChjb25zdCBDQ0xheWVySW1wbCosIGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0KSBjb25zdDsKLXRlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxD
Q0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZh
Y2VDb250ZW50UmVjdChjb25zdCBDQ1JlbmRlclN1cmZhY2UqLCBib29sIGZvclJlcGxpY2EsIGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdDsKK3RlbXBsYXRlIEludFJlY3QgQ0NPY2Ns
dXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6dW5vY2NsdWRl
ZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjb25zdCBDQ0xheWVySW1wbCosIGJvb2wg
Zm9yUmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0OwogdGVtcGxhdGUg
SW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZh
Y2U+OjpsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGNvbnN0IENDTGF5ZXJJbXBsKikg
Y29uc3Q7CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaAppbmRleCAwY2E5NjZk
OTYzMjM5ZjdlNTcwMzA3ZDNlMDY0NDE4MDFhMWQ1MDExLi5hZTg1NzUxZWExZjgxMmVhYjViNDRl
NTAwZmM1YTg4Yjk3YmZmYzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaApA
QCAtNTgsOSArNTgsOSBAQCBwdWJsaWM6CiAgICAgLy8gR2l2ZXMgYW4gdW5vY2NsdWRlZCBzdWIt
cmVjdCBvZiB8Y29udGVudFJlY3R8IGluIHRoZSBjb250ZW50IHNwYWNlIG9mIHRoZSBsYXllci4g
VXNlZCB3aGVuIGNvbnNpZGVyaW5nIG9jY2x1c2lvbiBmb3IgYSBsYXllciB0aGF0IHBhaW50cy9k
cmF3cyBzb21ldGhpbmcuCiAgICAgSW50UmVjdCB1bm9jY2x1ZGVkQ29udGVudFJlY3QoY29uc3Qg
TGF5ZXJUeXBlKiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0OwogCi0gICAgLy8g
R2l2ZXMgYW4gdW5vY2NsdWRlZCBzdWItcmVjdCBvZiB8Y29udGVudFJlY3R8IGluIHRoZSBjb250
ZW50IHNwYWNlIG9mIHRoZSBzdXJmYWNlLiBVc2VkIHdoZW4gY29uc2lkZXJpbmcgb2NjbHVzaW9u
IGZvciBhIGNvbnRyaWJ1dGluZyBzdXJmYWNlCi0gICAgLy8gdGhhdCBpcyByZW5kZXJpbmcgaW50
byBhbm90aGVyIHRhcmdldCBzdXJmYWNlLgotICAgIEludFJlY3QgdW5vY2NsdWRlZENvbnRyaWJ1
dGluZ1N1cmZhY2VDb250ZW50UmVjdChjb25zdCBSZW5kZXJTdXJmYWNlVHlwZSosIGJvb2wgZm9y
UmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0OworICAgIC8vIEdpdmVz
IGFuIHVub2NjbHVkZWQgc3ViLXJlY3Qgb2YgfGNvbnRlbnRSZWN0fCBpbiB0aGUgY29udGVudCBz
cGFjZSBvZiB0aGUgcmVuZGVyVGFyZ2V0IG93bmVkIGJ5IHRoZSBsYXllci4KKyAgICAvLyBVc2Vk
IHdoZW4gY29uc2lkZXJpbmcgb2NjbHVzaW9uIGZvciBhIGNvbnRyaWJ1dGluZyBzdXJmYWNlIHRo
YXQgaXMgcmVuZGVyaW5nIGludG8gYW5vdGhlciB0YXJnZXQuCisgICAgSW50UmVjdCB1bm9jY2x1
ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNvbnN0IExheWVyVHlwZSosIGJvb2wg
Zm9yUmVwbGljYSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0OwogCiAgICAgLy8g
UmVwb3J0IG9wZXJhdGlvbnMgZm9yIHJlY29yZGluZyBvdmVyZHJhdyBtZXRyaWNzLgogICAgIEND
T3ZlcmRyYXdNZXRyaWNzJiBvdmVyZHJhd01ldHJpY3MoKSBjb25zdCB7IHJldHVybiAqbV9vdmVy
ZHJhd01ldHJpY3MuZ2V0KCk7IH0KQEAgLTc1LDkgKzc1LDkgQEAgcHVibGljOgogCiBwcm90ZWN0
ZWQ6CiAgICAgc3RydWN0IFN0YWNrT2JqZWN0IHsKLSAgICAgICAgU3RhY2tPYmplY3QoKSA6IHN1
cmZhY2UoMCkgeyB9Ci0gICAgICAgIFN0YWNrT2JqZWN0KGNvbnN0IFJlbmRlclN1cmZhY2VUeXBl
KiBzdXJmYWNlKSA6IHN1cmZhY2Uoc3VyZmFjZSkgeyB9Ci0gICAgICAgIGNvbnN0IFJlbmRlclN1
cmZhY2VUeXBlKiBzdXJmYWNlOworICAgICAgICBTdGFja09iamVjdCgpIDogdGFyZ2V0KDApIHsg
fQorICAgICAgICBTdGFja09iamVjdChjb25zdCBMYXllclR5cGUqIHRhcmdldCkgOiB0YXJnZXQo
dGFyZ2V0KSB7IH0KKyAgICAgICAgY29uc3QgTGF5ZXJUeXBlKiB0YXJnZXQ7CiAgICAgICAgIFJl
Z2lvbiBvY2NsdXNpb25JblNjcmVlbjsKICAgICAgICAgUmVnaW9uIG9jY2x1c2lvbkluVGFyZ2V0
OwogICAgIH07CkBAIC05NiwxNSArOTYsMTUgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAg
IC8vIENhbGxlZCB3aGVuIHZpc2l0aW5nIGEgbGF5ZXIgcmVwcmVzZW50aW5nIGl0c2VsZi4gSWYg
dGhlIHRhcmdldCB3YXMgbm90IGFscmVhZHkgY3VycmVudCwgdGhlbiB0aGlzIGluZGljYXRlcyB3
ZSBoYXZlIGVudGVyZWQgYSBuZXcgc3VyZmFjZSBzdWJ0cmVlLgotICAgIHZvaWQgZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKGNvbnN0IFJlbmRlclN1cmZhY2VUeXBlKiBuZXdUYXJnZXQpOworICAg
IHZvaWQgZW50ZXJSZW5kZXJUYXJnZXQoY29uc3QgTGF5ZXJUeXBlKiBuZXdUYXJnZXQpOwogCiAg
ICAgLy8gQ2FsbGVkIHdoZW4gdmlzaXRpbmcgYSBsYXllciByZXByZXNlbnRpbmcgYSB0YXJnZXQg
c3VyZmFjZS4gVGhpcyBpbmRpY2F0ZXMgd2UgaGF2ZSB2aXNpdGVkIGFsbCB0aGUgbGF5ZXJzIHdp
dGhpbiB0aGUgc3VyZmFjZSwgYW5kIHdlIG1heQogICAgIC8vIHBlcmZvcm0gYW55IHN1cmZhY2Ut
d2lkZSBvcGVyYXRpb25zLgotICAgIHZvaWQgZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNv
bnN0IExheWVyVHlwZSosIGNvbnN0IFJlbmRlclN1cmZhY2VUeXBlKiBmaW5pc2hlZFRhcmdldCk7
CisgICAgdm9pZCBmaW5pc2hlZFJlbmRlclRhcmdldChjb25zdCBMYXllclR5cGUqIGZpbmlzaGVk
VGFyZ2V0KTsKIAogICAgIC8vIENhbGxlZCB3aGVuIHZpc2l0aW5nIGEgbGF5ZXIgcmVwcmVzZW50
aW5nIGEgY29udHJpYnV0aW5nIHN1cmZhY2UuIFRoaXMgaW5kaWNhdGVzIHRoYXQgd2UgYXJlIGxl
YXZpbmcgb3VyIGN1cnJlbnQgc3VyZmFjZSwgYW5kCiAgICAgLy8gZW50ZXJpbmcgdGhlIG5ldyBv
bmUuIFdlIHRoZW4gcGVyZm9ybSBhbnkgb3BlcmF0aW9ucyByZXF1aXJlZCBmb3IgbWVyZ2luZyBy
ZXN1bHRzIGZyb20gdGhlIGNoaWxkIHN1YnRyZWUgaW50byBpdHMgcGFyZW50LgotICAgIHZvaWQg
bGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIG5ld1Rh
cmdldCk7CisgICAgdm9pZCBsZWF2ZVRvUmVuZGVyVGFyZ2V0KGNvbnN0IExheWVyVHlwZSogbmV3
VGFyZ2V0KTsKIAogICAgIC8vIEFkZCB0aGUgbGF5ZXIncyBvY2NsdXNpb24gdG8gdGhlIHRyYWNr
ZWQgc3RhdGUuCiAgICAgdm9pZCBtYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjb25zdCBMYXllclR5
cGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUXVhZEN1bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCmluZGV4IGRhODk4MDI5NTIxNTIzOTEyNmIw
ZTk4YjExM2Q1YjllYjhiYzhkZDkuLjY1Zjc4Nzg4ZWQ0OWFlMjQyODVmN2RhY2NlYjcxZGUxZjQ5
YTNlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcApAQCAtODQsNyArODQsNyBAQCBib29s
IENDUXVhZEN1bGxlcjo6YXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFk
KQogCiBib29sIENDUXVhZEN1bGxlcjo6YXBwZW5kU3VyZmFjZShQYXNzT3duUHRyPENDRHJhd1F1
YWQ+IHBhc3NEcmF3UXVhZCkKIHsKLSAgICBJbnRSZWN0IGN1bGxlZFJlY3QgPSBtX29jY2x1c2lv
blRyYWNrZXItPnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QobV9sYXll
ci0+cmVuZGVyU3VyZmFjZSgpLCBmYWxzZSwgcGFzc0RyYXdRdWFkLT5xdWFkUmVjdCgpKTsKKyAg
ICBJbnRSZWN0IGN1bGxlZFJlY3QgPSBtX29jY2x1c2lvblRyYWNrZXItPnVub2NjbHVkZWRDb250
cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QobV9sYXllciwgZmFsc2UsIHBhc3NEcmF3UXVhZC0+
cXVhZFJlY3QoKSk7CiAgICAgcmV0dXJuIGFwcGVuZFF1YWRJbnRlcm5hbChwYXNzRHJhd1F1YWQs
IGN1bGxlZFJlY3QsIG1fcXVhZExpc3QsICptX29jY2x1c2lvblRyYWNrZXIsIG1fc2hvd0N1bGxp
bmdXaXRoRGVidWdCb3JkZXJRdWFkcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2Uu
Y3BwCmluZGV4IDhiZDQ2YmYwMGJjYjRhNTIwYWY2ZWMzZTNlMWJjMjU2Y2M4OTMxYzEuLjJjOTM3
MTg3MjIyMWI0YzM1YWQ5OGQyYWY0NDBlY2Q3MmJkODFmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJTdXJmYWNlLmNwcApAQCAtMTIwLDE0ICsxMjAsNiBAQCBpbnQgQ0NSZW5kZXJTdXJmYWNlOjpv
d25pbmdMYXllcklkKCkgY29uc3QKICAgICByZXR1cm4gbV9vd25pbmdMYXllciA/IG1fb3duaW5n
TGF5ZXItPmlkKCkgOiAwOwogfQogCi1DQ1JlbmRlclN1cmZhY2UqIENDUmVuZGVyU3VyZmFjZTo6
dGFyZ2V0UmVuZGVyU3VyZmFjZSgpIGNvbnN0Ci17Ci0gICAgQ0NMYXllckltcGwqIHBhcmVudCA9
IG1fb3duaW5nTGF5ZXItPnBhcmVudCgpOwotICAgIGlmICghcGFyZW50KQotICAgICAgICByZXR1
cm4gMDsKLSAgICByZXR1cm4gcGFyZW50LT50YXJnZXRSZW5kZXJTdXJmYWNlKCk7Ci19Ci0KIGJv
b2wgQ0NSZW5kZXJTdXJmYWNlOjpoYXNSZXBsaWNhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9v
d25pbmdMYXllci0+cmVwbGljYUxheWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCmlu
ZGV4IDU0MTBiZWZlZDM4YjZiZWIxZGE3MjEyZGU3OTIyZTQ3NWQyNGZmOGEuLjc5MDhlODQxYWMz
NTg1YzA0NmZkYzRmZWQ5MGI1NDYxYzJjNjEzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFj
ZS5oCkBAIC0xMTQsNyArMTE0LDYgQEAgcHVibGljOgogICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+
JiBsYXllckxpc3QoKSB7IHJldHVybiBtX2xheWVyTGlzdDsgfQogCiAgICAgaW50IG93bmluZ0xh
eWVySWQoKSBjb25zdDsKLSAgICBDQ1JlbmRlclN1cmZhY2UqIHRhcmdldFJlbmRlclN1cmZhY2Uo
KSBjb25zdDsKIAogICAgIGJvb2wgaGFzUmVwbGljYSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDRGFtYWdlVHJhY2tlclRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0RhbWFnZVRyYWNrZXJUZXN0LmNwcAppbmRleCBm
NDk4MDY5ZjBlZWE3OWYzMjg5ZmQ2NGI0MDVhZDk3NmE5MWE4NjkwLi45NDMzZDg5ZGE3YzY0ODhm
NmEyY2RkNzJjNTBhMzM3ZDA3ODM0NjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDRGFtYWdlVHJhY2tlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NEYW1hZ2VUcmFja2VyVGVzdC5jcHAKQEAgLTExMDcsNyArMTEwNyw3IEBA
IFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JFbXB0eUxheWVyTGlz
dCkKICAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEp
OwogICAgIHJvb3QtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKIAotICAgIEFTU0VSVF9UUlVFKHJv
b3QtPnJlbmRlclN1cmZhY2UoKSA9PSByb290LT50YXJnZXRSZW5kZXJTdXJmYWNlKCkpOworICAg
IEFTU0VSVF9UUlVFKHJvb3QgPT0gcm9vdC0+cmVuZGVyVGFyZ2V0KCkpOwogICAgIENDUmVuZGVy
U3VyZmFjZSogdGFyZ2V0U3VyZmFjZSA9IHJvb3QtPnJlbmRlclN1cmZhY2UoKTsKICAgICB0YXJn
ZXRTdXJmYWNlLT5jbGVhckxheWVyTGlzdCgpOwogICAgIHRhcmdldFN1cmZhY2UtPmRhbWFnZVRy
YWNrZXIoKS0+dXBkYXRlRGFtYWdlVHJhY2tpbmdTdGF0ZSh0YXJnZXRTdXJmYWNlLT5sYXllckxp
c3QoKSwgdGFyZ2V0U3VyZmFjZS0+b3duaW5nTGF5ZXJJZCgpLCBmYWxzZSwgSW50UmVjdCgpLCAw
LCBXZWJGaWx0ZXJPcGVyYXRpb25zKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwCmluZGV4IDg5MmRhNGYyZjRiNmJlY2FkODNjZTZlZjA1
M2NjNDQ1ZDQ0ODg4ODYuLjIyY2Y4OTdjYjg1YzAxMzEwNjk4ZDhjZWM4MzNiMTZjMzBhZmFlNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5j
cHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBURVNUKENDTGF5ZXJJbXBsVGVzdCwgdmVyaWZ5TGF5ZXJD
aGFuZ2VzQXJlVHJhY2tlZFByb3Blcmx5KQogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVF
X0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldENsaXBSZWN0KGFyYml0cmFyeUludFJlY3QpKTsKICAg
ICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRVc2Vz
TGF5ZXJDbGlwcGluZyh0cnVlKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElE
X05PVF9DSEFOR0Uocm9vdC0+c2V0RHJhd09wYWNpdHkoYXJiaXRyYXJ5TnVtYmVyKSk7Ci0gICAg
RVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0VGFyZ2V0
UmVuZGVyU3VyZmFjZSgwKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05P
VF9DSEFOR0Uocm9vdC0+c2V0UmVuZGVyVGFyZ2V0KDApKTsKICAgICBFWEVDVVRFX0FORF9WRVJJ
RllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXREcmF3VHJhbnNmb3JtKGFyYml0cmFy
eVRyYW5zZm9ybSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hB
TkdFKHJvb3QtPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKGFyYml0cmFyeVRyYW5zZm9ybSkpOwog
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldERy
YXdhYmxlQ29udGVudFJlY3QoYXJiaXRyYXJ5SW50UmVjdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAK
aW5kZXggNTQ0MDk1MTRjZTYzMzg5ZDA4YTZkMTdlZGU2YjhhYjk3NjdiOGQ0ZC4uMGZhNzQyNTQ4
MWMyYzdhYTgyMjUxMjRhMmI3ZGZjNWVmMTU5Njk5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwCkBA
IC0zNTcsNyArMzU3LDcgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlU
cmFuc2Zvcm1zRm9yU2luZ2xlUmVuZGVyU3VyZmFjZSkKIAogICAgIC8vIFJlbmRlciBzdXJmYWNl
IHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBub3cuCiAgICAgQVNTRVJUX1RSVUUoY2hpbGQtPnJl
bmRlclN1cmZhY2UoKSk7Ci0gICAgQVNTRVJUX0VRKGNoaWxkLT5yZW5kZXJTdXJmYWNlKCksIGNo
aWxkLT50YXJnZXRSZW5kZXJTdXJmYWNlKCkpOworICAgIEFTU0VSVF9FUShjaGlsZCwgY2hpbGQt
PnJlbmRlclRhcmdldCgpKTsKIAogICAgIC8vIFRoZSBjaGlsZCBsYXllcidzIGRyYXcgdHJhbnNm
b3JtIHNob3VsZCByZWZlciB0byBpdHMgbmV3IHJlbmRlciBzdXJmYWNlOyB0aGV5IG9ubHkgZGlm
ZmVyIGJ5IGEgdHJhbnNsYXRpb24gdG8gY2VudGVyLgogICAgIC8vIFRoZSBzY3JlZW4tc3BhY2Ug
dHJhbnNmb3JtLCBob3dldmVyLCBzaG91bGQgc3RpbGwgcmVmZXIgdG8gdGhlIHJvb3QuCkBAIC0z
NjUsMTEgKzM2NSwxMSBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRy
YW5zZm9ybXNGb3JTaW5nbGVSZW5kZXJTdXJmYWNlKQogICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElP
Tl9NQVRSSVhfRVEocGFyZW50Q29tcG9zaXRlVHJhbnNmb3JtLCBjaGlsZC0+c2NyZWVuU3BhY2VU
cmFuc2Zvcm0oKSk7CiAKICAgICAvLyBXaXRob3V0IGNsaXBwaW5nLCB0aGUgb3JpZ2luIHRyYW5z
Zm9ybSBhbmQgZHJhdyB0cmFuc2Zvcm0gKGluIHRoaXMgcGFydGljdWxhciBjYXNlKSBzaG91bGQg
YmUgdGhlIHNhbWUuCi0gICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShwYXJlbnRD
b21wb3NpdGVUcmFuc2Zvcm0sIGNoaWxkLT50YXJnZXRSZW5kZXJTdXJmYWNlKCktPm9yaWdpblRy
YW5zZm9ybSgpKTsKLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKHBhcmVudENv
bXBvc2l0ZVRyYW5zZm9ybSwgY2hpbGQtPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+ZHJhd1RyYW5z
Zm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKHBhcmVudENvbXBv
c2l0ZVRyYW5zZm9ybSwgY2hpbGQtPnJlbmRlclRhcmdldCgpLT5yZW5kZXJTdXJmYWNlKCktPm9y
aWdpblRyYW5zZm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKHBh
cmVudENvbXBvc2l0ZVRyYW5zZm9ybSwgY2hpbGQtPnJlbmRlclRhcmdldCgpLT5yZW5kZXJTdXJm
YWNlKCktPmRyYXdUcmFuc2Zvcm0oKSk7CiAKICAgICAvLyBUaGUgc2NyZWVuIHNwYWNlIGlzIHRo
ZSBzYW1lIGFzIHRoZSB0YXJnZXQgc2luY2UgdGhlIGNoaWxkIHN1cmZhY2UgZHJhd3MgaW50byB0
aGUgcm9vdC4KLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKHBhcmVudENvbXBv
c2l0ZVRyYW5zZm9ybSwgY2hpbGQtPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+c2NyZWVuU3BhY2VU
cmFuc2Zvcm0oKSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShwYXJlbnRD
b21wb3NpdGVUcmFuc2Zvcm0sIGNoaWxkLT5yZW5kZXJUYXJnZXQoKS0+cmVuZGVyU3VyZmFjZSgp
LT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpKTsKIH0KIAogVEVTVChDQ0xheWVyVHJlZUhvc3RDb21t
b25UZXN0LCBzY2lzc29yUmVjdE5vQ2xpcCkKQEAgLTQ2NCwxMSArNDY0LDExIEBAIFRFU1QoQ0NM
YXllclRyZWVIb3N0Q29tbW9uVGVzdCwgc2Npc3NvclJlY3ROb0NsaXApCiAgICAgSW50UmVjdCBy
b290RGFtYWdlKHJvb3RSZWN0KTsKICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0
ZVZpc2libGVBbmRTY2lzc29yUmVjdHMocmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgcm9vdERhbWFn
ZSk7CiAgICAgCi0gICAgRVhQRUNUX0VRKHJvb3QtPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+c2Np
c3NvclJlY3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7CisgICAgRVhQRUNUX0VRKHJvb3QtPnJl
bmRlclRhcmdldCgpLT5yZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIEludFJlY3QoMCwg
MCwgMCwgMCkpOwogCiAgICAgLy8gY2hpbGQgc3VyZmFjZSBkb2Vzbid0IGhhdmUgYSBjbGlwIHJl
Y3QsIHRoZXJlZm9yZSBpdCB3aWxsIGJlIGNvbXB1dGVkIGFzIGludGVyc2VjdGlvbgogICAgIC8v
IGJldHdlZW4gcm9vdCBzdXJmYWNlJ3MgY29udGVudHJlY3QgYW5kIGNoaWxkIHN1cmZhY2UncyBk
cmF3YWJsZSBjb250ZW50IHJlY3QuCi0gICAgRVhQRUNUX0VRKGNoaWxkUHRyLT50YXJnZXRSZW5k
ZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIEludFJlY3QoY2hpbGRSZWN0LngoKSwgY2hpbGRS
ZWN0LnkoKSwgcm9vdFJlY3Qud2lkdGgoKSAtIGNoaWxkUmVjdC54KCksIHJvb3RSZWN0LmhlaWdo
dCgpIC0gY2hpbGRSZWN0LnkoKSkpOworICAgIEVYUEVDVF9FUShjaGlsZFB0ci0+cmVuZGVyVGFy
Z2V0KCktPnJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgSW50UmVjdChjaGlsZFJlY3Qu
eCgpLCBjaGlsZFJlY3QueSgpLCByb290UmVjdC53aWR0aCgpIC0gY2hpbGRSZWN0LngoKSwgcm9v
dFJlY3QuaGVpZ2h0KCkgLSBjaGlsZFJlY3QueSgpKSk7CiAKICAgICBFWFBFQ1RfRVEocm9vdC0+
c2Npc3NvclJlY3QoKSwgSW50UmVjdChyb290UmVjdCkpOwogCkBAIC00ODYsOCArNDg2LDggQEAg
VEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCBzY2lzc29yUmVjdE5vQ2xpcCkKICAgICBD
Q0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZVZpc2libGVBbmRTY2lzc29yUmVjdHMocmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCwgcm9vdERhbWFnZSk7CiAgICAgCiAgICAgLy8gRW1wdHkgZGFt
YWdlID09IGVtcHR5IHNjaXNzb3IKLSAgICBFWFBFQ1RfRVEocm9vdC0+dGFyZ2V0UmVuZGVyU3Vy
ZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJbnRSZWN0KDAsIDAsIDAsIDApKTsKLSAgICBFWFBFQ1Rf
RVEoY2hpbGRQdHItPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgSW50UmVj
dCgwLCAwLCAwLCAwKSk7CisgICAgRVhQRUNUX0VRKHJvb3QtPnJlbmRlclRhcmdldCgpLT5yZW5k
ZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIEludFJlY3QoMCwgMCwgMCwgMCkpOworICAgIEVY
UEVDVF9FUShjaGlsZFB0ci0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2UoKS0+c2Npc3Nv
clJlY3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7CiAgICAgCiAgICAgRVhQRUNUX0VRKHJvb3Qt
PnNjaXNzb3JSZWN0KCksIEludFJlY3QoMCwgMCwgMCwgMCkpOwogICAgIEVYUEVDVF9FUShjaGls
ZFB0ci0+c2Npc3NvclJlY3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7CkBAIC00OTgsMTAgKzQ5
OCwxMCBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHNjaXNzb3JSZWN0Tm9DbGlw
KQogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUFuZFNjaXNzb3JS
ZWN0cyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCByb290RGFtYWdlKTsKICAgICAKICAgICAvLyBT
Y2lzc29ycyBhcmUgbm90IGNvbXB1dGVkIGZvciByb290Ci0gICAgRVhQRUNUX0VRKHJvb3QtPnRh
cmdldFJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7
CisgICAgRVhQRUNUX0VRKHJvb3QtPnJlbmRlclRhcmdldCgpLT5yZW5kZXJTdXJmYWNlKCktPnNj
aXNzb3JSZWN0KCksIEludFJlY3QoMCwgMCwgMCwgMCkpOwogCiAgICAgLy8gRW50aXJlIGRhbWFn
ZSByZWN0IGlzIHdpdGhpbiB0aGUgcm9vdCBzdXJmYWNlCi0gICAgRVhQRUNUX0VRKGNoaWxkUHRy
LT50YXJnZXRSZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIHJvb3REYW1hZ2UpOworICAg
IEVYUEVDVF9FUShjaGlsZFB0ci0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2UoKS0+c2Np
c3NvclJlY3QoKSwgcm9vdERhbWFnZSk7CiAgICAgCiAgICAgLy8gRW50aXJlIGRhbWFnZSByZWN0
IGlzIHdpdGhpbiB0aGUgbGF5ZXIKICAgICBFWFBFQ1RfRVEocm9vdC0+c2Npc3NvclJlY3QoKSwg
cm9vdERhbWFnZSk7CkBAIC01MTcsMTAgKzUxNywxMCBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENv
bW1vblRlc3QsIHNjaXNzb3JSZWN0Tm9DbGlwKQogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6
Y2FsY3VsYXRlVmlzaWJsZUFuZFNjaXNzb3JSZWN0cyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBy
b290RGFtYWdlKTsKICAgICAKICAgICAvLyBTY2lzc29ycyBhcmUgbm90IGNvbXB1dGVkIGZvciBy
b290Ci0gICAgRVhQRUNUX0VRKHJvb3QtPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJl
Y3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7CisgICAgRVhQRUNUX0VRKHJvb3QtPnJlbmRlclRh
cmdldCgpLT5yZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIEludFJlY3QoMCwgMCwgMCwg
MCkpOwogCiAgICAgLy8gRW50aXJlIGRhbWFnZSByZWN0IGlzIHdpdGhpbiB0aGUgcm9vdCBzdXJm
YWNlCi0gICAgRVhQRUNUX0VRKGNoaWxkUHRyLT50YXJnZXRSZW5kZXJTdXJmYWNlKCktPnNjaXNz
b3JSZWN0KCksIHJvb3REYW1hZ2UpOworICAgIEVYUEVDVF9FUShjaGlsZFB0ci0+cmVuZGVyVGFy
Z2V0KCktPnJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgcm9vdERhbWFnZSk7CiAgICAg
CiAgICAgLy8gRW50aXJlIGRhbWFnZSByZWN0IGlzIHdpdGhpbiB0aGUgbGF5ZXIKICAgICBFWFBF
Q1RfRVEocm9vdC0+c2Npc3NvclJlY3QoKSwgcm9vdERhbWFnZSk7CkBAIC01MzYsMTEgKzUzNiwx
MSBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHNjaXNzb3JSZWN0Tm9DbGlwKQog
ICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUFuZFNjaXNzb3JSZWN0
cyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCByb290RGFtYWdlKTsKICAgICAKICAgICAvLyBTY2lz
c29ycyBhcmUgbm90IGNvbXB1dGVkIGZvciByb290Ci0gICAgRVhQRUNUX0VRKHJvb3QtPnRhcmdl
dFJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7Cisg
ICAgRVhQRUNUX0VRKHJvb3QtPnJlbmRlclRhcmdldCgpLT5yZW5kZXJTdXJmYWNlKCktPnNjaXNz
b3JSZWN0KCksIEludFJlY3QoMCwgMCwgMCwgMCkpOwogCiAgICAgLy8gUm9vdCBzdXJmYWNlIGRv
ZXMgbm90IGhhdmUgYSBjbGlwUmVjdCwgc28gaXRzIGNvbnRlbnRSZWN0IHdpbGwgYmUgdXNlZCB0
byBpbnRlcnNlY3Qgd2l0aCBkYW1hZ2UuCiAgICAgLy8gUmVzdWx0IGlzIHRoYXQgcm9vdCBkYW1h
Z2UgcmVjdCBpcyBjbGlwcGVkIGF0IHJvb3QgbGF5ZXIgYm91bmRhcnkKLSAgICBFWFBFQ1RfRVEo
Y2hpbGRQdHItPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgSW50UmVjdChy
b290RGFtYWdlLngoKSwgcm9vdERhbWFnZS55KCksIHJvb3RSZWN0LndpZHRoKCkgLSByb290RGFt
YWdlLngoKSwgcm9vdFJlY3QuaGVpZ2h0KCkgLSByb290RGFtYWdlLnkoKSkpOworICAgIEVYUEVD
VF9FUShjaGlsZFB0ci0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJl
Y3QoKSwgSW50UmVjdChyb290RGFtYWdlLngoKSwgcm9vdERhbWFnZS55KCksIHJvb3RSZWN0Lndp
ZHRoKCkgLSByb290RGFtYWdlLngoKSwgcm9vdFJlY3QuaGVpZ2h0KCkgLSByb290RGFtYWdlLnko
KSkpOwogICAgIAogICAgIC8vIFJvb3QgZG9lcyBub3QgdXNlIGxheWVyIGNsaXBwaW5nLCBzbyBp
dHMgY29udGVudCByZWN0IHdpbGwgYmUgdXNlZCB0byBpbnRlcnNlY3Qgd2l0aCBkYW1hZ2UKICAg
ICAvLyBSZXN1bHQgaXMgdGhhdCByb290IGRhbWFnZSByZWN0IGlzIGNsaXBwZWQgYXQgcm9vdCBs
YXllciBib3VuZGFyeQpAQCAtNjQ4LDggKzY0OCw4IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29t
bW9uVGVzdCwgc2Npc3NvclJlY3RXaXRoQ2xpcCkKICAgICBJbnRSZWN0IHJvb3REYW1hZ2Uocm9v
dFJlY3QpOwogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUFuZFNj
aXNzb3JSZWN0cyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCByb290RGFtYWdlKTsKICAgICAKLSAg
ICBFWFBFQ1RfRVEocm9vdC0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJ
bnRSZWN0KDAsIDAsIDAsIDApKTsKLSAgICBFWFBFQ1RfRVEoY2hpbGRQdHItPnRhcmdldFJlbmRl
clN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgSW50UmVjdChyb290UmVjdCkpOworICAgIEVYUEVD
VF9FUShyb290LT5yZW5kZXJUYXJnZXQoKS0+cmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgp
LCBJbnRSZWN0KDAsIDAsIDAsIDApKTsKKyAgICBFWFBFQ1RfRVEoY2hpbGRQdHItPnJlbmRlclRh
cmdldCgpLT5yZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIEludFJlY3Qocm9vdFJlY3Qp
KTsKICAgICAKICAgICBFWFBFQ1RfRVEocm9vdC0+c2Npc3NvclJlY3QoKSwgSW50UmVjdChyb290
UmVjdCkpOwogCkBAIC02NjcsOCArNjY3LDggQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25U
ZXN0LCBzY2lzc29yUmVjdFdpdGhDbGlwKQogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2Fs
Y3VsYXRlVmlzaWJsZUFuZFNjaXNzb3JSZWN0cyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCByb290
RGFtYWdlKTsKICAgICAKICAgICAvLyBFbXB0eSBkYW1hZ2UgPT0gZW1wdHkgc2Npc3NvcgotICAg
IEVYUEVDVF9FUShyb290LT50YXJnZXRSZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIElu
dFJlY3QoMCwgMCwgMCwgMCkpOwotICAgIEVYUEVDVF9FUShjaGlsZFB0ci0+dGFyZ2V0UmVuZGVy
U3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJbnRSZWN0KDAsIDAsIDAsIDApKTsKKyAgICBFWFBF
Q1RfRVEocm9vdC0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3Qo
KSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7CisgICAgRVhQRUNUX0VRKGNoaWxkUHRyLT5yZW5kZXJU
YXJnZXQoKS0+cmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJbnRSZWN0KDAsIDAsIDAs
IDApKTsKICAgICAKICAgICBFWFBFQ1RfRVEocm9vdC0+c2Npc3NvclJlY3QoKSwgSW50UmVjdCgw
LCAwLCAwLCAwKSk7CiAgICAgRVhQRUNUX0VRKGNoaWxkUHRyLT5zY2lzc29yUmVjdCgpLCBJbnRS
ZWN0KDAsIDAsIDAsIDApKTsKQEAgLTY3OSwxMCArNjc5LDEwIEBAIFRFU1QoQ0NMYXllclRyZWVI
b3N0Q29tbW9uVGVzdCwgc2Npc3NvclJlY3RXaXRoQ2xpcCkKICAgICBDQ0xheWVyVHJlZUhvc3RD
b21tb246OmNhbGN1bGF0ZVZpc2libGVBbmRTY2lzc29yUmVjdHMocmVuZGVyU3VyZmFjZUxheWVy
TGlzdCwgcm9vdERhbWFnZSk7CiAgICAgCiAgICAgLy8gU2Npc3NvcnMgYXJlIG5vdCBjb21wdXRl
ZCBmb3Igcm9vdAotICAgIEVYUEVDVF9FUShyb290LT50YXJnZXRSZW5kZXJTdXJmYWNlKCktPnNj
aXNzb3JSZWN0KCksIEludFJlY3QoMCwgMCwgMCwgMCkpOworICAgIEVYUEVDVF9FUShyb290LT5y
ZW5kZXJUYXJnZXQoKS0+cmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJbnRSZWN0KDAs
IDAsIDAsIDApKTsKIAogICAgIC8vIEVudGlyZSBkYW1hZ2UgcmVjdCBpcyB3aXRoaW4gdGhlIHJv
b3Qgc3VyZmFjZQotICAgIEVYUEVDVF9FUShjaGlsZFB0ci0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgp
LT5zY2lzc29yUmVjdCgpLCByb290RGFtYWdlKTsKKyAgICBFWFBFQ1RfRVEoY2hpbGRQdHItPnJl
bmRlclRhcmdldCgpLT5yZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIHJvb3REYW1hZ2Up
OwogICAgIAogICAgIC8vIEVudGlyZSBkYW1hZ2UgcmVjdCBpcyB3aXRoaW4gdGhlIGxheWVyCiAg
ICAgRVhQRUNUX0VRKHJvb3QtPnNjaXNzb3JSZWN0KCksIHJvb3REYW1hZ2UpOwpAQCAtNjk4LDEw
ICs2OTgsMTAgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCBzY2lzc29yUmVjdFdp
dGhDbGlwKQogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUFuZFNj
aXNzb3JSZWN0cyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCByb290RGFtYWdlKTsKICAgICAKICAg
ICAvLyBTY2lzc29ycyBhcmUgbm90IGNvbXB1dGVkIGZvciByb290Ci0gICAgRVhQRUNUX0VRKHJv
b3QtPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgSW50UmVjdCgwLCAwLCAw
LCAwKSk7CisgICAgRVhQRUNUX0VRKHJvb3QtPnJlbmRlclRhcmdldCgpLT5yZW5kZXJTdXJmYWNl
KCktPnNjaXNzb3JSZWN0KCksIEludFJlY3QoMCwgMCwgMCwgMCkpOwogCiAgICAgLy8gRW50aXJl
IGRhbWFnZSByZWN0IGlzIHdpdGhpbiB0aGUgcm9vdCBzdXJmYWNlCi0gICAgRVhQRUNUX0VRKGNo
aWxkUHRyLT50YXJnZXRSZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIHJvb3REYW1hZ2Up
OworICAgIEVYUEVDVF9FUShjaGlsZFB0ci0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2Uo
KS0+c2Npc3NvclJlY3QoKSwgcm9vdERhbWFnZSk7CiAgICAgCiAgICAgLy8gRW50aXJlIGRhbWFn
ZSByZWN0IGlzIHdpdGhpbiB0aGUgbGF5ZXIKICAgICBFWFBFQ1RfRVEocm9vdC0+c2Npc3NvclJl
Y3QoKSwgcm9vdERhbWFnZSk7CkBAIC03MTcsMTEgKzcxNywxMSBAQCBURVNUKENDTGF5ZXJUcmVl
SG9zdENvbW1vblRlc3QsIHNjaXNzb3JSZWN0V2l0aENsaXApCiAgICAgQ0NMYXllclRyZWVIb3N0
Q29tbW9uOjpjYWxjdWxhdGVWaXNpYmxlQW5kU2Npc3NvclJlY3RzKHJlbmRlclN1cmZhY2VMYXll
ckxpc3QsIHJvb3REYW1hZ2UpOwogICAgIAogICAgIC8vIFNjaXNzb3JzIGFyZSBub3QgY29tcHV0
ZWQgZm9yIHJvb3QKLSAgICBFWFBFQ1RfRVEocm9vdC0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5z
Y2lzc29yUmVjdCgpLCBJbnRSZWN0KDAsIDAsIDAsIDApKTsKKyAgICBFWFBFQ1RfRVEocm9vdC0+
cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgSW50UmVjdCgw
LCAwLCAwLCAwKSk7CiAKICAgICAvLyBSb290IHN1cmZhY2UgZG9lcyBub3QgaGF2ZSBhIGNsaXBS
ZWN0LCBzbyBpdHMgY29udGVudFJlY3Qgd2lsbCBiZSB1c2VkIHRvIGludGVyc2VjdCB3aXRoIGRh
bWFnZS4KICAgICAvLyBSZXN1bHQgaXMgdGhhdCByb290IGRhbWFnZSByZWN0IGlzIGNsaXBwZWQg
YXQgcm9vdCBsYXllciBib3VuZGFyeQotICAgIEVYUEVDVF9FUShjaGlsZFB0ci0+dGFyZ2V0UmVu
ZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJbnRSZWN0KHJvb3REYW1hZ2UueCgpLCByb290
RGFtYWdlLnkoKSwgcm9vdFJlY3Qud2lkdGgoKSAtIHJvb3REYW1hZ2UueCgpLCByb290UmVjdC5o
ZWlnaHQoKSAtIHJvb3REYW1hZ2UueSgpKSk7CisgICAgRVhQRUNUX0VRKGNoaWxkUHRyLT5yZW5k
ZXJUYXJnZXQoKS0+cmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJbnRSZWN0KHJvb3RE
YW1hZ2UueCgpLCByb290RGFtYWdlLnkoKSwgcm9vdFJlY3Qud2lkdGgoKSAtIHJvb3REYW1hZ2Uu
eCgpLCByb290UmVjdC5oZWlnaHQoKSAtIHJvb3REYW1hZ2UueSgpKSk7CiAgICAgCiAgICAgLy8g
Um9vdCBkb2VzIG5vdCB1c2UgbGF5ZXIgY2xpcHBpbmcsIHNvIGl0cyBjb250ZW50IHJlY3Qgd2ls
bCBiZSB1c2VkIHRvIGludGVyc2VjdCB3aXRoIGRhbWFnZQogICAgIC8vIFJlc3VsdCBpcyB0aGF0
IHJvb3QgZGFtYWdlIHJlY3QgaXMgY2xpcHBlZCBhdCByb290IGxheWVyIGJvdW5kYXJ5CkBAIC04
MzksOCArODM5LDggQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCBzY2lzc29yUmVj
dFdpdGhDbGlwQW5kU3BhY2VUcmFuc2Zvcm0pCiAgICAgSW50UmVjdCByb290RGFtYWdlKHJvb3RS
ZWN0KTsKICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZVZpc2libGVBbmRTY2lz
c29yUmVjdHMocmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgcm9vdERhbWFnZSk7CiAgICAgCi0gICAg
RVhQRUNUX0VRKHJvb3QtPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgSW50
UmVjdCgwLCAwLCAwLCAwKSk7Ci0gICAgRVhQRUNUX0VRKGNoaWxkUHRyLT50YXJnZXRSZW5kZXJT
dXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIEludFJlY3Qocm9vdFJlY3QpKTsKKyAgICBFWFBFQ1Rf
RVEocm9vdC0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwg
SW50UmVjdCgwLCAwLCAwLCAwKSk7CisgICAgRVhQRUNUX0VRKGNoaWxkUHRyLT5yZW5kZXJUYXJn
ZXQoKS0+cmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJbnRSZWN0KHJvb3RSZWN0KSk7
CiAgICAgCiAgICAgRVhQRUNUX0VRKHJvb3QtPnNjaXNzb3JSZWN0KCksIEludFJlY3Qocm9vdFJl
Y3QpKTsKIApAQCAtODU3LDggKzg1Nyw4IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVz
dCwgc2Npc3NvclJlY3RXaXRoQ2xpcEFuZFNwYWNlVHJhbnNmb3JtKQogICAgIENDTGF5ZXJUcmVl
SG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUFuZFNjaXNzb3JSZWN0cyhyZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LCByb290RGFtYWdlKTsKICAgICAKICAgICAvLyBFbXB0eSBkYW1hZ2UgPT0gZW1w
dHkgc2Npc3NvcgotICAgIEVYUEVDVF9FUShyb290LT50YXJnZXRSZW5kZXJTdXJmYWNlKCktPnNj
aXNzb3JSZWN0KCksIEludFJlY3QoMCwgMCwgMCwgMCkpOwotICAgIEVYUEVDVF9FUShjaGlsZFB0
ci0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJbnRSZWN0KDAsIDAsIDAs
IDApKTsKKyAgICBFWFBFQ1RfRVEocm9vdC0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2Uo
KS0+c2Npc3NvclJlY3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7CisgICAgRVhQRUNUX0VRKGNo
aWxkUHRyLT5yZW5kZXJUYXJnZXQoKS0+cmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJ
bnRSZWN0KDAsIDAsIDAsIDApKTsKICAgICAKICAgICBFWFBFQ1RfRVEocm9vdC0+c2Npc3NvclJl
Y3QoKSwgSW50UmVjdCgwLCAwLCAwLCAwKSk7CiAgICAgRVhQRUNUX0VRKGNoaWxkUHRyLT5zY2lz
c29yUmVjdCgpLCBJbnRSZWN0KDAsIDAsIDAsIDApKTsKQEAgLTg2OSwxMCArODY5LDEwIEBAIFRF
U1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgc2Npc3NvclJlY3RXaXRoQ2xpcEFuZFNwYWNl
VHJhbnNmb3JtKQogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUFu
ZFNjaXNzb3JSZWN0cyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCByb290RGFtYWdlKTsKICAgICAK
ICAgICAvLyBTY2lzc29ycyBhcmUgbm90IGNvbXB1dGVkIGZvciByb290Ci0gICAgRVhQRUNUX0VR
KHJvb3QtPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwgSW50UmVjdCgwLCAw
LCAwLCAwKSk7CisgICAgRVhQRUNUX0VRKHJvb3QtPnJlbmRlclRhcmdldCgpLT5yZW5kZXJTdXJm
YWNlKCktPnNjaXNzb3JSZWN0KCksIEludFJlY3QoMCwgMCwgMCwgMCkpOwogCiAgICAgLy8gRW50
aXJlIGRhbWFnZSByZWN0IGlzIHdpdGhpbiB0aGUgcm9vdCBzdXJmYWNlCi0gICAgRVhQRUNUX0VR
KGNoaWxkUHRyLT50YXJnZXRSZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIHJvb3REYW1h
Z2UpOworICAgIEVYUEVDVF9FUShjaGlsZFB0ci0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZh
Y2UoKS0+c2Npc3NvclJlY3QoKSwgcm9vdERhbWFnZSk7CiAgICAgCiAgICAgLy8gRW50aXJlIGRh
bWFnZSByZWN0IGlzIHdpdGhpbiB0aGUgbGF5ZXIKICAgICBFWFBFQ1RfRVEocm9vdC0+c2Npc3Nv
clJlY3QoKSwgcm9vdERhbWFnZSk7CkBAIC04ODgsMTAgKzg4OCwxMCBAQCBURVNUKENDTGF5ZXJU
cmVlSG9zdENvbW1vblRlc3QsIHNjaXNzb3JSZWN0V2l0aENsaXBBbmRTcGFjZVRyYW5zZm9ybSkK
ICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZVZpc2libGVBbmRTY2lzc29yUmVj
dHMocmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgcm9vdERhbWFnZSk7CiAgICAgCiAgICAgLy8gU2Np
c3NvcnMgYXJlIG5vdCBjb21wdXRlZCBmb3Igcm9vdAotICAgIEVYUEVDVF9FUShyb290LT50YXJn
ZXRSZW5kZXJTdXJmYWNlKCktPnNjaXNzb3JSZWN0KCksIEludFJlY3QoMCwgMCwgMCwgMCkpOwor
ICAgIEVYUEVDVF9FUShyb290LT5yZW5kZXJUYXJnZXQoKS0+cmVuZGVyU3VyZmFjZSgpLT5zY2lz
c29yUmVjdCgpLCBJbnRSZWN0KDAsIDAsIDAsIDApKTsKIAogICAgIC8vIEVudGlyZSBkYW1hZ2Ug
cmVjdCBpcyB3aXRoaW4gdGhlIHJvb3Qgc3VyZmFjZQotICAgIEVYUEVDVF9FUShjaGlsZFB0ci0+
dGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCByb290RGFtYWdlKTsKKyAgICBF
WFBFQ1RfRVEoY2hpbGRQdHItPnJlbmRlclRhcmdldCgpLT5yZW5kZXJTdXJmYWNlKCktPnNjaXNz
b3JSZWN0KCksIHJvb3REYW1hZ2UpOwogICAgIAogICAgIC8vIEVudGlyZSBkYW1hZ2UgcmVjdCBp
cyB3aXRoaW4gdGhlIGxheWVyCiAgICAgRVhQRUNUX0VRKHJvb3QtPnNjaXNzb3JSZWN0KCksIHJv
b3REYW1hZ2UpOwpAQCAtOTA3LDExICs5MDcsMTEgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21t
b25UZXN0LCBzY2lzc29yUmVjdFdpdGhDbGlwQW5kU3BhY2VUcmFuc2Zvcm0pCiAgICAgQ0NMYXll
clRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVWaXNpYmxlQW5kU2Npc3NvclJlY3RzKHJlbmRlclN1
cmZhY2VMYXllckxpc3QsIHJvb3REYW1hZ2UpOwogICAgIAogICAgIC8vIFNjaXNzb3JzIGFyZSBu
b3QgY29tcHV0ZWQgZm9yIHJvb3QKLSAgICBFWFBFQ1RfRVEocm9vdC0+dGFyZ2V0UmVuZGVyU3Vy
ZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJbnRSZWN0KDAsIDAsIDAsIDApKTsKKyAgICBFWFBFQ1Rf
RVEocm9vdC0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKSwg
SW50UmVjdCgwLCAwLCAwLCAwKSk7CiAKICAgICAvLyBSb290IHN1cmZhY2UgZG9lcyBub3QgaGF2
ZSBhIGNsaXBSZWN0LCBzbyBpdHMgY29udGVudFJlY3Qgd2lsbCBiZSB1c2VkIHRvIGludGVyc2Vj
dCB3aXRoIGRhbWFnZS4KICAgICAvLyBSZXN1bHQgaXMgdGhhdCByb290IGRhbWFnZSByZWN0IGlz
IGNsaXBwZWQgYXQgcm9vdCBsYXllciBib3VuZGFyeQotICAgIEVYUEVDVF9FUShjaGlsZFB0ci0+
dGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJbnRSZWN0KHJvb3REYW1hZ2Uu
eCgpLCByb290RGFtYWdlLnkoKSwgcm9vdFJlY3Qud2lkdGgoKSAtIHJvb3REYW1hZ2UueCgpLCBy
b290UmVjdC5oZWlnaHQoKSAtIHJvb3REYW1hZ2UueSgpKSk7CisgICAgRVhQRUNUX0VRKGNoaWxk
UHRyLT5yZW5kZXJUYXJnZXQoKS0+cmVuZGVyU3VyZmFjZSgpLT5zY2lzc29yUmVjdCgpLCBJbnRS
ZWN0KHJvb3REYW1hZ2UueCgpLCByb290RGFtYWdlLnkoKSwgcm9vdFJlY3Qud2lkdGgoKSAtIHJv
b3REYW1hZ2UueCgpLCByb290UmVjdC5oZWlnaHQoKSAtIHJvb3REYW1hZ2UueSgpKSk7CiAgICAg
CiAgICAgLy8gUm9vdCBkb2VzIG5vdCB1c2UgbGF5ZXIgY2xpcHBpbmcsIHNvIGl0cyBjb250ZW50
IHJlY3Qgd2lsbCBiZSB1c2VkIHRvIGludGVyc2VjdCB3aXRoIGRhbWFnZQogICAgIC8vIFJlc3Vs
dCBpcyB0aGF0IHJvb3QgZGFtYWdlIHJlY3QgaXMgY2xpcHBlZCBhdCByb290IGxheWVyIGJvdW5k
YXJ5CkBAIC05NjYsMTAgKzk2NiwxMCBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3Qs
IHZlcmlmeVRyYW5zZm9ybXNGb3JSZXBsaWNhKQogCiAgICAgLy8gUmVuZGVyIHN1cmZhY2Ugc2hv
dWxkIGhhdmUgYmVlbiBjcmVhdGVkIG5vdy4KICAgICBBU1NFUlRfVFJVRShjaGlsZC0+cmVuZGVy
U3VyZmFjZSgpKTsKLSAgICBBU1NFUlRfRVEoY2hpbGQtPnJlbmRlclN1cmZhY2UoKSwgY2hpbGQt
PnRhcmdldFJlbmRlclN1cmZhY2UoKSk7CisgICAgQVNTRVJUX0VRKGNoaWxkLCBjaGlsZC0+cmVu
ZGVyVGFyZ2V0KCkpOwogCi0gICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShyZXBs
aWNhQ29tcG9zaXRlVHJhbnNmb3JtLCBjaGlsZC0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5yZXBs
aWNhT3JpZ2luVHJhbnNmb3JtKCkpOwotICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhf
RVEocmVwbGljYUNvbXBvc2l0ZVRyYW5zZm9ybSwgY2hpbGQtPnRhcmdldFJlbmRlclN1cmZhY2Uo
KS0+cmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOworICAgIEVYUEVDVF9UUkFOU0ZPUk1B
VElPTl9NQVRSSVhfRVEocmVwbGljYUNvbXBvc2l0ZVRyYW5zZm9ybSwgY2hpbGQtPnJlbmRlclRh
cmdldCgpLT5yZW5kZXJTdXJmYWNlKCktPnJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0oKSk7CisgICAg
RVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShyZXBsaWNhQ29tcG9zaXRlVHJhbnNmb3Jt
LCBjaGlsZC0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2UoKS0+cmVwbGljYVNjcmVlblNw
YWNlVHJhbnNmb3JtKCkpOwogfQogCiBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZl
cmlmeVRyYW5zZm9ybXNGb3JSZW5kZXJTdXJmYWNlSGllcmFyY2h5KQpAQCAtOTc5LDcgKzk3OSw3
IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VHJhbnNmb3Jtc0ZvclJl
bmRlclN1cmZhY2VIaWVyYXJjaHkpCiAgICAgLy8gICAtIEEgcmVuZGVyIHN1cmZhY2UgZGVzY3Jp
YmVkIHcuci50LiBhbiBhbmNlc3RvciByZW5kZXIgc3VyZmFjZTogc2hvdWxkIGhhdmUgYSBkcmF3
IHRyYW5zZm9ybSBkZXNjcmliZWQgdy5yLnQuIHRoYXQgYW5jZXN0b3Igc3VyZmFjZQogICAgIC8v
ICAgLSBSZXBsaWNhcyBvZiBhIHJlbmRlciBzdXJmYWNlIGFyZSBkZXNjcmliZWQgdy5yLnQuIHRo
ZSByZXBsaWNhJ3MgdHJhbnNmb3JtIGFyb3VuZCBpdHMgYW5jaG9yLCBhbG9uZyB3aXRoIHRoZSBz
dXJmYWNlIGl0c2VsZi4KICAgICAvLyAgIC0gU2FuaXR5IGNoZWNrIG9uIHJlY3Vyc2lvbjogdmVy
aWZ5IHRyYW5zZm9ybXMgb2YgbGF5ZXJzIGRlc2NyaWJlZCB3LnIudC4gYSByZW5kZXIgc3VyZmFj
ZSB0aGF0IGlzIGRlc2NyaWJlZCB3LnIudC4gYW4gYW5jZXN0b3IgcmVuZGVyIHN1cmZhY2UuCi0g
ICAgLy8gICAtIHZlcmlmeWluZyB0aGF0IGVhY2ggbGF5ZXIgaGFzIGEgcmVmZXJlbmNlIHRvIHRo
ZSBjb3JyZWN0IHJlbmRlclN1cmZhY2UgYW5kIHRhcmdldFJlbmRlclN1cmZhY2UgdmFsdWVzLgor
ICAgIC8vICAgLSB2ZXJpZnlpbmcgdGhhdCBlYWNoIGxheWVyIGhhcyBhIHJlZmVyZW5jZSB0byB0
aGUgY29ycmVjdCByZW5kZXJTdXJmYWNlIGFuZCByZW5kZXJUYXJnZXQgdmFsdWVzLgogCiAgICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwog
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZW5kZXJTdXJmYWNlMSA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZSgpOwpAQCAtMTA1OCwxOSArMTA1OCwxOSBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENv
bW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JSZW5kZXJTdXJmYWNlSGllcmFyY2h5KQogICAg
IEFTU0VSVF9GQUxTRShjaGlsZE9mUlMyLT5yZW5kZXJTdXJmYWNlKCkpOwogICAgIEFTU0VSVF9G
QUxTRShncmFuZENoaWxkT2ZSUzItPnJlbmRlclN1cmZhY2UoKSk7CiAKLSAgICAvLyBWZXJpZnkg
YWxsIHRhcmdldFJlbmRlclN1cmZhY2UgYWNjZXNzb3JzCisgICAgLy8gVmVyaWZ5IGFsbCByZW5k
ZXJUYXJnZXQgYWNjZXNzb3JzCiAgICAgLy8KLSAgICBFWFBFQ1RfRVEocGFyZW50LT5yZW5kZXJT
dXJmYWNlKCksIHBhcmVudC0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpKTsKLSAgICBFWFBFQ1RfRVEo
cGFyZW50LT5yZW5kZXJTdXJmYWNlKCksIGNoaWxkT2ZSb290LT50YXJnZXRSZW5kZXJTdXJmYWNl
KCkpOwotICAgIEVYUEVDVF9FUShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSwgZ3JhbmRDaGlsZE9m
Um9vdC0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpKTsKKyAgICBFWFBFQ1RfRVEocGFyZW50LCBwYXJl
bnQtPnJlbmRlclRhcmdldCgpKTsKKyAgICBFWFBFQ1RfRVEocGFyZW50LCBjaGlsZE9mUm9vdC0+
cmVuZGVyVGFyZ2V0KCkpOworICAgIEVYUEVDVF9FUShwYXJlbnQsIGdyYW5kQ2hpbGRPZlJvb3Qt
PnJlbmRlclRhcmdldCgpKTsKIAotICAgIEVYUEVDVF9FUShyZW5kZXJTdXJmYWNlMS0+cmVuZGVy
U3VyZmFjZSgpLCByZW5kZXJTdXJmYWNlMS0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpKTsKLSAgICBF
WFBFQ1RfRVEocmVuZGVyU3VyZmFjZTEtPnJlbmRlclN1cmZhY2UoKSwgY2hpbGRPZlJTMS0+dGFy
Z2V0UmVuZGVyU3VyZmFjZSgpKTsKLSAgICBFWFBFQ1RfRVEocmVuZGVyU3VyZmFjZTEtPnJlbmRl
clN1cmZhY2UoKSwgZ3JhbmRDaGlsZE9mUlMxLT50YXJnZXRSZW5kZXJTdXJmYWNlKCkpOworICAg
IEVYUEVDVF9FUShyZW5kZXJTdXJmYWNlMSwgcmVuZGVyU3VyZmFjZTEtPnJlbmRlclRhcmdldCgp
KTsKKyAgICBFWFBFQ1RfRVEocmVuZGVyU3VyZmFjZTEsIGNoaWxkT2ZSUzEtPnJlbmRlclRhcmdl
dCgpKTsKKyAgICBFWFBFQ1RfRVEocmVuZGVyU3VyZmFjZTEsIGdyYW5kQ2hpbGRPZlJTMS0+cmVu
ZGVyVGFyZ2V0KCkpOwogCi0gICAgRVhQRUNUX0VRKHJlbmRlclN1cmZhY2UyLT5yZW5kZXJTdXJm
YWNlKCksIHJlbmRlclN1cmZhY2UyLT50YXJnZXRSZW5kZXJTdXJmYWNlKCkpOwotICAgIEVYUEVD
VF9FUShyZW5kZXJTdXJmYWNlMi0+cmVuZGVyU3VyZmFjZSgpLCBjaGlsZE9mUlMyLT50YXJnZXRS
ZW5kZXJTdXJmYWNlKCkpOwotICAgIEVYUEVDVF9FUShyZW5kZXJTdXJmYWNlMi0+cmVuZGVyU3Vy
ZmFjZSgpLCBncmFuZENoaWxkT2ZSUzItPnRhcmdldFJlbmRlclN1cmZhY2UoKSk7CisgICAgRVhQ
RUNUX0VRKHJlbmRlclN1cmZhY2UyLCByZW5kZXJTdXJmYWNlMi0+cmVuZGVyVGFyZ2V0KCkpOwor
ICAgIEVYUEVDVF9FUShyZW5kZXJTdXJmYWNlMiwgY2hpbGRPZlJTMi0+cmVuZGVyVGFyZ2V0KCkp
OworICAgIEVYUEVDVF9FUShyZW5kZXJTdXJmYWNlMiwgZ3JhbmRDaGlsZE9mUlMyLT5yZW5kZXJU
YXJnZXQoKSk7CiAKICAgICAvLyBWZXJpZnkgbGF5ZXIgZHJhdyB0cmFuc2Zvcm1zCiAgICAgLy8g
IG5vdGUgdGhhdCBkcmF3IHRyYW5zZm9ybXMgYXJlIGRlc2NyaWJlZCB3aXRoIHJlc3BlY3QgdG8g
dGhlIG5lYXJlc3QgYW5jZXN0b3IgcmVuZGVyIHN1cmZhY2UKQEAgLTEyNzgsNyArMTI3OCw3IEBA
IFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5U2Nyb2xsQ29tcGVuc2F0aW9u
Rm9yRml4ZWRQb3NpdGlvbkxheWVyV2l0CiAgICAgQ0NMYXllckltcGwqIGNoaWxkID0gcm9vdC0+
Y2hpbGRyZW4oKVswXS5nZXQoKTsKICAgICBDQ0xheWVySW1wbCogZ3JhbmRDaGlsZCA9IGNoaWxk
LT5jaGlsZHJlbigpWzBdLmdldCgpOwogCi0gICAgLy8gVGhpcyBzY2FsZSB3aWxsIGNhdXNlIGNo
aWxkIGFuZCBncmFuZENoaWxkIHRvIGJlIGVmZmVjdGl2ZWx5IDIwMCB4IDgwMCB3aXRoIHJlc3Bl
Y3QgdG8gdGhlIHRhcmdldFJlbmRlclN1cmZhY2UuCisgICAgLy8gVGhpcyBzY2FsZSB3aWxsIGNh
dXNlIGNoaWxkIGFuZCBncmFuZENoaWxkIHRvIGJlIGVmZmVjdGl2ZWx5IDIwMCB4IDgwMCB3aXRo
IHJlc3BlY3QgdG8gdGhlIHJlbmRlclRhcmdldC4KICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBub25Vbmlmb3JtU2NhbGU7CiAgICAgbm9uVW5pZm9ybVNjYWxlLnNjYWxlTm9uVW5pZm9ybSgy
LCA4KTsKICAgICBjaGlsZC0+c2V0VHJhbnNmb3JtKG5vblVuaWZvcm1TY2FsZSk7CkBAIC0xMzc4
LDcgKzEzNzgsNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVNjcm9s
bENvbXBlbnNhdGlvbkZvckZpeGVkUG9zaXRpb25MYXllcldpdAogICAgIGNoaWxkLT5zZXRUcmFu
c2Zvcm0ocm90YXRpb25BYm91dFopOwogICAgIGdyYW5kQ2hpbGQtPnNldFBvc2l0aW9uKEZsb2F0
UG9pbnQoOCwgNikpOwogICAgIGdyYW5kQ2hpbGQtPnNldFRyYW5zZm9ybShyb3RhdGlvbkFib3V0
Wik7Ci0gICAgZ3JlYXRHcmFuZENoaWxkLT5zZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIodHJ1ZSk7
IC8vIGdyZWF0R3JhbmRDaGlsZCBpcyBwb3NpdGlvbmVkIHVwc2lkZS1kb3duIHdpdGggcmVzcGVj
dCB0byB0aGUgdGFyZ2V0UmVuZGVyU3VyZmFjZQorICAgIGdyZWF0R3JhbmRDaGlsZC0+c2V0Rml4
ZWRUb0NvbnRhaW5lckxheWVyKHRydWUpOyAvLyBncmVhdEdyYW5kQ2hpbGQgaXMgcG9zaXRpb25l
ZCB1cHNpZGUtZG93biB3aXRoIHJlc3BlY3QgdG8gdGhlIHJlbmRlclRhcmdldC4KIAogICAgIC8v
IENhc2UgMTogc2Nyb2xsRGVsdGEgb2YgMCwgMAogICAgIGNoaWxkLT5zZXRTY3JvbGxEZWx0YShJ
bnRTaXplKDAsIDApKTsKQEAgLTE0NDQsNyArMTQ0NCw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0
Q29tbW9uVGVzdCwgdmVyaWZ5U2Nyb2xsQ29tcGVuc2F0aW9uRm9yRml4ZWRQb3NpdGlvbkxheWVy
V2l0CiAgICAgY2hpbGQtPnNldFRyYW5zZm9ybShyb3RhdGlvbkFib3V0Wik7CiAgICAgZ3JhbmRD
aGlsZC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCg4LCA2KSk7CiAgICAgZ3JhbmRDaGlsZC0+c2V0
VHJhbnNmb3JtKHJvdGF0aW9uQWJvdXRaKTsKLSAgICBncmVhdEdyYW5kQ2hpbGQtPnNldEZpeGVk
VG9Db250YWluZXJMYXllcih0cnVlKTsgLy8gZ3JlYXRHcmFuZENoaWxkIGlzIHBvc2l0aW9uZWQg
dXBzaWRlLWRvd24gd2l0aCByZXNwZWN0IHRvIHRoZSB0YXJnZXRSZW5kZXJTdXJmYWNlCisgICAg
Z3JlYXRHcmFuZENoaWxkLT5zZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIodHJ1ZSk7IC8vIGdyZWF0
R3JhbmRDaGlsZCBpcyBwb3NpdGlvbmVkIHVwc2lkZS1kb3duIHdpdGggcmVzcGVjdCB0byB0aGUg
cmVuZGVyVGFyZ2V0LgogCiAgICAgLy8gQ2FzZSAxOiBzY3JvbGxEZWx0YSBvZiAwLCAwCiAgICAg
Y2hpbGQtPnNldFNjcm9sbERlbHRhKEludFNpemUoMCwgMCkpOwpAQCAtMTY4NSw3ICsxNjg1LDcg
QEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlTY3JvbGxDb21wZW5zYXRp
b25Gb3JGaXhlZFBvc2l0aW9uTGF5ZXJXaXQKIHsKICAgICAvLyBUaGlzIHRlc3QgY2hlY2tzIGZv
ciBjb3JyZWN0IHNjcm9sbCBjb21wZW5zYXRpb24gd2hlbiB0aGUgZml4ZWQtcG9zaXRpb24gY29u
dGFpbmVyCiAgICAgLy8gaXRzZWxmIGhhcyBhIHJlbmRlclN1cmZhY2UuIEluIHRoaXMgY2FzZSwg
dGhlIGNvbnRhaW5lciBsYXllciBzaG91bGQgYmUgdHJlYXRlZAotICAgIC8vIGxpa2UgYSBsYXll
ciB0aGF0IGNvbnRyaWJ1dGVzIHRvIGEgdGFyZ2V0UmVuZGVyU3VyZmFjZSwgYW5kIHRoYXQgdGFy
Z2V0UmVuZGVyU3VyZmFjZQorICAgIC8vIGxpa2UgYSBsYXllciB0aGF0IGNvbnRyaWJ1dGVzIHRv
IGEgcmVuZGVyVGFyZ2V0LCBhbmQgdGhhdCByZW5kZXJUYXJnZXQKICAgICAvLyBpcyBjb21wbGV0
ZWx5IGlycmVsZXZhbnQ7IGl0IHNob3VsZCBub3QgYWZmZWN0IHRoZSBzY3JvbGwgY29tcGVuc2F0
aW9uLgogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBzY29wZWRJbXBsVGhyZWFkOwogCkBA
IC0yMjMxLDE5ICsyMjMxLDE5IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVy
aWZ5QW5pbWF0aW9uc0ZvclJlbmRlclN1cmZhY2VIaWVyYXJjaHkpCiAgICAgQVNTRVJUX0ZBTFNF
KGNoaWxkT2ZSUzItPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgQVNTRVJUX0ZBTFNFKGdyYW5kQ2hp
bGRPZlJTMi0+cmVuZGVyU3VyZmFjZSgpKTsKIAotICAgIC8vIFZlcmlmeSBhbGwgdGFyZ2V0UmVu
ZGVyU3VyZmFjZSBhY2Nlc3NvcnMKKyAgICAvLyBWZXJpZnkgYWxsIHJlbmRlclRhcmdldCBhY2Nl
c3NvcnMKICAgICAvLwotICAgIEVYUEVDVF9FUShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSwgcGFy
ZW50LT50YXJnZXRSZW5kZXJTdXJmYWNlKCkpOwotICAgIEVYUEVDVF9FUShwYXJlbnQtPnJlbmRl
clN1cmZhY2UoKSwgY2hpbGRPZlJvb3QtPnRhcmdldFJlbmRlclN1cmZhY2UoKSk7Ci0gICAgRVhQ
RUNUX0VRKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLCBncmFuZENoaWxkT2ZSb290LT50YXJnZXRS
ZW5kZXJTdXJmYWNlKCkpOworICAgIEVYUEVDVF9FUShwYXJlbnQsIHBhcmVudC0+cmVuZGVyVGFy
Z2V0KCkpOworICAgIEVYUEVDVF9FUShwYXJlbnQsIGNoaWxkT2ZSb290LT5yZW5kZXJUYXJnZXQo
KSk7CisgICAgRVhQRUNUX0VRKHBhcmVudCwgZ3JhbmRDaGlsZE9mUm9vdC0+cmVuZGVyVGFyZ2V0
KCkpOwogCi0gICAgRVhQRUNUX0VRKHJlbmRlclN1cmZhY2UxLT5yZW5kZXJTdXJmYWNlKCksIHJl
bmRlclN1cmZhY2UxLT50YXJnZXRSZW5kZXJTdXJmYWNlKCkpOwotICAgIEVYUEVDVF9FUShyZW5k
ZXJTdXJmYWNlMS0+cmVuZGVyU3VyZmFjZSgpLCBjaGlsZE9mUlMxLT50YXJnZXRSZW5kZXJTdXJm
YWNlKCkpOwotICAgIEVYUEVDVF9FUShyZW5kZXJTdXJmYWNlMS0+cmVuZGVyU3VyZmFjZSgpLCBn
cmFuZENoaWxkT2ZSUzEtPnRhcmdldFJlbmRlclN1cmZhY2UoKSk7CisgICAgRVhQRUNUX0VRKHJl
bmRlclN1cmZhY2UxLCByZW5kZXJTdXJmYWNlMS0+cmVuZGVyVGFyZ2V0KCkpOworICAgIEVYUEVD
VF9FUShyZW5kZXJTdXJmYWNlMSwgY2hpbGRPZlJTMS0+cmVuZGVyVGFyZ2V0KCkpOworICAgIEVY
UEVDVF9FUShyZW5kZXJTdXJmYWNlMSwgZ3JhbmRDaGlsZE9mUlMxLT5yZW5kZXJUYXJnZXQoKSk7
CiAKLSAgICBFWFBFQ1RfRVEocmVuZGVyU3VyZmFjZTItPnJlbmRlclN1cmZhY2UoKSwgcmVuZGVy
U3VyZmFjZTItPnRhcmdldFJlbmRlclN1cmZhY2UoKSk7Ci0gICAgRVhQRUNUX0VRKHJlbmRlclN1
cmZhY2UyLT5yZW5kZXJTdXJmYWNlKCksIGNoaWxkT2ZSUzItPnRhcmdldFJlbmRlclN1cmZhY2Uo
KSk7Ci0gICAgRVhQRUNUX0VRKHJlbmRlclN1cmZhY2UyLT5yZW5kZXJTdXJmYWNlKCksIGdyYW5k
Q2hpbGRPZlJTMi0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpKTsKKyAgICBFWFBFQ1RfRVEocmVuZGVy
U3VyZmFjZTIsIHJlbmRlclN1cmZhY2UyLT5yZW5kZXJUYXJnZXQoKSk7CisgICAgRVhQRUNUX0VR
KHJlbmRlclN1cmZhY2UyLCBjaGlsZE9mUlMyLT5yZW5kZXJUYXJnZXQoKSk7CisgICAgRVhQRUNU
X0VRKHJlbmRlclN1cmZhY2UyLCBncmFuZENoaWxkT2ZSUzItPnJlbmRlclRhcmdldCgpKTsKIAog
ICAgIC8vIFZlcmlmeSBkcmF3T3BhY2l0eUlzQW5pbWF0aW5nIHZhbHVlcwogICAgIC8vCkBAIC0z
Nzg5LDcgKzM3ODksNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVN1
YnRyZWVTZWFyY2gpCiAvLyAgLSBhZGQgYSBjYXNlIHRoYXQgY2hlY2tzIGlmIGEgcmVuZGVyIHN1
cmZhY2UncyByZXBsaWNhVHJhbnNmb3JtIGlzIGNvbXB1dGVkIGNvcnJlY3RseS4KIC8vICAtIHRl
c3QgYWxsIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHJlbmRlciBzdXJmYWNlcyBhcmUgY3Jl
YXRlZAogLy8gIC0gaWYgcG9zc2libGUsIHRlc3QgYWxsIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2gg
cmVuZGVyIHN1cmZhY2VzIGFyZSBub3QgY3JlYXRlZAotLy8gIC0gdmVyaWZ5IHRoYXQgdGhlIGxh
eWVyIGxpc3RzIG9mIHJlbmRlciBzdXJmYWNlcyBhcmUgY29ycmVjdCwgdmVyaWZ5IHRoYXQgInRh
cmdldFJlbmRlclN1cmZhY2UiIHZhbHVlcyBmb3IgZWFjaCBsYXllciBhcmUgY29ycmVjdC4KKy8v
ICAtIHZlcmlmeSB0aGF0IHRoZSBsYXllciBsaXN0cyBvZiByZW5kZXIgc3VyZmFjZXMgYXJlIGNv
cnJlY3QsIHZlcmlmeSB0aGF0IHJlbmRlclRhcmdldCdzIFJlbmRlclN1cmZhY2UgdmFsdWVzIGZv
ciBlYWNoIGxheWVyIGFyZSBjb3JyZWN0LgogLy8gIC0gdGVzdCB0aGUgY29tcHV0YXRpb24gb2Yg
Y2xpcCByZWN0cyBhbmQgY29udGVudCByZWN0cwogLy8gIC0gdGVzdCB0aGUgc3BlY2lhbCBjYXNl
cyBmb3IgbWFzayBsYXllcnMgYW5kIHJlcGxpY2EgbGF5ZXJzCiAvLyAgLSB0ZXN0IHRoZSBvdGhl
ciBmdW5jdGlvbnMgaW4gQ0NMYXllclRyZWVIb3N0Q29tbW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcAppbmRleCBm
MGJmZDBlYTMzNDQyYzkzYTYzYWMyNDgzNzczYTE2Y2VmMzdhYTRkLi44N2JkZTUxMTcyMjg1MTc2
ODM2M2JjODg5NTRjM2JjYTcwZTliYjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAKQEAgLTEwNDQsNyArMTA0
NCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3Qo
SW50UmVjdCgtMjAsIC0yMCwgMTAwMCwgMTAwMCkpOwogCiAgICAgICAgIC8vIFRoZXJlIGlzIG5v
dGhpbmcgYWJvdmUgY2hpbGQyJ3Mgc3VyZmFjZSBpbiB0aGUgei1vcmRlci4KLSAgICAgICAgRVhQ
RUNUX0lOVF9SRUNUX0VRKEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCksIG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNoaWxkMi0+cmVuZGVyU3VyZmFj
ZSgpLCBmYWxzZSwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSkpOworICAgICAgICBFWFBFQ1Rf
SU5UX1JFQ1RfRVEoSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY2hpbGQyLCBmYWxzZSwgSW50UmVjdCgt
MTAsIDQyMCwgNzAsIDgwKSkpOwogCiAgICAgICAgIHRoaXMtPmxlYXZlQ29udHJpYnV0aW5nU3Vy
ZmFjZShjaGlsZDIsIG9jY2x1c2lvbik7CiAgICAgICAgIHRoaXMtPnZpc2l0TGF5ZXIobGF5ZXIx
LCBvY2NsdXNpb24pOwpAQCAtMTA2Miw3ICsxMDYyLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCgtMTAsIDQzMCwg
ODAsIDcxKSkpOwogCiAgICAgICAgIC8vIGNoaWxkMidzIGNvbnRlbnRzIHdpbGwgb2NjbHVkZSBj
aGlsZDEgYmVsb3cgaXQuCi0gICAgICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KC0xMCwg
NDMwLCAxMCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250
ZW50UmVjdChjaGlsZDEtPnJlbmRlclN1cmZhY2UoKSwgZmFsc2UsIEludFJlY3QoLTEwLCA0MzAs
IDgwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoLTEwLCA0MzAs
IDEwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRS
ZWN0KGNoaWxkMSwgZmFsc2UsIEludFJlY3QoLTEwLCA0MzAsIDgwLCA3MCkpKTsKIAogICAgICAg
ICB0aGlzLT5sZWF2ZUNvbnRyaWJ1dGluZ1N1cmZhY2UoY2hpbGQxLCBvY2NsdXNpb24pOwogICAg
ICAgICB0aGlzLT5lbnRlckxheWVyKHBhcmVudCwgb2NjbHVzaW9uKTsKQEAgLTExNTMsNyArMTE1
Myw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdGhpcy0+ZW50ZXJDb250cmlidXRpbmdTdXJmYWNl
KGNoaWxkMiwgb2NjbHVzaW9uKTsKIAogICAgICAgICAvLyBUaGVyZSBpcyBub3RoaW5nIGFib3Zl
IGNoaWxkMidzIHN1cmZhY2UgaW4gdGhlIHotb3JkZXIuCi0gICAgICAgIEVYUEVDVF9JTlRfUkVD
VF9FUShJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRy
aWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjaGlsZDItPnJlbmRlclN1cmZhY2UoKSwgZmFsc2Us
IEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VR
KEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0
aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNoaWxkMiwgZmFsc2UsIEludFJlY3QoLTEwLCA0MjAsIDcw
LCA4MCkpKTsKIAogICAgICAgICB0aGlzLT5sZWF2ZUNvbnRyaWJ1dGluZ1N1cmZhY2UoY2hpbGQy
LCBvY2NsdXNpb24pOwogICAgICAgICB0aGlzLT52aXNpdExheWVyKGxheWVyMSwgb2NjbHVzaW9u
KTsKQEAgLTExNzEsOSArMTE3MSw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEsIEludFJlY3QoNDIxLCAtMjAsIDgwLCA5MCkpKTsK
IAogICAgICAgICAvLyBjaGlsZDIncyBjb250ZW50cyB3aWxsIG9jY2x1ZGUgY2hpbGQxIGJlbG93
IGl0LgotICAgICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCg0MjAsIC0yMCwgODAsIDkw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY2hp
bGQxLT5yZW5kZXJTdXJmYWNlKCksIGZhbHNlLCBJbnRSZWN0KDQyMCwgLTIwLCA4MCwgOTApKSk7
Ci0gICAgICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KDQ5MCwgLTEwLCAxMCwgODApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjaGlsZDEt
PnJlbmRlclN1cmZhY2UoKSwgZmFsc2UsIEludFJlY3QoNDIwLCAtMTAsIDgwLCA5MCkpKTsKLSAg
ICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoNDIwLCAtMjAsIDcwLCAxMCksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNoaWxkMS0+cmVu
ZGVyU3VyZmFjZSgpLCBmYWxzZSwgSW50UmVjdCg0MjAsIC0yMCwgNzAsIDkwKSkpOworICAgICAg
ICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCg0MjAsIC0yMCwgODAsIDkwKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY2hpbGQxLCBmYWxzZSwg
SW50UmVjdCg0MjAsIC0yMCwgODAsIDkwKSkpOworICAgICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEo
SW50UmVjdCg0OTAsIC0xMCwgMTAsIDgwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250cmlidXRp
bmdTdXJmYWNlQ29udGVudFJlY3QoY2hpbGQxLCBmYWxzZSwgSW50UmVjdCg0MjAsIC0xMCwgODAs
IDkwKSkpOworICAgICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCg0MjAsIC0yMCwgNzAs
IDEwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3Qo
Y2hpbGQxLCBmYWxzZSwgSW50UmVjdCg0MjAsIC0yMCwgNzAsIDkwKSkpOwogCiAgICAgICAgIHRo
aXMtPmxlYXZlQ29udHJpYnV0aW5nU3VyZmFjZShjaGlsZDEsIG9jY2x1c2lvbik7CiAgICAgICAg
IHRoaXMtPmVudGVyTGF5ZXIocGFyZW50LCBvY2NsdXNpb24pOwpAQCAtMjA3Nyw3ICsyMDc3LDcg
QEAgcHJvdGVjdGVkOgogCiAgICAgICAgIHRoaXMtPmVudGVyQ29udHJpYnV0aW5nU3VyZmFjZShz
dXJmYWNlLCBvY2NsdXNpb24pOwogICAgICAgICAvLyBPY2NsdXNpb24gd2l0aGluIHRoZSBzdXJm
YWNlIGlzIGxvc3Qgd2hlbiBsZWF2aW5nIHRoZSBhbmltYXRpbmcgc3VyZmFjZS4KLSAgICAgICAg
RVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoMCwgMCwgMjUwLCAzMDApLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLT5yZW5kZXJTdXJm
YWNlKCksIGZhbHNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgICAgICBFWFBFQ1Rf
SU5UX1JFQ1RfRVEoSW50UmVjdCgwLCAwLCAyNTAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KHN1cmZhY2UsIGZhbHNlLCBJbnRSZWN0KDAs
IDAsIDMwMCwgMzAwKSkpOwogICAgICAgICB0aGlzLT5sZWF2ZUNvbnRyaWJ1dGluZ1N1cmZhY2Uo
c3VyZmFjZSwgb2NjbHVzaW9uKTsKIAogICAgICAgICB0aGlzLT52aXNpdExheWVyKGxheWVyLCBv
Y2NsdXNpb24pOwpAQCAtMjEyOSw3ICsyMTI5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIHRo
aXMtPmVudGVyQ29udHJpYnV0aW5nU3VyZmFjZShzdXJmYWNlLCBvY2NsdXNpb24pOwogICAgICAg
ICAvLyBPY2NsdXNpb24gd2l0aGluIHRoZSBzdXJmYWNlIGlzIGxvc3Qgd2hlbiBsZWF2aW5nIHRo
ZSBhbmltYXRpbmcgc3VyZmFjZS4KLSAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3Qo
MCwgMCwgMjUwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VD
b250ZW50UmVjdChzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCksIGZhbHNlLCBJbnRSZWN0KDAsIDAs
IDMwMCwgMzAwKSkpOworICAgICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCgwLCAwLCAy
NTAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRS
ZWN0KHN1cmZhY2UsIGZhbHNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwogICAgICAgICB0
aGlzLT5sZWF2ZUNvbnRyaWJ1dGluZ1N1cmZhY2Uoc3VyZmFjZSwgb2NjbHVzaW9uKTsKIAogICAg
ICAgICB0aGlzLT52aXNpdExheWVyKGxheWVyLCBvY2NsdXNpb24pOwpAQCAtMjIxOCw3ICsyMjE4
LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIHRoaXMtPmVudGVyQ29udHJpYnV0aW5nU3VyZmFj
ZShzdXJmYWNlLCBvY2NsdXNpb24pOwogICAgICAgICAvLyBUaGUgY29udHJpYnV0aW5nIHxzdXJm
YWNlfCBpcyBhbmltYXRpbmcgc28gaXQgY2FuJ3QgYmUgb2NjbHVkZWQuCi0gICAgICAgIEVYUEVD
VF9JTlRfUkVDVF9FUShJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3Qoc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgp
LCBmYWxzZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgRVhQRUNUX0lOVF9S
RUNUX0VRKEludFJlY3QoMCwgMCwgMzAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRy
aWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAz
MDAsIDMwMCkpKTsKICAgICAgICAgdGhpcy0+bGVhdmVDb250cmlidXRpbmdTdXJmYWNlKHN1cmZh
Y2UsIG9jY2x1c2lvbik7CiAKICAgICAgICAgdGhpcy0+ZW50ZXJMYXllcihsYXllciwgb2NjbHVz
aW9uKTsKQEAgLTIzMzMsNyArMjMzMyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdGhpcy0+ZW50
ZXJDb250cmlidXRpbmdTdXJmYWNlKHN1cmZhY2UsIG9jY2x1c2lvbik7CiAKICAgICAgICAgLy8g
U3VyZmFjZSBpcyBub3Qgb2NjbHVkZWQgc28gaXQgc2hvdWxkbid0IHRoaW5rIGl0IGlzLgotICAg
ICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KHN1cmZhY2UtPnJlbmRl
clN1cmZhY2UoKSwgZmFsc2UsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVY
UEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3Qoc3VyZmFjZSwgZmFsc2UsIEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApKSk7CiAgICAgfQogfTsKIApAQCAtMjM3MSw4ICsyMzcxLDggQEAg
cHJvdGVjdGVkOgogICAgICAgICB0aGlzLT5lbnRlckNvbnRyaWJ1dGluZ1N1cmZhY2Uoc3VyZmFj
ZSwgb2NjbHVzaW9uKTsKIAogICAgICAgICAvLyBTdXJmYWNlIGlzIG9jY2x1ZGVkLCBidXQgb25s
eSB0aGUgdG9wIDEwcHggb2YgdGhlIHJlcGxpY2EuCi0gICAgICAgIEVYUEVDVF9JTlRfUkVDVF9F
UShJbnRSZWN0KDAsIDAsIDAsIDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1
cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCksIGZhbHNlLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCgw
LCAxMCwgMTAwLCA5MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNv
bnRlbnRSZWN0KHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSwgdHJ1ZSwgSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoMCwgMCwgMCwg
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KHN1
cmZhY2UsIGZhbHNlLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1Rf
SU5UX1JFQ1RfRVEoSW50UmVjdCgwLCAxMCwgMTAwLCA5MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KHN1cmZhY2UsIHRydWUsIEludFJlY3QoMCwg
MCwgMTAwLCAxMDApKSk7CiAgICAgfQogfTsKIApAQCAtMjQxMiw4ICsyNDEyLDggQEAgcHJvdGVj
dGVkOgogICAgICAgICB0aGlzLT5lbnRlckNvbnRyaWJ1dGluZ1N1cmZhY2Uoc3VyZmFjZSwgb2Nj
bHVzaW9uKTsKIAogICAgICAgICAvLyBTdXJmYWNlIGFuZCByZXBsaWNhIGFyZSBvY2NsdWRlZCBk
aWZmZXJlbnQgYW1vdW50cy4KLSAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoNDAs
IDAsIDYwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250
ZW50UmVjdChzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCksIGZhbHNlLCBJbnRSZWN0KDAsIDAsIDEw
MCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCg1MCwgMCwgNTAs
IDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0
KHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSwgdHJ1ZSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkp
KTsKKyAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoNDAsIDAsIDYwLCAxMDApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNl
LCBmYWxzZSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0lOVF9S
RUNUX0VRKEludFJlY3QoNTAsIDAsIDUwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRy
aWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLCB0cnVlLCBJbnRSZWN0KDAsIDAsIDEw
MCwgMTAwKSkpOwogICAgIH0KIH07CiAKQEAgLTI0NTgsNyArMjQ1OCw3IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgdGhpcy0+ZW50ZXJDb250cmlidXRpbmdTdXJmYWNlKHN1cmZhY2VDaGlsZCwgb2Nj
bHVzaW9uKTsKICAgICAgICAgLy8gVGhlIHN1cmZhY2VDaGlsZCdzIHBhcmVudCBkb2VzIG5vdCBo
YXZlIGEgY2xpcFJlY3QgYXMgaXQgb3ducyBhIHJlbmRlciBzdXJmYWNlLiBNYWtlIHN1cmUgdGhl
IHVub2NjbHVkZWQgcmVjdAogICAgICAgICAvLyBkb2VzIG5vdCBnZXQgY2xpcHBlZCBhd2F5IGlu
YXBwcm9wcmlhdGVseS4KLSAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoMCwgNDAs
IDEwMCwgMTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50
UmVjdChzdXJmYWNlQ2hpbGQtPnJlbmRlclN1cmZhY2UoKSwgZmFsc2UsIEludFJlY3QoMCwgMCwg
MTAwLCA1MCkpKTsKKyAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoMCwgNDAsIDEw
MCwgMTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVj
dChzdXJmYWNlQ2hpbGQsIGZhbHNlLCBJbnRSZWN0KDAsIDAsIDEwMCwgNTApKSk7CiAgICAgICAg
IHRoaXMtPmxlYXZlQ29udHJpYnV0aW5nU3VyZmFjZShzdXJmYWNlQ2hpbGQsIG9jY2x1c2lvbik7
CiAKICAgICAgICAgLy8gV2hlbiB0aGUgc3VyZmFjZUNoaWxkJ3Mgb2NjbHVzaW9uIGlzIHRyYW5z
Zm9ybWVkIHVwIHRvIGl0cyBwYXJlbnQsIG1ha2Ugc3VyZSBpdCBpcyBub3QgY2xpcHBlZCBhd2F5
IGluYXBwcm9wcmlhdGVseSBhbHNvLgpAQCAtMjQ3MSw3ICsyNDcxLDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgICAgIHRoaXMtPmVudGVyQ29udHJpYnV0aW5nU3VyZmFjZShzdXJmYWNlLCBvY2NsdXNp
b24pOwogICAgICAgICAvLyBUaGUgc3VyZmFjZSdzIHBhcmVudCBkb2VzIGhhdmUgYSBjbGlwUmVj
dCBhcyBpdCBpcyB0aGUgcm9vdCBsYXllci4KLSAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKElu
dFJlY3QoMCwgNTAsIDEwMCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1
cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCksIGZhbHNlLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCgw
LCA1MCwgMTAwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNv
bnRlbnRSZWN0KHN1cmZhY2UsIGZhbHNlLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwogICAg
IH0KIH07CiAKQEAgLTI0OTcsNyArMjQ5Nyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIC8v
IFRoZSByb290IGxheWVyIGFsd2F5cyBoYXMgYSBjbGlwUmVjdC4gU28gdGhlIHBhcmVudCBvZiB8
c3VyZmFjZXwgaGFzIGEgY2xpcFJlY3QgZ2l2aW5nIHRoZSBzdXJmYWNlIGl0c2VsZiBhIGNsaXBS
ZWN0LgogICAgICAgICAgICAgdGhpcy0+ZW50ZXJDb250cmlidXRpbmdTdXJmYWNlKHN1cmZhY2Us
IG9jY2x1c2lvbik7CiAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHBhcmVudCdzIGNsaXBS
ZWN0IGNsaXBzIHRoZSB1bm9jY2x1ZGVkIHJlZ2lvbiBvZiB0aGUgY2hpbGQgc3VyZmFjZS4KLSAg
ICAgICAgICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3Qoc3VyZmFjZS0+
cmVuZGVyU3VyZmFjZSgpLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAxMDAsIDMwMCkpKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3Qoc3VyZmFjZSwgZmFs
c2UsIEludFJlY3QoMCwgMCwgMTAwLCAzMDApKSk7CiAgICAgICAgIH0KICAgICAgICAgdGhpcy0+
cmVzZXRMYXllckl0ZXJhdG9yKCk7CiAgICAgICAgIHsKQEAgLTI1MDksNyArMjUwOSw3IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgICAgIC8vIFRoZSByb290IGxheWVyIGFsd2F5cyBoYXMgYSBjbGlw
UmVjdC4gU28gdGhlIHBhcmVudCBvZiB8c3VyZmFjZXwgaGFzIGEgY2xpcFJlY3QgZ2l2aW5nIHRo
ZSBzdXJmYWNlIGl0c2VsZiBhIGNsaXBSZWN0LgogICAgICAgICAgICAgdGhpcy0+ZW50ZXJDb250
cmlidXRpbmdTdXJmYWNlKHN1cmZhY2UsIG9jY2x1c2lvbik7CiAgICAgICAgICAgICAvLyBNYWtl
IHN1cmUgdGhlIHNjcmVlbiBzY2lzc29yIHJlY3QgY2xpcHMgdGhlIHVub2NjbHVkZWQgcmVnaW9u
IG9mIHRoZSBjaGlsZCBzdXJmYWNlLgotICAgICAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKElu
dFJlY3QoMCwgMCwgMTAwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1
cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCksIGZhbHNlLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMzAwKSkpOworICAgICAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZh
Y2VDb250ZW50UmVjdChzdXJmYWNlLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAxMDAsIDMwMCkpKTsK
ICAgICAgICAgfQogICAgIH0KIH07CkBAIC0yNTU0LDEzICsyNTU0LDEzIEBAIHByb3RlY3RlZDoK
IAogICAgICAgICB0aGlzLT5lbnRlckNvbnRyaWJ1dGluZ1N1cmZhY2Uoc3VyZmFjZUNoaWxkLCBv
Y2NsdXNpb24pOwogICAgICAgICAvLyBUaGUgc3VyZmFjZUNoaWxkJ3MgcGFyZW50IGRvZXMgbm90
IGhhdmUgYSBjbGlwUmVjdCBhcyBpdCBvd25zIGEgcmVuZGVyIHN1cmZhY2UuCi0gICAgICAgIEVY
UEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KDAsIDUwLCA4MCwgNTApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlQ2hpbGQtPnJlbmRlclN1
cmZhY2UoKSwgZmFsc2UsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVD
VF9JTlRfUkVDVF9FUShJbnRSZWN0KDAsIDUwLCA4MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlQ2hpbGQsIGZhbHNlLCBJbnRS
ZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwogICAgICAgICB0aGlzLT5sZWF2ZUNvbnRyaWJ1dGluZ1N1
cmZhY2Uoc3VyZmFjZUNoaWxkLCBvY2NsdXNpb24pOwogCiAgICAgICAgIHRoaXMtPnZpc2l0TGF5
ZXIoc3VyZmFjZSwgb2NjbHVzaW9uKTsKICAgICAgICAgdGhpcy0+ZW50ZXJDb250cmlidXRpbmdT
dXJmYWNlKHN1cmZhY2UsIG9jY2x1c2lvbik7CiAgICAgICAgIC8vIFRoZSBzdXJmYWNlJ3MgcGFy
ZW50IGRvZXMgaGF2ZSBhIGNsaXBSZWN0IGFzIGl0IGlzIHRoZSByb290IGxheWVyLgotICAgICAg
ICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCgwLCA1MCwgODAsIDUwKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3Qoc3VyZmFjZS0+cmVuZGVyU3Vy
ZmFjZSgpLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNU
X0lOVF9SRUNUX0VRKEludFJlY3QoMCwgNTAsIDgwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KHN1cmZhY2UsIGZhbHNlLCBJbnRSZWN0KDAs
IDAsIDEwMCwgMTAwKSkpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCmluZGV4IDYyNGQyNDcxMTQ5YWIwNmM2ODgy
ZDhkNmJjOGI5OWM4ZjhlZjkyOWQuLjQ3Yjk0MDBlMWE4ODM2YTk1YzRkODUxY2ViZDU5NmZiN2Mz
ZmFlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3Vs
bGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxs
ZXJUZXN0LmNwcApAQCAtODAsMTEgKzgwLDEwIEBAIHN0YXRpYyBQYXNzT3duUHRyPENDVGlsZWRM
YXllckltcGw+IG1ha2VMYXllcihDQ1RpbGVkTGF5ZXJJbXBsKiBwYXJlbnQsIGNvbnN0IFdlCiAK
ICAgICBpZiAoIXBhcmVudCkgewogICAgICAgICBsYXllci0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgp
OwotICAgICAgICBsYXllci0+c2V0VGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3Vy
ZmFjZSgpKTsKICAgICAgICAgc3VyZmFjZUxheWVyTGlzdC5hcHBlbmQobGF5ZXIuZ2V0KCkpOwog
ICAgICAgICBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5sYXllckxpc3QoKS5hcHBlbmQobGF5ZXIu
Z2V0KCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGxheWVyLT5zZXRUYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgbGF5ZXItPnNldFJl
bmRlclRhcmdldChwYXJlbnQtPnJlbmRlclRhcmdldCgpKTsKICAgICAgICAgcGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCktPmxheWVyTGlzdCgpLmFwcGVuZChsYXllci5nZXQoKSk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RD
b21tb24uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0
Q29tbW9uLmNwcAppbmRleCAyZDE2MDNlNDg4NDI0YWVjNTc0OGVlYjQ0N2QxOTYzNDI0OGEwMzU5
Li4yNmZmZDkwNzljZmRhMzRhZTBiZGJmMGRhNGQxNTU0ZGJmZjU1MTk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5j
cHAKQEAgLTEyNSwxOCArMTI1LDE2IEBAIHZvaWQgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0
VGV4dHVyZVByaW9yaXRpZXMoY29uc3QgQ0NQcmlvcml0eUNhbGN1bGF0b3ImIGNhCiB7CiAgICAg
Ly8gRW5zdXJlIHRoZXJlIGlzIGFsd2F5cyBhIHRhcmdldCByZW5kZXIgc3VyZmFjZSBhdmFpbGFi
bGUuIElmIG5vbmUgaGFzIGJlZW4KICAgICAvLyBzZXQgKHRoZSBsYXllciBpcyBhbiBvcnBoYW4g
Zm9yIHRoZSB0ZXN0KSwgdGhlbiBqdXN0IHNldCBhIHN1cmZhY2Ugb24gaXRzZWxmLgotICAgIGJv
b2wgbWlzc2luZ1RhcmdldFJlbmRlclN1cmZhY2UgPSAhdGFyZ2V0UmVuZGVyU3VyZmFjZSgpOwor
ICAgIGJvb2wgbWlzc2luZ1RhcmdldFJlbmRlclN1cmZhY2UgPSAhcmVuZGVyVGFyZ2V0KCk7CiAK
LSAgICBpZiAobWlzc2luZ1RhcmdldFJlbmRlclN1cmZhY2UpIHsKKyAgICBpZiAobWlzc2luZ1Rh
cmdldFJlbmRlclN1cmZhY2UpCiAgICAgICAgIGNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICAg
ICAgc2V0VGFyZ2V0UmVuZGVyU3VyZmFjZShyZW5kZXJTdXJmYWNlKCkpOwotICAgIH0KIAogICAg
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZVByaW9yaXRpZXMoY2FsY3VsYXRvcik7CiAK
ICAgICBpZiAobWlzc2luZ1RhcmdldFJlbmRlclN1cmZhY2UpIHsKICAgICAgICAgY2xlYXJSZW5k
ZXJTdXJmYWNlKCk7Ci0gICAgICAgIHNldFRhcmdldFJlbmRlclN1cmZhY2UoMCk7CisgICAgICAg
IHNldFJlbmRlclRhcmdldCgwKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggZmRhZTM3YzZhZGYxNjFi
YTk4YWMxODc2NDM1NWZmNTBiMWM4Mjg4ZS4uYTc5NGEyODQ2YWFlZDNkMTk3YzNiOTI3MjhmNWFk
NTVlMTkxZTg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXll
ckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXll
ckNocm9taXVtVGVzdC5jcHAKQEAgLTQ5OSw3ICs0OTksNyBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1
bVRlc3QsIGNoZWNrUHJvcGVydHlDaGFuZ2VDYXVzZXNDb3JyZWN0QmVoYXZpb3IpCiAgICAgRVhF
Q1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMCwgdGVzdExheWVyLT5z
ZXRJc05vbkNvbXBvc2l0ZWRDb250ZW50KHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllf
U0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigwLCB0ZXN0TGF5ZXItPnNldERyYXdPcGFjaXR5KDAu
NWYpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigw
LCB0ZXN0TGF5ZXItPnNldENsaXBSZWN0KEludFJlY3QoMywgMywgOCwgOCkpKTsKLSAgICBFWEVD
VVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigwLCB0ZXN0TGF5ZXItPnNl
dFRhcmdldFJlbmRlclN1cmZhY2UoMCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVF
RFNfQ09NTUlUX0JFSEFWSU9SKDAsIHRlc3RMYXllci0+c2V0UmVuZGVyVGFyZ2V0KDApKTsKICAg
ICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigwLCB0ZXN0TGF5
ZXItPnNldERyYXdUcmFuc2Zvcm0oV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOwogICAgIEVY
RUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDAsIHRlc3RMYXllci0+
c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOwogICAg
IEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDAsIHRlc3RMYXll
ci0+c2V0RHJhd2FibGVDb250ZW50UmVjdChJbnRSZWN0KDQsIDUsIDYsIDcpKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>