<?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>233513</bug_id>
          
          <creation_ts>2021-11-25 23:16:23 -0800</creation_ts>
          <short_desc>GraphicsContextGLOpenGL.cpp contains OpenGL implementation specific and platform specific code</short_desc>
          <delta_ts>2021-11-26 06:36:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>WebKit Local 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>221664</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1817890</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-25 23:16:23 -0800</bug_when>
    <thetext>GraphicsContextGLOpenGL.cpp contains OpenGL implementation specific and platform specific code

This blocks the task of removing ifdefs from GraphicsContextGLOpenGL.h by means of separating various code paths to separate classes.

GraphicsContextGLOpenGL.cpp should contain only &quot;OpenGL&quot; specific code. Currently that code lives in GraphicsContextGLOpenGLCommon.cpp, so GraphicsContextGLOpenGL.cpp should be made empty and then ultimately GraphicsContextGLOpenGLCommon.cpp would be renamed to GraphicsContextGLOpenGL.cpp

ANGLE specific code should go into GraphicsContextGLANGLE.cpp

Platform specific code should go into platform specific files such as GraphicsContextGLCocoa.cpp and compositor specific files such as GraphicsContextGLTextureMapper.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817894</commentid>
    <comment_count>1</comment_count>
      <attachid>445172</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-25 23:30:08 -0800</bug_when>
    <thetext>Created attachment 445172
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817897</commentid>
    <comment_count>2</comment_count>
      <attachid>445173</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-25 23:54:27 -0800</bug_when>
    <thetext>Created attachment 445173
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817910</commentid>
    <comment_count>3</comment_count>
      <attachid>445176</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-26 00:32:12 -0800</bug_when>
    <thetext>Created attachment 445176
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817914</commentid>
    <comment_count>4</comment_count>
      <attachid>445178</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-26 00:40:07 -0800</bug_when>
    <thetext>Created attachment 445178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817930</commentid>
    <comment_count>5</comment_count>
      <attachid>445178</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-11-26 02:56:54 -0800</bug_when>
    <thetext>Comment on attachment 445178
Patch

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

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:-67
&gt; -void GraphicsContextGLOpenGL::resetBuffersToAutoClear()
&gt; -{
&gt; -    GCGLuint buffers = GraphicsContextGL::COLOR_BUFFER_BIT;
&gt; -    // The GraphicsContextGL&apos;s attributes (as opposed to
&gt; -    // WebGLRenderingContext&apos;s) indicate whether there is an
&gt; -    // implicitly-allocated stencil buffer, for example.
&gt; -    auto attrs = contextAttributes();
&gt; -    if (attrs.depth)
&gt; -        buffers |= GraphicsContextGL::DEPTH_BUFFER_BIT;
&gt; -    if (attrs.stencil)
&gt; -        buffers |= GraphicsContextGL::STENCIL_BUFFER_BIT;
&gt; -    setBuffersToAutoClear(buffers);
&gt; -}
&gt; -

Might want to comment what happened to this function  (and others?) since it doesn&apos;t move anywhere mechanically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817933</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-26 03:11:40 -0800</bug_when>
    <thetext>Committed r286175 (244558@main): &lt;https://commits.webkit.org/244558@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 445178.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817935</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-26 03:12:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/85764264&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817964</commentid>
    <comment_count>8</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-26 06:36:13 -0800</bug_when>
    <thetext>*** Bug 233512 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445172</attachid>
            <date>2021-11-25 23:30:08 -0800</date>
            <delta_ts>2021-11-25 23:57:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233513-20211126093006.patch</filename>
            <type>text/plain</type>
            <size>30462</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDllMzkxMGFiOTdiODdi
