<?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>202062</bug_id>
          
          <creation_ts>2019-09-20 16:49:52 -0700</creation_ts>
          <short_desc>[FTW] Resolve crashes found while running canvas tests</short_desc>
          <delta_ts>2019-09-21 19:41:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>fujii</cc>
    
    <cc>pvollan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1572948</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-09-20 16:49:52 -0700</bug_when>
    <thetext>The canvas Layout tests revealed roughly 24 crashes.

This patch corrects a number of problems:

1. BitmapImage cannot create ID2D1Bitmaps without a render target. However, some code paths allowed a nullptr target to be used.
2. Direct2D will not allow you to draw an ID2D1Bitmap to itself. We need to create a copy.
3. Consolidate the empty &apos;State&apos; class in PlatformContextDirect2D with the separate stack of rendering state. This was cruft left over from before the PlatformContextDirect2D code was in place. This simplifies a lot of the code, and avoids some cases where the stacks were not in sync.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572961</commentid>
    <comment_count>1</comment_count>
      <attachid>379287</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-09-20 17:12:29 -0700</bug_when>
    <thetext>Created attachment 379287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572970</commentid>
    <comment_count>2</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-09-20 17:18:00 -0700</bug_when>
    <thetext>With the patch there are no crashes (but 145 failures!). Fixing failures next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573121</commentid>
    <comment_count>3</comment_count>
      <attachid>379287</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-21 19:40:50 -0700</bug_when>
    <thetext>Comment on attachment 379287
Patch

Clearing flags on attachment: 379287

Committed r250188: &lt;https://trac.webkit.org/changeset/250188&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573122</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-21 19:40:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573123</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-21 19:41:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/55595290&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379287</attachid>
            <date>2019-09-20 17:12:29 -0700</date>
            <delta_ts>2019-09-21 19:40:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202062-20190920171229.patch</filename>
            <type>text/plain</type>
            <size>24616</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MDE2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDE5LTA5LTIwICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtGVFddIFJlc29sdmUgY3Jh