NGFmYmI1MGFjZTUxYTNmMzA4YmRkMjA1MC4uYzU2YzJiMzUwZjRjZDY3ZTc3ZDRmMDQ3YTRhOTRi
ZTkyYTJiNGJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIxLTExLTI1ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwIGNvbnRhaW5zIE9wZW5HTCBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBh
bmQgcGxhdGZvcm0gc3BlY2lmaWMgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW92ZSBkdXBsaWNhdGUgZnVuY3Rpb25hbGl0eSBvZiAiY29udGV4
dCBjaGFuZ2VkLCBjb250ZXh0IG5vdCBjaGFuZ2VkIiBmcm9tCisgICAgICAgICAgLSBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCBBTkdMRSB2YXJpYW50CisgICAgICAgICAgLSBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCBPcGVuR0wsIE9wZW5HTCBFUyB2YXJpYW50CisgICAgICAgICAgLSBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZQorICAgICAgICB0byBiYXNlIGNsYXNzIEdyYXBoaWNz
Q29udGV4dEdMLiBJbiBvcmRlciB0byBkbyB0aGlzLCBhZGQgZmV3IFdFQkNPUkVfRVhQT1JUcyB0
bworICAgICAgICBHcmFwaGljc0NvbnRleHRHTC5oLCBzaW5jZSBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZSBpcyBpbiBXZWJLaXQgYW5kIG5lZWRzIHRvIGNhbGwKKyAgICAgICAgdGhl
IGJhc2UtY2xhc3MgdmVyc2lvbnMgYXMgd2VsbCBhcyB1c2UgdnRhYmxlLgorCisgICAgICAgIE1v
dmUgQU5HTEUtc3BlY2lmaWMgZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
Y3BwIHRvIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwLgorICAgICAgICBNb3ZlIFRleHR1cmVN
YXBwZXItc3BlY2lmaWMgZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3Bw
IHRvIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAuCisgICAgICAgIE1vdmUgT3Bl
bkdMLCBPcGVuR0wgRVMgc3BlY2lmaWMgZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuY3BwIHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcC4KKworICAgICAg
ICBUaGlzIHdvcmtzIHRvd2FyZHMgYmVpbmcgYWJsZSB0byBzZXBhcmF0ZSBBTkdMRSBhbmQgT3Bl
bkdMLCBPcGVuR0wgRVMgaW1wbGVtZW50YXRpb25zIHRvIGRpZmZlcmVudCBjbGFzc2VzLAorICAg
ICAgICByZWR1Y2luZyB0aGUgaWZkZWZmaW5nIGluIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMOjptYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OmxheWVyQ29tcG9zaXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6c2V0QnVmZmVyc1RvQXV0b0NsZWFyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRCdWZmZXJzVG9BdXRvQ2xlYXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6Om1hcmtMYXllckNvbXBvc2l0ZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50Ojp+Q2xpZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21wb3NpdGVkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpsYXll
ckNvbXBvc2l0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
QnVmZmVyc1RvQXV0b0NsZWFyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtDb250ZXh0Q2hhbmdlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFy
a0xheWVyQ29tcG9zaXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6bGF5ZXJDb21wb3NpdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNvcHlUZXh0dXJlRnJv
bU1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlc2V0QnVmZmVyc1RvQXV0b0NsZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRCdWZmZXJzVG9BdXRvQ2xlYXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlcnNU
b0F1dG9DbGVhciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVsZWFzZVRocmVhZFJlc291cmNlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlVGhyZWFk
UmVzb3VyY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250ZXh0VmlzaWJpbGl0eSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2ltdWxhdGVF
dmVudEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRp
YVNhbXBsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjptYXJrQ29udGV4dENoYW5nZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtMYXllckNvbXBvc2l0ZWQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omxh
eWVyQ29tcG9zaXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNpbXVsYXRlRXZlbnRG
b3JUZXN0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpw
cmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OmNvcHlUZXh0
dXJlRnJvbU1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmg6CisKIDIwMjEtMTEtMjUgIEtpbW1vIEtpbm51bmVu
ICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBHcmFwaGljc0NvbnRleHRHTCBpbXBs
ZW1lbnRhdGlvbnMgc2hvdWxkIGhhdmUgc2VwYXJhdGUgY2xhc3MgZGVmaW5pdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
LmNwcAppbmRleCA0ZjBhOWI1OWZiNDRiZWJmZDM4MjY3NzJkOWIyMDg3ZDllZmFjNWU3Li43ZjJh
MWZkMjhiMzEyOGYwZGU3YTcxMjVlM2RjYzZjOWNiYzhkY2E0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0z
NDcsNiArMzQ3LDEwIEBAIHN0YXRpYyBib29sIHBhY2tQaXhlbHMoY29uc3QgdWludDhfdCogc291
cmNlRGF0YSwgR3JhcGhpY3NDb250ZXh0R0w6OkRhdGFGb3JtYXQKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudDo6Q2xpZW50KCkgPSBkZWZhdWx0OworCitH
cmFwaGljc0NvbnRleHRHTDo6Q2xpZW50Ojp+Q2xpZW50KCkgPSBkZWZhdWx0OworCiBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0R0w+IEdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiBob3N0V2luZG93
KQogewogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gcmVzdWx0OwpAQCAtMzYyLDYgKzM2
Niw3IEBAIEdyYXBoaWNzQ29udGV4dEdMOjpHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMgYXR0cnMpCiB7CiB9CiAKK0dyYXBoaWNzQ29udGV4dEdMOjp+R3JhcGhp
Y3NDb250ZXh0R0woKSA9IGRlZmF1bHQ7CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0w6OmNvbXB1
dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyhHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IHVuc2lnbmVkKiBjb21wb25lbnRzUGVyUGl4ZWwsIHVuc2lnbmVkKiBieXRlc1BlckNvbXBvbmVu
dCkKIHsKQEAgLTYwNyw2ICs2MTIsNDIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTDo6ZXh0cmFj
dFRleHR1cmVEYXRhKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIEdDR0wKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRleHRDaGFu
Z2VkKCkKK3sKKyAgICBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOworfQorCitib29sIEdyYXBo
aWNzQ29udGV4dEdMOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2xh
eWVyQ29tcG9zaXRlZDsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTDo6c2V0QnVmZmVyc1Rv
QXV0b0NsZWFyKEdDR0xiaXRmaWVsZCBidWZmZXJzKQoreworICAgIGlmICghY29udGV4dEF0dHJp
YnV0ZXMoKS5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpCisgICAgICAgIG1fYnVmZmVyc1RvQXV0b0Ns
ZWFyID0gYnVmZmVyczsKK30KKworR0NHTGJpdGZpZWxkIEdyYXBoaWNzQ29udGV4dEdMOjpnZXRC
dWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2J1ZmZlcnNUb0F1dG9D
bGVhcjsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTDo6bWFya0xheWVyQ29tcG9zaXRlZCgp
Cit7CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSB0cnVlOworICAgIGF1dG8gYXR0cnMgPSBjb250
ZXh0QXR0cmlidXRlcygpOworICAgIGlmICghYXR0cnMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7
CisgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9S
X0JVRkZFUl9CSVQ7CisgICAgICAgIGlmIChhdHRycy5kZXB0aCkKKyAgICAgICAgICAgIG1fYnVm
ZmVyc1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9CVUZGRVJfQklUOwor
ICAgICAgICBpZiAoYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgICAgIG1fYnVmZmVyc1RvQXV0b0Ns
ZWFyIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CisgICAgfQorICAg
IGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNs
aWVudC0+ZGlkQ29tcG9zaXRlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGVkYWE0Y2U1ZWE3MmU3MzBiYzUyNTQ2
YzcwMDZlZDIzNzI3Mzk2MGQuLjY0MWI3YjZhYzNlYjA1NTQ3OTE3ZDZhM2ZiZWEwOTJhYjdjZGM3
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaApAQCAtODk3LDcgKzg5Nyw4IEBAIHB1YmxpYzoKIAogICAgIGNsYXNzIENs
aWVudCB7CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KKyAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgQ2xpZW50KCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgfkNsaWVudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcG9zaXRlKCkgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpID0gMDsKICAgICAgICAgdmly
dHVhbCB2b2lkIHJlY3ljbGVDb250ZXh0KCkgPSAwOwpAQCAtOTE0LDggKzkxNSw4IEBAIHB1Ymxp
YzoKICAgICAvLyBIb3N0V2luZG93IG1pZ2h0IGFmZmVjdCB0aGUgZGVjaXNpb24gd2hpY2ggYmFj
a2VuZCBpcyB0byBiZSB1c2VkLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
LCBIb3N0V2luZG93Kik7CiAKLSAgICBHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMpOwotICAgIHZpcnR1YWwgfkdyYXBoaWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0
OworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0
R0woKTsKIAogICAgIHZvaWQgYWRkQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5h
ZGQoJmNsaWVudCk7IH0KICAgICB2b2lkIHJlbW92ZUNsaWVudChDbGllbnQmIGNsaWVudCkgeyBt
X2NsaWVudHMucmVtb3ZlKCZjbGllbnQpOyB9CkBAIC0xMjc0LDE0ICsxMjc1LDE0IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSA9IDA7CiAKICAgICAvLyBG
SVhNRTogc2hvdWxkIGJlIHJlbW92ZWQsIGNhbGxlciBzaG91bGQga2VlcCB0cmFjayBvZiBjaGFu
Z2VkIHN0YXRlLgotICAgIHZpcnR1YWwgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSA9IDA7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwogCiAg
ICAgLy8gRklYTUU6IHRoZXNlIHNob3VsZCBiZSByZW1vdmVkLCBjYWxsZXIgaXMgaW50ZXJlc3Rl
ZCBpbiBidWZmZXIgY2xlYXIgc3RhdHVzIGFuZAogICAgIC8vIHNob3VsZCB0cmFjayB0aGF0IGlu
IGEgdmFyaWFibGUgdGhhdCB0aGUgY2FsbGVyIGhvbGRzLiBDYWxsZXIgc2hvdWxkIHJlY2VpdmUK
ICAgICAvLyB0aGUgdmFsdWUgZnJvbSByZXNoYXBlKCkgYW5kIGRpZENvbXBvc2l0ZSgpLgotICAg
IHZpcnR1YWwgYm9vbCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQpID0gMDsKLSAgICB2aXJ0dWFs
IEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdCA9IDA7CisgICAgYm9v
bCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVh
cihHQ0dMYml0ZmllbGQpOworICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIo
KSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiB0aGVzZSBzaG91bGQgYmUgcmVtb3ZlZCwgdGhleSdy
ZSBwYXJ0IG9mIGRyYXdpbmcgYnVmZmVyIGFuZAogICAgIC8vIGRpc3BsYXkgYnVmZmVyIGFic3Ry
YWN0aW9ucyB0aGF0IHRoZSBjYWxsZXIgc2hvdWxkIGhvbGQgc2VwYXJhdGUgdG8KQEAgLTEyOTYs
NyArMTI5Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgcmVtb3Zl
ZC4gVGhlIGxheWVyIHNob3VsZCBiZSBtYXJrZWQgY29tcG9zaXRlZCBieQogICAgIC8vIHByZXBh
cmluZyBmb3IgZGlzcGxheSwgc28gdGhhdCBjYW52YXMgaW1hZ2UgYnVmZmVyIGFuZCB0aGUgbGF5
ZXIgYWdyZWUKICAgICAvLyBvbiB0aGUgY29udGVudC4KLSAgICB2aXJ0dWFsIHZvaWQgbWFya0xh
eWVyQ29tcG9zaXRlZCgpID0gMDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hcmtMYXllckNv
bXBvc2l0ZWQoKTsKIAogICAgIGVudW0gY2xhc3MgU2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nIHsK
ICAgICAgICAgQ29udGV4dENoYW5nZSwKQEAgLTEzNTgsNiArMTM1OSwxMSBAQCBwcm90ZWN0ZWQ6
CiAgICAgaW50IG1fY3VycmVudFdpZHRoIHsgMCB9OwogICAgIGludCBtX2N1cnJlbnRIZWlnaHQg
eyAwIH07CiAgICAgSGFzaFNldDxDbGllbnQqPiBtX2NsaWVudHM7CisgICAgLy8gQSBiaXRtYXNr
IG9mIEdMIGJ1ZmZlciBiaXRzIChHTF9DT0xPUl9CVUZGRVJfQklULAorICAgIC8vIEdMX0RFUFRI
X0JVRkZFUl9CSVQsIEdMX1NURU5DSUxfQlVGRkVSX0JJVCkgd2hpY2ggbmVlZCB0byBiZQorICAg
IC8vIGF1dG8tY2xlYXJlZC4KKyAgICBHQ0dMYml0ZmllbGQgbV9idWZmZXJzVG9BdXRvQ2xlYXIg
eyAwIH07CisgICAgYm9vbCBtX2xheWVyQ29tcG9zaXRlZCB7IGZhbHNlIH07CiAKIHByaXZhdGU6
CiAgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIG1fYXR0cnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKaW5kZXggYjk0NzUzOTc3N2JmZmEwYjNhZmUyODEx
NTcyYjhjMWE2Y2NjNzBkNi4uMjMzYjBkZjc1NmVjZGQ0YmM5MmQ5MGJhYWYwMTUzY2M2YTU5NWZm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcApAQCAtNjgsNDAg
KzY4LDEwIEBAIGJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzR0xFUzJD
b21wbGlhbnQoKSBjb25zdAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
bWFya0NvbnRleHRDaGFuZ2VkKCkKIHsKICAgICAvLyBGSVhNRTogVGhlIGNhbGxlciBzaG91bGQg
dHJhY2sgdGhpcyBzdGF0ZS4KLSAgICBpZiAobV9sYXllckNvbXBvc2l0ZWQpCisgICAgaWYgKG1f
bGF5ZXJDb21wb3NpdGVkKSB7CiAgICAgICAgIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpOwot
ICAgIG1fbGF5ZXJDb21wb3NpdGVkID0gZmFsc2U7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6Om1hcmtMYXllckNvbXBvc2l0ZWQoKQotewotICAgIG1fbGF5ZXJD
b21wb3NpdGVkID0gdHJ1ZTsKLSAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsK
LSAgICBpZiAoIWF0dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikgewotICAgICAgICBtX2J1ZmZl
cnNUb0F1dG9DbGVhciA9IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklUOwotICAg
ICAgICBpZiAoYXR0cnMuZGVwdGgpCi0gICAgICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciB8
PSBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQlVGRkVSX0JJVDsKLSAgICAgICAgaWYgKGF0dHJz
LnN0ZW5jaWwpCi0gICAgICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciB8PSBHcmFwaGljc0Nv
bnRleHRHTDo6U1RFTkNJTF9CVUZGRVJfQklUOworICAgICAgICBHcmFwaGljc0NvbnRleHRHTDo6
bWFya0NvbnRleHRDaGFuZ2VkKCk7CiAgICAgfQotICAgIGZvciAoYXV0byogY2xpZW50IDogY29w
eVRvVmVjdG9yKG1fY2xpZW50cykpCi0gICAgICAgIGNsaWVudC0+ZGlkQ29tcG9zaXRlKCk7Ci19
Ci0KLWJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmxheWVyQ29tcG9zaXRl
ZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOwotfQotCi12b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NH
TGJpdGZpZWxkIGJ1ZmZlcnMpCi17Ci0gICAgaWYgKCFjb250ZXh0QXR0cmlidXRlcygpLnByZXNl
cnZlRHJhd2luZ0J1ZmZlcikKLSAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSBidWZmZXJz
OwotfQotCi1HQ0dMYml0ZmllbGQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Omdl
dEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYnVmZmVyc1RvQXV0
b0NsZWFyOwogfQogCiBib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzdXBw
b3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuaAppbmRleCBmOWE4NjE4NDJhMTBkYmJiODBiYzg5ZDI2MDZhODhlMGI3ZjJlN2UzLi41ZTVj
MDliODcyMDQzZWEwZmEyYTk2N2Y0ZjM5OTNiYWQ4MGE3OTQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlLmgKQEAgLTUwLDEwICs1MCw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOwogICAgIGJvb2wgaXNHTEVTMkNvbXBs
aWFudCgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgbWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7
Ci0gICAgYm9vbCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHNldEJ1
ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQpIGZpbmFsOwotICAgIEdDR0xiaXRmaWVsZCBn
ZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIG1hcmtMYXllckNv
bXBvc2l0ZWQoKSBmaW5hbDsKIAogICAgIC8vIE90aGVyIEV4dGVuc2lvbkdMIG92ZXJyaWRlcy4K
ICAgICB1c2luZyBFeHRlbnNpb25zR0w6OmlzRW5hYmxlZDsKQEAgLTc5LDEwICs3NSw2IEBAIHBy
aXZhdGU6CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOwogCiAg
ICAgSGFzaFNldDxTdHJpbmc+IG1fZW5hYmxlZEV4dGVuc2lvbnM7Ci0KLSAgICAvLyBGSVhNRTog
RHJhd2luZyBidWZmZXIgY2xlYXIgdHJhY2tpbmcgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBjbGll
bnQuCi0gICAgYm9vbCBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOwotICAgIEdDR0xiaXRmaWVs
ZCBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9IHsgMCB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcAppbmRleCA2NDA0NDYyOTgyN2EyMGEzMjRkYzY0ODRkOTIzZWIyMTQw
ZmMwOGYzLi45NjgwZTA2YzJjNjFhODkzMzhlOTY1MmY5Mzk4ZmM3N2Y1MjA0ODlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMjE1MywyNSArMjE1Myw2IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9y
KQogICAgIG1fc3ludGhldGljRXJyb3JzLmFkZChlcnJvcik7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCi17Ci0gICAgbV9sYXllckNvbXBv
c2l0ZWQgPSBmYWxzZTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0xh
eWVyQ29tcG9zaXRlZCgpCi17Ci0gICAgbV9sYXllckNvbXBvc2l0ZWQgPSB0cnVlOwotICAgIHJl
c2V0QnVmZmVyc1RvQXV0b0NsZWFyKCk7Ci0KLSAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNvcHlU
b1ZlY3RvcihtX2NsaWVudHMpKQotICAgICAgICBjbGllbnQtPmRpZENvbXBvc2l0ZSgpOwotfQot
Ci1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAot
ewotICAgIHJldHVybiBtX2xheWVyQ29tcG9zaXRlZDsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Zm9yY2VDb250ZXh0TG9zdCgpCiB7CiAgICAgZm9yIChhdXRvKiBjbGllbnQg
OiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaApp
bmRleCBlZGJjNGY3M2Y1ZTEyMjgxZGY1ZTMyZTVmNmQ3MDk1ZTczODhjMmNkLi4yNTU1ZmYwODMy
OGUzNDY5Y2Q3YTRhMjk3ZGJlZjc5MGY2MzA1Mjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5oCkBAIC00OSw2ICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRhY2hJT1N1cmZh
Y2VGcm9tU2hhcmVkVGV4dHVyZSh2b2lkKiBoYW5kbGUpOwogI2VuZGlmCiAKKyAgICAvLyBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCBvdmVycmlkZXMuCisjaWYgRU5BQkxFKFZJREVPKQorICAgIGJv
b2wgY29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRl
eHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxG
b3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBib29sIGZsaXBZKSBmaW5hbDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7
CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5t
bQppbmRleCA0Y2FiY2M5MDM3MmNhYmIwMTMzNDYwNGE4OTRlN2I2Y2NjZmI2ZTFlLi5mMjAxZGRj
Yzk3ODYxZjZhODYyNmNhZDJkYWJmY2JmMzM3MjUzNmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMQ29jb2EubW0KQEAgLTQ3LDggKzQ3LDkgQEAKICNpbXBvcnQgIldlYkNvcmVUaHJlYWQuaCIK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorI2lmIEVO
QUJMRShWSURFTykKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCIKKyNpbmNs
dWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKQEAgLTc2Miw3ICs3NjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpw
cmVwYXJlRm9yRGlzcGxheSgpCiB9CiAKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9V
TkRBVElPTikKKyNpZiBFTkFCTEUoVklERU8pCiBHcmFwaGljc0NvbnRleHRHTENWKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6YXNDVigpCiB7CiAgICAgaWYgKCFtX2N2KQpAQCAtODIzLDYgKzgy
NCwyMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VUaHJl
YWRSZXNvdXJjZXMoKQogICAgIGN1cnJlbnRDb250ZXh0ID0gbnVsbHB0cjsKIH0KIAorI2lmIEVO
QUJMRShWSURFTykKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y29weVRleHR1cmVGcm9t
TWVkaWEoTWVkaWFQbGF5ZXImIHBsYXllciwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJl
LCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Rm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbCBmbGlwWSkKK3sKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gcGxheWVyLnBpeGVs
QnVmZmVyRm9yQ3VycmVudFRpbWUoKTsKKyAgICBpZiAoIXBpeGVsQnVmZmVyKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGNvbnRleHRDViA9IGFzQ1YoKTsKKyAgICBpZiAoIWNv
bnRleHRDVikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVU5VU0VEX1ZBUklBQkxFKHBy
ZW11bHRpcGx5QWxwaGEpOworICAgIEFTU0VSVF9VTlVTRUQob3V0cHV0VGFyZ2V0LCBvdXRwdXRU
YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQpOworICAgIHJldHVybiBjb250
ZXh0Q1YtPmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShwaXhlbEJ1ZmZlci5nZXQoKSwgb3V0cHV0
VGV4dHVyZSwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIEdyYXBoaWNzQ29u
dGV4dEdMOjpGbGlwWShmbGlwWSkpOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IDNiZWMw
OTlmMzdlYzNjZDNkYmMzODEyMTVhMjdhOTViMzcyYzIxNDYuLmI4MzJhMTg2YTQyYzhiZTMyMmE0
YzcwODFmNzVkY2Q0OTBjMjdmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcApAQCAtMzIsMTA3ICszMiwxMiBAQAogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKLSNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIK
ICNpbmNsdWRlICJQaXhlbEJ1ZmZlci5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3
dGYvVW5pcXVlQXJyYXkuaD4KIAotI2lmIFVTRShBVkZPVU5EQVRJT04pCi0jaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0R0xDVi5oIgotI2VuZGlmCi0KLSNpZiAhUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShNRURJQV9TVFJFQU0pCi0jaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKLSNlbmRpZgotCi0j
aWYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSNpbmNsdWRlICJNZWRp
YVNhbXBsZUdTdHJlYW1lci5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKQotewot
ICAgIEdDR0x1aW50IGJ1ZmZlcnMgPSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQlVGRkVSX0JJ
VDsKLSAgICAvLyBUaGUgR3JhcGhpY3NDb250ZXh0R0wncyBhdHRyaWJ1dGVzIChhcyBvcHBvc2Vk
IHRvCi0gICAgLy8gV2ViR0xSZW5kZXJpbmdDb250ZXh0J3MpIGluZGljYXRlIHdoZXRoZXIgdGhl
cmUgaXMgYW4KLSAgICAvLyBpbXBsaWNpdGx5LWFsbG9jYXRlZCBzdGVuY2lsIGJ1ZmZlciwgZm9y
IGV4YW1wbGUuCi0gICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYg
KGF0dHJzLmRlcHRoKQotICAgICAgICBidWZmZXJzIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpERVBU
SF9CVUZGRVJfQklUOwotICAgIGlmIChhdHRycy5zdGVuY2lsKQotICAgICAgICBidWZmZXJzIHw9
IEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7Ci0gICAgc2V0QnVmZmVyc1Rv
QXV0b0NsZWFyKGJ1ZmZlcnMpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpz
ZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJpdGZpZWxkIGJ1ZmZlcnMpCi17Ci0gICAgYXV0byBh
dHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYgKCFhdHRycy5wcmVzZXJ2ZURyYXdp
bmdCdWZmZXIpCi0gICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0gYnVmZmVyczsKLSAgICBl
bHNlCi0gICAgICAgIEFTU0VSVCghbV9idWZmZXJzVG9BdXRvQ2xlYXIpOwotfQotCi1HQ0dMYml0
ZmllbGQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fYnVmZmVyc1RvQXV0b0NsZWFyOwotfQotCi0jaWYgIVVTRShB
TkdMRSkKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VUaHJlYWRSZXNvdXJj
ZXMoUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3IpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRS
ZXNvdXJjZXMoKQotewotfQotI2VuZGlmCi0KLSNpZiAhVVNFKEFOR0xFKQotYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xpbnQgdW5wYWNrQWxpZ25tZW50KQotewotICAgIEFTU0VSVCh1bnBhY2tB
bGlnbm1lbnQgPT0gMSB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gMiB8fCB1bnBhY2tBbGlnbm1lbnQg
PT0gNCB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gOCk7Ci0gICAgVW5pcXVlQXJyYXk8dW5zaWduZWQg
Y2hhcj4gemVybzsKLSAgICB1bnNpZ25lZCBzaXplID0gMDsKLSAgICBpZiAod2lkdGggPiAwICYm
IGhlaWdodCA+IDApIHsKLSAgICAgICAgUGl4ZWxTdG9yZVBhcmFtcyBwYXJhbXM7Ci0gICAgICAg
IHBhcmFtcy5hbGlnbm1lbnQgPSB1bnBhY2tBbGlnbm1lbnQ7Ci0gICAgICAgIEdDR0xlbnVtIGVy
cm9yID0gY29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0
LCAxLCBwYXJhbXMsICZzaXplLCBudWxscHRyLCBudWxscHRyKTsKLSAgICAgICAgaWYgKGVycm9y
ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJPUikgewotICAgICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0g
ICAgICAgIHplcm8gPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4oc2l6ZSk7Ci0gICAg
ICAgIGlmICghemVybykgewotICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0R0w6OklOVkFMSURfVkFMVUUpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0gICAgICAgIG1lbXNldCh6ZXJvLmdldCgpLCAwLCBzaXplKTsKLSAgICB9Ci0gICAg
dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
Ym9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bhbih6ZXJvLmdldCgpLCBzaXplKSk7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYKLQotCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkKLXsK
LX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2ltdWxhdGVFdmVudEZvclRlc3Rp
bmcoU2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nIGV2ZW50KQotewotICAgIGlmIChldmVudCA9PSBT
aW11bGF0ZWRFdmVudEZvclRlc3Rpbmc6OkdQVVN0YXR1c0ZhaWx1cmUpCi0gICAgICAgIG1fZmFp
bE5leHRTdGF0dXNDaGVjayA9IHRydWU7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKLXsKLX0KLSNlbmRpZgotCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciYg
aW1hZ2VCdWZmZXIpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTE4MCwx
NyArODUsNiBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbAogICAgIHJldHVybiByZXN1bHRzOwog
fQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQotUmVmUHRy
PE1lZGlhU2FtcGxlPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvTWVkaWFTYW1wbGUoKQotewotI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgaWYgKGF1dG8g
cGl4ZWxCdWZmZXIgPSByZWFkQ29tcG9zaXRlZFJlc3VsdHMoKSkKLSAgICAgICAgcmV0dXJuIE1l
ZGlhU2FtcGxlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZl
cikpOwotI2VuZGlmCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0jZW5kaWYKLQogc3RkOjpvcHRp
b25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdS
ZXN1bHRzRm9yUGFpbnRpbmcoKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCkBA
IC0yMDksMzQgKzEwMyw2IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWluCiAgICAgcmV0dXJuIHJl
YWRDb21wb3NpdGVkUmVzdWx0cygpOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotc3RkOjpv
cHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3Np
dGVkUmVzdWx0cygpCi17Ci0gICAgcmV0dXJuIHJlYWRSZW5kZXJpbmdSZXN1bHRzKCk7Ci19Ci0j
ZW5kaWYKLQotI2lmIEVOQUJMRShWSURFTykKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNvcHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIFBsYXRmb3JtR0xPYmpl
Y3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCi17Ci0jaWYgVVNFKEFWRk9VTkRBVElP
TikKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gcGxheWVyLnBpeGVsQnVmZmVyRm9yQ3VycmVudFRp
bWUoKTsKLSAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBhdXRvIGNvbnRleHRDViA9IGFzQ1YoKTsKLSAgICBpZiAoIWNvbnRleHRDVikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgVU5VU0VEX1ZBUklBQkxFKHByZW11bHRpcGx5QWxwaGEpOwot
ICAgIEFTU0VSVF9VTlVTRUQob3V0cHV0VGFyZ2V0LCBvdXRwdXRUYXJnZXQgPT0gR3JhcGhpY3ND
b250ZXh0R0w6OlRFWFRVUkVfMkQpOwotICAgIHJldHVybiBjb250ZXh0Q1YtPmNvcHlQaXhlbEJ1
ZmZlclRvVGV4dHVyZShwaXhlbEJ1ZmZlci5nZXQoKSwgb3V0cHV0VGV4dHVyZSwgbGV2ZWwsIGlu
dGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIEdyYXBoaWNzQ29udGV4dEdMOjpGbGlwWShmbGlw
WSkpOwotI2Vsc2UKLSAgICByZXR1cm4gcGxheWVyLmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3Jt
VGV4dHVyZSh0aGlzLCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7Ci0jZW5kaWYK
LX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGI1YzJmN2UzMDhk
ZGE1N2Q2ZGNiNzM4ZjIyNWFlNzJlZmFkNTI5OWUuLjk1Mzg3OTM3NWVjYWY1ZDRhMGI5ZTkyMTIw
OGFmYTk3N2YzZWI1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC0x
MTMsNyArMTEzLDYgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgVVNFKEFOR0xFKQogICAgIEdDR0xl
bnVtIGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7Ci0jZW5kaWYKICAgICBlbnVtIGNsYXNz
IFJlbGVhc2VUaHJlYWRSZXNvdXJjZUJlaGF2aW9yIHsKICAgICAgICAgLy8gUmVsZWFzZXMgY3Vy
cmVudCBjb250ZXh0IGFmdGVyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGNhbGxzIGRvbmUgaW4g
dGhlIHRocmVhZC4KICAgICAgICAgUmVsZWFzZUN1cnJlbnRDb250ZXh0LApAQCAtMTI0LDYgKzEy
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgVGVybWluYXRlQW5kUmVsZWFzZVRocmVhZFJlc291cmNl
cwogICAgIH07CiAgICAgc3RhdGljIGJvb2wgcmVsZWFzZVRocmVhZFJlc291cmNlcyhSZWxlYXNl
VGhyZWFkUmVzb3VyY2VCZWhhdmlvcik7CisjZW5kaWYKIAogICAgIC8vIFdpdGggbXVsdGlzYW1w
bGluZyBvbiwgYmxpdCBmcm9tIG11bHRpc2FtcGxlRkJPIHRvIHJlZ3VsYXIgRkJPLgogICAgIHZv
aWQgcHJlcGFyZVRleHR1cmUoKTsKQEAgLTQ0MiwxOSArNDQyLDkgQEAgcHVibGljOgogICAgIHZv
aWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gb2Zmc2V0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50
cywgR0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7CiAKICAgICAvLyBIZWxwZXIgbWV0aG9k
cy4KLSAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOwotICAgIHZvaWQgbWFya0xh
eWVyQ29tcG9zaXRlZCgpIGZpbmFsOwotICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3Qg
ZmluYWw7CiAgICAgdm9pZCBmb3JjZUNvbnRleHRMb3N0KCk7CiAgICAgdm9pZCByZWN5Y2xlQ29u
dGV4dCgpOwogCi0gICAgLy8gTWFpbnRlbmFuY2Ugb2YgYXV0by1jbGVhcmluZyBvZiBjb2xvci9k
ZXB0aC9zdGVuY2lsIGJ1ZmZlcnMuIFRoZQotICAgIC8vIHJlc2V0IG1ldGhvZCBpcyBwcmVzZW50
IHRvIGtlZXAgY2FsbGluZyBjb2RlIHNpbXBsZXIsIHNvIGl0Ci0gICAgLy8gZG9lc24ndCBoYXZl
IHRvIGtub3cgd2hpY2ggYnVmZmVycyB3ZXJlIGFsbG9jYXRlZC4KLSAgICB2b2lkIHJlc2V0QnVm
ZmVyc1RvQXV0b0NsZWFyKCk7Ci0gICAgdm9pZCBzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJp
dGZpZWxkKSBmaW5hbDsKLSAgICBHQ0dMYml0ZmllbGQgZ2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkg
Y29uc3QgZmluYWw7Ci0KICAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRp
b24oKTsKIAogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZm
ZXImKSBmaW5hbDsKQEAgLTU3Niw5ICs1NjYsMTAgQEAgcHJpdmF0ZToKICNpZiBVU0UoQU5HTEUp
CiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiBjb250ZXh0IHNob3VsZCBiZSBsb3N0IGR1ZSB0byB0
aW1lb3V0LgogICAgIGJvb2wgd2FpdEFuZFVwZGF0ZU9sZGVzdEZyYW1lKCkgV0FSTl9VTlVTRURf
UkVUVVJOOwotI2VuZGlmCisKICAgICAvLyBQbGF0Zm9ybSBzcGVjaWZpYyBiZWhhdmlvciBmb3Ig
cmVsZWFzZVJlc291cmNlcygpOwogICAgIHN0YXRpYyB2b2lkIHBsYXRmb3JtUmVsZWFzZVRocmVh
ZFJlc291cmNlcygpOworI2VuZGlmCiAKICNpZiAhVVNFKEFOR0xFKQogICAgIHR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIFVuaXF1ZVJlZjxzaDo6U2hhZGVyVmFyaWFibGU+PiBTaGFkZXJTeW1ib2xN
YXA7CkBAIC02ODAsNyArNjcxLDYgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIEdDR0x1aW50IG1f
ZGVwdGhTdGVuY2lsQnVmZmVyIHsgMCB9OwogCi0gICAgYm9vbCBtX2xheWVyQ29tcG9zaXRlZCB7
IGZhbHNlIH07CiAgICAgR0NHTHVpbnQgbV9pbnRlcm5hbENvbG9yRm9ybWF0IHsgMCB9OwogI2lm
IFVTRShBTkdMRSkKICAgICBHQ0dMdWludCBtX2ludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0IHsg
MCB9OwpAQCAtNzQxLDExICs3MzEsNiBAQCBwcml2YXRlOgogCiAjZW5kaWYKIAotICAgIC8vIEEg
Yml0bWFzayBvZiBHTCBidWZmZXIgYml0cyAoR0xfQ09MT1JfQlVGRkVSX0JJVCwKLSAgICAvLyBH
TF9ERVBUSF9CVUZGRVJfQklULCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpIHdoaWNoIG5lZWQgdG8g
YmUKLSAgICAvLyBhdXRvLWNsZWFyZWQuCi0gICAgR0NHTGJpdGZpZWxkIG1fYnVmZmVyc1RvQXV0
b0NsZWFyIHsgMCB9OwotCiAgICAgLy8gRXJyb3JzIHJhaXNlZCBieSBzeW50aGVzaXplR0xFcnJv
cigpLgogICAgIExpc3RIYXNoU2V0PEdDR0xlbnVtPiBtX3N5bnRoZXRpY0Vycm9yczsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNzI2ZTM1
Yzc4ZGRjZGYwZTkxNmU3ZTZmZDQ2NWY2YjkxN2QyYjZiMS4uNzMwZDZkMzY3ZjFmOTU0NDViMGE3
OWMxNzRkYTg4YTNlZTUxY2I5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb21tb24uY3BwCkBAIC0yMTA2LDI1ICsyMTA2LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6c3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpCiAgICAgbV9zeW50
aGV0aWNFcnJvcnMuYWRkKGVycm9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6bWFya0NvbnRleHRDaGFuZ2VkKCkKLXsKLSAgICBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNl
OwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXJrTGF5ZXJDb21wb3NpdGVk
KCkKLXsKLSAgICBtX2xheWVyQ29tcG9zaXRlZCA9IHRydWU7Ci0gICAgcmVzZXRCdWZmZXJzVG9B
dXRvQ2xlYXIoKTsKLQotICAgIGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xp
ZW50cykpCi0gICAgICAgIGNsaWVudC0+ZGlkQ29tcG9zaXRlKCk7Ci19Ci0KLWJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmxheWVyQ29tcG9zaXRlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fbGF5ZXJDb21wb3NpdGVkOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpm
b3JjZUNvbnRleHRMb3N0KCkKIHsKICAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNvcHlUb1ZlY3Rv
cihtX2NsaWVudHMpKQpAQCAtMjg3NCw2ICsyODU1LDMwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6Om11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0sIEdDR0xT
cGFuCiAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BF
UkFUSU9OKTsKIH0KIAorYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRFJl
c291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnQgdW5wYWNrQWxpZ25t
ZW50KQoreworICAgIEFTU0VSVCh1bnBhY2tBbGlnbm1lbnQgPT0gMSB8fCB1bnBhY2tBbGlnbm1l
bnQgPT0gMiB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gNCB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gOCk7
CisgICAgVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4gemVybzsKKyAgICB1bnNpZ25lZCBzaXpl
ID0gMDsKKyAgICBpZiAod2lkdGggPiAwICYmIGhlaWdodCA+IDApIHsKKyAgICAgICAgUGl4ZWxT
dG9yZVBhcmFtcyBwYXJhbXM7CisgICAgICAgIHBhcmFtcy5hbGlnbm1lbnQgPSB1bnBhY2tBbGln
bm1lbnQ7CisgICAgICAgIEdDR0xlbnVtIGVycm9yID0gY29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMo
Zm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCAxLCBwYXJhbXMsICZzaXplLCBudWxscHRyLCBu
dWxscHRyKTsKKyAgICAgICAgaWYgKGVycm9yICE9IEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJP
UikgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHplcm8gPSBtYWtlVW5pcXVlQXJyYXk8
dW5zaWduZWQgY2hhcj4oc2l6ZSk7CisgICAgICAgIGlmICghemVybykgeworICAgICAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUpOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIG1lbXNldCh6ZXJvLmdl
dCgpLCAwLCBzaXplKTsKKyAgICB9CisgICAgdGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dM
U3Bhbih6ZXJvLmdldCgpLCBzaXplKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgIVVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggYzAwNTViZjM5NWEzMjU2MWM3NzVm
OTE3ODM1ZTYwMTEyYmZkZjEwMi4uMDFlN2ZkMjE5YWJiMjY4NjkwZWJmMDYyODE2Nzc5YzdhOTFj
MjYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5j
cHAKQEAgLTY0LDYgKzY0LDE4IEBACiAjZW5kaWYKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgorI2VuZGlmCisKKyNpZiBVU0UoR1NU
UkVBTUVSKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIk1lZGlhU2FtcGxlR1N0
cmVhbWVyLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJNZWRpYVBs
YXllclByaXZhdGUuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZlB0cjxH
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCkBA
IC00NTUsNiArNDY3LDQyIEBAIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogfQogI2VuZGlmCiAKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpCit7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFNpbXVsYXRl
ZEV2ZW50Rm9yVGVzdGluZyBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQgPT0gU2ltdWxhdGVkRXZl
bnRGb3JUZXN0aW5nOjpHUFVTdGF0dXNGYWlsdXJlKQorICAgICAgICBtX2ZhaWxOZXh0U3RhdHVz
Q2hlY2sgPSB0cnVlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJl
Rm9yRGlzcGxheSgpCit7Cit9CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorUmVmUHRyPE1l
ZGlhU2FtcGxlPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvTWVkaWFTYW1wbGUoKQoreworI2lmIFVTRShHU1RSRUFNRVIpCisgICAgaWYgKGF1dG8gcGl4
ZWxCdWZmZXIgPSByZWFkQ29tcG9zaXRlZFJlc3VsdHMoKSkKKyAgICAgICAgcmV0dXJuIE1lZGlh
U2FtcGxlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlcikp
OworI2VuZGlmCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQor
eworICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0cygpOworfQorCisjaWYgRU5BQkxFKFZJ
REVPKQorYm9vbCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OmNvcHlUZXh0dXJlRnJv
bU1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVy
ZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5
QWxwaGEsIGJvb2wgZmxpcFkpCit7CisgICAgcmV0dXJuIHBsYXllci5jb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUodGhpcywgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkp
OworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJHTCkgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlci5oCmluZGV4IGNiZjlhMTlhY2Q3ZDdmZDc5YmQ5NGFiNGM5Njlm
OTViMjA1ZTkxY2EuLmU0NjYyYjY4M2VhNDViNmYxOTY2YjMxOTczMzkzMzAzYWFmODYwOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKQEAgLTM2LDYg
KzM2LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyPiBjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYp
OwogICAgIH5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoKTsKIAorI2lmIEVOQUJMRShW
SURFTykKKyAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiwgUGxhdGZv
cm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7CisjZW5kaWYKIHByb3RlY3RlZDoK
ICAgICBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiYpOwogfTsK
</data>
<flag name="commit-queue"
          id="470314"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445173</attachid>
            <date>2021-11-25 23:54:27 -0800</date>
            <delta_ts>2021-11-26 00:48:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233513-20211126095426.patch</filename>
            <type>text/plain</type>
            <size>30945</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDllMzkxMGFiOTdiODdi
NGFmYmI1MGFjZTUxYTNmMzA4YmRkMjA1MC4uYzU2YzJiMzUwZjRjZDY3ZTc3ZDRmMDQ3YTRhOTRi
ZTkyYTJiNGJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIxLTExLTI1ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwIGNvbnRhaW5zIE9wZW5HTCBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBh
bmQgcGxhdGZvcm0gc3BlY2lmaWMgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW92ZSBkdXBsaWNhdGUgZnVuY3Rpb25hbGl0eSBvZiAiY29udGV4
dCBjaGFuZ2VkLCBjb250ZXh0IG5vdCBjaGFuZ2VkIiBmcm9tCisgICAgICAgICAgLSBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCBBTkdMRSB2YXJpYW50CisgICAgICAgICAgLSBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCBPcGVuR0wsIE9wZW5HTCBFUyB2YXJpYW50CisgICAgICAgICAgLSBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZQorICAgICAgICB0byBiYXNlIGNsYXNzIEdyYXBoaWNz
Q29udGV4dEdMLiBJbiBvcmRlciB0byBkbyB0aGlzLCBhZGQgZmV3IFdFQkNPUkVfRVhQT1JUcyB0
bworICAgICAgICBHcmFwaGljc0NvbnRleHRHTC5oLCBzaW5jZSBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZSBpcyBpbiBXZWJLaXQgYW5kIG5lZWRzIHRvIGNhbGwKKyAgICAgICAgdGhl
IGJhc2UtY2xhc3MgdmVyc2lvbnMgYXMgd2VsbCBhcyB1c2UgdnRhYmxlLgorCisgICAgICAgIE1v
dmUgQU5HTEUtc3BlY2lmaWMgZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
Y3BwIHRvIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwLgorICAgICAgICBNb3ZlIFRleHR1cmVN
YXBwZXItc3BlY2lmaWMgZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3Bw
IHRvIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAuCisgICAgICAgIE1vdmUgT3Bl
bkdMLCBPcGVuR0wgRVMgc3BlY2lmaWMgZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuY3BwIHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcC4KKworICAgICAg
ICBUaGlzIHdvcmtzIHRvd2FyZHMgYmVpbmcgYWJsZSB0byBzZXBhcmF0ZSBBTkdMRSBhbmQgT3Bl
bkdMLCBPcGVuR0wgRVMgaW1wbGVtZW50YXRpb25zIHRvIGRpZmZlcmVudCBjbGFzc2VzLAorICAg
ICAgICByZWR1Y2luZyB0aGUgaWZkZWZmaW5nIGluIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMOjptYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OmxheWVyQ29tcG9zaXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6c2V0QnVmZmVyc1RvQXV0b0NsZWFyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRCdWZmZXJzVG9BdXRvQ2xlYXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6Om1hcmtMYXllckNvbXBvc2l0ZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50Ojp+Q2xpZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21wb3NpdGVkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpsYXll
ckNvbXBvc2l0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
QnVmZmVyc1RvQXV0b0NsZWFyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtDb250ZXh0Q2hhbmdlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFy
a0xheWVyQ29tcG9zaXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6bGF5ZXJDb21wb3NpdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNvcHlUZXh0dXJlRnJv
bU1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlc2V0QnVmZmVyc1RvQXV0b0NsZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRCdWZmZXJzVG9BdXRvQ2xlYXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlcnNU
b0F1dG9DbGVhciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVsZWFzZVRocmVhZFJlc291cmNlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlVGhyZWFk
UmVzb3VyY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250ZXh0VmlzaWJpbGl0eSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2ltdWxhdGVF
dmVudEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRp
YVNhbXBsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjptYXJrQ29udGV4dENoYW5nZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtMYXllckNvbXBvc2l0ZWQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omxh
eWVyQ29tcG9zaXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNpbXVsYXRlRXZlbnRG
b3JUZXN0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpw
cmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OmNvcHlUZXh0
dXJlRnJvbU1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmg6CisKIDIwMjEtMTEtMjUgIEtpbW1vIEtpbm51bmVu
ICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBHcmFwaGljc0NvbnRleHRHTCBpbXBs
ZW1lbnRhdGlvbnMgc2hvdWxkIGhhdmUgc2VwYXJhdGUgY2xhc3MgZGVmaW5pdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
LmNwcAppbmRleCA0ZjBhOWI1OWZiNDRiZWJmZDM4MjY3NzJkOWIyMDg3ZDllZmFjNWU3Li43ZjJh
MWZkMjhiMzEyOGYwZGU3YTcxMjVlM2RjYzZjOWNiYzhkY2E0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0z
NDcsNiArMzQ3LDEwIEBAIHN0YXRpYyBib29sIHBhY2tQaXhlbHMoY29uc3QgdWludDhfdCogc291
cmNlRGF0YSwgR3JhcGhpY3NDb250ZXh0R0w6OkRhdGFGb3JtYXQKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudDo6Q2xpZW50KCkgPSBkZWZhdWx0OworCitH
cmFwaGljc0NvbnRleHRHTDo6Q2xpZW50Ojp+Q2xpZW50KCkgPSBkZWZhdWx0OworCiBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0R0w+IEdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiBob3N0V2luZG93
KQogewogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gcmVzdWx0OwpAQCAtMzYyLDYgKzM2
Niw3IEBAIEdyYXBoaWNzQ29udGV4dEdMOjpHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMgYXR0cnMpCiB7CiB9CiAKK0dyYXBoaWNzQ29udGV4dEdMOjp+R3JhcGhp
Y3NDb250ZXh0R0woKSA9IGRlZmF1bHQ7CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0w6OmNvbXB1
dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyhHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IHVuc2lnbmVkKiBjb21wb25lbnRzUGVyUGl4ZWwsIHVuc2lnbmVkKiBieXRlc1BlckNvbXBvbmVu
dCkKIHsKQEAgLTYwNyw2ICs2MTIsNDIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTDo6ZXh0cmFj
dFRleHR1cmVEYXRhKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIEdDR0wKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRleHRDaGFu
Z2VkKCkKK3sKKyAgICBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOworfQorCitib29sIEdyYXBo
aWNzQ29udGV4dEdMOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2xh
eWVyQ29tcG9zaXRlZDsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTDo6c2V0QnVmZmVyc1Rv
QXV0b0NsZWFyKEdDR0xiaXRmaWVsZCBidWZmZXJzKQoreworICAgIGlmICghY29udGV4dEF0dHJp
YnV0ZXMoKS5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpCisgICAgICAgIG1fYnVmZmVyc1RvQXV0b0Ns
ZWFyID0gYnVmZmVyczsKK30KKworR0NHTGJpdGZpZWxkIEdyYXBoaWNzQ29udGV4dEdMOjpnZXRC
dWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2J1ZmZlcnNUb0F1dG9D
bGVhcjsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTDo6bWFya0xheWVyQ29tcG9zaXRlZCgp
Cit7CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSB0cnVlOworICAgIGF1dG8gYXR0cnMgPSBjb250
ZXh0QXR0cmlidXRlcygpOworICAgIGlmICghYXR0cnMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7
CisgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9S
X0JVRkZFUl9CSVQ7CisgICAgICAgIGlmIChhdHRycy5kZXB0aCkKKyAgICAgICAgICAgIG1fYnVm
ZmVyc1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9CVUZGRVJfQklUOwor
ICAgICAgICBpZiAoYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgICAgIG1fYnVmZmVyc1RvQXV0b0Ns
ZWFyIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CisgICAgfQorICAg
IGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNs
aWVudC0+ZGlkQ29tcG9zaXRlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGVkYWE0Y2U1ZWE3MmU3MzBiYzUyNTQ2
YzcwMDZlZDIzNzI3Mzk2MGQuLjY0MWI3YjZhYzNlYjA1NTQ3OTE3ZDZhM2ZiZWEwOTJhYjdjZGM3
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaApAQCAtODk3LDcgKzg5Nyw4IEBAIHB1YmxpYzoKIAogICAgIGNsYXNzIENs
aWVudCB7CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KKyAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgQ2xpZW50KCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgfkNsaWVudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcG9zaXRlKCkgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpID0gMDsKICAgICAgICAgdmly
dHVhbCB2b2lkIHJlY3ljbGVDb250ZXh0KCkgPSAwOwpAQCAtOTE0LDggKzkxNSw4IEBAIHB1Ymxp
YzoKICAgICAvLyBIb3N0V2luZG93IG1pZ2h0IGFmZmVjdCB0aGUgZGVjaXNpb24gd2hpY2ggYmFj
a2VuZCBpcyB0byBiZSB1c2VkLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
LCBIb3N0V2luZG93Kik7CiAKLSAgICBHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMpOwotICAgIHZpcnR1YWwgfkdyYXBoaWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0
OworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0
R0woKTsKIAogICAgIHZvaWQgYWRkQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5h
ZGQoJmNsaWVudCk7IH0KICAgICB2b2lkIHJlbW92ZUNsaWVudChDbGllbnQmIGNsaWVudCkgeyBt
X2NsaWVudHMucmVtb3ZlKCZjbGllbnQpOyB9CkBAIC0xMjc0LDE0ICsxMjc1LDE0IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSA9IDA7CiAKICAgICAvLyBG
SVhNRTogc2hvdWxkIGJlIHJlbW92ZWQsIGNhbGxlciBzaG91bGQga2VlcCB0cmFjayBvZiBjaGFu
Z2VkIHN0YXRlLgotICAgIHZpcnR1YWwgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSA9IDA7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwogCiAg
ICAgLy8gRklYTUU6IHRoZXNlIHNob3VsZCBiZSByZW1vdmVkLCBjYWxsZXIgaXMgaW50ZXJlc3Rl
ZCBpbiBidWZmZXIgY2xlYXIgc3RhdHVzIGFuZAogICAgIC8vIHNob3VsZCB0cmFjayB0aGF0IGlu
IGEgdmFyaWFibGUgdGhhdCB0aGUgY2FsbGVyIGhvbGRzLiBDYWxsZXIgc2hvdWxkIHJlY2VpdmUK
ICAgICAvLyB0aGUgdmFsdWUgZnJvbSByZXNoYXBlKCkgYW5kIGRpZENvbXBvc2l0ZSgpLgotICAg
IHZpcnR1YWwgYm9vbCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQpID0gMDsKLSAgICB2aXJ0dWFs
IEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdCA9IDA7CisgICAgYm9v
bCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVh
cihHQ0dMYml0ZmllbGQpOworICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIo
KSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiB0aGVzZSBzaG91bGQgYmUgcmVtb3ZlZCwgdGhleSdy
ZSBwYXJ0IG9mIGRyYXdpbmcgYnVmZmVyIGFuZAogICAgIC8vIGRpc3BsYXkgYnVmZmVyIGFic3Ry
YWN0aW9ucyB0aGF0IHRoZSBjYWxsZXIgc2hvdWxkIGhvbGQgc2VwYXJhdGUgdG8KQEAgLTEyOTYs
NyArMTI5Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgcmVtb3Zl
ZC4gVGhlIGxheWVyIHNob3VsZCBiZSBtYXJrZWQgY29tcG9zaXRlZCBieQogICAgIC8vIHByZXBh
cmluZyBmb3IgZGlzcGxheSwgc28gdGhhdCBjYW52YXMgaW1hZ2UgYnVmZmVyIGFuZCB0aGUgbGF5
ZXIgYWdyZWUKICAgICAvLyBvbiB0aGUgY29udGVudC4KLSAgICB2aXJ0dWFsIHZvaWQgbWFya0xh
eWVyQ29tcG9zaXRlZCgpID0gMDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hcmtMYXllckNv
bXBvc2l0ZWQoKTsKIAogICAgIGVudW0gY2xhc3MgU2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nIHsK
ICAgICAgICAgQ29udGV4dENoYW5nZSwKQEAgLTEzNTgsNiArMTM1OSwxMSBAQCBwcm90ZWN0ZWQ6
CiAgICAgaW50IG1fY3VycmVudFdpZHRoIHsgMCB9OwogICAgIGludCBtX2N1cnJlbnRIZWlnaHQg
eyAwIH07CiAgICAgSGFzaFNldDxDbGllbnQqPiBtX2NsaWVudHM7CisgICAgLy8gQSBiaXRtYXNr
IG9mIEdMIGJ1ZmZlciBiaXRzIChHTF9DT0xPUl9CVUZGRVJfQklULAorICAgIC8vIEdMX0RFUFRI
X0JVRkZFUl9CSVQsIEdMX1NURU5DSUxfQlVGRkVSX0JJVCkgd2hpY2ggbmVlZCB0byBiZQorICAg
IC8vIGF1dG8tY2xlYXJlZC4KKyAgICBHQ0dMYml0ZmllbGQgbV9idWZmZXJzVG9BdXRvQ2xlYXIg
eyAwIH07CisgICAgYm9vbCBtX2xheWVyQ29tcG9zaXRlZCB7IGZhbHNlIH07CiAKIHByaXZhdGU6
CiAgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIG1fYXR0cnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKaW5kZXggYjk0NzUzOTc3N2JmZmEwYjNhZmUyODEx
NTcyYjhjMWE2Y2NjNzBkNi4uMjMzYjBkZjc1NmVjZGQ0YmM5MmQ5MGJhYWYwMTUzY2M2YTU5NWZm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcApAQCAtNjgsNDAg
KzY4LDEwIEBAIGJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzR0xFUzJD
b21wbGlhbnQoKSBjb25zdAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
bWFya0NvbnRleHRDaGFuZ2VkKCkKIHsKICAgICAvLyBGSVhNRTogVGhlIGNhbGxlciBzaG91bGQg
dHJhY2sgdGhpcyBzdGF0ZS4KLSAgICBpZiAobV9sYXllckNvbXBvc2l0ZWQpCisgICAgaWYgKG1f
bGF5ZXJDb21wb3NpdGVkKSB7CiAgICAgICAgIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpOwot
ICAgIG1fbGF5ZXJDb21wb3NpdGVkID0gZmFsc2U7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6Om1hcmtMYXllckNvbXBvc2l0ZWQoKQotewotICAgIG1fbGF5ZXJD
b21wb3NpdGVkID0gdHJ1ZTsKLSAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsK
LSAgICBpZiAoIWF0dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikgewotICAgICAgICBtX2J1ZmZl
cnNUb0F1dG9DbGVhciA9IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklUOwotICAg
ICAgICBpZiAoYXR0cnMuZGVwdGgpCi0gICAgICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciB8
PSBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQlVGRkVSX0JJVDsKLSAgICAgICAgaWYgKGF0dHJz
LnN0ZW5jaWwpCi0gICAgICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciB8PSBHcmFwaGljc0Nv
bnRleHRHTDo6U1RFTkNJTF9CVUZGRVJfQklUOworICAgICAgICBHcmFwaGljc0NvbnRleHRHTDo6
bWFya0NvbnRleHRDaGFuZ2VkKCk7CiAgICAgfQotICAgIGZvciAoYXV0byogY2xpZW50IDogY29w
eVRvVmVjdG9yKG1fY2xpZW50cykpCi0gICAgICAgIGNsaWVudC0+ZGlkQ29tcG9zaXRlKCk7Ci19
Ci0KLWJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmxheWVyQ29tcG9zaXRl
ZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOwotfQotCi12b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NH
TGJpdGZpZWxkIGJ1ZmZlcnMpCi17Ci0gICAgaWYgKCFjb250ZXh0QXR0cmlidXRlcygpLnByZXNl
cnZlRHJhd2luZ0J1ZmZlcikKLSAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSBidWZmZXJz
OwotfQotCi1HQ0dMYml0ZmllbGQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Omdl
dEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYnVmZmVyc1RvQXV0
b0NsZWFyOwogfQogCiBib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzdXBw
b3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuaAppbmRleCBmOWE4NjE4NDJhMTBkYmJiODBiYzg5ZDI2MDZhODhlMGI3ZjJlN2UzLi41ZTVj
MDliODcyMDQzZWEwZmEyYTk2N2Y0ZjM5OTNiYWQ4MGE3OTQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlLmgKQEAgLTUwLDEwICs1MCw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOwogICAgIGJvb2wgaXNHTEVTMkNvbXBs
aWFudCgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgbWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7
Ci0gICAgYm9vbCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHNldEJ1
ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQpIGZpbmFsOwotICAgIEdDR0xiaXRmaWVsZCBn
ZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIG1hcmtMYXllckNv
bXBvc2l0ZWQoKSBmaW5hbDsKIAogICAgIC8vIE90aGVyIEV4dGVuc2lvbkdMIG92ZXJyaWRlcy4K
ICAgICB1c2luZyBFeHRlbnNpb25zR0w6OmlzRW5hYmxlZDsKQEAgLTc5LDEwICs3NSw2IEBAIHBy
aXZhdGU6CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOwogCiAg
ICAgSGFzaFNldDxTdHJpbmc+IG1fZW5hYmxlZEV4dGVuc2lvbnM7Ci0KLSAgICAvLyBGSVhNRTog
RHJhd2luZyBidWZmZXIgY2xlYXIgdHJhY2tpbmcgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBjbGll
bnQuCi0gICAgYm9vbCBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOwotICAgIEdDR0xiaXRmaWVs
ZCBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9IHsgMCB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcAppbmRleCA2NDA0NDYyOTgyN2EyMGEzMjRkYzY0ODRkOTIzZWIyMTQw
ZmMwOGYzLi45NjgwZTA2YzJjNjFhODkzMzhlOTY1MmY5Mzk4ZmM3N2Y1MjA0ODlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMjE1MywyNSArMjE1Myw2IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9y
KQogICAgIG1fc3ludGhldGljRXJyb3JzLmFkZChlcnJvcik7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCi17Ci0gICAgbV9sYXllckNvbXBv
c2l0ZWQgPSBmYWxzZTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0xh
eWVyQ29tcG9zaXRlZCgpCi17Ci0gICAgbV9sYXllckNvbXBvc2l0ZWQgPSB0cnVlOwotICAgIHJl
c2V0QnVmZmVyc1RvQXV0b0NsZWFyKCk7Ci0KLSAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNvcHlU
b1ZlY3RvcihtX2NsaWVudHMpKQotICAgICAgICBjbGllbnQtPmRpZENvbXBvc2l0ZSgpOwotfQot
Ci1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAot
ewotICAgIHJldHVybiBtX2xheWVyQ29tcG9zaXRlZDsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Zm9yY2VDb250ZXh0TG9zdCgpCiB7CiAgICAgZm9yIChhdXRvKiBjbGllbnQg
OiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaApp
bmRleCBlZGJjNGY3M2Y1ZTEyMjgxZGY1ZTMyZTVmNmQ3MDk1ZTczODhjMmNkLi4yNTU1ZmYwODMy
OGUzNDY5Y2Q3YTRhMjk3ZGJlZjc5MGY2MzA1Mjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5oCkBAIC00OSw2ICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRhY2hJT1N1cmZh
Y2VGcm9tU2hhcmVkVGV4dHVyZSh2b2lkKiBoYW5kbGUpOwogI2VuZGlmCiAKKyAgICAvLyBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCBvdmVycmlkZXMuCisjaWYgRU5BQkxFKFZJREVPKQorICAgIGJv
b2wgY29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRl
eHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxG
b3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBib29sIGZsaXBZKSBmaW5hbDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7
CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5t
bQppbmRleCA0Y2FiY2M5MDM3MmNhYmIwMTMzNDYwNGE4OTRlN2I2Y2NjZmI2ZTFlLi5mMjAxZGRj
Yzk3ODYxZjZhODYyNmNhZDJkYWJmY2JmMzM3MjUzNmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMQ29jb2EubW0KQEAgLTQ3LDggKzQ3LDkgQEAKICNpbXBvcnQgIldlYkNvcmVUaHJlYWQuaCIK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorI2lmIEVO
QUJMRShWSURFTykKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCIKKyNpbmNs
dWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKQEAgLTc2Miw3ICs3NjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpw
cmVwYXJlRm9yRGlzcGxheSgpCiB9CiAKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9V
TkRBVElPTikKKyNpZiBFTkFCTEUoVklERU8pCiBHcmFwaGljc0NvbnRleHRHTENWKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6YXNDVigpCiB7CiAgICAgaWYgKCFtX2N2KQpAQCAtODIzLDYgKzgy
NCwyMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VUaHJl
YWRSZXNvdXJjZXMoKQogICAgIGN1cnJlbnRDb250ZXh0ID0gbnVsbHB0cjsKIH0KIAorI2lmIEVO
QUJMRShWSURFTykKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y29weVRleHR1cmVGcm9t
TWVkaWEoTWVkaWFQbGF5ZXImIHBsYXllciwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJl
LCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Rm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbCBmbGlwWSkKK3sKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gcGxheWVyLnBpeGVs
QnVmZmVyRm9yQ3VycmVudFRpbWUoKTsKKyAgICBpZiAoIXBpeGVsQnVmZmVyKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGNvbnRleHRDViA9IGFzQ1YoKTsKKyAgICBpZiAoIWNv
bnRleHRDVikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVU5VU0VEX1ZBUklBQkxFKHBy
ZW11bHRpcGx5QWxwaGEpOworICAgIEFTU0VSVF9VTlVTRUQob3V0cHV0VGFyZ2V0LCBvdXRwdXRU
YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQpOworICAgIHJldHVybiBjb250
ZXh0Q1YtPmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShwaXhlbEJ1ZmZlci5nZXQoKSwgb3V0cHV0
VGV4dHVyZSwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIEdyYXBoaWNzQ29u
dGV4dEdMOjpGbGlwWShmbGlwWSkpOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IDNiZWMw
OTlmMzdlYzNjZDNkYmMzODEyMTVhMjdhOTViMzcyYzIxNDYuLmI4MzJhMTg2YTQyYzhiZTMyMmE0
YzcwODFmNzVkY2Q0OTBjMjdmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcApAQCAtMzIsMTA3ICszMiwxMiBAQAogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKLSNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIK
ICNpbmNsdWRlICJQaXhlbEJ1ZmZlci5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3
dGYvVW5pcXVlQXJyYXkuaD4KIAotI2lmIFVTRShBVkZPVU5EQVRJT04pCi0jaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0R0xDVi5oIgotI2VuZGlmCi0KLSNpZiAhUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShNRURJQV9TVFJFQU0pCi0jaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKLSNlbmRpZgotCi0j
aWYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSNpbmNsdWRlICJNZWRp
YVNhbXBsZUdTdHJlYW1lci5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKQotewot
ICAgIEdDR0x1aW50IGJ1ZmZlcnMgPSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQlVGRkVSX0JJ
VDsKLSAgICAvLyBUaGUgR3JhcGhpY3NDb250ZXh0R0wncyBhdHRyaWJ1dGVzIChhcyBvcHBvc2Vk
IHRvCi0gICAgLy8gV2ViR0xSZW5kZXJpbmdDb250ZXh0J3MpIGluZGljYXRlIHdoZXRoZXIgdGhl
cmUgaXMgYW4KLSAgICAvLyBpbXBsaWNpdGx5LWFsbG9jYXRlZCBzdGVuY2lsIGJ1ZmZlciwgZm9y
IGV4YW1wbGUuCi0gICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYg
KGF0dHJzLmRlcHRoKQotICAgICAgICBidWZmZXJzIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpERVBU
SF9CVUZGRVJfQklUOwotICAgIGlmIChhdHRycy5zdGVuY2lsKQotICAgICAgICBidWZmZXJzIHw9
IEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7Ci0gICAgc2V0QnVmZmVyc1Rv
QXV0b0NsZWFyKGJ1ZmZlcnMpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpz
ZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJpdGZpZWxkIGJ1ZmZlcnMpCi17Ci0gICAgYXV0byBh
dHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYgKCFhdHRycy5wcmVzZXJ2ZURyYXdp
bmdCdWZmZXIpCi0gICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0gYnVmZmVyczsKLSAgICBl
bHNlCi0gICAgICAgIEFTU0VSVCghbV9idWZmZXJzVG9BdXRvQ2xlYXIpOwotfQotCi1HQ0dMYml0
ZmllbGQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fYnVmZmVyc1RvQXV0b0NsZWFyOwotfQotCi0jaWYgIVVTRShB
TkdMRSkKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VUaHJlYWRSZXNvdXJj
ZXMoUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3IpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRS
ZXNvdXJjZXMoKQotewotfQotI2VuZGlmCi0KLSNpZiAhVVNFKEFOR0xFKQotYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xpbnQgdW5wYWNrQWxpZ25tZW50KQotewotICAgIEFTU0VSVCh1bnBhY2tB
bGlnbm1lbnQgPT0gMSB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gMiB8fCB1bnBhY2tBbGlnbm1lbnQg
PT0gNCB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gOCk7Ci0gICAgVW5pcXVlQXJyYXk8dW5zaWduZWQg
Y2hhcj4gemVybzsKLSAgICB1bnNpZ25lZCBzaXplID0gMDsKLSAgICBpZiAod2lkdGggPiAwICYm
IGhlaWdodCA+IDApIHsKLSAgICAgICAgUGl4ZWxTdG9yZVBhcmFtcyBwYXJhbXM7Ci0gICAgICAg
IHBhcmFtcy5hbGlnbm1lbnQgPSB1bnBhY2tBbGlnbm1lbnQ7Ci0gICAgICAgIEdDR0xlbnVtIGVy
cm9yID0gY29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0
LCAxLCBwYXJhbXMsICZzaXplLCBudWxscHRyLCBudWxscHRyKTsKLSAgICAgICAgaWYgKGVycm9y
ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJPUikgewotICAgICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0g
ICAgICAgIHplcm8gPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4oc2l6ZSk7Ci0gICAg
ICAgIGlmICghemVybykgewotICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0R0w6OklOVkFMSURfVkFMVUUpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0gICAgICAgIG1lbXNldCh6ZXJvLmdldCgpLCAwLCBzaXplKTsKLSAgICB9Ci0gICAg
dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
Ym9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bhbih6ZXJvLmdldCgpLCBzaXplKSk7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYKLQotCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkKLXsK
LX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2ltdWxhdGVFdmVudEZvclRlc3Rp
bmcoU2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nIGV2ZW50KQotewotICAgIGlmIChldmVudCA9PSBT
aW11bGF0ZWRFdmVudEZvclRlc3Rpbmc6OkdQVVN0YXR1c0ZhaWx1cmUpCi0gICAgICAgIG1fZmFp
bE5leHRTdGF0dXNDaGVjayA9IHRydWU7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKLXsKLX0KLSNlbmRpZgotCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciYg
aW1hZ2VCdWZmZXIpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTE4MCwx
NyArODUsNiBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbAogICAgIHJldHVybiByZXN1bHRzOwog
fQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQotUmVmUHRy
PE1lZGlhU2FtcGxlPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvTWVkaWFTYW1wbGUoKQotewotI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgaWYgKGF1dG8g
cGl4ZWxCdWZmZXIgPSByZWFkQ29tcG9zaXRlZFJlc3VsdHMoKSkKLSAgICAgICAgcmV0dXJuIE1l
ZGlhU2FtcGxlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZl
cikpOwotI2VuZGlmCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0jZW5kaWYKLQogc3RkOjpvcHRp
b25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdS
ZXN1bHRzRm9yUGFpbnRpbmcoKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCkBA
IC0yMDksMzQgKzEwMyw2IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWluCiAgICAgcmV0dXJuIHJl
YWRDb21wb3NpdGVkUmVzdWx0cygpOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotc3RkOjpv
cHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3Np
dGVkUmVzdWx0cygpCi17Ci0gICAgcmV0dXJuIHJlYWRSZW5kZXJpbmdSZXN1bHRzKCk7Ci19Ci0j
ZW5kaWYKLQotI2lmIEVOQUJMRShWSURFTykKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNvcHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIFBsYXRmb3JtR0xPYmpl
Y3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCi17Ci0jaWYgVVNFKEFWRk9VTkRBVElP
TikKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gcGxheWVyLnBpeGVsQnVmZmVyRm9yQ3VycmVudFRp
bWUoKTsKLSAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBhdXRvIGNvbnRleHRDViA9IGFzQ1YoKTsKLSAgICBpZiAoIWNvbnRleHRDVikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgVU5VU0VEX1ZBUklBQkxFKHByZW11bHRpcGx5QWxwaGEpOwot
ICAgIEFTU0VSVF9VTlVTRUQob3V0cHV0VGFyZ2V0LCBvdXRwdXRUYXJnZXQgPT0gR3JhcGhpY3ND
b250ZXh0R0w6OlRFWFRVUkVfMkQpOwotICAgIHJldHVybiBjb250ZXh0Q1YtPmNvcHlQaXhlbEJ1
ZmZlclRvVGV4dHVyZShwaXhlbEJ1ZmZlci5nZXQoKSwgb3V0cHV0VGV4dHVyZSwgbGV2ZWwsIGlu
dGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIEdyYXBoaWNzQ29udGV4dEdMOjpGbGlwWShmbGlw
WSkpOwotI2Vsc2UKLSAgICByZXR1cm4gcGxheWVyLmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3Jt
VGV4dHVyZSh0aGlzLCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7Ci0jZW5kaWYK
LX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGI1YzJmN2UzMDhk
ZGE1N2Q2ZGNiNzM4ZjIyNWFlNzJlZmFkNTI5OWUuLjNjZDNkZGUyYjdkNDUxY2M2YmU4N2UxYTU3
YzY2NzAyZTE0ZjhhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC0x
MTMsNyArMTEzLDYgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgVVNFKEFOR0xFKQogICAgIEdDR0xl
bnVtIGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7Ci0jZW5kaWYKICAgICBlbnVtIGNsYXNz
IFJlbGVhc2VUaHJlYWRSZXNvdXJjZUJlaGF2aW9yIHsKICAgICAgICAgLy8gUmVsZWFzZXMgY3Vy
cmVudCBjb250ZXh0IGFmdGVyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGNhbGxzIGRvbmUgaW4g
dGhlIHRocmVhZC4KICAgICAgICAgUmVsZWFzZUN1cnJlbnRDb250ZXh0LApAQCAtMTI0LDYgKzEy
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgVGVybWluYXRlQW5kUmVsZWFzZVRocmVhZFJlc291cmNl
cwogICAgIH07CiAgICAgc3RhdGljIGJvb2wgcmVsZWFzZVRocmVhZFJlc291cmNlcyhSZWxlYXNl
VGhyZWFkUmVzb3VyY2VCZWhhdmlvcik7CisjZW5kaWYKIAogICAgIC8vIFdpdGggbXVsdGlzYW1w
bGluZyBvbiwgYmxpdCBmcm9tIG11bHRpc2FtcGxlRkJPIHRvIHJlZ3VsYXIgRkJPLgogICAgIHZv
aWQgcHJlcGFyZVRleHR1cmUoKTsKQEAgLTQ0MiwxOSArNDQyLDkgQEAgcHVibGljOgogICAgIHZv
aWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gb2Zmc2V0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50
cywgR0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7CiAKICAgICAvLyBIZWxwZXIgbWV0aG9k
cy4KLSAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOwotICAgIHZvaWQgbWFya0xh
eWVyQ29tcG9zaXRlZCgpIGZpbmFsOwotICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3Qg
ZmluYWw7CiAgICAgdm9pZCBmb3JjZUNvbnRleHRMb3N0KCk7CiAgICAgdm9pZCByZWN5Y2xlQ29u
dGV4dCgpOwogCi0gICAgLy8gTWFpbnRlbmFuY2Ugb2YgYXV0by1jbGVhcmluZyBvZiBjb2xvci9k
ZXB0aC9zdGVuY2lsIGJ1ZmZlcnMuIFRoZQotICAgIC8vIHJlc2V0IG1ldGhvZCBpcyBwcmVzZW50
IHRvIGtlZXAgY2FsbGluZyBjb2RlIHNpbXBsZXIsIHNvIGl0Ci0gICAgLy8gZG9lc24ndCBoYXZl
IHRvIGtub3cgd2hpY2ggYnVmZmVycyB3ZXJlIGFsbG9jYXRlZC4KLSAgICB2b2lkIHJlc2V0QnVm
ZmVyc1RvQXV0b0NsZWFyKCk7Ci0gICAgdm9pZCBzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJp
dGZpZWxkKSBmaW5hbDsKLSAgICBHQ0dMYml0ZmllbGQgZ2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkg
Y29uc3QgZmluYWw7Ci0KICAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRp
b24oKTsKIAogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZm
ZXImKSBmaW5hbDsKQEAgLTQ2NywxMCArNDU3LDYgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IHJlYWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmcoKTsKICAgICBz
dGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGlu
ZygpOwogCi0jaWYgRU5BQkxFKFZJREVPKQotICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEo
TWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsK
LSNlbmRpZgotCiAjaWYgVVNFKE9QRU5HTCkgJiYgRU5BQkxFKFdFQkdMMikKICAgICB2b2lkIHBy
aW1pdGl2ZVJlc3RhcnRJbmRleChHQ0dMdWludCk7CiAjZW5kaWYKQEAgLTU3Niw5ICs1NjIsMTAg
QEAgcHJpdmF0ZToKICNpZiBVU0UoQU5HTEUpCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiBjb250
ZXh0IHNob3VsZCBiZSBsb3N0IGR1ZSB0byB0aW1lb3V0LgogICAgIGJvb2wgd2FpdEFuZFVwZGF0
ZU9sZGVzdEZyYW1lKCkgV0FSTl9VTlVTRURfUkVUVVJOOwotI2VuZGlmCisKICAgICAvLyBQbGF0
Zm9ybSBzcGVjaWZpYyBiZWhhdmlvciBmb3IgcmVsZWFzZVJlc291cmNlcygpOwogICAgIHN0YXRp
YyB2b2lkIHBsYXRmb3JtUmVsZWFzZVRocmVhZFJlc291cmNlcygpOworI2VuZGlmCiAKICNpZiAh
VVNFKEFOR0xFKQogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFVuaXF1ZVJlZjxzaDo6U2hh
ZGVyVmFyaWFibGU+PiBTaGFkZXJTeW1ib2xNYXA7CkBAIC02ODAsNyArNjY3LDYgQEAgcHJpdmF0
ZToKICNlbmRpZgogICAgIEdDR0x1aW50IG1fZGVwdGhTdGVuY2lsQnVmZmVyIHsgMCB9OwogCi0g
ICAgYm9vbCBtX2xheWVyQ29tcG9zaXRlZCB7IGZhbHNlIH07CiAgICAgR0NHTHVpbnQgbV9pbnRl
cm5hbENvbG9yRm9ybWF0IHsgMCB9OwogI2lmIFVTRShBTkdMRSkKICAgICBHQ0dMdWludCBtX2lu
dGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0IHsgMCB9OwpAQCAtNzQxLDExICs3MjcsNiBAQCBwcml2
YXRlOgogCiAjZW5kaWYKIAotICAgIC8vIEEgYml0bWFzayBvZiBHTCBidWZmZXIgYml0cyAoR0xf
Q09MT1JfQlVGRkVSX0JJVCwKLSAgICAvLyBHTF9ERVBUSF9CVUZGRVJfQklULCBHTF9TVEVOQ0lM
X0JVRkZFUl9CSVQpIHdoaWNoIG5lZWQgdG8gYmUKLSAgICAvLyBhdXRvLWNsZWFyZWQuCi0gICAg
R0NHTGJpdGZpZWxkIG1fYnVmZmVyc1RvQXV0b0NsZWFyIHsgMCB9OwotCiAgICAgLy8gRXJyb3Jz
IHJhaXNlZCBieSBzeW50aGVzaXplR0xFcnJvcigpLgogICAgIExpc3RIYXNoU2V0PEdDR0xlbnVt
PiBtX3N5bnRoZXRpY0Vycm9yczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTENvbW1vbi5jcHAKaW5kZXggNzI2ZTM1Yzc4ZGRjZGYwZTkxNmU3ZTZmZDQ2NWY2YjkxN2Qy
YjZiMS4uNzMwZDZkMzY3ZjFmOTU0NDViMGE3OWMxNzRkYTg4YTNlZTUxY2I5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC0yMTA2LDI1ICsy
MTA2LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c3ludGhlc2l6ZUdMRXJyb3Io
R0NHTGVudW0gZXJyb3IpCiAgICAgbV9zeW50aGV0aWNFcnJvcnMuYWRkKGVycm9yKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0NvbnRleHRDaGFuZ2VkKCkKLXsKLSAg
ICBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjptYXJrTGF5ZXJDb21wb3NpdGVkKCkKLXsKLSAgICBtX2xheWVyQ29tcG9zaXRlZCA9
IHRydWU7Ci0gICAgcmVzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKTsKLQotICAgIGZvciAoYXV0byog
Y2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCi0gICAgICAgIGNsaWVudC0+ZGlkQ29t
cG9zaXRlKCk7Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmxheWVyQ29tcG9z
aXRlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOwotfQotCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmb3JjZUNvbnRleHRMb3N0KCkKIHsKICAgICBmb3Ig
KGF1dG8qIGNsaWVudCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQpAQCAtMjg3NCw2ICsyODU1
LDMwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om11bHRpRHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUoR0NHTGVudW0sIEdDR0xTcGFuCiAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAorYm9vbCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xpbnQgdW5wYWNrQWxpZ25tZW50KQoreworICAgIEFTU0VSVCh1bnBhY2tBbGln
bm1lbnQgPT0gMSB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gMiB8fCB1bnBhY2tBbGlnbm1lbnQgPT0g
NCB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gOCk7CisgICAgVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hh
cj4gemVybzsKKyAgICB1bnNpZ25lZCBzaXplID0gMDsKKyAgICBpZiAod2lkdGggPiAwICYmIGhl
aWdodCA+IDApIHsKKyAgICAgICAgUGl4ZWxTdG9yZVBhcmFtcyBwYXJhbXM7CisgICAgICAgIHBh
cmFtcy5hbGlnbm1lbnQgPSB1bnBhY2tBbGlnbm1lbnQ7CisgICAgICAgIEdDR0xlbnVtIGVycm9y
ID0gY29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCAx
LCBwYXJhbXMsICZzaXplLCBudWxscHRyLCBudWxscHRyKTsKKyAgICAgICAgaWYgKGVycm9yICE9
IEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJPUikgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIHplcm8gPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4oc2l6ZSk7CisgICAgICAg
IGlmICghemVybykgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0R0w6OklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIG1lbXNldCh6ZXJvLmdldCgpLCAwLCBzaXplKTsKKyAgICB9CisgICAgdGV4
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bhbih6ZXJvLmdldCgpLCBzaXplKSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgIVVTRShB
TkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAK
aW5kZXggYzAwNTViZjM5NWEzMjU2MWM3NzVmOTE3ODM1ZTYwMTEyYmZkZjEwMi4uMDFlN2ZkMjE5
YWJiMjY4NjkwZWJmMDYyODE2Nzc5YzdhOTFjMjYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKQEAgLTY0LDYgKzY0LDE4IEBACiAjZW5kaWYK
ICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJNZWRpYVNhbXBs
ZS5oIgorI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorI2luY2x1ZGUgIk1lZGlhU2FtcGxlR1N0cmVhbWVyLmgiCisjZW5kaWYKKworI2lmIEVOQUJM
RShWSURFTykKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+
IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCkBAIC00NTUsNiArNDY3LDQyIEBAIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbiYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQog
fQogI2VuZGlmCiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNldENvbnRleHRWaXNp
YmlsaXR5KGJvb2wpCit7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNpbXVs
YXRlRXZlbnRGb3JUZXN0aW5nKFNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZyBldmVudCkKK3sKKyAg
ICBpZiAoZXZlbnQgPT0gU2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nOjpHUFVTdGF0dXNGYWlsdXJl
KQorICAgICAgICBtX2ZhaWxOZXh0U3RhdHVzQ2hlY2sgPSB0cnVlOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCit7Cit9CisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorUmVmUHRyPE1lZGlhU2FtcGxlPiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQoreworI2lmIFVTRShH
U1RSRUFNRVIpCisgICAgaWYgKGF1dG8gcGl4ZWxCdWZmZXIgPSByZWFkQ29tcG9zaXRlZFJlc3Vs
dHMoKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZVNh
bXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlcikpOworI2VuZGlmCisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQoreworICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVz
dWx0cygpOworfQorCisjaWYgRU5BQkxFKFZJREVPKQorYm9vbCBHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXI6OmNvcHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIFBs
YXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCit7CisgICAgcmV0
dXJuIHBsYXllci5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodGhpcywgb3V0cHV0
VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlw
ZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgVVNFKFRFWFRVUkVfTUFQUEVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCmluZGV4IGNi
ZjlhMTlhY2Q3ZDdmZDc5YmQ5NGFiNGM5NjlmOTViMjA1ZTkxY2EuLmU0NjYyYjY4M2VhNDViNmYx
OTY2YjMxOTczMzkzMzAzYWFmODYwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyLmgKQEAgLTM2LDYgKzM2LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyPiBjcmVhdGUoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpOwogICAgIH5HcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXIoKTsKIAorI2lmIEVOQUJMRShWSURFTykKKyAgICBib29sIGNvcHlUZXh0dXJlRnJv
bU1lZGlhKE1lZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkg
ZmluYWw7CisjZW5kaWYKIHByb3RlY3RlZDoKICAgICBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXIoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpOwogfTsK
</data>
<flag name="commit-queue"
          id="470318"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445176</attachid>
            <date>2021-11-26 00:32:12 -0800</date>
            <delta_ts>2021-11-26 01:09:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233513-20211126103210.patch</filename>
            <type>text/plain</type>
            <size>31162</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDllMzkxMGFiOTdiODdi
NGFmYmI1MGFjZTUxYTNmMzA4YmRkMjA1MC4uYzU2YzJiMzUwZjRjZDY3ZTc3ZDRmMDQ3YTRhOTRi
ZTkyYTJiNGJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIxLTExLTI1ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwIGNvbnRhaW5zIE9wZW5HTCBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBh
bmQgcGxhdGZvcm0gc3BlY2lmaWMgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW92ZSBkdXBsaWNhdGUgZnVuY3Rpb25hbGl0eSBvZiAiY29udGV4
dCBjaGFuZ2VkLCBjb250ZXh0IG5vdCBjaGFuZ2VkIiBmcm9tCisgICAgICAgICAgLSBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCBBTkdMRSB2YXJpYW50CisgICAgICAgICAgLSBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCBPcGVuR0wsIE9wZW5HTCBFUyB2YXJpYW50CisgICAgICAgICAgLSBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZQorICAgICAgICB0byBiYXNlIGNsYXNzIEdyYXBoaWNz
Q29udGV4dEdMLiBJbiBvcmRlciB0byBkbyB0aGlzLCBhZGQgZmV3IFdFQkNPUkVfRVhQT1JUcyB0
bworICAgICAgICBHcmFwaGljc0NvbnRleHRHTC5oLCBzaW5jZSBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZSBpcyBpbiBXZWJLaXQgYW5kIG5lZWRzIHRvIGNhbGwKKyAgICAgICAgdGhl
IGJhc2UtY2xhc3MgdmVyc2lvbnMgYXMgd2VsbCBhcyB1c2UgdnRhYmxlLgorCisgICAgICAgIE1v
dmUgQU5HTEUtc3BlY2lmaWMgZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
Y3BwIHRvIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwLgorICAgICAgICBNb3ZlIFRleHR1cmVN
YXBwZXItc3BlY2lmaWMgZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3Bw
IHRvIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAuCisgICAgICAgIE1vdmUgT3Bl
bkdMLCBPcGVuR0wgRVMgc3BlY2lmaWMgZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuY3BwIHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcC4KKworICAgICAg
ICBUaGlzIHdvcmtzIHRvd2FyZHMgYmVpbmcgYWJsZSB0byBzZXBhcmF0ZSBBTkdMRSBhbmQgT3Bl
bkdMLCBPcGVuR0wgRVMgaW1wbGVtZW50YXRpb25zIHRvIGRpZmZlcmVudCBjbGFzc2VzLAorICAg
ICAgICByZWR1Y2luZyB0aGUgaWZkZWZmaW5nIGluIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMOjptYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OmxheWVyQ29tcG9zaXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6c2V0QnVmZmVyc1RvQXV0b0NsZWFyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRCdWZmZXJzVG9BdXRvQ2xlYXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6Om1hcmtMYXllckNvbXBvc2l0ZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50Ojp+Q2xpZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21wb3NpdGVkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpsYXll
ckNvbXBvc2l0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
QnVmZmVyc1RvQXV0b0NsZWFyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtDb250ZXh0Q2hhbmdlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFy
a0xheWVyQ29tcG9zaXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6bGF5ZXJDb21wb3NpdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNvcHlUZXh0dXJlRnJv
bU1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlc2V0QnVmZmVyc1RvQXV0b0NsZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRCdWZmZXJzVG9BdXRvQ2xlYXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlcnNU
b0F1dG9DbGVhciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVsZWFzZVRocmVhZFJlc291cmNlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlVGhyZWFk
UmVzb3VyY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250ZXh0VmlzaWJpbGl0eSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2ltdWxhdGVF
dmVudEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRp
YVNhbXBsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjptYXJrQ29udGV4dENoYW5nZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtMYXllckNvbXBvc2l0ZWQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omxh
eWVyQ29tcG9zaXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNpbXVsYXRlRXZlbnRG
b3JUZXN0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpw
cmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OmNvcHlUZXh0
dXJlRnJvbU1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmg6CisKIDIwMjEtMTEtMjUgIEtpbW1vIEtpbm51bmVu
ICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBHcmFwaGljc0NvbnRleHRHTCBpbXBs
ZW1lbnRhdGlvbnMgc2hvdWxkIGhhdmUgc2VwYXJhdGUgY2xhc3MgZGVmaW5pdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
LmNwcAppbmRleCA0ZjBhOWI1OWZiNDRiZWJmZDM4MjY3NzJkOWIyMDg3ZDllZmFjNWU3Li43ZjJh
MWZkMjhiMzEyOGYwZGU3YTcxMjVlM2RjYzZjOWNiYzhkY2E0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0z
NDcsNiArMzQ3LDEwIEBAIHN0YXRpYyBib29sIHBhY2tQaXhlbHMoY29uc3QgdWludDhfdCogc291
cmNlRGF0YSwgR3JhcGhpY3NDb250ZXh0R0w6OkRhdGFGb3JtYXQKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudDo6Q2xpZW50KCkgPSBkZWZhdWx0OworCitH
cmFwaGljc0NvbnRleHRHTDo6Q2xpZW50Ojp+Q2xpZW50KCkgPSBkZWZhdWx0OworCiBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0R0w+IEdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiBob3N0V2luZG93
KQogewogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gcmVzdWx0OwpAQCAtMzYyLDYgKzM2
Niw3IEBAIEdyYXBoaWNzQ29udGV4dEdMOjpHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMgYXR0cnMpCiB7CiB9CiAKK0dyYXBoaWNzQ29udGV4dEdMOjp+R3JhcGhp
Y3NDb250ZXh0R0woKSA9IGRlZmF1bHQ7CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0w6OmNvbXB1
dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyhHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IHVuc2lnbmVkKiBjb21wb25lbnRzUGVyUGl4ZWwsIHVuc2lnbmVkKiBieXRlc1BlckNvbXBvbmVu
dCkKIHsKQEAgLTYwNyw2ICs2MTIsNDIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTDo6ZXh0cmFj
dFRleHR1cmVEYXRhKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIEdDR0wKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRleHRDaGFu
Z2VkKCkKK3sKKyAgICBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOworfQorCitib29sIEdyYXBo
aWNzQ29udGV4dEdMOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2xh
eWVyQ29tcG9zaXRlZDsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTDo6c2V0QnVmZmVyc1Rv
QXV0b0NsZWFyKEdDR0xiaXRmaWVsZCBidWZmZXJzKQoreworICAgIGlmICghY29udGV4dEF0dHJp
YnV0ZXMoKS5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpCisgICAgICAgIG1fYnVmZmVyc1RvQXV0b0Ns
ZWFyID0gYnVmZmVyczsKK30KKworR0NHTGJpdGZpZWxkIEdyYXBoaWNzQ29udGV4dEdMOjpnZXRC
dWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2J1ZmZlcnNUb0F1dG9D
bGVhcjsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTDo6bWFya0xheWVyQ29tcG9zaXRlZCgp
Cit7CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSB0cnVlOworICAgIGF1dG8gYXR0cnMgPSBjb250
ZXh0QXR0cmlidXRlcygpOworICAgIGlmICghYXR0cnMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7
CisgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9S
X0JVRkZFUl9CSVQ7CisgICAgICAgIGlmIChhdHRycy5kZXB0aCkKKyAgICAgICAgICAgIG1fYnVm
ZmVyc1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9CVUZGRVJfQklUOwor
ICAgICAgICBpZiAoYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgICAgIG1fYnVmZmVyc1RvQXV0b0Ns
ZWFyIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CisgICAgfQorICAg
IGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNs
aWVudC0+ZGlkQ29tcG9zaXRlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGVkYWE0Y2U1ZWE3MmU3MzBiYzUyNTQ2
YzcwMDZlZDIzNzI3Mzk2MGQuLjY0MWI3YjZhYzNlYjA1NTQ3OTE3ZDZhM2ZiZWEwOTJhYjdjZGM3
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaApAQCAtODk3LDcgKzg5Nyw4IEBAIHB1YmxpYzoKIAogICAgIGNsYXNzIENs
aWVudCB7CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KKyAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgQ2xpZW50KCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgfkNsaWVudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcG9zaXRlKCkgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpID0gMDsKICAgICAgICAgdmly
dHVhbCB2b2lkIHJlY3ljbGVDb250ZXh0KCkgPSAwOwpAQCAtOTE0LDggKzkxNSw4IEBAIHB1Ymxp
YzoKICAgICAvLyBIb3N0V2luZG93IG1pZ2h0IGFmZmVjdCB0aGUgZGVjaXNpb24gd2hpY2ggYmFj
a2VuZCBpcyB0byBiZSB1c2VkLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
LCBIb3N0V2luZG93Kik7CiAKLSAgICBHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMpOwotICAgIHZpcnR1YWwgfkdyYXBoaWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0
OworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0
R0woKTsKIAogICAgIHZvaWQgYWRkQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5h
ZGQoJmNsaWVudCk7IH0KICAgICB2b2lkIHJlbW92ZUNsaWVudChDbGllbnQmIGNsaWVudCkgeyBt
X2NsaWVudHMucmVtb3ZlKCZjbGllbnQpOyB9CkBAIC0xMjc0LDE0ICsxMjc1LDE0IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSA9IDA7CiAKICAgICAvLyBG
SVhNRTogc2hvdWxkIGJlIHJlbW92ZWQsIGNhbGxlciBzaG91bGQga2VlcCB0cmFjayBvZiBjaGFu
Z2VkIHN0YXRlLgotICAgIHZpcnR1YWwgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSA9IDA7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwogCiAg
ICAgLy8gRklYTUU6IHRoZXNlIHNob3VsZCBiZSByZW1vdmVkLCBjYWxsZXIgaXMgaW50ZXJlc3Rl
ZCBpbiBidWZmZXIgY2xlYXIgc3RhdHVzIGFuZAogICAgIC8vIHNob3VsZCB0cmFjayB0aGF0IGlu
IGEgdmFyaWFibGUgdGhhdCB0aGUgY2FsbGVyIGhvbGRzLiBDYWxsZXIgc2hvdWxkIHJlY2VpdmUK
ICAgICAvLyB0aGUgdmFsdWUgZnJvbSByZXNoYXBlKCkgYW5kIGRpZENvbXBvc2l0ZSgpLgotICAg
IHZpcnR1YWwgYm9vbCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQpID0gMDsKLSAgICB2aXJ0dWFs
IEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdCA9IDA7CisgICAgYm9v
bCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVh
cihHQ0dMYml0ZmllbGQpOworICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIo
KSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiB0aGVzZSBzaG91bGQgYmUgcmVtb3ZlZCwgdGhleSdy
ZSBwYXJ0IG9mIGRyYXdpbmcgYnVmZmVyIGFuZAogICAgIC8vIGRpc3BsYXkgYnVmZmVyIGFic3Ry
YWN0aW9ucyB0aGF0IHRoZSBjYWxsZXIgc2hvdWxkIGhvbGQgc2VwYXJhdGUgdG8KQEAgLTEyOTYs
NyArMTI5Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgcmVtb3Zl
ZC4gVGhlIGxheWVyIHNob3VsZCBiZSBtYXJrZWQgY29tcG9zaXRlZCBieQogICAgIC8vIHByZXBh
cmluZyBmb3IgZGlzcGxheSwgc28gdGhhdCBjYW52YXMgaW1hZ2UgYnVmZmVyIGFuZCB0aGUgbGF5
ZXIgYWdyZWUKICAgICAvLyBvbiB0aGUgY29udGVudC4KLSAgICB2aXJ0dWFsIHZvaWQgbWFya0xh
eWVyQ29tcG9zaXRlZCgpID0gMDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hcmtMYXllckNv
bXBvc2l0ZWQoKTsKIAogICAgIGVudW0gY2xhc3MgU2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nIHsK
ICAgICAgICAgQ29udGV4dENoYW5nZSwKQEAgLTEzNTgsNiArMTM1OSwxMSBAQCBwcm90ZWN0ZWQ6
CiAgICAgaW50IG1fY3VycmVudFdpZHRoIHsgMCB9OwogICAgIGludCBtX2N1cnJlbnRIZWlnaHQg
eyAwIH07CiAgICAgSGFzaFNldDxDbGllbnQqPiBtX2NsaWVudHM7CisgICAgLy8gQSBiaXRtYXNr
IG9mIEdMIGJ1ZmZlciBiaXRzIChHTF9DT0xPUl9CVUZGRVJfQklULAorICAgIC8vIEdMX0RFUFRI
X0JVRkZFUl9CSVQsIEdMX1NURU5DSUxfQlVGRkVSX0JJVCkgd2hpY2ggbmVlZCB0byBiZQorICAg
IC8vIGF1dG8tY2xlYXJlZC4KKyAgICBHQ0dMYml0ZmllbGQgbV9idWZmZXJzVG9BdXRvQ2xlYXIg
eyAwIH07CisgICAgYm9vbCBtX2xheWVyQ29tcG9zaXRlZCB7IGZhbHNlIH07CiAKIHByaXZhdGU6
CiAgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIG1fYXR0cnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKaW5kZXggYjk0NzUzOTc3N2JmZmEwYjNhZmUyODEx
NTcyYjhjMWE2Y2NjNzBkNi4uMjMzYjBkZjc1NmVjZGQ0YmM5MmQ5MGJhYWYwMTUzY2M2YTU5NWZm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcApAQCAtNjgsNDAg
KzY4LDEwIEBAIGJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzR0xFUzJD
b21wbGlhbnQoKSBjb25zdAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
bWFya0NvbnRleHRDaGFuZ2VkKCkKIHsKICAgICAvLyBGSVhNRTogVGhlIGNhbGxlciBzaG91bGQg
dHJhY2sgdGhpcyBzdGF0ZS4KLSAgICBpZiAobV9sYXllckNvbXBvc2l0ZWQpCisgICAgaWYgKG1f
bGF5ZXJDb21wb3NpdGVkKSB7CiAgICAgICAgIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpOwot
ICAgIG1fbGF5ZXJDb21wb3NpdGVkID0gZmFsc2U7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6Om1hcmtMYXllckNvbXBvc2l0ZWQoKQotewotICAgIG1fbGF5ZXJD
b21wb3NpdGVkID0gdHJ1ZTsKLSAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsK
LSAgICBpZiAoIWF0dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikgewotICAgICAgICBtX2J1ZmZl
cnNUb0F1dG9DbGVhciA9IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklUOwotICAg
ICAgICBpZiAoYXR0cnMuZGVwdGgpCi0gICAgICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciB8
PSBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQlVGRkVSX0JJVDsKLSAgICAgICAgaWYgKGF0dHJz
LnN0ZW5jaWwpCi0gICAgICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciB8PSBHcmFwaGljc0Nv
bnRleHRHTDo6U1RFTkNJTF9CVUZGRVJfQklUOworICAgICAgICBHcmFwaGljc0NvbnRleHRHTDo6
bWFya0NvbnRleHRDaGFuZ2VkKCk7CiAgICAgfQotICAgIGZvciAoYXV0byogY2xpZW50IDogY29w
eVRvVmVjdG9yKG1fY2xpZW50cykpCi0gICAgICAgIGNsaWVudC0+ZGlkQ29tcG9zaXRlKCk7Ci19
Ci0KLWJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmxheWVyQ29tcG9zaXRl
ZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOwotfQotCi12b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NH
TGJpdGZpZWxkIGJ1ZmZlcnMpCi17Ci0gICAgaWYgKCFjb250ZXh0QXR0cmlidXRlcygpLnByZXNl
cnZlRHJhd2luZ0J1ZmZlcikKLSAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSBidWZmZXJz
OwotfQotCi1HQ0dMYml0ZmllbGQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Omdl
dEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYnVmZmVyc1RvQXV0
b0NsZWFyOwogfQogCiBib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzdXBw
b3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuaAppbmRleCBmOWE4NjE4NDJhMTBkYmJiODBiYzg5ZDI2MDZhODhlMGI3ZjJlN2UzLi41ZTVj
MDliODcyMDQzZWEwZmEyYTk2N2Y0ZjM5OTNiYWQ4MGE3OTQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlLmgKQEAgLTUwLDEwICs1MCw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOwogICAgIGJvb2wgaXNHTEVTMkNvbXBs
aWFudCgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgbWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7
Ci0gICAgYm9vbCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHNldEJ1
ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQpIGZpbmFsOwotICAgIEdDR0xiaXRmaWVsZCBn
ZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIG1hcmtMYXllckNv
bXBvc2l0ZWQoKSBmaW5hbDsKIAogICAgIC8vIE90aGVyIEV4dGVuc2lvbkdMIG92ZXJyaWRlcy4K
ICAgICB1c2luZyBFeHRlbnNpb25zR0w6OmlzRW5hYmxlZDsKQEAgLTc5LDEwICs3NSw2IEBAIHBy
aXZhdGU6CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOwogCiAg
ICAgSGFzaFNldDxTdHJpbmc+IG1fZW5hYmxlZEV4dGVuc2lvbnM7Ci0KLSAgICAvLyBGSVhNRTog
RHJhd2luZyBidWZmZXIgY2xlYXIgdHJhY2tpbmcgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBjbGll
bnQuCi0gICAgYm9vbCBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOwotICAgIEdDR0xiaXRmaWVs
ZCBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9IHsgMCB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcAppbmRleCA2NDA0NDYyOTgyN2EyMGEzMjRkYzY0ODRkOTIzZWIyMTQw
ZmMwOGYzLi45NjgwZTA2YzJjNjFhODkzMzhlOTY1MmY5Mzk4ZmM3N2Y1MjA0ODlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMjE1MywyNSArMjE1Myw2IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9y
KQogICAgIG1fc3ludGhldGljRXJyb3JzLmFkZChlcnJvcik7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCi17Ci0gICAgbV9sYXllckNvbXBv
c2l0ZWQgPSBmYWxzZTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0xh
eWVyQ29tcG9zaXRlZCgpCi17Ci0gICAgbV9sYXllckNvbXBvc2l0ZWQgPSB0cnVlOwotICAgIHJl
c2V0QnVmZmVyc1RvQXV0b0NsZWFyKCk7Ci0KLSAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNvcHlU
b1ZlY3RvcihtX2NsaWVudHMpKQotICAgICAgICBjbGllbnQtPmRpZENvbXBvc2l0ZSgpOwotfQot
Ci1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAot
ewotICAgIHJldHVybiBtX2xheWVyQ29tcG9zaXRlZDsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Zm9yY2VDb250ZXh0TG9zdCgpCiB7CiAgICAgZm9yIChhdXRvKiBjbGllbnQg
OiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaApp
bmRleCBlZGJjNGY3M2Y1ZTEyMjgxZGY1ZTMyZTVmNmQ3MDk1ZTczODhjMmNkLi4yNTU1ZmYwODMy
OGUzNDY5Y2Q3YTRhMjk3ZGJlZjc5MGY2MzA1Mjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5oCkBAIC00OSw2ICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRhY2hJT1N1cmZh
Y2VGcm9tU2hhcmVkVGV4dHVyZSh2b2lkKiBoYW5kbGUpOwogI2VuZGlmCiAKKyAgICAvLyBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCBvdmVycmlkZXMuCisjaWYgRU5BQkxFKFZJREVPKQorICAgIGJv
b2wgY29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRl
eHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxG
b3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBib29sIGZsaXBZKSBmaW5hbDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7
CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5t
bQppbmRleCA0Y2FiY2M5MDM3MmNhYmIwMTMzNDYwNGE4OTRlN2I2Y2NjZmI2ZTFlLi5mMjAxZGRj
Yzk3ODYxZjZhODYyNmNhZDJkYWJmY2JmMzM3MjUzNmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMQ29jb2EubW0KQEAgLTQ3LDggKzQ3LDkgQEAKICNpbXBvcnQgIldlYkNvcmVUaHJlYWQuaCIK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorI2lmIEVO
QUJMRShWSURFTykKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCIKKyNpbmNs
dWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKQEAgLTc2Miw3ICs3NjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpw
cmVwYXJlRm9yRGlzcGxheSgpCiB9CiAKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9V
TkRBVElPTikKKyNpZiBFTkFCTEUoVklERU8pCiBHcmFwaGljc0NvbnRleHRHTENWKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6YXNDVigpCiB7CiAgICAgaWYgKCFtX2N2KQpAQCAtODIzLDYgKzgy
NCwyMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VUaHJl
YWRSZXNvdXJjZXMoKQogICAgIGN1cnJlbnRDb250ZXh0ID0gbnVsbHB0cjsKIH0KIAorI2lmIEVO
QUJMRShWSURFTykKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y29weVRleHR1cmVGcm9t
TWVkaWEoTWVkaWFQbGF5ZXImIHBsYXllciwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJl
LCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Rm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbCBmbGlwWSkKK3sKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gcGxheWVyLnBpeGVs
QnVmZmVyRm9yQ3VycmVudFRpbWUoKTsKKyAgICBpZiAoIXBpeGVsQnVmZmVyKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGNvbnRleHRDViA9IGFzQ1YoKTsKKyAgICBpZiAoIWNv
bnRleHRDVikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVU5VU0VEX1ZBUklBQkxFKHBy
ZW11bHRpcGx5QWxwaGEpOworICAgIEFTU0VSVF9VTlVTRUQob3V0cHV0VGFyZ2V0LCBvdXRwdXRU
YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQpOworICAgIHJldHVybiBjb250
ZXh0Q1YtPmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShwaXhlbEJ1ZmZlci5nZXQoKSwgb3V0cHV0
VGV4dHVyZSwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIEdyYXBoaWNzQ29u
dGV4dEdMOjpGbGlwWShmbGlwWSkpOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IDNiZWMw
OTlmMzdlYzNjZDNkYmMzODEyMTVhMjdhOTViMzcyYzIxNDYuLmI4MzJhMTg2YTQyYzhiZTMyMmE0
YzcwODFmNzVkY2Q0OTBjMjdmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcApAQCAtMzIsMTA3ICszMiwxMiBAQAogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKLSNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIK
ICNpbmNsdWRlICJQaXhlbEJ1ZmZlci5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3
dGYvVW5pcXVlQXJyYXkuaD4KIAotI2lmIFVTRShBVkZPVU5EQVRJT04pCi0jaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0R0xDVi5oIgotI2VuZGlmCi0KLSNpZiAhUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShNRURJQV9TVFJFQU0pCi0jaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKLSNlbmRpZgotCi0j
aWYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSNpbmNsdWRlICJNZWRp
YVNhbXBsZUdTdHJlYW1lci5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKQotewot
ICAgIEdDR0x1aW50IGJ1ZmZlcnMgPSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQlVGRkVSX0JJ
VDsKLSAgICAvLyBUaGUgR3JhcGhpY3NDb250ZXh0R0wncyBhdHRyaWJ1dGVzIChhcyBvcHBvc2Vk
IHRvCi0gICAgLy8gV2ViR0xSZW5kZXJpbmdDb250ZXh0J3MpIGluZGljYXRlIHdoZXRoZXIgdGhl
cmUgaXMgYW4KLSAgICAvLyBpbXBsaWNpdGx5LWFsbG9jYXRlZCBzdGVuY2lsIGJ1ZmZlciwgZm9y
IGV4YW1wbGUuCi0gICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYg
KGF0dHJzLmRlcHRoKQotICAgICAgICBidWZmZXJzIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpERVBU
SF9CVUZGRVJfQklUOwotICAgIGlmIChhdHRycy5zdGVuY2lsKQotICAgICAgICBidWZmZXJzIHw9
IEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7Ci0gICAgc2V0QnVmZmVyc1Rv
QXV0b0NsZWFyKGJ1ZmZlcnMpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpz
ZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJpdGZpZWxkIGJ1ZmZlcnMpCi17Ci0gICAgYXV0byBh
dHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYgKCFhdHRycy5wcmVzZXJ2ZURyYXdp
bmdCdWZmZXIpCi0gICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0gYnVmZmVyczsKLSAgICBl
bHNlCi0gICAgICAgIEFTU0VSVCghbV9idWZmZXJzVG9BdXRvQ2xlYXIpOwotfQotCi1HQ0dMYml0
ZmllbGQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fYnVmZmVyc1RvQXV0b0NsZWFyOwotfQotCi0jaWYgIVVTRShB
TkdMRSkKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VUaHJlYWRSZXNvdXJj
ZXMoUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3IpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRS
ZXNvdXJjZXMoKQotewotfQotI2VuZGlmCi0KLSNpZiAhVVNFKEFOR0xFKQotYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xpbnQgdW5wYWNrQWxpZ25tZW50KQotewotICAgIEFTU0VSVCh1bnBhY2tB
bGlnbm1lbnQgPT0gMSB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gMiB8fCB1bnBhY2tBbGlnbm1lbnQg
PT0gNCB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gOCk7Ci0gICAgVW5pcXVlQXJyYXk8dW5zaWduZWQg
Y2hhcj4gemVybzsKLSAgICB1bnNpZ25lZCBzaXplID0gMDsKLSAgICBpZiAod2lkdGggPiAwICYm
IGhlaWdodCA+IDApIHsKLSAgICAgICAgUGl4ZWxTdG9yZVBhcmFtcyBwYXJhbXM7Ci0gICAgICAg
IHBhcmFtcy5hbGlnbm1lbnQgPSB1bnBhY2tBbGlnbm1lbnQ7Ci0gICAgICAgIEdDR0xlbnVtIGVy
cm9yID0gY29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0
LCAxLCBwYXJhbXMsICZzaXplLCBudWxscHRyLCBudWxscHRyKTsKLSAgICAgICAgaWYgKGVycm9y
ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJPUikgewotICAgICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0g
ICAgICAgIHplcm8gPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4oc2l6ZSk7Ci0gICAg
ICAgIGlmICghemVybykgewotICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0R0w6OklOVkFMSURfVkFMVUUpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0gICAgICAgIG1lbXNldCh6ZXJvLmdldCgpLCAwLCBzaXplKTsKLSAgICB9Ci0gICAg
dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
Ym9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bhbih6ZXJvLmdldCgpLCBzaXplKSk7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYKLQotCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkKLXsK
LX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2ltdWxhdGVFdmVudEZvclRlc3Rp
bmcoU2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nIGV2ZW50KQotewotICAgIGlmIChldmVudCA9PSBT
aW11bGF0ZWRFdmVudEZvclRlc3Rpbmc6OkdQVVN0YXR1c0ZhaWx1cmUpCi0gICAgICAgIG1fZmFp
bE5leHRTdGF0dXNDaGVjayA9IHRydWU7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKLXsKLX0KLSNlbmRpZgotCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciYg
aW1hZ2VCdWZmZXIpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTE4MCwx
NyArODUsNiBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbAogICAgIHJldHVybiByZXN1bHRzOwog
fQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQotUmVmUHRy
PE1lZGlhU2FtcGxlPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvTWVkaWFTYW1wbGUoKQotewotI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgaWYgKGF1dG8g
cGl4ZWxCdWZmZXIgPSByZWFkQ29tcG9zaXRlZFJlc3VsdHMoKSkKLSAgICAgICAgcmV0dXJuIE1l
ZGlhU2FtcGxlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZl
cikpOwotI2VuZGlmCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0jZW5kaWYKLQogc3RkOjpvcHRp
b25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdS
ZXN1bHRzRm9yUGFpbnRpbmcoKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCkBA
IC0yMDksMzQgKzEwMyw2IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWluCiAgICAgcmV0dXJuIHJl
YWRDb21wb3NpdGVkUmVzdWx0cygpOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotc3RkOjpv
cHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3Np
dGVkUmVzdWx0cygpCi17Ci0gICAgcmV0dXJuIHJlYWRSZW5kZXJpbmdSZXN1bHRzKCk7Ci19Ci0j
ZW5kaWYKLQotI2lmIEVOQUJMRShWSURFTykKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNvcHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIFBsYXRmb3JtR0xPYmpl
Y3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCi17Ci0jaWYgVVNFKEFWRk9VTkRBVElP
TikKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gcGxheWVyLnBpeGVsQnVmZmVyRm9yQ3VycmVudFRp
bWUoKTsKLSAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBhdXRvIGNvbnRleHRDViA9IGFzQ1YoKTsKLSAgICBpZiAoIWNvbnRleHRDVikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgVU5VU0VEX1ZBUklBQkxFKHByZW11bHRpcGx5QWxwaGEpOwot
ICAgIEFTU0VSVF9VTlVTRUQob3V0cHV0VGFyZ2V0LCBvdXRwdXRUYXJnZXQgPT0gR3JhcGhpY3ND
b250ZXh0R0w6OlRFWFRVUkVfMkQpOwotICAgIHJldHVybiBjb250ZXh0Q1YtPmNvcHlQaXhlbEJ1
ZmZlclRvVGV4dHVyZShwaXhlbEJ1ZmZlci5nZXQoKSwgb3V0cHV0VGV4dHVyZSwgbGV2ZWwsIGlu
dGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIEdyYXBoaWNzQ29udGV4dEdMOjpGbGlwWShmbGlw
WSkpOwotI2Vsc2UKLSAgICByZXR1cm4gcGxheWVyLmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3Jt
VGV4dHVyZSh0aGlzLCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7Ci0jZW5kaWYK
LX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGI1YzJmN2UzMDhk
ZGE1N2Q2ZGNiNzM4ZjIyNWFlNzJlZmFkNTI5OWUuLjNjZDNkZGUyYjdkNDUxY2M2YmU4N2UxYTU3
YzY2NzAyZTE0ZjhhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC0x
MTMsNyArMTEzLDYgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgVVNFKEFOR0xFKQogICAgIEdDR0xl
bnVtIGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7Ci0jZW5kaWYKICAgICBlbnVtIGNsYXNz
IFJlbGVhc2VUaHJlYWRSZXNvdXJjZUJlaGF2aW9yIHsKICAgICAgICAgLy8gUmVsZWFzZXMgY3Vy
cmVudCBjb250ZXh0IGFmdGVyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGNhbGxzIGRvbmUgaW4g
dGhlIHRocmVhZC4KICAgICAgICAgUmVsZWFzZUN1cnJlbnRDb250ZXh0LApAQCAtMTI0LDYgKzEy
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgVGVybWluYXRlQW5kUmVsZWFzZVRocmVhZFJlc291cmNl
cwogICAgIH07CiAgICAgc3RhdGljIGJvb2wgcmVsZWFzZVRocmVhZFJlc291cmNlcyhSZWxlYXNl
VGhyZWFkUmVzb3VyY2VCZWhhdmlvcik7CisjZW5kaWYKIAogICAgIC8vIFdpdGggbXVsdGlzYW1w
bGluZyBvbiwgYmxpdCBmcm9tIG11bHRpc2FtcGxlRkJPIHRvIHJlZ3VsYXIgRkJPLgogICAgIHZv
aWQgcHJlcGFyZVRleHR1cmUoKTsKQEAgLTQ0MiwxOSArNDQyLDkgQEAgcHVibGljOgogICAgIHZv
aWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gb2Zmc2V0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50
cywgR0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7CiAKICAgICAvLyBIZWxwZXIgbWV0aG9k
cy4KLSAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOwotICAgIHZvaWQgbWFya0xh
eWVyQ29tcG9zaXRlZCgpIGZpbmFsOwotICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3Qg
ZmluYWw7CiAgICAgdm9pZCBmb3JjZUNvbnRleHRMb3N0KCk7CiAgICAgdm9pZCByZWN5Y2xlQ29u
dGV4dCgpOwogCi0gICAgLy8gTWFpbnRlbmFuY2Ugb2YgYXV0by1jbGVhcmluZyBvZiBjb2xvci9k
ZXB0aC9zdGVuY2lsIGJ1ZmZlcnMuIFRoZQotICAgIC8vIHJlc2V0IG1ldGhvZCBpcyBwcmVzZW50
IHRvIGtlZXAgY2FsbGluZyBjb2RlIHNpbXBsZXIsIHNvIGl0Ci0gICAgLy8gZG9lc24ndCBoYXZl
IHRvIGtub3cgd2hpY2ggYnVmZmVycyB3ZXJlIGFsbG9jYXRlZC4KLSAgICB2b2lkIHJlc2V0QnVm
ZmVyc1RvQXV0b0NsZWFyKCk7Ci0gICAgdm9pZCBzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJp
dGZpZWxkKSBmaW5hbDsKLSAgICBHQ0dMYml0ZmllbGQgZ2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkg
Y29uc3QgZmluYWw7Ci0KICAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRp
b24oKTsKIAogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZm
ZXImKSBmaW5hbDsKQEAgLTQ2NywxMCArNDU3LDYgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IHJlYWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmcoKTsKICAgICBz
dGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGlu
ZygpOwogCi0jaWYgRU5BQkxFKFZJREVPKQotICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEo
TWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsK
LSNlbmRpZgotCiAjaWYgVVNFKE9QRU5HTCkgJiYgRU5BQkxFKFdFQkdMMikKICAgICB2b2lkIHBy
aW1pdGl2ZVJlc3RhcnRJbmRleChHQ0dMdWludCk7CiAjZW5kaWYKQEAgLTU3Niw5ICs1NjIsMTAg
QEAgcHJpdmF0ZToKICNpZiBVU0UoQU5HTEUpCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiBjb250
ZXh0IHNob3VsZCBiZSBsb3N0IGR1ZSB0byB0aW1lb3V0LgogICAgIGJvb2wgd2FpdEFuZFVwZGF0
ZU9sZGVzdEZyYW1lKCkgV0FSTl9VTlVTRURfUkVUVVJOOwotI2VuZGlmCisKICAgICAvLyBQbGF0
Zm9ybSBzcGVjaWZpYyBiZWhhdmlvciBmb3IgcmVsZWFzZVJlc291cmNlcygpOwogICAgIHN0YXRp
YyB2b2lkIHBsYXRmb3JtUmVsZWFzZVRocmVhZFJlc291cmNlcygpOworI2VuZGlmCiAKICNpZiAh
VVNFKEFOR0xFKQogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFVuaXF1ZVJlZjxzaDo6U2hh
ZGVyVmFyaWFibGU+PiBTaGFkZXJTeW1ib2xNYXA7CkBAIC02ODAsNyArNjY3LDYgQEAgcHJpdmF0
ZToKICNlbmRpZgogICAgIEdDR0x1aW50IG1fZGVwdGhTdGVuY2lsQnVmZmVyIHsgMCB9OwogCi0g
ICAgYm9vbCBtX2xheWVyQ29tcG9zaXRlZCB7IGZhbHNlIH07CiAgICAgR0NHTHVpbnQgbV9pbnRl
cm5hbENvbG9yRm9ybWF0IHsgMCB9OwogI2lmIFVTRShBTkdMRSkKICAgICBHQ0dMdWludCBtX2lu
dGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0IHsgMCB9OwpAQCAtNzQxLDExICs3MjcsNiBAQCBwcml2
YXRlOgogCiAjZW5kaWYKIAotICAgIC8vIEEgYml0bWFzayBvZiBHTCBidWZmZXIgYml0cyAoR0xf
Q09MT1JfQlVGRkVSX0JJVCwKLSAgICAvLyBHTF9ERVBUSF9CVUZGRVJfQklULCBHTF9TVEVOQ0lM
X0JVRkZFUl9CSVQpIHdoaWNoIG5lZWQgdG8gYmUKLSAgICAvLyBhdXRvLWNsZWFyZWQuCi0gICAg
R0NHTGJpdGZpZWxkIG1fYnVmZmVyc1RvQXV0b0NsZWFyIHsgMCB9OwotCiAgICAgLy8gRXJyb3Jz
IHJhaXNlZCBieSBzeW50aGVzaXplR0xFcnJvcigpLgogICAgIExpc3RIYXNoU2V0PEdDR0xlbnVt
PiBtX3N5bnRoZXRpY0Vycm9yczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTENvbW1vbi5jcHAKaW5kZXggNzI2ZTM1Yzc4ZGRjZGYwZTkxNmU3ZTZmZDQ2NWY2YjkxN2Qy
YjZiMS4uNzMwZDZkMzY3ZjFmOTU0NDViMGE3OWMxNzRkYTg4YTNlZTUxY2I5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC0yMTA2LDI1ICsy
MTA2LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c3ludGhlc2l6ZUdMRXJyb3Io
R0NHTGVudW0gZXJyb3IpCiAgICAgbV9zeW50aGV0aWNFcnJvcnMuYWRkKGVycm9yKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0NvbnRleHRDaGFuZ2VkKCkKLXsKLSAg
ICBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjptYXJrTGF5ZXJDb21wb3NpdGVkKCkKLXsKLSAgICBtX2xheWVyQ29tcG9zaXRlZCA9
IHRydWU7Ci0gICAgcmVzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKTsKLQotICAgIGZvciAoYXV0byog
Y2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCi0gICAgICAgIGNsaWVudC0+ZGlkQ29t
cG9zaXRlKCk7Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmxheWVyQ29tcG9z
aXRlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOwotfQotCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmb3JjZUNvbnRleHRMb3N0KCkKIHsKICAgICBmb3Ig
KGF1dG8qIGNsaWVudCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQpAQCAtMjg3NCw2ICsyODU1
LDMwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om11bHRpRHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUoR0NHTGVudW0sIEdDR0xTcGFuCiAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAorYm9vbCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xpbnQgdW5wYWNrQWxpZ25tZW50KQoreworICAgIEFTU0VSVCh1bnBhY2tBbGln
bm1lbnQgPT0gMSB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gMiB8fCB1bnBhY2tBbGlnbm1lbnQgPT0g
NCB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gOCk7CisgICAgVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hh
cj4gemVybzsKKyAgICB1bnNpZ25lZCBzaXplID0gMDsKKyAgICBpZiAod2lkdGggPiAwICYmIGhl
aWdodCA+IDApIHsKKyAgICAgICAgUGl4ZWxTdG9yZVBhcmFtcyBwYXJhbXM7CisgICAgICAgIHBh
cmFtcy5hbGlnbm1lbnQgPSB1bnBhY2tBbGlnbm1lbnQ7CisgICAgICAgIEdDR0xlbnVtIGVycm9y
ID0gY29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCAx
LCBwYXJhbXMsICZzaXplLCBudWxscHRyLCBudWxscHRyKTsKKyAgICAgICAgaWYgKGVycm9yICE9
IEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJPUikgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIHplcm8gPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4oc2l6ZSk7CisgICAgICAg
IGlmICghemVybykgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0R0w6OklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIG1lbXNldCh6ZXJvLmdldCgpLCAwLCBzaXplKTsKKyAgICB9CisgICAgdGV4
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bhbih6ZXJvLmdldCgpLCBzaXplKSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgIVVTRShB
TkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAK
aW5kZXggYzAwNTViZjM5NWEzMjU2MWM3NzVmOTE3ODM1ZTYwMTEyYmZkZjEwMi4uMTYxZGEyZDQ5
NDVkMGM1ZmEzYmNlMjM4NGQ2MDhjNTQ2NTc0Yzk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1
ZGUgIkdMQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdl
ci5oIgorI2luY2x1ZGUgIlBpeGVsQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdD
R0xQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CkBAIC02NCw2ICs2NSwxOCBAQAogI2VuZGlmCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKKyNlbmRp
ZgorCisjaWYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRl
ICJNZWRpYVNhbXBsZUdTdHJlYW1lci5oIgorI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU8pCisj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyPiBHcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXI6OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JiBhdHRyaWJ1dGVzKQpAQCAtNDU1LDYgKzQ2OCw0MiBAQCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b24mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIH0KICNlbmRpZgog
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29s
KQoreworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzaW11bGF0ZUV2ZW50Rm9y
VGVzdGluZyhTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcgZXZlbnQpCit7CisgICAgaWYgKGV2ZW50
ID09IFNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZzo6R1BVU3RhdHVzRmFpbHVyZSkKKyAgICAgICAg
bV9mYWlsTmV4dFN0YXR1c0NoZWNrID0gdHJ1ZTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQoreworfQorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKK1JlZlB0cjxNZWRpYVNhbXBsZT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50
Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKK3sKKyNpZiBVU0UoR1NUUkVBTUVSKQor
ICAgIGlmIChhdXRvIHBpeGVsQnVmZmVyID0gcmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkpCisgICAg
ICAgIHJldHVybiBNZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92
ZSgqcGl4ZWxCdWZmZXIpKTsKKyNlbmRpZgorICAgIHJldHVybiBudWxscHRyOworfQorCitzdGQ6
Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBv
c2l0ZWRSZXN1bHRzKCkKK3sKKyAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsKK30K
KworI2lmIEVOQUJMRShWSURFTykKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
Ojpjb3B5VGV4dHVyZUZyb21NZWRpYShNZWRpYVBsYXllciYgcGxheWVyLCBQbGF0Zm9ybUdMT2Jq
ZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQoreworICAgIHJldHVybiBwbGF5ZXIu
Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKHRoaXMsIG91dHB1dFRleHR1cmUsIG91
dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRp
cGx5QWxwaGEsIGZsaXBZKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpICYmIFVTRShURVhUVVJFX01BUFBFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaAppbmRleCBjYmY5YTE5YWNkN2Q3
ZmQ3OWJkOTRhYjRjOTY5Zjk1YjIwNWU5MWNhLi5lNDY2MmI2ODNlYTQ1YjZmMTk2NmIzMTk3MzM5
MzMwM2FhZjg2MDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlci5oCkBAIC0zNiw2ICszNiw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcj4gY3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYmKTsKICAgICB+R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKCk7
CiAKKyNpZiBFTkFCTEUoVklERU8pCisgICAgYm9vbCBjb3B5VGV4dHVyZUZyb21NZWRpYShNZWRp
YVBsYXllciYsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOworI2Vu
ZGlmCiBwcm90ZWN0ZWQ6CiAgICAgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsKIH07Cg==
</data>
<flag name="commit-queue"
          id="470320"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445178</attachid>
            <date>2021-11-26 00:40:07 -0800</date>
            <delta_ts>2021-11-26 03:11:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233513-20211126104006.patch</filename>
            <type>text/plain</type>
            <size>31170</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDllMzkxMGFiOTdiODdi
NGFmYmI1MGFjZTUxYTNmMzA4YmRkMjA1MC4uYzU2YzJiMzUwZjRjZDY3ZTc3ZDRmMDQ3YTRhOTRi
ZTkyYTJiNGJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIxLTExLTI1ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwIGNvbnRhaW5zIE9wZW5HTCBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBh
bmQgcGxhdGZvcm0gc3BlY2lmaWMgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW92ZSBkdXBsaWNhdGUgZnVuY3Rpb25hbGl0eSBvZiAiY29udGV4
dCBjaGFuZ2VkLCBjb250ZXh0IG5vdCBjaGFuZ2VkIiBmcm9tCisgICAgICAgICAgLSBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCBBTkdMRSB2YXJpYW50CisgICAgICAgICAgLSBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCBPcGVuR0wsIE9wZW5HTCBFUyB2YXJpYW50CisgICAgICAgICAgLSBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZQorICAgICAgICB0byBiYXNlIGNsYXNzIEdyYXBoaWNz
Q29udGV4dEdMLiBJbiBvcmRlciB0byBkbyB0aGlzLCBhZGQgZmV3IFdFQkNPUkVfRVhQT1JUcyB0
bworICAgICAgICBHcmFwaGljc0NvbnRleHRHTC5oLCBzaW5jZSBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZSBpcyBpbiBXZWJLaXQgYW5kIG5lZWRzIHRvIGNhbGwKKyAgICAgICAgdGhl
IGJhc2UtY2xhc3MgdmVyc2lvbnMgYXMgd2VsbCBhcyB1c2UgdnRhYmxlLgorCisgICAgICAgIE1v
dmUgQU5HTEUtc3BlY2lmaWMgZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
Y3BwIHRvIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwLgorICAgICAgICBNb3ZlIFRleHR1cmVN
YXBwZXItc3BlY2lmaWMgZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3Bw
IHRvIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAuCisgICAgICAgIE1vdmUgT3Bl
bkdMLCBPcGVuR0wgRVMgc3BlY2lmaWMgZnVuY3Rpb25zIGZyb20gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuY3BwIHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcC4KKworICAgICAg
ICBUaGlzIHdvcmtzIHRvd2FyZHMgYmVpbmcgYWJsZSB0byBzZXBhcmF0ZSBBTkdMRSBhbmQgT3Bl
bkdMLCBPcGVuR0wgRVMgaW1wbGVtZW50YXRpb25zIHRvIGRpZmZlcmVudCBjbGFzc2VzLAorICAg
ICAgICByZWR1Y2luZyB0aGUgaWZkZWZmaW5nIGluIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMOjptYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OmxheWVyQ29tcG9zaXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6c2V0QnVmZmVyc1RvQXV0b0NsZWFyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpnZXRCdWZmZXJzVG9BdXRvQ2xlYXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6Om1hcmtMYXllckNvbXBvc2l0ZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50Ojp+Q2xpZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjptYXJrTGF5ZXJDb21wb3NpdGVkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpsYXll
ckNvbXBvc2l0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnNldEJ1ZmZlcnNUb0F1dG9DbGVhcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0
QnVmZmVyc1RvQXV0b0NsZWFyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtDb250ZXh0Q2hhbmdlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFy
a0xheWVyQ29tcG9zaXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6bGF5ZXJDb21wb3NpdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNvcHlUZXh0dXJlRnJv
bU1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlc2V0QnVmZmVyc1RvQXV0b0NsZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRCdWZmZXJzVG9BdXRvQ2xlYXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlcnNU
b0F1dG9DbGVhciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVsZWFzZVRocmVhZFJlc291cmNlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlVGhyZWFk
UmVzb3VyY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250ZXh0VmlzaWJpbGl0eSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2ltdWxhdGVF
dmVudEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRp
YVNhbXBsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjptYXJrQ29udGV4dENoYW5nZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtMYXllckNvbXBvc2l0ZWQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omxh
eWVyQ29tcG9zaXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2V0Q29udGV4dFZpc2liaWxpdHkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNpbXVsYXRlRXZlbnRG
b3JUZXN0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpw
cmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OmNvcHlUZXh0
dXJlRnJvbU1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmg6CisKIDIwMjEtMTEtMjUgIEtpbW1vIEtpbm51bmVu
ICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBHcmFwaGljc0NvbnRleHRHTCBpbXBs
ZW1lbnRhdGlvbnMgc2hvdWxkIGhhdmUgc2VwYXJhdGUgY2xhc3MgZGVmaW5pdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
LmNwcAppbmRleCA0ZjBhOWI1OWZiNDRiZWJmZDM4MjY3NzJkOWIyMDg3ZDllZmFjNWU3Li43ZjJh
MWZkMjhiMzEyOGYwZGU3YTcxMjVlM2RjYzZjOWNiYzhkY2E0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0z
NDcsNiArMzQ3LDEwIEBAIHN0YXRpYyBib29sIHBhY2tQaXhlbHMoY29uc3QgdWludDhfdCogc291
cmNlRGF0YSwgR3JhcGhpY3NDb250ZXh0R0w6OkRhdGFGb3JtYXQKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudDo6Q2xpZW50KCkgPSBkZWZhdWx0OworCitH
cmFwaGljc0NvbnRleHRHTDo6Q2xpZW50Ojp+Q2xpZW50KCkgPSBkZWZhdWx0OworCiBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0R0w+IEdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiBob3N0V2luZG93
KQogewogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gcmVzdWx0OwpAQCAtMzYyLDYgKzM2
Niw3IEBAIEdyYXBoaWNzQ29udGV4dEdMOjpHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMgYXR0cnMpCiB7CiB9CiAKK0dyYXBoaWNzQ29udGV4dEdMOjp+R3JhcGhp
Y3NDb250ZXh0R0woKSA9IGRlZmF1bHQ7CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0w6OmNvbXB1
dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyhHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IHVuc2lnbmVkKiBjb21wb25lbnRzUGVyUGl4ZWwsIHVuc2lnbmVkKiBieXRlc1BlckNvbXBvbmVu
dCkKIHsKQEAgLTYwNyw2ICs2MTIsNDIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTDo6ZXh0cmFj
dFRleHR1cmVEYXRhKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIEdDR0wKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRHTDo6bWFya0NvbnRleHRDaGFu
Z2VkKCkKK3sKKyAgICBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOworfQorCitib29sIEdyYXBo
aWNzQ29udGV4dEdMOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2xh
eWVyQ29tcG9zaXRlZDsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTDo6c2V0QnVmZmVyc1Rv
QXV0b0NsZWFyKEdDR0xiaXRmaWVsZCBidWZmZXJzKQoreworICAgIGlmICghY29udGV4dEF0dHJp
YnV0ZXMoKS5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpCisgICAgICAgIG1fYnVmZmVyc1RvQXV0b0Ns
ZWFyID0gYnVmZmVyczsKK30KKworR0NHTGJpdGZpZWxkIEdyYXBoaWNzQ29udGV4dEdMOjpnZXRC
dWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2J1ZmZlcnNUb0F1dG9D
bGVhcjsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTDo6bWFya0xheWVyQ29tcG9zaXRlZCgp
Cit7CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSB0cnVlOworICAgIGF1dG8gYXR0cnMgPSBjb250
ZXh0QXR0cmlidXRlcygpOworICAgIGlmICghYXR0cnMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7
CisgICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0gR3JhcGhpY3NDb250ZXh0R0w6OkNPTE9S
X0JVRkZFUl9CSVQ7CisgICAgICAgIGlmIChhdHRycy5kZXB0aCkKKyAgICAgICAgICAgIG1fYnVm
ZmVyc1RvQXV0b0NsZWFyIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9CVUZGRVJfQklUOwor
ICAgICAgICBpZiAoYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgICAgIG1fYnVmZmVyc1RvQXV0b0Ns
ZWFyIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CisgICAgfQorICAg
IGZvciAoYXV0byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNs
aWVudC0+ZGlkQ29tcG9zaXRlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGVkYWE0Y2U1ZWE3MmU3MzBiYzUyNTQ2
YzcwMDZlZDIzNzI3Mzk2MGQuLjY0MWI3YjZhYzNlYjA1NTQ3OTE3ZDZhM2ZiZWEwOTJhYjdjZGM3
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaApAQCAtODk3LDcgKzg5Nyw4IEBAIHB1YmxpYzoKIAogICAgIGNsYXNzIENs
aWVudCB7CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KKyAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgQ2xpZW50KCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgfkNsaWVudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcG9zaXRlKCkgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpID0gMDsKICAgICAgICAgdmly
dHVhbCB2b2lkIHJlY3ljbGVDb250ZXh0KCkgPSAwOwpAQCAtOTE0LDggKzkxNSw4IEBAIHB1Ymxp
YzoKICAgICAvLyBIb3N0V2luZG93IG1pZ2h0IGFmZmVjdCB0aGUgZGVjaXNpb24gd2hpY2ggYmFj
a2VuZCBpcyB0byBiZSB1c2VkLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
LCBIb3N0V2luZG93Kik7CiAKLSAgICBHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMpOwotICAgIHZpcnR1YWwgfkdyYXBoaWNzQ29udGV4dEdMKCkgPSBkZWZhdWx0
OworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0
R0woKTsKIAogICAgIHZvaWQgYWRkQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5h
ZGQoJmNsaWVudCk7IH0KICAgICB2b2lkIHJlbW92ZUNsaWVudChDbGllbnQmIGNsaWVudCkgeyBt
X2NsaWVudHMucmVtb3ZlKCZjbGllbnQpOyB9CkBAIC0xMjc0LDE0ICsxMjc1LDE0IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSA9IDA7CiAKICAgICAvLyBG
SVhNRTogc2hvdWxkIGJlIHJlbW92ZWQsIGNhbGxlciBzaG91bGQga2VlcCB0cmFjayBvZiBjaGFu
Z2VkIHN0YXRlLgotICAgIHZpcnR1YWwgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSA9IDA7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwogCiAg
ICAgLy8gRklYTUU6IHRoZXNlIHNob3VsZCBiZSByZW1vdmVkLCBjYWxsZXIgaXMgaW50ZXJlc3Rl
ZCBpbiBidWZmZXIgY2xlYXIgc3RhdHVzIGFuZAogICAgIC8vIHNob3VsZCB0cmFjayB0aGF0IGlu
IGEgdmFyaWFibGUgdGhhdCB0aGUgY2FsbGVyIGhvbGRzLiBDYWxsZXIgc2hvdWxkIHJlY2VpdmUK
ICAgICAvLyB0aGUgdmFsdWUgZnJvbSByZXNoYXBlKCkgYW5kIGRpZENvbXBvc2l0ZSgpLgotICAg
IHZpcnR1YWwgYm9vbCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQpID0gMDsKLSAgICB2aXJ0dWFs
IEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdCA9IDA7CisgICAgYm9v
bCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVh
cihHQ0dMYml0ZmllbGQpOworICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIo
KSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiB0aGVzZSBzaG91bGQgYmUgcmVtb3ZlZCwgdGhleSdy
ZSBwYXJ0IG9mIGRyYXdpbmcgYnVmZmVyIGFuZAogICAgIC8vIGRpc3BsYXkgYnVmZmVyIGFic3Ry
YWN0aW9ucyB0aGF0IHRoZSBjYWxsZXIgc2hvdWxkIGhvbGQgc2VwYXJhdGUgdG8KQEAgLTEyOTYs
NyArMTI5Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgcmVtb3Zl
ZC4gVGhlIGxheWVyIHNob3VsZCBiZSBtYXJrZWQgY29tcG9zaXRlZCBieQogICAgIC8vIHByZXBh
cmluZyBmb3IgZGlzcGxheSwgc28gdGhhdCBjYW52YXMgaW1hZ2UgYnVmZmVyIGFuZCB0aGUgbGF5
ZXIgYWdyZWUKICAgICAvLyBvbiB0aGUgY29udGVudC4KLSAgICB2aXJ0dWFsIHZvaWQgbWFya0xh
eWVyQ29tcG9zaXRlZCgpID0gMDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hcmtMYXllckNv
bXBvc2l0ZWQoKTsKIAogICAgIGVudW0gY2xhc3MgU2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nIHsK
ICAgICAgICAgQ29udGV4dENoYW5nZSwKQEAgLTEzNTgsNiArMTM1OSwxMSBAQCBwcm90ZWN0ZWQ6
CiAgICAgaW50IG1fY3VycmVudFdpZHRoIHsgMCB9OwogICAgIGludCBtX2N1cnJlbnRIZWlnaHQg
eyAwIH07CiAgICAgSGFzaFNldDxDbGllbnQqPiBtX2NsaWVudHM7CisgICAgLy8gQSBiaXRtYXNr
IG9mIEdMIGJ1ZmZlciBiaXRzIChHTF9DT0xPUl9CVUZGRVJfQklULAorICAgIC8vIEdMX0RFUFRI
X0JVRkZFUl9CSVQsIEdMX1NURU5DSUxfQlVGRkVSX0JJVCkgd2hpY2ggbmVlZCB0byBiZQorICAg
IC8vIGF1dG8tY2xlYXJlZC4KKyAgICBHQ0dMYml0ZmllbGQgbV9idWZmZXJzVG9BdXRvQ2xlYXIg
eyAwIH07CisgICAgYm9vbCBtX2xheWVyQ29tcG9zaXRlZCB7IGZhbHNlIH07CiAKIHByaXZhdGU6
CiAgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIG1fYXR0cnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKaW5kZXggYjk0NzUzOTc3N2JmZmEwYjNhZmUyODEx
NTcyYjhjMWE2Y2NjNzBkNi4uMjMzYjBkZjc1NmVjZGQ0YmM5MmQ5MGJhYWYwMTUzY2M2YTU5NWZm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcApAQCAtNjgsNDAg
KzY4LDEwIEBAIGJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzR0xFUzJD
b21wbGlhbnQoKSBjb25zdAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6
bWFya0NvbnRleHRDaGFuZ2VkKCkKIHsKICAgICAvLyBGSVhNRTogVGhlIGNhbGxlciBzaG91bGQg
dHJhY2sgdGhpcyBzdGF0ZS4KLSAgICBpZiAobV9sYXllckNvbXBvc2l0ZWQpCisgICAgaWYgKG1f
bGF5ZXJDb21wb3NpdGVkKSB7CiAgICAgICAgIG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpOwot
ICAgIG1fbGF5ZXJDb21wb3NpdGVkID0gZmFsc2U7Ci19Ci0KLXZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2U6Om1hcmtMYXllckNvbXBvc2l0ZWQoKQotewotICAgIG1fbGF5ZXJD
b21wb3NpdGVkID0gdHJ1ZTsKLSAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsK
LSAgICBpZiAoIWF0dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikgewotICAgICAgICBtX2J1ZmZl
cnNUb0F1dG9DbGVhciA9IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9CVUZGRVJfQklUOwotICAg
ICAgICBpZiAoYXR0cnMuZGVwdGgpCi0gICAgICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciB8
PSBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQlVGRkVSX0JJVDsKLSAgICAgICAgaWYgKGF0dHJz
LnN0ZW5jaWwpCi0gICAgICAgICAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciB8PSBHcmFwaGljc0Nv
bnRleHRHTDo6U1RFTkNJTF9CVUZGRVJfQklUOworICAgICAgICBHcmFwaGljc0NvbnRleHRHTDo6
bWFya0NvbnRleHRDaGFuZ2VkKCk7CiAgICAgfQotICAgIGZvciAoYXV0byogY2xpZW50IDogY29w
eVRvVmVjdG9yKG1fY2xpZW50cykpCi0gICAgICAgIGNsaWVudC0+ZGlkQ29tcG9zaXRlKCk7Ci19
Ci0KLWJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmxheWVyQ29tcG9zaXRl
ZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOwotfQotCi12b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NH
TGJpdGZpZWxkIGJ1ZmZlcnMpCi17Ci0gICAgaWYgKCFjb250ZXh0QXR0cmlidXRlcygpLnByZXNl
cnZlRHJhd2luZ0J1ZmZlcikKLSAgICAgICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSBidWZmZXJz
OwotfQotCi1HQ0dMYml0ZmllbGQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Omdl
dEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYnVmZmVyc1RvQXV0
b0NsZWFyOwogfQogCiBib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpzdXBw
b3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuaAppbmRleCBmOWE4NjE4NDJhMTBkYmJiODBiYzg5ZDI2MDZhODhlMGI3ZjJlN2UzLi41ZTVj
MDliODcyMDQzZWEwZmEyYTk2N2Y0ZjM5OTNiYWQ4MGE3OTQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlLmgKQEAgLTUwLDEwICs1MCw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wpIGZpbmFsOwogICAgIGJvb2wgaXNHTEVTMkNvbXBs
aWFudCgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgbWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7
Ci0gICAgYm9vbCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHNldEJ1
ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQpIGZpbmFsOwotICAgIEdDR0xiaXRmaWVsZCBn
ZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIG1hcmtMYXllckNv
bXBvc2l0ZWQoKSBmaW5hbDsKIAogICAgIC8vIE90aGVyIEV4dGVuc2lvbkdMIG92ZXJyaWRlcy4K
ICAgICB1c2luZyBFeHRlbnNpb25zR0w6OmlzRW5hYmxlZDsKQEAgLTc5LDEwICs3NSw2IEBAIHBy
aXZhdGU6CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVxdWVzdGFibGVFeHRlbnNpb25zOwogCiAg
ICAgSGFzaFNldDxTdHJpbmc+IG1fZW5hYmxlZEV4dGVuc2lvbnM7Ci0KLSAgICAvLyBGSVhNRTog
RHJhd2luZyBidWZmZXIgY2xlYXIgdHJhY2tpbmcgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBjbGll
bnQuCi0gICAgYm9vbCBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOwotICAgIEdDR0xiaXRmaWVs
ZCBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9IHsgMCB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcAppbmRleCA2NDA0NDYyOTgyN2EyMGEzMjRkYzY0ODRkOTIzZWIyMTQw
ZmMwOGYzLi45NjgwZTA2YzJjNjFhODkzMzhlOTY1MmY5Mzk4ZmM3N2Y1MjA0ODlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMjE1MywyNSArMjE1Myw2IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9y
KQogICAgIG1fc3ludGhldGljRXJyb3JzLmFkZChlcnJvcik7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCi17Ci0gICAgbV9sYXllckNvbXBv
c2l0ZWQgPSBmYWxzZTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0xh
eWVyQ29tcG9zaXRlZCgpCi17Ci0gICAgbV9sYXllckNvbXBvc2l0ZWQgPSB0cnVlOwotICAgIHJl
c2V0QnVmZmVyc1RvQXV0b0NsZWFyKCk7Ci0KLSAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNvcHlU
b1ZlY3RvcihtX2NsaWVudHMpKQotICAgICAgICBjbGllbnQtPmRpZENvbXBvc2l0ZSgpOwotfQot
Ci1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAot
ewotICAgIHJldHVybiBtX2xheWVyQ29tcG9zaXRlZDsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Zm9yY2VDb250ZXh0TG9zdCgpCiB7CiAgICAgZm9yIChhdXRvKiBjbGllbnQg
OiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaApp
bmRleCBlZGJjNGY3M2Y1ZTEyMjgxZGY1ZTMyZTVmNmQ3MDk1ZTczODhjMmNkLi4yNTU1ZmYwODMy
OGUzNDY5Y2Q3YTRhMjk3ZGJlZjc5MGY2MzA1Mjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5oCkBAIC00OSw2ICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRhY2hJT1N1cmZh
Y2VGcm9tU2hhcmVkVGV4dHVyZSh2b2lkKiBoYW5kbGUpOwogI2VuZGlmCiAKKyAgICAvLyBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCBvdmVycmlkZXMuCisjaWYgRU5BQkxFKFZJREVPKQorICAgIGJv
b2wgY29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRl
eHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxG
b3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBib29sIGZsaXBZKSBmaW5hbDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7
CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5t
bQppbmRleCA0Y2FiY2M5MDM3MmNhYmIwMTMzNDYwNGE4OTRlN2I2Y2NjZmI2ZTFlLi5mMjAxZGRj
Yzk3ODYxZjZhODYyNmNhZDJkYWJmY2JmMzM3MjUzNmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMQ29jb2EubW0KQEAgLTQ3LDggKzQ3LDkgQEAKICNpbXBvcnQgIldlYkNvcmVUaHJlYWQuaCIK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorI2lmIEVO
QUJMRShWSURFTykKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCIKKyNpbmNs
dWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKQEAgLTc2Miw3ICs3NjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpw
cmVwYXJlRm9yRGlzcGxheSgpCiB9CiAKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9V
TkRBVElPTikKKyNpZiBFTkFCTEUoVklERU8pCiBHcmFwaGljc0NvbnRleHRHTENWKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6YXNDVigpCiB7CiAgICAgaWYgKCFtX2N2KQpAQCAtODIzLDYgKzgy
NCwyMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VUaHJl
YWRSZXNvdXJjZXMoKQogICAgIGN1cnJlbnRDb250ZXh0ID0gbnVsbHB0cjsKIH0KIAorI2lmIEVO
QUJMRShWSURFTykKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y29weVRleHR1cmVGcm9t
TWVkaWEoTWVkaWFQbGF5ZXImIHBsYXllciwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJl
LCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Rm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbCBmbGlwWSkKK3sKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gcGxheWVyLnBpeGVs
QnVmZmVyRm9yQ3VycmVudFRpbWUoKTsKKyAgICBpZiAoIXBpeGVsQnVmZmVyKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGNvbnRleHRDViA9IGFzQ1YoKTsKKyAgICBpZiAoIWNv
bnRleHRDVikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVU5VU0VEX1ZBUklBQkxFKHBy
ZW11bHRpcGx5QWxwaGEpOworICAgIEFTU0VSVF9VTlVTRUQob3V0cHV0VGFyZ2V0LCBvdXRwdXRU
YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQpOworICAgIHJldHVybiBjb250
ZXh0Q1YtPmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShwaXhlbEJ1ZmZlci5nZXQoKSwgb3V0cHV0
VGV4dHVyZSwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIEdyYXBoaWNzQ29u
dGV4dEdMOjpGbGlwWShmbGlwWSkpOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IDNiZWMw
OTlmMzdlYzNjZDNkYmMzODEyMTVhMjdhOTViMzcyYzIxNDYuLmI4MzJhMTg2YTQyYzhiZTMyMmE0
YzcwODFmNzVkY2Q0OTBjMjdmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcApAQCAtMzIsMTA3ICszMiwxMiBAQAogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKLSNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIK
ICNpbmNsdWRlICJQaXhlbEJ1ZmZlci5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3
dGYvVW5pcXVlQXJyYXkuaD4KIAotI2lmIFVTRShBVkZPVU5EQVRJT04pCi0jaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0R0xDVi5oIgotI2VuZGlmCi0KLSNpZiAhUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShNRURJQV9TVFJFQU0pCi0jaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKLSNlbmRpZgotCi0j
aWYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSNpbmNsdWRlICJNZWRp
YVNhbXBsZUdTdHJlYW1lci5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKQotewot
ICAgIEdDR0x1aW50IGJ1ZmZlcnMgPSBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQlVGRkVSX0JJ
VDsKLSAgICAvLyBUaGUgR3JhcGhpY3NDb250ZXh0R0wncyBhdHRyaWJ1dGVzIChhcyBvcHBvc2Vk
IHRvCi0gICAgLy8gV2ViR0xSZW5kZXJpbmdDb250ZXh0J3MpIGluZGljYXRlIHdoZXRoZXIgdGhl
cmUgaXMgYW4KLSAgICAvLyBpbXBsaWNpdGx5LWFsbG9jYXRlZCBzdGVuY2lsIGJ1ZmZlciwgZm9y
IGV4YW1wbGUuCi0gICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYg
KGF0dHJzLmRlcHRoKQotICAgICAgICBidWZmZXJzIHw9IEdyYXBoaWNzQ29udGV4dEdMOjpERVBU
SF9CVUZGRVJfQklUOwotICAgIGlmIChhdHRycy5zdGVuY2lsKQotICAgICAgICBidWZmZXJzIHw9
IEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7Ci0gICAgc2V0QnVmZmVyc1Rv
QXV0b0NsZWFyKGJ1ZmZlcnMpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpz
ZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJpdGZpZWxkIGJ1ZmZlcnMpCi17Ci0gICAgYXV0byBh
dHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgaWYgKCFhdHRycy5wcmVzZXJ2ZURyYXdp
bmdCdWZmZXIpCi0gICAgICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0gYnVmZmVyczsKLSAgICBl
bHNlCi0gICAgICAgIEFTU0VSVCghbV9idWZmZXJzVG9BdXRvQ2xlYXIpOwotfQotCi1HQ0dMYml0
ZmllbGQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fYnVmZmVyc1RvQXV0b0NsZWFyOwotfQotCi0jaWYgIVVTRShB
TkdMRSkKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VUaHJlYWRSZXNvdXJj
ZXMoUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3IpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRS
ZXNvdXJjZXMoKQotewotfQotI2VuZGlmCi0KLSNpZiAhVVNFKEFOR0xFKQotYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xpbnQgdW5wYWNrQWxpZ25tZW50KQotewotICAgIEFTU0VSVCh1bnBhY2tB
bGlnbm1lbnQgPT0gMSB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gMiB8fCB1bnBhY2tBbGlnbm1lbnQg
PT0gNCB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gOCk7Ci0gICAgVW5pcXVlQXJyYXk8dW5zaWduZWQg
Y2hhcj4gemVybzsKLSAgICB1bnNpZ25lZCBzaXplID0gMDsKLSAgICBpZiAod2lkdGggPiAwICYm
IGhlaWdodCA+IDApIHsKLSAgICAgICAgUGl4ZWxTdG9yZVBhcmFtcyBwYXJhbXM7Ci0gICAgICAg
IHBhcmFtcy5hbGlnbm1lbnQgPSB1bnBhY2tBbGlnbm1lbnQ7Ci0gICAgICAgIEdDR0xlbnVtIGVy
cm9yID0gY29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0
LCAxLCBwYXJhbXMsICZzaXplLCBudWxscHRyLCBudWxscHRyKTsKLSAgICAgICAgaWYgKGVycm9y
ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJPUikgewotICAgICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0g
ICAgICAgIHplcm8gPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4oc2l6ZSk7Ci0gICAg
ICAgIGlmICghemVybykgewotICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0R0w6OklOVkFMSURfVkFMVUUpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0gICAgICAgIG1lbXNldCh6ZXJvLmdldCgpLCAwLCBzaXplKTsKLSAgICB9Ci0gICAg
dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
Ym9yZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bhbih6ZXJvLmdldCgpLCBzaXplKSk7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYKLQotCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkKLXsK
LX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2ltdWxhdGVFdmVudEZvclRlc3Rp
bmcoU2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nIGV2ZW50KQotewotICAgIGlmIChldmVudCA9PSBT
aW11bGF0ZWRFdmVudEZvclRlc3Rpbmc6OkdQVVN0YXR1c0ZhaWx1cmUpCi0gICAgICAgIG1fZmFp
bE5leHRTdGF0dXNDaGVjayA9IHRydWU7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKLXsKLX0KLSNlbmRpZgotCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciYg
aW1hZ2VCdWZmZXIpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTE4MCwx
NyArODUsNiBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbAogICAgIHJldHVybiByZXN1bHRzOwog
fQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQotUmVmUHRy
PE1lZGlhU2FtcGxlPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvTWVkaWFTYW1wbGUoKQotewotI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgaWYgKGF1dG8g
cGl4ZWxCdWZmZXIgPSByZWFkQ29tcG9zaXRlZFJlc3VsdHMoKSkKLSAgICAgICAgcmV0dXJuIE1l
ZGlhU2FtcGxlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZl
cikpOwotI2VuZGlmCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0jZW5kaWYKLQogc3RkOjpvcHRp
b25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdS
ZXN1bHRzRm9yUGFpbnRpbmcoKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCkBA
IC0yMDksMzQgKzEwMyw2IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWluCiAgICAgcmV0dXJuIHJl
YWRDb21wb3NpdGVkUmVzdWx0cygpOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotc3RkOjpv
cHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3Np
dGVkUmVzdWx0cygpCi17Ci0gICAgcmV0dXJuIHJlYWRSZW5kZXJpbmdSZXN1bHRzKCk7Ci19Ci0j
ZW5kaWYKLQotI2lmIEVOQUJMRShWSURFTykKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNvcHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIFBsYXRmb3JtR0xPYmpl
Y3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCi17Ci0jaWYgVVNFKEFWRk9VTkRBVElP
TikKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gcGxheWVyLnBpeGVsQnVmZmVyRm9yQ3VycmVudFRp
bWUoKTsKLSAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBhdXRvIGNvbnRleHRDViA9IGFzQ1YoKTsKLSAgICBpZiAoIWNvbnRleHRDVikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgVU5VU0VEX1ZBUklBQkxFKHByZW11bHRpcGx5QWxwaGEpOwot
ICAgIEFTU0VSVF9VTlVTRUQob3V0cHV0VGFyZ2V0LCBvdXRwdXRUYXJnZXQgPT0gR3JhcGhpY3ND
b250ZXh0R0w6OlRFWFRVUkVfMkQpOwotICAgIHJldHVybiBjb250ZXh0Q1YtPmNvcHlQaXhlbEJ1
ZmZlclRvVGV4dHVyZShwaXhlbEJ1ZmZlci5nZXQoKSwgb3V0cHV0VGV4dHVyZSwgbGV2ZWwsIGlu
dGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIEdyYXBoaWNzQ29udGV4dEdMOjpGbGlwWShmbGlw
WSkpOwotI2Vsc2UKLSAgICByZXR1cm4gcGxheWVyLmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3Jt
VGV4dHVyZSh0aGlzLCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7Ci0jZW5kaWYK
LX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGI1YzJmN2UzMDhk
ZGE1N2Q2ZGNiNzM4ZjIyNWFlNzJlZmFkNTI5OWUuLjNjZDNkZGUyYjdkNDUxY2M2YmU4N2UxYTU3
YzY2NzAyZTE0ZjhhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC0x
MTMsNyArMTEzLDYgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgVVNFKEFOR0xFKQogICAgIEdDR0xl
bnVtIGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7Ci0jZW5kaWYKICAgICBlbnVtIGNsYXNz
IFJlbGVhc2VUaHJlYWRSZXNvdXJjZUJlaGF2aW9yIHsKICAgICAgICAgLy8gUmVsZWFzZXMgY3Vy
cmVudCBjb250ZXh0IGFmdGVyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGNhbGxzIGRvbmUgaW4g
dGhlIHRocmVhZC4KICAgICAgICAgUmVsZWFzZUN1cnJlbnRDb250ZXh0LApAQCAtMTI0LDYgKzEy
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgVGVybWluYXRlQW5kUmVsZWFzZVRocmVhZFJlc291cmNl
cwogICAgIH07CiAgICAgc3RhdGljIGJvb2wgcmVsZWFzZVRocmVhZFJlc291cmNlcyhSZWxlYXNl
VGhyZWFkUmVzb3VyY2VCZWhhdmlvcik7CisjZW5kaWYKIAogICAgIC8vIFdpdGggbXVsdGlzYW1w
bGluZyBvbiwgYmxpdCBmcm9tIG11bHRpc2FtcGxlRkJPIHRvIHJlZ3VsYXIgRkJPLgogICAgIHZv
aWQgcHJlcGFyZVRleHR1cmUoKTsKQEAgLTQ0MiwxOSArNDQyLDkgQEAgcHVibGljOgogICAgIHZv
aWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gb2Zmc2V0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50
cywgR0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7CiAKICAgICAvLyBIZWxwZXIgbWV0aG9k
cy4KLSAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOwotICAgIHZvaWQgbWFya0xh
eWVyQ29tcG9zaXRlZCgpIGZpbmFsOwotICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3Qg
ZmluYWw7CiAgICAgdm9pZCBmb3JjZUNvbnRleHRMb3N0KCk7CiAgICAgdm9pZCByZWN5Y2xlQ29u
dGV4dCgpOwogCi0gICAgLy8gTWFpbnRlbmFuY2Ugb2YgYXV0by1jbGVhcmluZyBvZiBjb2xvci9k
ZXB0aC9zdGVuY2lsIGJ1ZmZlcnMuIFRoZQotICAgIC8vIHJlc2V0IG1ldGhvZCBpcyBwcmVzZW50
IHRvIGtlZXAgY2FsbGluZyBjb2RlIHNpbXBsZXIsIHNvIGl0Ci0gICAgLy8gZG9lc24ndCBoYXZl
IHRvIGtub3cgd2hpY2ggYnVmZmVycyB3ZXJlIGFsbG9jYXRlZC4KLSAgICB2b2lkIHJlc2V0QnVm
ZmVyc1RvQXV0b0NsZWFyKCk7Ci0gICAgdm9pZCBzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJp
dGZpZWxkKSBmaW5hbDsKLSAgICBHQ0dMYml0ZmllbGQgZ2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkg
Y29uc3QgZmluYWw7Ci0KICAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRp
b24oKTsKIAogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZm
ZXImKSBmaW5hbDsKQEAgLTQ2NywxMCArNDU3LDYgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IHJlYWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmcoKTsKICAgICBz
dGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGlu
ZygpOwogCi0jaWYgRU5BQkxFKFZJREVPKQotICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEo
TWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsK
LSNlbmRpZgotCiAjaWYgVVNFKE9QRU5HTCkgJiYgRU5BQkxFKFdFQkdMMikKICAgICB2b2lkIHBy
aW1pdGl2ZVJlc3RhcnRJbmRleChHQ0dMdWludCk7CiAjZW5kaWYKQEAgLTU3Niw5ICs1NjIsMTAg
QEAgcHJpdmF0ZToKICNpZiBVU0UoQU5HTEUpCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiBjb250
ZXh0IHNob3VsZCBiZSBsb3N0IGR1ZSB0byB0aW1lb3V0LgogICAgIGJvb2wgd2FpdEFuZFVwZGF0
ZU9sZGVzdEZyYW1lKCkgV0FSTl9VTlVTRURfUkVUVVJOOwotI2VuZGlmCisKICAgICAvLyBQbGF0
Zm9ybSBzcGVjaWZpYyBiZWhhdmlvciBmb3IgcmVsZWFzZVJlc291cmNlcygpOwogICAgIHN0YXRp
YyB2b2lkIHBsYXRmb3JtUmVsZWFzZVRocmVhZFJlc291cmNlcygpOworI2VuZGlmCiAKICNpZiAh
VVNFKEFOR0xFKQogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFVuaXF1ZVJlZjxzaDo6U2hh
ZGVyVmFyaWFibGU+PiBTaGFkZXJTeW1ib2xNYXA7CkBAIC02ODAsNyArNjY3LDYgQEAgcHJpdmF0
ZToKICNlbmRpZgogICAgIEdDR0x1aW50IG1fZGVwdGhTdGVuY2lsQnVmZmVyIHsgMCB9OwogCi0g
ICAgYm9vbCBtX2xheWVyQ29tcG9zaXRlZCB7IGZhbHNlIH07CiAgICAgR0NHTHVpbnQgbV9pbnRl
cm5hbENvbG9yRm9ybWF0IHsgMCB9OwogI2lmIFVTRShBTkdMRSkKICAgICBHQ0dMdWludCBtX2lu
dGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0IHsgMCB9OwpAQCAtNzQxLDExICs3MjcsNiBAQCBwcml2
YXRlOgogCiAjZW5kaWYKIAotICAgIC8vIEEgYml0bWFzayBvZiBHTCBidWZmZXIgYml0cyAoR0xf
Q09MT1JfQlVGRkVSX0JJVCwKLSAgICAvLyBHTF9ERVBUSF9CVUZGRVJfQklULCBHTF9TVEVOQ0lM
X0JVRkZFUl9CSVQpIHdoaWNoIG5lZWQgdG8gYmUKLSAgICAvLyBhdXRvLWNsZWFyZWQuCi0gICAg
R0NHTGJpdGZpZWxkIG1fYnVmZmVyc1RvQXV0b0NsZWFyIHsgMCB9OwotCiAgICAgLy8gRXJyb3Jz
IHJhaXNlZCBieSBzeW50aGVzaXplR0xFcnJvcigpLgogICAgIExpc3RIYXNoU2V0PEdDR0xlbnVt
PiBtX3N5bnRoZXRpY0Vycm9yczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTENvbW1vbi5jcHAKaW5kZXggNzI2ZTM1Yzc4ZGRjZGYwZTkxNmU3ZTZmZDQ2NWY2YjkxN2Qy
YjZiMS4uNzMwZDZkMzY3ZjFmOTU0NDViMGE3OWMxNzRkYTg4YTNlZTUxY2I5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC0yMTA2LDI1ICsy
MTA2LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c3ludGhlc2l6ZUdMRXJyb3Io
R0NHTGVudW0gZXJyb3IpCiAgICAgbV9zeW50aGV0aWNFcnJvcnMuYWRkKGVycm9yKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0NvbnRleHRDaGFuZ2VkKCkKLXsKLSAg
ICBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjptYXJrTGF5ZXJDb21wb3NpdGVkKCkKLXsKLSAgICBtX2xheWVyQ29tcG9zaXRlZCA9
IHRydWU7Ci0gICAgcmVzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKTsKLQotICAgIGZvciAoYXV0byog
Y2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCi0gICAgICAgIGNsaWVudC0+ZGlkQ29t
cG9zaXRlKCk7Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmxheWVyQ29tcG9z
aXRlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOwotfQotCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmb3JjZUNvbnRleHRMb3N0KCkKIHsKICAgICBmb3Ig
KGF1dG8qIGNsaWVudCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQpAQCAtMjg3NCw2ICsyODU1
LDMwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om11bHRpRHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUoR0NHTGVudW0sIEdDR0xTcGFuCiAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAorYm9vbCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xpbnQgdW5wYWNrQWxpZ25tZW50KQoreworICAgIEFTU0VSVCh1bnBhY2tBbGln
bm1lbnQgPT0gMSB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gMiB8fCB1bnBhY2tBbGlnbm1lbnQgPT0g
NCB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gOCk7CisgICAgVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hh
cj4gemVybzsKKyAgICB1bnNpZ25lZCBzaXplID0gMDsKKyAgICBpZiAod2lkdGggPiAwICYmIGhl
aWdodCA+IDApIHsKKyAgICAgICAgUGl4ZWxTdG9yZVBhcmFtcyBwYXJhbXM7CisgICAgICAgIHBh
cmFtcy5hbGlnbm1lbnQgPSB1bnBhY2tBbGlnbm1lbnQ7CisgICAgICAgIEdDR0xlbnVtIGVycm9y
ID0gY29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCAx
LCBwYXJhbXMsICZzaXplLCBudWxscHRyLCBudWxscHRyKTsKKyAgICAgICAgaWYgKGVycm9yICE9
IEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJPUikgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIHplcm8gPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4oc2l6ZSk7CisgICAgICAg
IGlmICghemVybykgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0R0w6OklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIG1lbXNldCh6ZXJvLmdldCgpLCAwLCBzaXplKTsKKyAgICB9CisgICAgdGV4
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3Bhbih6ZXJvLmdldCgpLCBzaXplKSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgIVVTRShB
TkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAK
aW5kZXggYzAwNTViZjM5NWEzMjU2MWM3NzVmOTE3ODM1ZTYwMTEyYmZkZjEwMi4uYmNlMjJhOWEx
MjMyMThkYTljNzRlZTVjMTkyYzM2Y2QzMjBmOTNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1
ZGUgIkdMQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdl
ci5oIgorI2luY2x1ZGUgIlBpeGVsQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdD
R0xQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CkBAIC02NCw2ICs2NSwxOCBAQAogI2VuZGlmCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKKyNlbmRp
ZgorCisjaWYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRl
ICJNZWRpYVNhbXBsZUdTdHJlYW1lci5oIgorI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU8pCisj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyPiBHcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXI6OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JiBhdHRyaWJ1dGVzKQpAQCAtNDU1LDYgKzQ2OCw0MyBAQCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b24mIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIH0KICNlbmRpZgog
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29s
KQoreworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzaW11bGF0ZUV2ZW50Rm9y
VGVzdGluZyhTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcgZXZlbnQpCit7CisgICAgaWYgKGV2ZW50
ID09IFNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZzo6R1BVU3RhdHVzRmFpbHVyZSkKKyAgICAgICAg
bV9mYWlsTmV4dFN0YXR1c0NoZWNrID0gdHJ1ZTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQoreworfQorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKK1JlZlB0cjxNZWRpYVNhbXBsZT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50
Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKK3sKKyNpZiBVU0UoR1NUUkVBTUVSKQor
ICAgIGlmIChhdXRvIHBpeGVsQnVmZmVyID0gcmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkpCisgICAg
ICAgIHJldHVybiBNZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92
ZSgqcGl4ZWxCdWZmZXIpKTsKKyNlbmRpZgorICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlm
CisKK3N0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQoreworICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOworfQorCisjaWYgRU5BQkxFKFZJREVPKQorYm9vbCBHcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXI6OmNvcHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIFBsYXRm
b3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCit7CisgICAgcmV0dXJu
IHBsYXllci5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodGhpcywgb3V0cHV0VGV4
dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwg
cHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCmluZGV4IGNiZjlh
MTlhY2Q3ZDdmZDc5YmQ5NGFiNGM5NjlmOTViMjA1ZTkxY2EuLmU0NjYyYjY4M2VhNDViNmYxOTY2
YjMxOTczMzkzMzAzYWFmODYwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xU
ZXh0dXJlTWFwcGVyLmgKQEAgLTM2LDYgKzM2LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyPiBjcmVhdGUoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpOwogICAgIH5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXIoKTsKIAorI2lmIEVOQUJMRShWSURFTykKKyAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1l
ZGlhKE1lZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmlu
YWw7CisjZW5kaWYKIHByb3RlY3RlZDoKICAgICBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXIoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpOwogfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>