c2hlcyBmb3VuZCB3aGlsZSBydW5uaW5nIGNhbnZhcyB0ZXN0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMDYyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJu
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6RmlsbFNvdXJjZTo6RmlsbFNvdXJjZSk6
IFRha2UgR3JhcGhpY3NDb250ZXh0IGFzIGFyZ3VtZW50LCByYXRoZXIgdGhhbgorICAgICAgICBh
IFBsYXRmb3JtQ29udGV4dERpcmVjdDJEIHNpbmNlIGRvd25zdHJlYW0gb3BlcmF0aW9ucyByZXF1
aXJlIHRoZSBmb3JtZXIuICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpTdHJv
a2VTb3VyY2U6OlN0cm9rZVNvdXJjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0
MkQ6OmNsaXApOiBVc2UgbmV3ICdwdXNoQ2xpcCcgaGVscGVyIGZ1bmN0aW9uLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c3Ryb2tlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJv
a2VSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxE
aXJlY3QyRDo6ZmlsbFJlY3QpOiBVcGRhdGUgdG8gcGFzcyBHcmFwaGljc0NvbnRleHQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQ6OmZpbGxQYXRoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRJbXBsRGlyZWN0MkQ6OnN0cm9rZVJlY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6c3Ryb2tlUGF0aCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3R2x5cGhzKTogRGl0
dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVj
dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0YTo6Y29weVJlY3RGcm9t
U291cmNlVG9EYXRhKTogQ29ycmVjdCByZXR1cm4gYmVoYXZpb3IuCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckRhdGE6OmNvbXBhdGlibGVCaXRtYXApOiBNYWtlIGEgY29weSBpZiB0aGUg
cmVuZGVyIHRhcmdldCBpcworICAgICAgICBiYWNrZWQgYnkgdGhlIElEMkQxQml0bWFwIHdlIGFy
ZSB0cnlpbmcgdG8gZHJhdyB3aXRoLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Q
YXR0ZXJuRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxh
dGZvcm1QYXR0ZXJuIGNvbnN0KTogUmVtb3ZlICdQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCcgY29u
dHJ1Y3RvciwKKyAgICAgICAgc2luY2Ugd2UgYWx3YXlzIG5lZWQgYSBHcmFwaGljc0NvbnRleHQg
Zm9yIHRoZSBJbWFnZSBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQ6OmNsaXBMYXllciBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ6OmNsZWFyQ2xpcHMpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtQ29udGV4dERpcmVjdDJEOjpyZXN0b3JlKTogVXBkYXRlIHRvIHVzZSBt
X3N0YXRlU3RhY2ssIHJhdGhlciB0aGFuCisgICAgICAgIHRoZSBtX3JlbmRlclN0YXRlcyB2ZWN0
b3IuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHREaXJlY3QyRDo6c2F2ZSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ6OnB1c2hSZW5k
ZXJDbGlwKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHREaXJlY3Qy
RDo6c2V0QWN0aXZlTGF5ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29u
dGV4dERpcmVjdDJEOjplbmREcmF3KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bUNvbnRleHREaXJlY3QyRDo6bm90aWZ5UG9zdERyYXdPYnNlcnZlcik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ6OnB1c2hDbGlwKTogRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmg6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHREaXJlY3QyRDo6aGFzU2F2ZWRTdGF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHREaXJlY3QyRDo6Y2xp
cExheWVyIGNvbnN0KTogRGVsZXRlZC4KKwogMjAxOS0wOS0yMCAgS2VpdGggUm9sbGluICA8a3Jv
bGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGNoZWNrIG9mIHNldFNvdXJjZUFwcFBp
ZCBzZWxlY3RvciB0aGF0J3Mgbm8gbG9uZ2VyIG5lZWRlZApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAkocmV2aXNpb24gMjUwMTYxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Niw3ICs2Niw2IEBAIHB1YmxpYzoKICNpZiAhVVNFKERJUkVDVDJEKQogICAgIFBsYXRmb3JtUGF0
dGVyblB0ciBjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2Vy
U3BhY2VUcmFuc2Zvcm1hdGlvbikgY29uc3Q7CiAjZWxzZQotICAgIFBsYXRmb3JtUGF0dGVyblB0
ciBjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oUGxhdGZvcm1HcmFwaGljc0NvbnRleHQmLCBmbG9hdCBh
bHBoYSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuc2Zvcm1hdGlvbikgY29u
c3Q7CiAgICAgUGxhdGZvcm1QYXR0ZXJuUHRyIGNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBH
cmFwaGljc0NvbnRleHQmLCBmbG9hdCBhbHBoYSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2Vy
U3BhY2VUcmFuc2Zvcm1hdGlvbikgY29uc3Q7CiAjZW5kaWYKICAgICB2b2lkIHNldFBhdHRlcm5T
cGFjZVRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5TcGFjZVRyYW5zZm9y
bWF0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJl
Y3QyRE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNTAxNjEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg5LDI4ICsyODksMzQgQEAgYm9vbCBpc0FjY2VsZXJh
dGVkQ29udGV4dChQbGF0Zm9ybUNvbnRleAogCiB9IC8vIG5hbWVzcGFjZSBTdGF0ZQogCi1GaWxs
U291cmNlOjpGaWxsU291cmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgUGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCkKK0ZpbGxTb3VyY2U6OkZpbGxT
b3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpCiAgICAgOiBnbG9iYWxBbHBoYShzdGF0ZS5hbHBoYSkKICAgICAsIGNv
bG9yKHN0YXRlLmZpbGxDb2xvcikKICAgICAsIGZpbGxSdWxlKHN0YXRlLmZpbGxSdWxlKQogewor
ICAgIEFTU0VSVChjb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBhdXRvJiBwbGF0
Zm9ybUNvbnRleHQgPSAqY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKKwogICAgIGlmIChzdGF0
ZS5maWxsUGF0dGVybikgewogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdXNlclRvQmFzZUNUTTsg
Ly8gRklYTUU6IFRoaXMgaXNuJ3QgcmVhbGx5IG5lZWRlZCBvbiBXaW5kb3dzCi0gICAgICAgIGJy
dXNoID0gc3RhdGUuZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihwbGF0Zm9ybUNv
bnRleHQsIHN0YXRlLmFscGhhLCB1c2VyVG9CYXNlQ1RNKTsKLSAgICB9IGVsc2UgaWYgKHN0YXRl
LmZpbGxHcmFkaWVudCkKKyAgICAgICAgYnJ1c2ggPSBzdGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRl
UGxhdGZvcm1QYXR0ZXJuKGNvbnRleHQsIHN0YXRlLmFscGhhLCB1c2VyVG9CYXNlQ1RNKTsKKyAg
ICB9IGVsc2UgaWYgKHN0YXRlLmZpbGxHcmFkaWVudCAmJiAhc3RhdGUuZmlsbEdyYWRpZW50LT5z
dG9wcygpLmlzRW1wdHkoKSkKICAgICAgICAgYnJ1c2ggPSBzdGF0ZS5maWxsR3JhZGllbnQtPmNy
ZWF0ZVBsYXRmb3JtR3JhZGllbnRJZk5lY2Vzc2FyeShwbGF0Zm9ybUNvbnRleHQucmVuZGVyVGFy
Z2V0KCkpOwogICAgIGVsc2UKICAgICAgICAgYnJ1c2ggPSBwbGF0Zm9ybUNvbnRleHQuYnJ1c2hX
aXRoQ29sb3IoY29sb3IpOwogfQogCi1TdHJva2VTb3VyY2U6OlN0cm9rZVNvdXJjZShjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0
Zm9ybUNvbnRleHQpCitTdHJva2VTb3VyY2U6OlN0cm9rZVNvdXJjZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICA6
IGdsb2JhbEFscGhhKHN0YXRlLmFscGhhKQogICAgICwgdGhpY2tuZXNzKHN0YXRlLnN0cm9rZVRo
aWNrbmVzcykKICAgICAsIGNvbG9yKHN0YXRlLnN0cm9rZUNvbG9yKQogeworICAgIEFTU0VSVChj
b250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBhdXRvJiBwbGF0Zm9ybUNvbnRleHQg
PSAqY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKKwogICAgIGlmIChzdGF0ZS5zdHJva2VQYXR0
ZXJuKSB7CiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSB1c2VyVG9CYXNlQ1RNOyAvLyBGSVhNRTog
VGhpcyBpc24ndCByZWFsbHkgbmVlZGVkIG9uIFdpbmRvd3MKLSAgICAgICAgYnJ1c2ggPSBzdGF0
ZS5zdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4ocGxhdGZvcm1Db250ZXh0LCBz
dGF0ZS5hbHBoYSwgdXNlclRvQmFzZUNUTSk7CisgICAgICAgIGJydXNoID0gc3RhdGUuc3Ryb2tl
UGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnRleHQsIHN0YXRlLmFscGhhLCB1c2Vy
VG9CYXNlQ1RNKTsKICAgICB9IGVsc2UgaWYgKHN0YXRlLnN0cm9rZUdyYWRpZW50KQogICAgICAg
ICBicnVzaCA9IHN0YXRlLnN0cm9rZUdyYWRpZW50LT5jcmVhdGVQbGF0Zm9ybUdyYWRpZW50SWZO
ZWNlc3NhcnkocGxhdGZvcm1Db250ZXh0LnJlbmRlclRhcmdldCgpKTsKICAgICBlbHNlCkBAIC0x
MTE2LDExICsxMTIyLDggQEAgdm9pZCBlbmRUcmFuc3BhcmVuY3lMYXllcihQbGF0Zm9ybUNvbnRl
eAogCiB2b2lkIGNsaXAoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmIChwbGF0Zm9ybUNvbnRleHQubV9yZW5k
ZXJTdGF0ZXMuaXNFbXB0eSgpKQotICAgICAgICBzYXZlKHBsYXRmb3JtQ29udGV4dCk7Ci0KICAg
ICBwbGF0Zm9ybUNvbnRleHQucmVuZGVyVGFyZ2V0KCktPlB1c2hBeGlzQWxpZ25lZENsaXAocmVj
dCwgRDJEMV9BTlRJQUxJQVNfTU9ERV9QRVJfUFJJTUlUSVZFKTsKLSAgICBwbGF0Zm9ybUNvbnRl
eHQubV9yZW5kZXJTdGF0ZXMubGFzdCgpLm1fY2xpcHMuYXBwZW5kKFBsYXRmb3JtQ29udGV4dERp
cmVjdDJEOjpBeGlzQWxpZ25lZENsaXApOworICAgIHBsYXRmb3JtQ29udGV4dC5wdXNoQ2xpcChQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRDo6QXhpc0FsaWduZWRDbGlwKTsKIAogICAgIGlmIChhdXRv
KiBncmFwaGljc0NvbnRleHRQcml2YXRlID0gcGxhdGZvcm1Db250ZXh0LmdyYXBoaWNzQ29udGV4
dFByaXZhdGUoKSkKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0UHJpdmF0ZS0+Y2xpcChyZWN0KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJh
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDI1MDE2MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaAkod29ya2luZyBj
b3B5KQpAQCAtNzQsNyArNzQsNyBAQCBib29sIGlzQWNjZWxlcmF0ZWRDb250ZXh0KFBsYXRmb3Jt
Q29udGV4CiAKIHN0cnVjdCBGaWxsU291cmNlIHsKICAgICBGaWxsU291cmNlKCkgPSBkZWZhdWx0
OwotICAgIGV4cGxpY2l0IEZpbGxTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRCYpOworICAgIGV4cGxpY2l0IEZpbGxTb3VyY2UoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIGZs
b2F0IGdsb2JhbEFscGhhIHsgMCB9OwogICAgIENPTVB0cjxJRDJEMUJydXNoPiBicnVzaDsKQEAg
LTg1LDcgKzg1LDcgQEAgc3RydWN0IEZpbGxTb3VyY2UgewogCiBzdHJ1Y3QgU3Ryb2tlU291cmNl
IHsKICAgICBTdHJva2VTb3VyY2UoKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgU3Ryb2tlU291
cmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQm
KTsKKyAgICBleHBsaWNpdCBTdHJva2VTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIGZsb2F0IGdsb2JhbEFscGhhIHsgMCB9
OwogICAgIGZsb2F0IHRoaWNrbmVzcyB7IDAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERp
cmVjdDJELmNwcAkocmV2aXNpb24gMjUwMTYxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTg5LDcgKzU4OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0aChjb25zdCBQ
YXQKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIGF1dG8mIHN0YXRlID0g
dGhpcy0+c3RhdGUoKTsKICAgICBhdXRvJiBjb250ZXh0ID0gKnBsYXRmb3JtQ29udGV4dCgpOwot
ICAgIERpcmVjdDJEOjpkcmF3UGF0aChjb250ZXh0LCBwYXRoLCBEaXJlY3QyRDo6U3Ryb2tlU291
cmNlKHN0YXRlLCBjb250ZXh0KSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAg
RGlyZWN0MkQ6OmRyYXdQYXRoKGNvbnRleHQsIHBhdGgsIERpcmVjdDJEOjpTdHJva2VTb3VyY2Uo
c3RhdGUsICp0aGlzKSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQpAQCAtNjA1LDcgKzYw
NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXQKICAgICBBU1NF
UlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUo
KTsKICAgICBhdXRvJiBjb250ZXh0ID0gKnBsYXRmb3JtQ29udGV4dCgpOwotICAgIERpcmVjdDJE
OjpmaWxsUGF0aChjb250ZXh0LCBwYXRoLCBEaXJlY3QyRDo6RmlsbFNvdXJjZShzdGF0ZSwgY29u
dGV4dCksIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOworICAgIERpcmVjdDJEOjpmaWxs
UGF0aChjb250ZXh0LCBwYXRoLCBEaXJlY3QyRDo6RmlsbFNvdXJjZShzdGF0ZSwgKnRoaXMpLCBE
aXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKQEAgLTYyMSw3ICs2MjEsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQCiAgICAgQVNTRVJUKGhhc1BsYXRmb3Jt
Q29udGV4dCgpKTsKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7CiAgICAgYXV0byYg
Y29udGV4dCA9ICpwbGF0Zm9ybUNvbnRleHQoKTsKLSAgICBEaXJlY3QyRDo6c3Ryb2tlUGF0aChj
b250ZXh0LCBwYXRoLCBEaXJlY3QyRDo6U3Ryb2tlU291cmNlKHN0YXRlLCBjb250ZXh0KSwgRGly
ZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgRGlyZWN0MkQ6OnN0cm9rZVBhdGgoY29u
dGV4dCwgcGF0aCwgRGlyZWN0MkQ6OlN0cm9rZVNvdXJjZShzdGF0ZSwgKnRoaXMpLCBEaXJlY3Qy
RDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTYzNyw3ICs2MzcsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29u
dGV4dCgpKTsKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7CiAgICAgYXV0byYgY29u
dGV4dCA9ICpwbGF0Zm9ybUNvbnRleHQoKTsKLSAgICBEaXJlY3QyRDo6ZmlsbFJlY3QoY29udGV4
dCwgcmVjdCwgRGlyZWN0MkQ6OkZpbGxTb3VyY2Uoc3RhdGUsIGNvbnRleHQpLCBEaXJlY3QyRDo6
U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBEaXJlY3QyRDo6ZmlsbFJlY3QoY29udGV4dCwgcmVj
dCwgRGlyZWN0MkQ6OkZpbGxTb3VyY2Uoc3RhdGUsICp0aGlzKSwgRGlyZWN0MkQ6OlNoYWRvd1N0
YXRlKHN0YXRlKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTY4MSw3ICs2ODEsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlCiAgICAgQVNTRVJUKGhhc1Bs
YXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7CiAgICAg
YXV0byYgY29udGV4dCA9ICpwbGF0Zm9ybUNvbnRleHQoKTsKLSAgICBEaXJlY3QyRDo6ZmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGUoY29udGV4dCwgcmVjdCwgcm91bmRlZEhvbGVSZWN0LCBEaXJlY3Qy
RDo6RmlsbFNvdXJjZShzdGF0ZSwgY29udGV4dCksIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0
ZSkpOworICAgIERpcmVjdDJEOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb250ZXh0LCByZWN0
LCByb3VuZGVkSG9sZVJlY3QsIERpcmVjdDJEOjpGaWxsU291cmNlKHN0YXRlLCAqdGhpcyksIERp
cmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
Y2xpcChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkBAIC04NjEsNyArODYxLDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnN0cm9rZVJlY3QoY29uc3QgRgogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNv
bnRleHQoKSk7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwogICAgIGF1dG8mIGNv
bnRleHQgPSAqcGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgRGlyZWN0MkQ6OnN0cm9rZVJlY3QoY29u
dGV4dCwgcmVjdCwgbGluZVdpZHRoLCBEaXJlY3QyRDo6U3Ryb2tlU291cmNlKHN0YXRlLCBjb250
ZXh0KSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgRGlyZWN0MkQ6OnN0cm9r
ZVJlY3QoY29udGV4dCwgcmVjdCwgbGluZVdpZHRoLCBEaXJlY3QyRDo6U3Ryb2tlU291cmNlKHN0
YXRlLCAqdGhpcyksIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2V0TGluZUNhcChMaW5lQ2FwIGNhcCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNTAxNjEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJE
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0SW1wbERpcmVjdDJEOjpzZXRNaXQKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJE
OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgYXV0byYgc3RhdGUgPSBn
cmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpOwotICAgIERpcmVjdDJEOjpmaWxsUmVjdChtX3BsYXRm
b3JtQ29udGV4dCwgcmVjdCwgRGlyZWN0MkQ6OkZpbGxTb3VyY2Uoc3RhdGUsIG1fcGxhdGZvcm1D
b250ZXh0KSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgRGlyZWN0MkQ6OmZp
bGxSZWN0KG1fcGxhdGZvcm1Db250ZXh0LCByZWN0LCBEaXJlY3QyRDo6RmlsbFNvdXJjZShzdGF0
ZSwgZ3JhcGhpY3NDb250ZXh0KCkpLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpmaWxsUmUKIHsKICAgICBhdXRvJiBzdGF0ZSA9
IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7CiAKLSAgICBEaXJlY3QyRDo6RmlsbFNvdXJjZSBm
aWxsU291cmNlKHN0YXRlLCBtX3BsYXRmb3JtQ29udGV4dCk7CisgICAgRGlyZWN0MkQ6OkZpbGxT
b3VyY2UgZmlsbFNvdXJjZShzdGF0ZSwgZ3JhcGhpY3NDb250ZXh0KCkpOwogICAgIGZpbGxTb3Vy
Y2UuYnJ1c2ggPSBtX3BsYXRmb3JtQ29udGV4dC5icnVzaFdpdGhDb2xvcihjb2xvcik7CiAKICAg
ICBEaXJlY3QyRDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUobV9wbGF0Zm9ybUNvbnRleHQsIHJl
Y3QsIHJvdW5kZWRIb2xlUmVjdCwgZmlsbFNvdXJjZSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKGdy
YXBoaWNzQ29udGV4dCgpLnN0YXRlKCkpKTsKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZmlsbFJlCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxE
aXJlY3QyRDo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIHsKICAgICBhdXRvJiBzdGF0ZSA9
IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7Ci0gICAgRGlyZWN0MkQ6OmZpbGxQYXRoKG1fcGxh
dGZvcm1Db250ZXh0LCBwYXRoLCBEaXJlY3QyRDo6RmlsbFNvdXJjZShzdGF0ZSwgbV9wbGF0Zm9y
bUNvbnRleHQpLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBEaXJlY3QyRDo6
ZmlsbFBhdGgobV9wbGF0Zm9ybUNvbnRleHQsIHBhdGgsIERpcmVjdDJEOjpGaWxsU291cmNlKHN0
YXRlLCBncmFwaGljc0NvbnRleHQoKSksIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZmlsbEVsbGlwc2UoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQpAQCAtMjE0LDEzICsyMTQsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRJbXBsRGlyZWN0MkQ6OmZpbGxFbAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6
OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiB7CiAg
ICAgYXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpOwotICAgIERpcmVjdDJE
OjpzdHJva2VSZWN0KG1fcGxhdGZvcm1Db250ZXh0LCByZWN0LCBsaW5lV2lkdGgsIERpcmVjdDJE
OjpTdHJva2VTb3VyY2Uoc3RhdGUsIG1fcGxhdGZvcm1Db250ZXh0KSwgRGlyZWN0MkQ6OlNoYWRv
d1N0YXRlKHN0YXRlKSk7CisgICAgRGlyZWN0MkQ6OnN0cm9rZVJlY3QobV9wbGF0Zm9ybUNvbnRl
eHQsIHJlY3QsIGxpbmVXaWR0aCwgRGlyZWN0MkQ6OlN0cm9rZVNvdXJjZShzdGF0ZSwgZ3JhcGhp
Y3NDb250ZXh0KCkpLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkK
IHsKICAgICBhdXRvJiBzdGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7Ci0gICAgRGly
ZWN0MkQ6OnN0cm9rZVBhdGgobV9wbGF0Zm9ybUNvbnRleHQsIHBhdGgsIERpcmVjdDJEOjpTdHJv
a2VTb3VyY2Uoc3RhdGUsIG1fcGxhdGZvcm1Db250ZXh0KSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRl
KHN0YXRlKSk7CisgICAgRGlyZWN0MkQ6OnN0cm9rZVBhdGgobV9wbGF0Zm9ybUNvbnRleHQsIHBh
dGgsIERpcmVjdDJEOjpTdHJva2VTb3VyY2Uoc3RhdGUsIGdyYXBoaWNzQ29udGV4dCgpKSwgRGly
ZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1w
bERpcmVjdDJEOjpzdHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTI2Myw3
ICsyNjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd0dsCiAgICAg
ZG91YmxlIHN5bnRoZXRpY0JvbGRPZmZzZXQgPSBmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQoKTsK
IAogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKLSAgICBEaXJl
Y3QyRDo6ZHJhd0dseXBocyhtX3BsYXRmb3JtQ29udGV4dCwgRGlyZWN0MkQ6OkZpbGxTb3VyY2Uo
c3RhdGUsIG1fcGxhdGZvcm1Db250ZXh0KSwgRGlyZWN0MkQ6OlN0cm9rZVNvdXJjZShzdGF0ZSwg
bV9wbGF0Zm9ybUNvbnRleHQpLAorICAgIERpcmVjdDJEOjpkcmF3R2x5cGhzKG1fcGxhdGZvcm1D
b250ZXh0LCBEaXJlY3QyRDo6RmlsbFNvdXJjZShzdGF0ZSwgZ3JhcGhpY3NDb250ZXh0KCkpLCBE
aXJlY3QyRDo6U3Ryb2tlU291cmNlKHN0YXRlLCBncmFwaGljc0NvbnRleHQoKSksCiAgICAgICAg
IERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSksIHBvaW50LCBmb250LCBzeW50aGV0aWNCb2xk
T2Zmc2V0LCBnbHlwaHMsIGhvcml6b250YWxBZHZhbmNlcywgZ2x5cGhPZmZzZXRzLCB4T2Zmc2V0
LAogICAgICAgICBzdGF0ZS50ZXh0RHJhd2luZ01vZGUsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywg
c3RhdGUuc2hhZG93T2Zmc2V0LCBzdGF0ZS5zaGFkb3dDb2xvcik7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI1MDE2MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQyOCw5ICs0MjgsOSBAQCBib29sIEltYWdlQnVmZmVyRGF0YTo6Y29w
eVJlY3RGcm9tU291cmNlCiAgICAgICAgIHJldHVybiBjb3B5UmVjdEZyb21Tb3VyY2VUb0Rlc3Qo
c291cmNlUmVjdCwgc291cmNlUmVjdC5zaXplKCksIHNvdXJjZS5kYXRhKCksIGJhY2tpbmdTdG9y
ZVNpemUsIGRhdGEuZGF0YSgpLCBkZXN0QnVmZmVyUG9zaXRpb24pOwogCiAgICAgaWYgKGJ5dGVG
b3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkKQotICAgICAg
ICBjb3B5UmVjdEZyb21Tb3VyY2VUb0Rlc3RBbmRTZXRQcmVtdWx0aXBsaWNhdGlvbjxBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQ+KHNvdXJjZVJlY3QsIHNvdXJjZVJlY3Qu
c2l6ZSgpLCBzb3VyY2UuZGF0YSgpLCBiYWNraW5nU3RvcmVTaXplLCBkYXRhLmRhdGEoKSwgZGVz
dEJ1ZmZlclBvc2l0aW9uKTsKLSAgICBlbHNlCi0gICAgICAgIGNvcHlSZWN0RnJvbVNvdXJjZVRv
RGVzdEFuZFNldFByZW11bHRpcGxpY2F0aW9uPEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11
bHRpcGxpZWQ+KHNvdXJjZVJlY3QsIHNvdXJjZVJlY3Quc2l6ZSgpLCBzb3VyY2UuZGF0YSgpLCBi
YWNraW5nU3RvcmVTaXplLCBkYXRhLmRhdGEoKSwgZGVzdEJ1ZmZlclBvc2l0aW9uKTsKKyAgICAg
ICAgcmV0dXJuIGNvcHlSZWN0RnJvbVNvdXJjZVRvRGVzdEFuZFNldFByZW11bHRpcGxpY2F0aW9u
PEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZD4oc291cmNlUmVjdCwgc291
cmNlUmVjdC5zaXplKCksIHNvdXJjZS5kYXRhKCksIGJhY2tpbmdTdG9yZVNpemUsIGRhdGEuZGF0
YSgpLCBkZXN0QnVmZmVyUG9zaXRpb24pOworCisgICAgcmV0dXJuIGNvcHlSZWN0RnJvbVNvdXJj
ZVRvRGVzdEFuZFNldFByZW11bHRpcGxpY2F0aW9uPEFscGhhUHJlbXVsdGlwbGljYXRpb246OlBy
ZW11bHRpcGxpZWQ+KHNvdXJjZVJlY3QsIHNvdXJjZVJlY3Quc2l6ZSgpLCBzb3VyY2UuZGF0YSgp
LCBiYWNraW5nU3RvcmVTaXplLCBkYXRhLmRhdGEoKSwgZGVzdEJ1ZmZlclBvc2l0aW9uKTsKIH0K
IAogdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OmxvYWREYXRhVG9CaXRtYXBJZk5lZWRlZCgpCkBAIC00
NzgsOCArNDc4LDIzIEBAIENPTVB0cjxJRDJEMUJpdG1hcD4gSW1hZ2VCdWZmZXJEYXRhOjpjb20K
ICAgICBpZiAoIXJlbmRlclRhcmdldCkKICAgICAgICAgcmV0dXJuIGJpdG1hcDsKIAotICAgIGlm
IChwbGF0Zm9ybUNvbnRleHQtPnJlbmRlclRhcmdldCgpID09IHJlbmRlclRhcmdldCkKLSAgICAg
ICAgcmV0dXJuIGJpdG1hcDsKKyAgICBpZiAocGxhdGZvcm1Db250ZXh0LT5yZW5kZXJUYXJnZXQo
KSA9PSByZW5kZXJUYXJnZXQpIHsKKyAgICAgICAgQ09NUHRyPElEMkQxQml0bWFwUmVuZGVyVGFy
Z2V0PiBiaXRtYXBUYXJnZXQoUXVlcnksIHJlbmRlclRhcmdldCk7CisgICAgICAgIGlmIChiaXRt
YXBUYXJnZXQpIHsKKyAgICAgICAgICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gYmFja2luZ0JpdG1h
cDsKKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQoYml0bWFwVGFyZ2V0LT5HZXRCaXRtYXAoJmJh
Y2tpbmdCaXRtYXApKSkgeworICAgICAgICAgICAgICAgIGlmIChiYWNraW5nQml0bWFwICE9IGJp
dG1hcCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJpdG1hcDsKKworICAgICAgICAgICAg
ICAgIC8vIFdlIGNhbid0IGRyYXcgYW4gSUQyRDFCaXRtYXAgdG8gaXRzZWxmLiBNdXN0IHJldHVy
biBhIGNvcHkuCisgICAgICAgICAgICAgICAgQ09NUHRyPElEMkQxQml0bWFwPiBjb3BpZWRCaXRt
YXA7CisgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChyZW5kZXJUYXJnZXQtPkNyZWF0ZUJp
dG1hcChiaXRtYXAtPkdldFBpeGVsU2l6ZSgpLCBEaXJlY3QyRDo6Yml0bWFwUHJvcGVydGllcygp
LCAmY29waWVkQml0bWFwKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChj
b3BpZWRCaXRtYXAtPkNvcHlGcm9tQml0bWFwKG51bGxwdHIsIGJpdG1hcC5nZXQoKSwgbnVsbHB0
cikpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvcGllZEJpdG1hcDsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAKICAgICBhdXRv
IHNpemUgPSBiaXRtYXAtPkdldFBpeGVsU2l6ZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNwcAko
cmV2aXNpb24gMjUwMTYxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1BhdHRlcm5EaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE0ICszOSw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogSUQyRDFCaXRtYXBCcnVzaCogUGF0dGVybjo6Y3JlYXRlUGxh
dGZvcm1QYXR0ZXJuKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgZmxvYXQgYWxwaGEs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtYXRpb24pIGNvbnN0CiB7
Ci0gICAgYXV0byBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwot
ICAgIFJFTEVBU0VfQVNTRVJUKHBsYXRmb3JtQ29udGV4dCk7Ci0KLSAgICByZXR1cm4gY3JlYXRl
UGxhdGZvcm1QYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQsIGFscGhhLCB1c2VyU3BhY2VUcmFuc2Zv
cm1hdGlvbik7Ci19Ci0KLUlEMkQxQml0bWFwQnJ1c2gqIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3Jt
UGF0dGVybihQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgZmxvYXQgYWxwaGEsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtYXRpb24pIGNvbnN0Ci17CiAg
ICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSB1c2VyU3BhY2VUcmFuc2Zvcm1h
dGlvbiAqIG1fcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb247CiAgICAgYXV0byBiaXRtYXBCcnVz
aFByb3BlcnRpZXMgPSBEMkQxOjpCaXRtYXBCcnVzaFByb3BlcnRpZXMoKTsKICAgICBiaXRtYXBC
cnVzaFByb3BlcnRpZXMuZXh0ZW5kTW9kZVggPSBtX3JlcGVhdFggPyBEMkQxX0VYVEVORF9NT0RF
X1dSQVAgOiBEMkQxX0VYVEVORF9NT0RFX0NMQU1QOwpAQCAtNTcsMTAgKzQ5LDE1IEBAIElEMkQx
Qml0bWFwQnJ1c2gqIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3IKICAgICBicnVzaFByb3BlcnRpZXMu
b3BhY2l0eSA9IGFscGhhOwogCiAgICAgYXV0byYgcGF0dGVybkltYWdlID0gdGlsZUltYWdlKCk7
Ci0gICAgYXV0byBuYXRpdmVJbWFnZSA9IHBhdHRlcm5JbWFnZS5uYXRpdmVJbWFnZShudWxscHRy
KTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gcGF0dGVybkltYWdlLm5hdGl2ZUltYWdlKCZjb250
ZXh0KTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIGF1dG8gcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChwbGF0Zm9ybUNvbnRleHQpOwogCiAgICAgSUQyRDFCaXRtYXBCcnVz
aCogcGF0dGVybkJydXNoID0gbnVsbHB0cjsKLSAgICBIUkVTVUxUIGhyID0gY29udGV4dC5yZW5k
ZXJUYXJnZXQoKS0+Q3JlYXRlQml0bWFwQnJ1c2gobmF0aXZlSW1hZ2UuZ2V0KCksICZiaXRtYXBC
cnVzaFByb3BlcnRpZXMsICZicnVzaFByb3BlcnRpZXMsICZwYXR0ZXJuQnJ1c2gpOworICAgIEhS
RVNVTFQgaHIgPSBwbGF0Zm9ybUNvbnRleHQtPnJlbmRlclRhcmdldCgpLT5DcmVhdGVCaXRtYXBC
cnVzaChuYXRpdmVJbWFnZS5nZXQoKSwgJmJpdG1hcEJydXNoUHJvcGVydGllcywgJmJydXNoUHJv
cGVydGllcywgJnBhdHRlcm5CcnVzaCk7CiAgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOwogICAg
IHJldHVybiBwYXR0ZXJuQnJ1c2g7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3Qy
RC5jcHAJKHJldmlzaW9uIDI1MDE2MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDYgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBsYXRmb3JtQ29udGV4dERp
cmVjdDJEOjpTdGF0ZSB7CiBwdWJsaWM6CiAgICAgU3RhdGUoKSA9IGRlZmF1bHQ7CisKKyAgICBD
T01QdHI8SUQyRDFEcmF3aW5nU3RhdGVCbG9jaz4gbV9kcmF3aW5nU3RhdGVCbG9jazsKKyAgICBD
T01QdHI8SUQyRDFMYXllcj4gbV9hY3RpdmVMYXllcjsKKyAgICBWZWN0b3I8RGlyZWN0MkRMYXll
clR5cGU+IG1fY2xpcHM7CiB9OwogCiBQbGF0Zm9ybUNvbnRleHREaXJlY3QyRDo6UGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCwgV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiYgcHJlRHJhd0hhbmRsZXIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHBv
c3REcmF3SGFuZGxlcikKQEAgLTQ5LDYgKzUzLDIzIEBAIFBsYXRmb3JtQ29udGV4dERpcmVjdDJE
OjpQbGF0Zm9ybUNvbnRleHQKICAgICBtX3N0YXRlID0gJm1fc3RhdGVTdGFjay5sYXN0KCk7CiB9
CiAKK0lEMkQxTGF5ZXIqIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEOjpjbGlwTGF5ZXIoKSBjb25z
dAoreworICAgIHJldHVybiBtX3N0YXRlLT5tX2FjdGl2ZUxheWVyLmdldCgpOworfQorCit2b2lk
IFBsYXRmb3JtQ29udGV4dERpcmVjdDJEOjpjbGVhckNsaXBzKFZlY3RvcjxEaXJlY3QyRExheWVy
VHlwZT4mIGNsaXBzKQoreworICAgIGZvciAoYXV0byBjbGlwVHlwZSA9IGNsaXBzLnJiZWdpbigp
OyBjbGlwVHlwZSAhPSBjbGlwcy5yZW5kKCk7ICsrY2xpcFR5cGUpIHsKKyAgICAgICAgaWYgKCpj
bGlwVHlwZSA9PSBBeGlzQWxpZ25lZENsaXApCisgICAgICAgICAgICBtX3JlbmRlclRhcmdldC0+
UG9wQXhpc0FsaWduZWRDbGlwKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fcmVuZGVy
VGFyZ2V0LT5Qb3BMYXllcigpOworICAgIH0KKworICAgIGNsaXBzLmNsZWFyKCk7Cit9CisKIHZv
aWQgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ6OnJlc3RvcmUoKQogewogICAgIEFTU0VSVChtX3Jl
bmRlclRhcmdldCk7CkBAIC02MCwxOCArODEsMTQgQEAgdm9pZCBQbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRDo6cmVzdG9yZSgpCiAgICAgaWYgKG1fc3RhdGVTdGFjay5zaXplKCkgPT0gMSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX3JlbmRlclN0YXRlcy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgYXV0byByZXN0b3JlU3RhdGUgPSBtX3JlbmRlclN0YXRlcy50YWtlTGFzdCgpOworICAgIGF1
dG8mIHJlc3RvcmVTdGF0ZSA9IG1fc3RhdGVTdGFjay5sYXN0KCk7CisgICAgaWYgKHJlc3RvcmVT
dGF0ZS5tX2RyYXdpbmdTdGF0ZUJsb2NrKSB7CiAgICAgICAgIG1fcmVuZGVyVGFyZ2V0LT5SZXN0
b3JlRHJhd2luZ1N0YXRlKHJlc3RvcmVTdGF0ZS5tX2RyYXdpbmdTdGF0ZUJsb2NrLmdldCgpKTsK
LQotICAgICAgICBmb3IgKGF1dG8gY2xpcFR5cGUgPSByZXN0b3JlU3RhdGUubV9jbGlwcy5yYmVn
aW4oKTsgY2xpcFR5cGUgIT0gcmVzdG9yZVN0YXRlLm1fY2xpcHMucmVuZCgpOyArK2NsaXBUeXBl
KSB7Ci0gICAgICAgICAgICBpZiAoKmNsaXBUeXBlID09IEF4aXNBbGlnbmVkQ2xpcCkKLSAgICAg
ICAgICAgICAgICBtX3JlbmRlclRhcmdldC0+UG9wQXhpc0FsaWduZWRDbGlwKCk7Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9yZW5kZXJUYXJnZXQtPlBvcExheWVyKCk7Ci0g
ICAgICAgIH0KKyAgICAgICAgcmVzdG9yZVN0YXRlLm1fZHJhd2luZ1N0YXRlQmxvY2sgPSBudWxs
cHRyOwogICAgIH0KIAorICAgIGNsZWFyQ2xpcHMocmVzdG9yZVN0YXRlLm1fY2xpcHMpOworCiAg
ICAgbV9zdGF0ZVN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICBBU1NFUlQoIW1fc3RhdGVTdGFjay5p
c0VtcHR5KCkpOwogICAgIG1fc3RhdGUgPSAmbV9zdGF0ZVN0YWNrLmxhc3QoKTsKQEAgLTg3LDI0
ICsxMDQsMjEgQEAgdm9pZCBQbGF0Zm9ybUNvbnRleHREaXJlY3QyRDo6c2F2ZSgpCiAgICAgbV9z
dGF0ZVN0YWNrLmFwcGVuZChTdGF0ZSgpKTsKICAgICBtX3N0YXRlID0gJm1fc3RhdGVTdGFjay5s
YXN0KCk7CiAKLSAgICBSZW5kZXJTdGF0ZSBjdXJyZW50U3RhdGU7Ci0gICAgR3JhcGhpY3NDb250
ZXh0OjpzeXN0ZW1GYWN0b3J5KCktPkNyZWF0ZURyYXdpbmdTdGF0ZUJsb2NrKCZjdXJyZW50U3Rh
dGUubV9kcmF3aW5nU3RhdGVCbG9jayk7Ci0KLSAgICBtX3JlbmRlclRhcmdldC0+U2F2ZURyYXdp
bmdTdGF0ZShjdXJyZW50U3RhdGUubV9kcmF3aW5nU3RhdGVCbG9jay5nZXQoKSk7CisgICAgR3Jh
cGhpY3NDb250ZXh0OjpzeXN0ZW1GYWN0b3J5KCktPkNyZWF0ZURyYXdpbmdTdGF0ZUJsb2NrKCZt
X3N0YXRlLT5tX2RyYXdpbmdTdGF0ZUJsb2NrKTsKIAotICAgIG1fcmVuZGVyU3RhdGVzLmFwcGVu
ZChjdXJyZW50U3RhdGUpOworICAgIG1fcmVuZGVyVGFyZ2V0LT5TYXZlRHJhd2luZ1N0YXRlKG1f
c3RhdGUtPm1fZHJhd2luZ1N0YXRlQmxvY2suZ2V0KCkpOwogfQogCiB2b2lkIFBsYXRmb3JtQ29u
dGV4dERpcmVjdDJEOjpwdXNoUmVuZGVyQ2xpcChEaXJlY3QyRExheWVyVHlwZSBjbGlwVHlwZSkK
IHsKICAgICBBU1NFUlQoaGFzU2F2ZWRTdGF0ZSgpKTsKLSAgICBtX3JlbmRlclN0YXRlcy5sYXN0
KCkubV9jbGlwcy5hcHBlbmQoY2xpcFR5cGUpOworICAgIG1fc3RhdGUtPm1fY2xpcHMuYXBwZW5k
KGNsaXBUeXBlKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNvbnRleHREaXJlY3QyRDo6c2V0QWN0aXZl
TGF5ZXIoQ09NUHRyPElEMkQxTGF5ZXI+JiYgbGF5ZXIpCiB7CiAgICAgQVNTRVJUKGhhc1NhdmVk
U3RhdGUoKSk7Ci0gICAgbV9yZW5kZXJTdGF0ZXMubGFzdCgpLm1fYWN0aXZlTGF5ZXIgPSBsYXll
cjsKKyAgICBtX3N0YXRlLT5tX2FjdGl2ZUxheWVyID0gbGF5ZXI7CiB9CiAKIENPTVB0cjxJRDJE
MVNvbGlkQ29sb3JCcnVzaD4gUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ6OmJydXNoV2l0aENvbG9y
KGNvbnN0IEQyRDFfQ09MT1JfRiYgY29sb3IpCkBAIC0yNjQsOSArMjc4LDExIEBAIHZvaWQgUGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQ6OmVuZERyYXcoKQogewogICAgIEFTU0VSVChtX3JlbmRlclRh
cmdldCk7CiAKLSAgICB3aGlsZSAoIW1fcmVuZGVyU3RhdGVzLmlzRW1wdHkoKSkKKyAgICB3aGls
ZSAobV9zdGF0ZVN0YWNrLnNpemUoKSA+IDEpCiAgICAgICAgIHJlc3RvcmUoKTsKIAorICAgIGNs
ZWFyQ2xpcHMobV9zdGF0ZS0+bV9jbGlwcyk7CisKICAgICBBU1NFUlQobV9zdGF0ZVN0YWNrLnNp
emUoKSA+PSAxKTsKIAogICAgIEQyRDFfVEFHIGZpcnN0LCBzZWNvbmQ7CkBAIC0yOTgsNiArMzE0
LDExIEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ6Om5vdGlmeVBvc3QKICAgICBtX3Bv
c3REcmF3SGFuZGxlcigpOwogfQogCit2b2lkIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEOjpwdXNo
Q2xpcChEaXJlY3QyRExheWVyVHlwZSBjbGlwVHlwZSkKK3sKKyAgICBtX3N0YXRlLT5tX2NsaXBz
LmFwcGVuZChjbGlwVHlwZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIFVTRShESVJFQ1QyRCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oCShyZXZp
c2lvbiAyNTAxNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBw
dWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKiBncmFwaGljc0NvbnRl
eHRQcml2YXRlKCkgeyByZXR1cm4gbV9ncmFwaGljc0NvbnRleHRQcml2YXRlOyB9CiAgICAgdm9p
ZCBzZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZSogZ3JhcGhpY3NDb250ZXh0UHJpdmF0ZSkgeyBtX2dyYXBoaWNzQ29udGV4dFByaXZhdGUgPSBn
cmFwaGljc0NvbnRleHRQcml2YXRlOyB9CiAKLSAgICBJRDJEMUxheWVyKiBjbGlwTGF5ZXIoKSBj
b25zdCB7IHJldHVybiBtX3JlbmRlclN0YXRlcy5sYXN0KCkubV9hY3RpdmVMYXllci5nZXQoKTsg
fQorICAgIElEMkQxTGF5ZXIqIGNsaXBMYXllcigpIGNvbnN0OwogICAgIElEMkQxU3Ryb2tlU3R5
bGUqIHN0cm9rZVN0eWxlKCk7CiAgICAgRDJEMV9TVFJPS0VfU1RZTEVfUFJPUEVSVElFUyBzdHJv
a2VTdHlsZVByb3BlcnRpZXMoKSBjb25zdDsKICAgICBJRDJEMVN0cm9rZVN0eWxlKiBwbGF0Zm9y
bVN0cm9rZVN0eWxlKCkgY29uc3Q7CkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNhdmUoKTsKICAgICB2b2lkIHJlc3RvcmUoKTsKIAotICAgIGJvb2wgaGFzU2F2ZWRTdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuICFtX3JlbmRlclN0YXRlcy5pc0VtcHR5KCk7IH0KKyAgICBib29sIGhh
c1NhdmVkU3RhdGUoKSBjb25zdCB7IHJldHVybiAhbV9zdGF0ZVN0YWNrLmlzRW1wdHkoKTsgfQog
CiAgICAgdm9pZCBiZWdpbkRyYXcoKTsKICAgICB2b2lkIGVuZERyYXcoKTsKQEAgLTgzLDEzICs4
Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlY29tcHV0ZVN0cm9rZVN0eWxlKCk7CiAgICAgZmxv
YXQgc3Ryb2tlVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VUaGlja25lc3M7IH0K
IAotICAgIHN0cnVjdCBSZW5kZXJTdGF0ZSB7Ci0gICAgICAgIENPTVB0cjxJRDJEMURyYXdpbmdT
dGF0ZUJsb2NrPiBtX2RyYXdpbmdTdGF0ZUJsb2NrOwotICAgICAgICBDT01QdHI8SUQyRDFMYXll
cj4gbV9hY3RpdmVMYXllcjsKLSAgICAgICAgVmVjdG9yPERpcmVjdDJETGF5ZXJUeXBlPiBtX2Ns
aXBzOwotICAgIH07Ci0gICAgVmVjdG9yPFJlbmRlclN0YXRlPiBtX3JlbmRlclN0YXRlczsKLQog
ICAgIHN0cnVjdCBUcmFuc3BhcmVuY3lMYXllclN0YXRlIHsKICAgICAgICAgQ09NUHRyPElEMkQx
Qml0bWFwUmVuZGVyVGFyZ2V0PiByZW5kZXJUYXJnZXQ7CiAgICAgICAgIENvbG9yIHNoYWRvd0Nv
bG9yOwpAQCAtMTE3LDcgKzExMCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RpZnlQcmVEcmF3
T2JzZXJ2ZXIoKTsKICAgICB2b2lkIG5vdGlmeVBvc3REcmF3T2JzZXJ2ZXIoKTsKIAorICAgIHZv
aWQgcHVzaENsaXAoRGlyZWN0MkRMYXllclR5cGUpOworCiBwcml2YXRlOgorICAgIHZvaWQgY2xl
YXJDbGlwcyhWZWN0b3I8RGlyZWN0MkRMYXllclR5cGU+Jik7CisKICAgICBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGUqIG1fZ3JhcGhpY3NDb250ZXh0UHJpdmF0ZSB7IG51bGxwdHIgfTsK
IAogICAgIENPTVB0cjxJRDJEMVJlbmRlclRhcmdldD4gbV9yZW5kZXJUYXJnZXQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>