<?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>205255</bug_id>
          
          <creation_ts>2019-12-15 17:48:21 -0800</creation_ts>
          <short_desc>[LFC][IFC] Should use the term collapsed/collapsible instead of trimmed/trimmable</short_desc>
          <delta_ts>2019-12-16 06:40:35 -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>Layout and Rendering</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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1598781</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-12-15 17:48:21 -0800</bug_when>
    <thetext>While trimming is a spec term too, collapsing is a bit closer to spec language.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598782</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-15 17:48:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/57954672&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598784</commentid>
    <comment_count>2</comment_count>
      <attachid>385729</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-12-15 17:56:10 -0800</bug_when>
    <thetext>Created attachment 385729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598857</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-12-16 06:40:35 -0800</bug_when>
    <thetext>Committed r253549: &lt;https://trac.webkit.org/changeset/253549&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385729</attachid>
            <date>2019-12-15 17:56:10 -0800</date>
            <delta_ts>2019-12-15 23:25:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205255-20191215175609.patch</filename>
            <type>text/plain</type>
            <size>33785</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTE0NTdjZDJkMWM5MDll
MDM2NDIxODQzNWQ0NGU5YWFhZmJmYzM5Zi4uOWUxZDNhNWMxM2Y3ZjgyMThjZDNjNTFlZTExMjc0
YjVhNGQ5MmMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE5LTEyLTE1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBTaG91bGQg
dXNlIHRoZSB0ZXJtIGNvbGxhcHNlZC9jb2xsYXBzaWJsZSBpbnN0ZWFkIG9mIHRyaW1tZWQvdHJp
bW1hYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDUyNTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3OTU0NjcyPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoaWxlIHRyaW1taW5nIGlzIGFsc28g
YSBzcGVjIHRlcm0sIGNvbGxhcHNpYmxlIGlzIGNsb3NlciB0byB0aGUgc3BlYyBsYW5ndWFnZS4K
KworICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6c2hvdWxkS2VlcEVuZE9mTGluZVdoaXRlc3Bh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnJlYWtlcjo6YnJlYWtpbmdDb250
ZXh0Rm9ySW5saW5lQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCcmVh
a2VyOjpDb250ZW50OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnJl
YWtlcjo6Q29udGVudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnJl
YWtlcjo6Q29udGVudDo6c2hyaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJy
ZWFrZXI6OkNvbnRlbnQ6OlRyYWlsaW5nQ29sbGFwc2libGVDb250ZW50OjpyZXNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCcmVha2VyOjpDb250ZW50Ojp0cmltKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJyZWFrZXI6OkNvbnRlbnQ6OlRyYWls
aW5nVHJpbW1hYmxlQ29udGVudDo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVCcmVha2VyOjpDb250ZW50Ojpub25Db2xsYXBzaWJsZVdpZHRoIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJyZWFrZXI6OkNvbnRlbnQ6Omhhc1RyYWls
aW5nQ29sbGFwc2libGVDb250ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZUJyZWFrZXI6OkNvbnRlbnQ6OmlzVHJhaWxpbmdDb250ZW50RnVsbHlDb2xsYXBzaWJsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCcmVha2VyOjpDb250ZW50Ojpu
b25UcmltbWFibGVXaWR0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxpbmVCcmVha2VyOjpDb250ZW50OjpoYXNUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnJlYWtlcjo6Q29u
dGVudDo6aXNUcmFpbGluZ0NvbnRlbnRGdWxseVRyaW1tYWJsZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6TGluZUJ1aWxkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpyZW1vdmVUcmFpbGluZ0NvbGxhcHNpYmxlQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpjb2xsZWN0SGFuZ2luZ0Nv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6YXBwZW5kSW5s
aW5lQ29udGFpbmVyRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6
OmFwcGVuZFRleHRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxk
ZXI6OmFwcGVuZE5vblJlcGxhY2VkSW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZUJ1aWxkZXI6OkNvbGxhcHNpYmxlQ29udGVudDo6Q29sbGFwc2libGVDb250ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OkNvbGxhcHNpYmxlQ29udGVu
dDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OkNvbGxh
cHNpYmxlQ29udGVudDo6Y29sbGFwc2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
QnVpbGRlcjo6Q29sbGFwc2libGVDb250ZW50Ojpjb2xsYXBzZVRyYWlsaW5nUnVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OklubGluZUl0ZW1SdW46OmlzQ29sbGFw
c2libGVXaGl0ZXNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1
aWxkZXI6OnJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpUcmltbWFibGVDb250ZW50OjpUcmltbWFi
bGVDb250ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxk
ZXI6OlRyaW1tYWJsZUNvbnRlbnQ6OmFwcGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpUcmltbWFibGVDb250ZW50Ojp0cmltKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OlRyaW1tYWJsZUNvbnRlbnQ6
OnRyaW1UcmFpbGluZ1J1bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okxp
bmVCdWlsZGVyOjpJbmxpbmVJdGVtUnVuOjppc1RyaW1tYWJsZVdoaXRlc3BhY2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWls
ZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjp0cmFpbGluZ0Nv
bGxhcHNpYmxlV2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVp
bGRlcjo6aXNUcmFpbGluZ1J1bkZ1bGx5Q29sbGFwc2libGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6Q29sbGFwc2libGVDb250ZW50Ojppc1RyYWlsaW5n
UnVuRnVsbHlDb2xsYXBzaWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okxp
bmVCdWlsZGVyOjpDb2xsYXBzaWJsZUNvbnRlbnQ6OmlzVHJhaWxpbmdSdW5QYXJ0aWFsbHlDb2xs
YXBzaWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpD
b2xsYXBzaWJsZUNvbnRlbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZUJ1aWxkZXI6OnRyYWlsaW5nVHJpbW1hYmxlV2lkdGggY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6aXNUcmFpbGluZ1J1bkZ1bGx5VHJpbW1h
YmxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxk
ZXI6OlRyaW1tYWJsZUNvbnRlbnQ6OndpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OlRyaW1tYWJsZUNvbnRlbnQ6OmZpcnN0UnVuSW5k
ZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6VHJp
bW1hYmxlQ29udGVudDo6aXNFbXB0eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpUcmltbWFibGVDb250ZW50Ojppc1RyYWlsaW5nUnVuRnVs
bHlUcmltbWFibGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpM
aW5lQnVpbGRlcjo6VHJpbW1hYmxlQ29udGVudDo6aXNUcmFpbGluZ1J1blBhcnRpYWxseVRyaW1t
YWJsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWls
ZGVyOjpUcmltbWFibGVDb250ZW50OjpyZXNldCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lTGF5b3V0Q29udGV4dDo6cGxhY2VJbmxpbmVJdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUxheW91dENvbnRleHQ6OnByb2Nlc3NVbmNvbW1pdHRlZENv
bnRlbnQpOgorCiAyMDE5LTEyLTE1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0xGQ11bSUZDXSBBZGQgYmFzaWMgc3VwcG9ydCBmb3IgaGFuZ2luZyBjb250ZW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVMaW5lQnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lQnJlYWtlci5jcHAKaW5kZXggNWUzNWU2MWI5NDA4ZGEyNGJkNDlkYTM3ZWZk
MzAyNTVjNDkyN2MwZS4uYmMzMmI0YWY4ZWU4OGRmNGFmYTdjMGRlOTFiNDY4OTYxODMxNWJmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZUJyZWFrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUxpbmVCcmVha2VyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgc2hvdWxkS2VlcEVuZE9mTGluZVdoaXRlc3BhY2UoY29uc3QgTGluZUJyZWFrZXI6OkNv
bnRlbnQmIGNhbgogewogICAgIC8vIEdyYWIgdGhlIHN0eWxlIGFuZCBjaGVjayBmb3Igd2hpdGUt
c3BhY2UgcHJvcGVydHkgdG8gZGVjaWRlZCB3aGV0aGVyIHdlIHNob3VsZCBsZXQgdGhpcyB3aGl0
ZXNwYWNlIGNvbnRlbnQgb3ZlcmZsb3cgdGhlIGN1cnJlbnQgbGluZS4KICAgICAvLyBOb3RlIHRo
YXQgdGhlICJrZWVwIiBpbiB0aGUgY29udGV4dCBtZWFucyB3ZSBsZXQgdGhlIHdoaXRlc3BhY2Ug
Y29udGVudCBzaXQgb24gdGhlIGN1cnJlbnQgbGluZS4KLSAgICAvLyBJdCBtaWdodCB2ZXJ5IHdl
bGwgZ2V0IHRyaW1tZWQgd2hlbiB3ZSBjbG9zZSB0aGUgbGluZSAobm9ybWFsL25vd3JhcC9wcmUt
bGluZSkuCisgICAgLy8gSXQgbWlnaHQgdmVyeSB3ZWxsIGdldCBjb2xsYXBzZWQgd2hlbiB3ZSBj
bG9zZSB0aGUgbGluZSAobm9ybWFsL25vd3JhcC9wcmUtbGluZSkuCiAgICAgLy8gU2VlIGh0dHBz
Oi8vd3d3LnczLm9yZy9UUi9jc3MtdGV4dC0zLyN3aGl0ZS1zcGFjZS1wcm9wZXJ0eQogICAgIGF1
dG8gd2hpdGVzcGFjZSA9IGNhbmRpZGF0ZVJ1bnMucnVucygpWypjYW5kaWRhdGVSdW5zLmZpcnN0
VGV4dFJ1bkluZGV4KCldLmlubGluZUl0ZW0uc3R5bGUoKS53aGl0ZVNwYWNlKCk7CiAgICAgcmV0
dXJuIHdoaXRlc3BhY2UgPT0gV2hpdGVTcGFjZTo6Tm9ybWFsIHx8IHdoaXRlc3BhY2UgPT0gV2hp
dGVTcGFjZTo6Tm9XcmFwIHx8IHdoaXRlc3BhY2UgPT0gV2hpdGVTcGFjZTo6UHJlV3JhcCB8fCB3
aGl0ZXNwYWNlID09IFdoaXRlU3BhY2U6OlByZUxpbmU7CkBAIC04MywxOSArODMsMTkgQEAgTGlu
ZUJyZWFrZXI6OkJyZWFraW5nQ29udGV4dCBMaW5lQnJlYWtlcjo6YnJlYWtpbmdDb250ZXh0Rm9y
SW5saW5lQ29udGVudChjb25zdAogICAgIEFTU0VSVCghY2FuZGlkYXRlUnVucy5pc0VtcHR5KCkp
OwogICAgIGlmIChjYW5kaWRhdGVSdW5zLndpZHRoKCkgPD0gbGluZVN0YXR1cy5hdmFpbGFibGVX
aWR0aCkKICAgICAgICAgcmV0dXJuIHsgQnJlYWtpbmdDb250ZXh0OjpDb250ZW50V3JhcHBpbmdS
dWxlOjpLZWVwLCB7IH0gfTsKLSAgICBpZiAoY2FuZGlkYXRlUnVucy5oYXNUcmFpbGluZ1RyaW1t
YWJsZUNvbnRlbnQoKSkgewotICAgICAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGUgY29udGVudCBm
aXRzIHdpdGhvdXQgdGhlIHRyYWlsaW5nIHRyaW1tYWJsZSBwYXJ0LgotICAgICAgICBpZiAoY2Fu
ZGlkYXRlUnVucy5ub25UcmltbWFibGVXaWR0aCgpIDw9IGxpbmVTdGF0dXMuYXZhaWxhYmxlV2lk
dGgpCisgICAgaWYgKGNhbmRpZGF0ZVJ1bnMuaGFzVHJhaWxpbmdDb2xsYXBzaWJsZUNvbnRlbnQo
KSkgeworICAgICAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGUgY29udGVudCBmaXRzIHdpdGhvdXQg
dGhlIHRyYWlsaW5nIGNvbGxhcHNpYmxlIHBhcnQuCisgICAgICAgIGlmIChjYW5kaWRhdGVSdW5z
Lm5vbkNvbGxhcHNpYmxlV2lkdGgoKSA8PSBsaW5lU3RhdHVzLmF2YWlsYWJsZVdpZHRoKQogICAg
ICAgICAgICAgcmV0dXJuIHsgQnJlYWtpbmdDb250ZXh0OjpDb250ZW50V3JhcHBpbmdSdWxlOjpL
ZWVwLCB7IH0gfTsKICAgICAgICAgLy8gTm93IGNoZWNrIGlmIHdlIGNhbiB0cmltIHRoZSBsaW5l
IHRvby4KLSAgICAgICAgaWYgKGxpbmVTdGF0dXMubGluZUhhc0Z1bGx5VHJpbW1hYmxlVHJhaWxp
bmdSdW4gJiYgY2FuZGlkYXRlUnVucy5pc1RyYWlsaW5nQ29udGVudEZ1bGx5VHJpbW1hYmxlKCkp
IHsKLSAgICAgICAgICAgIC8vIElmIHRoaXMgbmV3IGNvbnRlbnQgaXMgZnVsbHkgdHJpbW1hYmxl
LCBpdCBzaG91ZCBzdXJlbHkgZml0LgorICAgICAgICBpZiAobGluZVN0YXR1cy5saW5lSGFzRnVs
bHlDb2xsYXBzaWJsZVRyYWlsaW5nUnVuICYmIGNhbmRpZGF0ZVJ1bnMuaXNUcmFpbGluZ0NvbnRl
bnRGdWxseUNvbGxhcHNpYmxlKCkpIHsKKyAgICAgICAgICAgIC8vIElmIHRoaXMgbmV3IGNvbnRl
bnQgaXMgZnVsbHkgY29sbGFwc2libGUsIGl0IHNob3VkIHN1cmVseSBmaXQuCiAgICAgICAgICAg
ICByZXR1cm4geyBCcmVha2luZ0NvbnRleHQ6OkNvbnRlbnRXcmFwcGluZ1J1bGU6OktlZXAsIHsg
fSB9OwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChsaW5lU3RhdHVzLnRyaW1tYWJsZVdpZHRo
ICYmIGNhbmRpZGF0ZVJ1bnMuaGFzTm9uQ29udGVudFJ1bnNPbmx5KCkpIHsKLSAgICAgICAgLy8g
TGV0J3Mgc2VlIGlmIHRoZSBub24tY29udGVudCBydW5zIGZpdCB3aGVuIHRoZSBsaW5lIGhhcyB0
cmFpbGluZyB0cmltbWFibGUgY29udGVudAotICAgICAgICAvLyAidGV4dCBjb250ZW50IDxzcGFu
IHN0eWxlPSJwYWRkaW5nOiAxcHgiPjwvc3Bhbj4iIDwtIHRoZSA8c3Bhbj48L3NwYW4+IHJ1bnMg
Y291bGQgZml0IGFmdGVyIHRyaW1taW5nIHRoZSB0cmFpbGluZyB3aGl0ZXNwYWNlLgotICAgICAg
ICBpZiAoY2FuZGlkYXRlUnVucy53aWR0aCgpIDw9IGxpbmVTdGF0dXMuYXZhaWxhYmxlV2lkdGgg
KyBsaW5lU3RhdHVzLnRyaW1tYWJsZVdpZHRoKQorICAgIH0gZWxzZSBpZiAobGluZVN0YXR1cy5j
b2xsYXBzaWJsZVdpZHRoICYmIGNhbmRpZGF0ZVJ1bnMuaGFzTm9uQ29udGVudFJ1bnNPbmx5KCkp
IHsKKyAgICAgICAgLy8gTGV0J3Mgc2VlIGlmIHRoZSBub24tY29udGVudCBydW5zIGZpdCB3aGVu
IHRoZSBsaW5lIGhhcyB0cmFpbGluZyBjb2xsYXBzaWJsZSBjb250ZW50CisgICAgICAgIC8vICJ0
ZXh0IGNvbnRlbnQgPHNwYW4gc3R5bGU9InBhZGRpbmc6IDFweCI+PC9zcGFuPiIgPC0gdGhlIDxz
cGFuPjwvc3Bhbj4gcnVucyBjb3VsZCBmaXQgYWZ0ZXIgY29sbGFwc2luZyB0aGUgdHJhaWxpbmcg
d2hpdGVzcGFjZS4KKyAgICAgICAgaWYgKGNhbmRpZGF0ZVJ1bnMud2lkdGgoKSA8PSBsaW5lU3Rh
dHVzLmF2YWlsYWJsZVdpZHRoICsgbGluZVN0YXR1cy5jb2xsYXBzaWJsZVdpZHRoKQogICAgICAg
ICAgICAgcmV0dXJuIHsgQnJlYWtpbmdDb250ZXh0OjpDb250ZW50V3JhcHBpbmdSdWxlOjpLZWVw
LCB7IH0gfTsKICAgICB9CiAgICAgaWYgKGNhbmRpZGF0ZVJ1bnMuaXNWaXN1YWxseUVtcHR5V2hp
dGVzcGFjZUNvbnRlbnRPbmx5KCkgJiYgc2hvdWxkS2VlcEVuZE9mTGluZVdoaXRlc3BhY2UoY2Fu
ZGlkYXRlUnVucykpIHsKQEAgLTM3MiwzMyArMzcyLDMzIEBAIHZvaWQgTGluZUJyZWFrZXI6OkNv
bnRlbnQ6OmFwcGVuZChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBJbmxpbmVMYXlvdXRV
bml0CiAgICAgQVNTRVJUKGlubGluZUl0ZW0uaXNMaW5lQnJlYWsoKSB8fCAhaXNBdFNvZnRXcmFw
T3Bwb3J0dW5pdHkoaW5saW5lSXRlbSwgKnRoaXMpKTsKICAgICBtX2NvbnRpbm91c1J1bnMuYXBw
ZW5kKHsgaW5saW5lSXRlbSwgbG9naWNhbFdpZHRoIH0pOwogICAgIG1fd2lkdGggKz0gbG9naWNh
bFdpZHRoOwotICAgIC8vIEZpZ3VyZSBvdXQgdGhlIHRyYWlsaW5nIHRyaW1tYWJsZSBzdGF0ZS4K
KyAgICAvLyBGaWd1cmUgb3V0IHRoZSB0cmFpbGluZyBjb2xsYXBzaWJsZSBzdGF0ZS4KICAgICBp
ZiAoaW5saW5lSXRlbS5pc0JveCgpIHx8IGlubGluZUl0ZW0uaXNMaW5lQnJlYWsoKSkKLSAgICAg
ICAgbV90cmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQucmVzZXQoKTsKKyAgICAgICAgbV90cmFpbGlu
Z0NvbGxhcHNpYmxlQ29udGVudC5yZXNldCgpOwogICAgIGVsc2UgaWYgKGlubGluZUl0ZW0uaXNU
ZXh0KCkpIHsKICAgICAgICAgYXV0byYgaW5saW5lVGV4dEl0ZW0gPSBkb3duY2FzdDxJbmxpbmVU
ZXh0SXRlbT4oaW5saW5lSXRlbSk7Ci0gICAgICAgIGF1dG8gaXNGdWxseVRyaW1tYWJsZSA9IFsm
XSB7CisgICAgICAgIGF1dG8gaXNGdWxseUNvbGxhcHNpYmxlID0gWyZdIHsKICAgICAgICAgICAg
IHJldHVybiBpbmxpbmVUZXh0SXRlbS5pc1doaXRlc3BhY2UoKSAmJiAhVGV4dFV0aWw6OnNob3Vs
ZFByZXNlcnZlVHJhaWxpbmdXaGl0ZXNwYWNlKGlubGluZVRleHRJdGVtLnN0eWxlKCkpOwogICAg
ICAgICB9OwotICAgICAgICBpZiAoaXNGdWxseVRyaW1tYWJsZSgpKSB7Ci0gICAgICAgICAgICBt
X3RyYWlsaW5nVHJpbW1hYmxlQ29udGVudC53aWR0aCArPSBsb2dpY2FsV2lkdGg7Ci0gICAgICAg
ICAgICBtX3RyYWlsaW5nVHJpbW1hYmxlQ29udGVudC5pc0Z1bGx5VHJpbW1hYmxlID0gdHJ1ZTsK
LSAgICAgICAgfSBlbHNlIGlmIChhdXRvIHRyaW1tYWJsZVdpZHRoID0gaW5saW5lVGV4dEl0ZW0u
c3R5bGUoKS5sZXR0ZXJTcGFjaW5nKCkpIHsKLSAgICAgICAgICAgIG1fdHJhaWxpbmdUcmltbWFi
bGVDb250ZW50LndpZHRoID0gdHJpbW1hYmxlV2lkdGg7Ci0gICAgICAgICAgICBtX3RyYWlsaW5n
VHJpbW1hYmxlQ29udGVudC5pc0Z1bGx5VHJpbW1hYmxlID0gZmFsc2U7CisgICAgICAgIGlmIChp
c0Z1bGx5Q29sbGFwc2libGUoKSkgeworICAgICAgICAgICAgbV90cmFpbGluZ0NvbGxhcHNpYmxl
Q29udGVudC53aWR0aCArPSBsb2dpY2FsV2lkdGg7CisgICAgICAgICAgICBtX3RyYWlsaW5nQ29s
bGFwc2libGVDb250ZW50LmlzRnVsbHlDb2xsYXBzaWJsZSA9IHRydWU7CisgICAgICAgIH0gZWxz
ZSBpZiAoYXV0byBjb2xsYXBzaWJsZVdpZHRoID0gaW5saW5lVGV4dEl0ZW0uc3R5bGUoKS5sZXR0
ZXJTcGFjaW5nKCkpIHsKKyAgICAgICAgICAgIG1fdHJhaWxpbmdDb2xsYXBzaWJsZUNvbnRlbnQu
d2lkdGggPSBjb2xsYXBzaWJsZVdpZHRoOworICAgICAgICAgICAgbV90cmFpbGluZ0NvbGxhcHNp
YmxlQ29udGVudC5pc0Z1bGx5Q29sbGFwc2libGUgPSBmYWxzZTsKICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBtX3RyYWlsaW5nVHJpbW1hYmxlQ29udGVudC5yZXNldCgpOworICAgICAgICAg
ICAgbV90cmFpbGluZ0NvbGxhcHNpYmxlQ29udGVudC5yZXNldCgpOwogICAgIH0KIH0KIAogdm9p
ZCBMaW5lQnJlYWtlcjo6Q29udGVudDo6cmVzZXQoKQogewogICAgIG1fY29udGlub3VzUnVucy5j
bGVhcigpOwotICAgIG1fdHJhaWxpbmdUcmltbWFibGVDb250ZW50LnJlc2V0KCk7CisgICAgbV90
cmFpbGluZ0NvbGxhcHNpYmxlQ29udGVudC5yZXNldCgpOwogICAgIG1fd2lkdGggPSAwX2x1Owog
fQogCi12b2lkIExpbmVCcmVha2VyOjpDb250ZW50Ojp0cmltKHVuc2lnbmVkIG5ld1NpemUpCit2
b2lkIExpbmVCcmVha2VyOjpDb250ZW50OjpzaHJpbmsodW5zaWduZWQgbmV3U2l6ZSkKIHsKICAg
ICBmb3IgKGF1dG8gaSA9IG1fY29udGlub3VzUnVucy5zaXplKCk7IGktLTspCiAgICAgICAgIG1f
d2lkdGggLT0gbV9jb250aW5vdXNSdW5zW2ldLmxvZ2ljYWxXaWR0aDsKQEAgLTQ1NCw5ICs0NTQs
OSBAQCBib29sIExpbmVCcmVha2VyOjpDb250ZW50OjpoYXNOb25Db250ZW50UnVuc09ubHkoKSBj
b25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIExpbmVCcmVha2VyOjpDb250ZW50OjpU
cmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQ6OnJlc2V0KCkKK3ZvaWQgTGluZUJyZWFrZXI6OkNvbnRl
bnQ6OlRyYWlsaW5nQ29sbGFwc2libGVDb250ZW50OjpyZXNldCgpCiB7Ci0gICAgaXNGdWxseVRy
aW1tYWJsZSA9IGZhbHNlOworICAgIGlzRnVsbHlDb2xsYXBzaWJsZSA9IGZhbHNlOwogICAgIHdp
ZHRoID0gMF9sdTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmgKaW5kZXggZmFjNDQ5MjUxYWFjZjBl
NTYwNzIyZWZhYjk5YjVlMzViYzZiYjVhYS4uNmFkMTNiZDFjNTc3ZGUzM2JhZGFhZmJmOWMyMGJm
ODUzMjU1ZDQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZUJyZWFrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnJlYWtlci5oCkBAIC02OCw3ICs2OCw3IEBAIHB1Ymxp
YzoKICAgICBzdHJ1Y3QgQ29udGVudCB7CiAgICAgICAgIHZvaWQgYXBwZW5kKGNvbnN0IElubGlu
ZUl0ZW0mLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIHZvaWQgcmVz
ZXQoKTsKLSAgICAgICAgdm9pZCB0cmltKHVuc2lnbmVkIG5ld1NpemUpOworICAgICAgICB2b2lk
IHNocmluayh1bnNpZ25lZCBuZXdTaXplKTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBpc0F0U29m
dFdyYXBPcHBvcnR1bml0eShjb25zdCBJbmxpbmVJdGVtJiwgY29uc3QgQ29udGVudCYgcHJpb3JD
b250ZW50KTsKIApAQCAtODYsMjkgKzg2LDI5IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBoYXNO
b25Db250ZW50UnVuc09ubHkoKSBjb25zdDsKICAgICAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGlub3VzUnVucy5zaXplKCk7IH0KICAgICAgICAgSW5saW5lTGF5b3V0
VW5pdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KLSAgICAgICAgSW5saW5lTGF5
b3V0VW5pdCBub25UcmltbWFibGVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGggLSBtX3Ry
YWlsaW5nVHJpbW1hYmxlQ29udGVudC53aWR0aDsgfQorICAgICAgICBJbmxpbmVMYXlvdXRVbml0
IG5vbkNvbGxhcHNpYmxlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoIC0gbV90cmFpbGlu
Z0NvbGxhcHNpYmxlQ29udGVudC53aWR0aDsgfQogCi0gICAgICAgIGJvb2wgaGFzVHJhaWxpbmdU
cmltbWFibGVDb250ZW50KCkgY29uc3QgeyByZXR1cm4gISFtX3RyYWlsaW5nVHJpbW1hYmxlQ29u
dGVudC53aWR0aDsgfQotICAgICAgICBib29sIGlzVHJhaWxpbmdDb250ZW50RnVsbHlUcmltbWFi
bGUoKSBjb25zdCB7IHJldHVybiBtX3RyYWlsaW5nVHJpbW1hYmxlQ29udGVudC5pc0Z1bGx5VHJp
bW1hYmxlOyB9CisgICAgICAgIGJvb2wgaGFzVHJhaWxpbmdDb2xsYXBzaWJsZUNvbnRlbnQoKSBj
b25zdCB7IHJldHVybiAhIW1fdHJhaWxpbmdDb2xsYXBzaWJsZUNvbnRlbnQud2lkdGg7IH0KKyAg
ICAgICAgYm9vbCBpc1RyYWlsaW5nQ29udGVudEZ1bGx5Q29sbGFwc2libGUoKSBjb25zdCB7IHJl
dHVybiBtX3RyYWlsaW5nQ29sbGFwc2libGVDb250ZW50LmlzRnVsbHlDb2xsYXBzaWJsZTsgfQog
CiAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBmaXJzdFRleHRSdW5JbmRleCgpIGNvbnN0Owog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgUnVuTGlzdCBtX2NvbnRpbm91c1J1bnM7Ci0gICAgICAg
IHN0cnVjdCBUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQgeworICAgICAgICBzdHJ1Y3QgVHJhaWxp
bmdDb2xsYXBzaWJsZUNvbnRlbnQgewogICAgICAgICAgICAgdm9pZCByZXNldCgpOwogCi0gICAg
ICAgICAgICBib29sIGlzRnVsbHlUcmltbWFibGUgeyBmYWxzZSB9OworICAgICAgICAgICAgYm9v
bCBpc0Z1bGx5Q29sbGFwc2libGUgeyBmYWxzZSB9OwogICAgICAgICAgICAgSW5saW5lTGF5b3V0
VW5pdCB3aWR0aCB7IDAgfTsKICAgICAgICAgfTsKLSAgICAgICAgVHJhaWxpbmdUcmltbWFibGVD
b250ZW50IG1fdHJhaWxpbmdUcmltbWFibGVDb250ZW50OworICAgICAgICBUcmFpbGluZ0NvbGxh
cHNpYmxlQ29udGVudCBtX3RyYWlsaW5nQ29sbGFwc2libGVDb250ZW50OwogICAgICAgICBJbmxp
bmVMYXlvdXRVbml0IG1fd2lkdGggeyAwIH07CiAgICAgfTsKIAogICAgIHN0cnVjdCBMaW5lU3Rh
dHVzIHsKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCB7IDAgfTsKLSAg
ICAgICAgSW5saW5lTGF5b3V0VW5pdCB0cmltbWFibGVXaWR0aCB7IDAgfTsKLSAgICAgICAgYm9v
bCBsaW5lSGFzRnVsbHlUcmltbWFibGVUcmFpbGluZ1J1biB7IGZhbHNlIH07CisgICAgICAgIElu
bGluZUxheW91dFVuaXQgY29sbGFwc2libGVXaWR0aCB7IDAgfTsKKyAgICAgICAgYm9vbCBsaW5l
SGFzRnVsbHlDb2xsYXBzaWJsZVRyYWlsaW5nUnVuIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBs
aW5lSXNFbXB0eSB7IHRydWUgfTsKICAgICB9OwogICAgIEJyZWFraW5nQ29udGV4dCBicmVha2lu
Z0NvbnRleHRGb3JJbmxpbmVDb250ZW50KGNvbnN0IENvbnRlbnQmIGNhbmRpZGF0ZVJ1bnMsIGNv
bnN0IExpbmVTdGF0dXMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA0ODc4Y2RkNDk4
ZGVjNWU5OWZhYWQ2ZDU2ZjViYTY0MjE2ZDgzODU3Li42MmExMTI2NWQ2ZDU4MjMxZjc2NWNlZmFk
NWQ0NzBkNzc1OWE0YjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCkBAIC0xNjAsNyArMTYw
LDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6UnVuOjpzZXRDb21wdXRlZEhvcml6b250YWxFeHBhbnNp
b24oSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsRXgKIAogTGluZUJ1aWxkZXI6OkxpbmVCdWlsZGVy
KGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwg
T3B0aW9uYWw8VGV4dEFsaWduTW9kZT4gaG9yaXpvbnRhbEFsaWdubWVudCwgU2tpcEFsaWdubWVu
dCBza2lwQWxpZ25tZW50KQogICAgIDogbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dChpbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCkKLSAgICAsIG1fdHJpbW1hYmxlQ29udGVudChtX2lubGluZUl0ZW1S
dW5zKQorICAgICwgbV9jb2xsYXBzaWJsZUNvbnRlbnQobV9pbmxpbmVJdGVtUnVucykKICAgICAs
IG1faG9yaXpvbnRhbEFsaWdubWVudChob3Jpem9udGFsQWxpZ25tZW50KQogICAgICwgbV9za2lw
QWxpZ25tZW50KHNraXBBbGlnbm1lbnQgPT0gU2tpcEFsaWdubWVudDo6WWVzKQogewpAQCAtMTkw
LDkgKzE5MCw5IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmluaXRpYWxpemUoY29uc3QgQ29uc3RyYWlu
dHMmIGNvbnN0cmFpbnRzKQogICAgIG1faGFzSW50cnVzaXZlRmxvYXQgPSBjb25zdHJhaW50cy5s
aW5lSXNDb25zdHJhaW5lZEJ5RmxvYXQ7CiAKICAgICBtX2lubGluZUl0ZW1SdW5zLmNsZWFyKCk7
Ci0gICAgbV90cmltbWFibGVDb250ZW50LnJlc2V0KCk7CisgICAgbV9jb2xsYXBzaWJsZUNvbnRl
bnQucmVzZXQoKTsKICAgICBtX2hhbmdpbmdDb250ZW50LnJlc2V0KCk7Ci0gICAgbV9saW5lSXNW
aXN1YWxseUVtcHR5QmVmb3JlVHJpbW1hYmxlQ29udGVudCA9IHsgfTsKKyAgICBtX2xpbmVJc1Zp
c3VhbGx5RW1wdHlCZWZvcmVDb2xsYXBzaWJsZUNvbnRlbnQgPSB7IH07CiB9CiAKIHN0YXRpYyBi
b29sIHNob3VsZFByZXNlcnZlTGVhZGluZ0NvbnRlbnQoY29uc3QgSW5saW5lVGV4dEl0ZW0mIGlu
bGluZVRleHRJdGVtKQpAQCAtMjA1LDEwICsyMDUsMTAgQEAgc3RhdGljIGJvb2wgc2hvdWxkUHJl
c2VydmVMZWFkaW5nQ29udGVudChjb25zdCBJbmxpbmVUZXh0SXRlbSYgaW5saW5lVGV4dEl0ZW0p
CiAKIExpbmVCdWlsZGVyOjpSdW5MaXN0IExpbmVCdWlsZGVyOjpjbG9zZShJc0xhc3RMaW5lV2l0
aElubGluZUNvbnRlbnQgaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KQogewotICAgIC8vIDEu
IFJlbW92ZSB0cmltbWFibGUgdHJhaWxpbmcgY29udGVudC4KKyAgICAvLyAxLiBSZW1vdmUgY29s
bGFwc2libGUgdHJhaWxpbmcgY29udGVudC4KICAgICAvLyAyLiBKb2luIHRleHQgcnVucyB0b2dl
dGhlciB3aGVuIHBvc3NpYmxlIFtmb29dWyBdW2Jhcl0gLT4gW2ZvbyBiYXJdLgogICAgIC8vIDMu
IEFsaWduIG1lcmdlZCBydW5zIGJvdGggdmVydGljYWxseSBhbmQgaG9yaXpvbnRhbGx5LgotICAg
IHJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCgpOworICAgIHJlbW92ZVRyYWlsaW5nQ29s
bGFwc2libGVDb250ZW50KCk7CiAgICAgY29sbGVjdEhhbmdpbmdDb250ZW50KGlzTGFzdExpbmVX
aXRoSW5saW5lQ29udGVudCk7CiAgICAgUnVuTGlzdCBydW5MaXN0OwogICAgIHVuc2lnbmVkIHJ1
bkluZGV4ID0gMDsKQEAgLTM3MiwxNiArMzcyLDE2IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmFsaWdu
Q29udGVudEhvcml6b250YWxseShSdW5MaXN0JiBydW5MaXN0LCBJc0xhc3RMaW5lV2l0aElubGlu
CiAgICAgICAgIHJ1bi5tb3ZlSG9yaXpvbnRhbGx5KCphZGp1c3RtZW50KTsKIH0KIAotdm9pZCBM
aW5lQnVpbGRlcjo6cmVtb3ZlVHJhaWxpbmdUcmltbWFibGVDb250ZW50KCkKK3ZvaWQgTGluZUJ1
aWxkZXI6OnJlbW92ZVRyYWlsaW5nQ29sbGFwc2libGVDb250ZW50KCkKIHsKLSAgICBpZiAobV90
cmltbWFibGVDb250ZW50LmlzRW1wdHkoKSB8fCBtX2lubGluZUl0ZW1SdW5zLmlzRW1wdHkoKSkK
KyAgICBpZiAobV9jb2xsYXBzaWJsZUNvbnRlbnQuaXNFbXB0eSgpIHx8IG1faW5saW5lSXRlbVJ1
bnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2xpbmVCb3guc2hyaW5rSG9y
aXpvbnRhbGx5KG1fdHJpbW1hYmxlQ29udGVudC50cmltKCkpOwotICAgIC8vIElmIHdlIHRyaW1t
ZWQgdGhlIGZpcnN0IHZpc2libGUgcnVuIG9uIHRoZSBsaW5lLCB3ZSBuZWVkIHRvIHJlLWNoZWNr
IHRoZSB2aXNpYmlsaXR5IHN0YXR1cy4KLSAgICBpZiAoIW1fbGluZUlzVmlzdWFsbHlFbXB0eUJl
Zm9yZVRyaW1tYWJsZUNvbnRlbnQpCisgICAgbV9saW5lQm94LnNocmlua0hvcml6b250YWxseSht
X2NvbGxhcHNpYmxlQ29udGVudC5jb2xsYXBzZSgpKTsKKyAgICAvLyBJZiB3ZSBjb2xsYXBzZWQg
dGhlIGZpcnN0IHZpc2libGUgcnVuIG9uIHRoZSBsaW5lLCB3ZSBuZWVkIHRvIHJlLWNoZWNrIHRo
ZSB2aXNpYmlsaXR5IHN0YXR1cy4KKyAgICBpZiAoIW1fbGluZUlzVmlzdWFsbHlFbXB0eUJlZm9y
ZUNvbGxhcHNpYmxlQ29udGVudCkKICAgICAgICAgcmV0dXJuOwotICAgIC8vIEp1c3QgYmVjYXVz
ZSB0aGUgbGluZSB3YXMgdmlzdWFsbHkgZW1wdHkgYmVmb3JlIHRoZSB0cmltbWVkIGNvbnRlbnQs
IGl0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gaXQgaXMgc3RpbGwgdmlzdWFsbHkgZW1wdHku
CisgICAgLy8gSnVzdCBiZWNhdXNlIHRoZSBsaW5lIHdhcyB2aXN1YWxseSBlbXB0eSBiZWZvcmUg
dGhlIGNvbGxhcHNlZCBjb250ZW50LCBpdCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIGl0IGlz
IHN0aWxsIHZpc3VhbGx5IGVtcHR5LgogICAgIC8vIDxzcGFuPiAgPC9zcGFuPjxzcGFuIHN0eWxl
PSJwYWRkaW5nLWxlZnQ6IDEwcHgiPjwvc3Bhbj4gIDwtIG5vbi1lbXB0eQogICAgIGF1dG8gbGlu
ZUlzVmlzdWFsbHlFbXB0eSA9IFsmXSB7CiAgICAgICAgIGZvciAoYXV0byYgcnVuIDogbV9pbmxp
bmVJdGVtUnVucykgewpAQCAtMzkwLDE2ICszOTAsMTYgQEAgdm9pZCBMaW5lQnVpbGRlcjo6cmVt
b3ZlVHJhaWxpbmdUcmltbWFibGVDb250ZW50KCkKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9OwotICAgIC8vIFdlIGNvdWxkIG9ubHkgZ28gZnJvbSB2aXN1YWxseSBub24g
ZW1wdHkgLT4gdG8gdmlzdWFsbHkgZW1wdHkuIFRyaW1taW5nIHJ1bnMgc2hvdWxkIG5ldmVyIG1h
a2UgdGhlIGxpbmUgdmlzaWJsZS4KKyAgICAvLyBXZSBjb3VsZCBvbmx5IGdvIGZyb20gdmlzdWFs
bHkgbm9uIGVtcHR5IC0+IHRvIHZpc3VhbGx5IGVtcHR5LiBDb2xsYXBzZWQgcnVucyBzaG91bGQg
bmV2ZXIgbWFrZSB0aGUgbGluZSB2aXNpYmxlLgogICAgIGlmIChsaW5lSXNWaXN1YWxseUVtcHR5
KCkpCiAgICAgICAgIG1fbGluZUJveC5zZXRJc0NvbnNpZGVyZWRFbXB0eSgpOwotICAgIG1fbGlu
ZUlzVmlzdWFsbHlFbXB0eUJlZm9yZVRyaW1tYWJsZUNvbnRlbnQgPSB7IH07CisgICAgbV9saW5l
SXNWaXN1YWxseUVtcHR5QmVmb3JlQ29sbGFwc2libGVDb250ZW50ID0geyB9OwogfQogCiB2b2lk
IExpbmVCdWlsZGVyOjpjb2xsZWN0SGFuZ2luZ0NvbnRlbnQoSXNMYXN0TGluZVdpdGhJbmxpbmVD
b250ZW50IGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCkKIHsKICAgICAvLyBDYW4ndCBzZXR1
cCBoYW5naW5nIGNvbnRlbnQgd2l0aCByZW1vdmFibGUgdHJhaWxpbmcgd2hpdHNwYWNlcy4KLSAg
ICBBU1NFUlQobV90cmltbWFibGVDb250ZW50LmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fY29s
bGFwc2libGVDb250ZW50LmlzRW1wdHkoKSk7CiAgICAgaWYgKGlzTGFzdExpbmVXaXRoSW5saW5l
Q29udGVudCA9PSBJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQ6OlllcykKICAgICAgICAgbV9o
YW5naW5nQ29udGVudC5zZXRJc0NvbmRpdGlvbmFsKCk7CiAgICAgZm9yIChhdXRvJiBpbmxpbmVJ
dGVtUnVuIDogV1RGOjptYWtlUmV2ZXJzZWRSYW5nZShtX2lubGluZUl0ZW1SdW5zKSkgewpAQCAt
NDcyLDE0ICs0NzIsMTQgQEAgdm9pZCBMaW5lQnVpbGRlcjo6YXBwZW5kSW5saW5lQ29udGFpbmVy
U3RhcnQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgSW5saW4KIHZvaWQgTGluZUJ1aWxk
ZXI6OmFwcGVuZElubGluZUNvbnRhaW5lckVuZChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVt
LCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIHsKICAgICAvLyBUaGlzIGlzIHJlYWxs
eSBqdXN0IGEgcGxhY2Vob2xkZXIgdG8gbWFyayB0aGUgZW5kIG9mIHRoZSBpbmxpbmUgbGV2ZWwg
Y29udGFpbmVyIDwvc3Bhbj4uCi0gICAgYXV0byB0cmltVHJhaWxpbmdMZXR0ZXJTcGFjaW5nID0g
WyZdIHsKLSAgICAgICAgaWYgKCFtX3RyaW1tYWJsZUNvbnRlbnQuaXNUcmFpbGluZ1J1blBhcnRp
YWxseVRyaW1tYWJsZSgpKQorICAgIGF1dG8gY29sbGFwc2VUcmFpbGluZ0xldHRlclNwYWNpbmcg
PSBbJl0geworICAgICAgICBpZiAoIW1fY29sbGFwc2libGVDb250ZW50LmlzVHJhaWxpbmdSdW5Q
YXJ0aWFsbHlDb2xsYXBzaWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX2xp
bmVCb3guc2hyaW5rSG9yaXpvbnRhbGx5KG1fdHJpbW1hYmxlQ29udGVudC50cmltVHJhaWxpbmdS
dW4oKSk7CisgICAgICAgIG1fbGluZUJveC5zaHJpbmtIb3Jpem9udGFsbHkobV9jb2xsYXBzaWJs
ZUNvbnRlbnQuY29sbGFwc2VUcmFpbGluZ1J1bigpKTsKICAgICB9OwogICAgIC8vIFByZXZlbnQg
dHJhaWxpbmcgbGV0dGVyLXNwYWNpbmcgZnJvbSBzcGlsbGluZyBvdXQgb2YgdGhlIGlubGluZSBj
b250YWluZXIuCiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10ZXh0LTMvI2xl
dHRlci1zcGFjaW5nLXByb3BlcnR5IFNlZSBleGFtcGxlIDIxLgotICAgIHRyaW1UcmFpbGluZ0xl
dHRlclNwYWNpbmcoKTsKKyAgICBjb2xsYXBzZVRyYWlsaW5nTGV0dGVyU3BhY2luZygpOwogICAg
IGFwcGVuZE5vbkJyZWFrYWJsZVNwYWNlKGlubGluZUl0ZW0sIGNvbnRlbnRMb2dpY2FsUmlnaHQo
KSwgbG9naWNhbFdpZHRoKTsKIH0KIApAQCAtNTI5LDE2ICs1MjksMTYgQEAgdm9pZCBMaW5lQnVp
bGRlcjo6YXBwZW5kVGV4dENvbnRlbnQoY29uc3QgSW5saW5lVGV4dEl0ZW0mIGlubGluZUl0ZW0s
IElubGluZUxheW8KIAogICAgIG1fbGluZUJveC5leHBhbmRIb3Jpem9udGFsbHkobGluZVJ1bi5s
b2dpY2FsV2lkdGgoKSk7CiAKLSAgICAvLyBFeGlzdGluZyB0cmFpbGluZyB0cmltbWFibGUgY29u
dGVudCBjYW4gb25seSBiZSBleHBhbmRlZCBpZiB0aGUgY3VycmVudCBydW4gaXMgZnVsbHkgdHJp
bW1hYmxlLgotICAgIGF1dG8gdHJpbW1hYmxlTGlzdE5lZWRzUmVzZXQgPSAhbV90cmltbWFibGVD
b250ZW50LmlzRW1wdHkoKSAmJiAhbGluZVJ1bi5pc1RyaW1tYWJsZVdoaXRlc3BhY2UoKTsKLSAg
ICBpZiAodHJpbW1hYmxlTGlzdE5lZWRzUmVzZXQpCi0gICAgICAgIG1fdHJpbW1hYmxlQ29udGVu
dC5yZXNldCgpOwotICAgIGF1dG8gaXNUcmltbWFibGUgPSBsaW5lUnVuLmlzVHJpbW1hYmxlV2hp
dGVzcGFjZSgpIHx8IGxpbmVSdW4uaGFzVHJhaWxpbmdMZXR0ZXJTcGFjaW5nKCk7Ci0gICAgaWYg
KGlzVHJpbW1hYmxlKSB7Ci0gICAgICAgIC8vIElmIHdlIGV2ZXIgdHJpbSB0aGlzIGNvbnRlbnQs
IHdlIG5lZWQgdG8ga25vdyBpZiB0aGUgbGluZSB2aXNpYmlsaXR5IHN0YXRlIG5lZWRzIHRvIGJl
IHJlY29tcHV0ZWQuCi0gICAgICAgIGlmIChtX3RyaW1tYWJsZUNvbnRlbnQuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgbV9saW5lSXNWaXN1YWxseUVtcHR5QmVmb3JlVHJpbW1hYmxlQ29udGVudCA9
IGlzVmlzdWFsbHlFbXB0eSgpOwotICAgICAgICBtX3RyaW1tYWJsZUNvbnRlbnQuYXBwZW5kKG1f
aW5saW5lSXRlbVJ1bnMuc2l6ZSgpIC0gMSk7CisgICAgLy8gRXhpc3RpbmcgdHJhaWxpbmcgY29s
bGFwc2libGUgY29udGVudCBjYW4gb25seSBiZSBleHBhbmRlZCBpZiB0aGUgY3VycmVudCBydW4g
aXMgZnVsbHkgY29sbGFwc2libGUuCisgICAgYXV0byBjb2xsYXBzaWJsZUxpc3ROZWVkc1Jlc2V0
ID0gIW1fY29sbGFwc2libGVDb250ZW50LmlzRW1wdHkoKSAmJiAhbGluZVJ1bi5pc0NvbGxhcHNp
YmxlV2hpdGVzcGFjZSgpOworICAgIGlmIChjb2xsYXBzaWJsZUxpc3ROZWVkc1Jlc2V0KQorICAg
ICAgICBtX2NvbGxhcHNpYmxlQ29udGVudC5yZXNldCgpOworICAgIGF1dG8gaXNDb2xsYXBzaWJs
ZSA9IGxpbmVSdW4uaXNDb2xsYXBzaWJsZVdoaXRlc3BhY2UoKSB8fCBsaW5lUnVuLmhhc1RyYWls
aW5nTGV0dGVyU3BhY2luZygpOworICAgIGlmIChpc0NvbGxhcHNpYmxlKSB7CisgICAgICAgIC8v
IElmIHdlIGV2ZXIgY29sbGFwc2UgdGhpcyBjb250ZW50LCB3ZSBuZWVkIHRvIGtub3cgaWYgdGhl
IGxpbmUgdmlzaWJpbGl0eSBzdGF0ZSBuZWVkcyB0byBiZSByZWNvbXB1dGVkLgorICAgICAgICBp
ZiAobV9jb2xsYXBzaWJsZUNvbnRlbnQuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9saW5lSXNW
aXN1YWxseUVtcHR5QmVmb3JlQ29sbGFwc2libGVDb250ZW50ID0gaXNWaXN1YWxseUVtcHR5KCk7
CisgICAgICAgIG1fY29sbGFwc2libGVDb250ZW50LmFwcGVuZChtX2lubGluZUl0ZW1SdW5zLnNp
emUoKSAtIDEpOwogICAgIH0KIH0KIApAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgTGluZUJ1aWxk
ZXI6OmFwcGVuZE5vblJlcGxhY2VkSW5saW5lQm94KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0
ZW0sIElubGluCiAgICAgYXV0byBob3Jpem9udGFsTWFyZ2luID0gYm94R2VvbWV0cnkuaG9yaXpv
bnRhbE1hcmdpbigpOwogICAgIG1faW5saW5lSXRlbVJ1bnMuYXBwZW5kKHsgaW5saW5lSXRlbSwg
Y29udGVudExvZ2ljYWxXaWR0aCgpICsgaG9yaXpvbnRhbE1hcmdpbi5zdGFydCwgbG9naWNhbFdp
ZHRoIH0pOwogICAgIG1fbGluZUJveC5leHBhbmRIb3Jpem9udGFsbHkobG9naWNhbFdpZHRoICsg
aG9yaXpvbnRhbE1hcmdpbi5zdGFydCArIGhvcml6b250YWxNYXJnaW4uZW5kKTsKLSAgICBtX3Ry
aW1tYWJsZUNvbnRlbnQucmVzZXQoKTsKKyAgICBtX2NvbGxhcHNpYmxlQ29udGVudC5yZXNldCgp
OwogfQogCiB2b2lkIExpbmVCdWlsZGVyOjphcHBlbmRSZXBsYWNlZElubGluZUJveChjb25zdCBJ
bmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKQEAg
LTczMSw5MCArNzMxLDkwIEBAIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBMaW5lQnVp
bGRlcjo6Zm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdAogICAgIHJldHVybiBtX2lubGluZUZvcm1h
dHRpbmdDb250ZXh0OwogfQogCi1MaW5lQnVpbGRlcjo6VHJpbW1hYmxlQ29udGVudDo6VHJpbW1h
YmxlQ29udGVudChJbmxpbmVJdGVtUnVuTGlzdCYgaW5saW5lSXRlbVJ1bkxpc3QpCitMaW5lQnVp
bGRlcjo6Q29sbGFwc2libGVDb250ZW50OjpDb2xsYXBzaWJsZUNvbnRlbnQoSW5saW5lSXRlbVJ1
bkxpc3QmIGlubGluZUl0ZW1SdW5MaXN0KQogICAgIDogbV9pbmxpbmVpdGVtUnVuTGlzdChpbmxp
bmVJdGVtUnVuTGlzdCkKIHsKIH0KIAotdm9pZCBMaW5lQnVpbGRlcjo6VHJpbW1hYmxlQ29udGVu
dDo6YXBwZW5kKHNpemVfdCBydW5JbmRleCkKK3ZvaWQgTGluZUJ1aWxkZXI6OkNvbGxhcHNpYmxl
Q29udGVudDo6YXBwZW5kKHNpemVfdCBydW5JbmRleCkKIHsKLSAgICBhdXRvJiB0cmltbWFibGVS
dW4gPSBtX2lubGluZWl0ZW1SdW5MaXN0W3J1bkluZGV4XTsKLSAgICBJbmxpbmVMYXlvdXRVbml0
IHRyaW1tYWJsZVdpZHRoID0gMDsKLSAgICBhdXRvIGlzRnVsbHlUcmltbWFibGUgPSB0cmltbWFi
bGVSdW4uaXNUcmltbWFibGVXaGl0ZXNwYWNlKCk7Ci0gICAgaWYgKGlzRnVsbHlUcmltbWFibGUp
Ci0gICAgICAgIHRyaW1tYWJsZVdpZHRoID0gdHJpbW1hYmxlUnVuLmxvZ2ljYWxXaWR0aCgpOwor
ICAgIGF1dG8mIGNvbGxhcHNpYmxlUnVuID0gbV9pbmxpbmVpdGVtUnVuTGlzdFtydW5JbmRleF07
CisgICAgSW5saW5lTGF5b3V0VW5pdCBjb2xsYXBzaWJsZVdpZHRoID0gMDsKKyAgICBhdXRvIGlz
RnVsbHlDb2xsYXBzaWJsZSA9IGNvbGxhcHNpYmxlUnVuLmlzQ29sbGFwc2libGVXaGl0ZXNwYWNl
KCk7CisgICAgaWYgKGlzRnVsbHlDb2xsYXBzaWJsZSkKKyAgICAgICAgY29sbGFwc2libGVXaWR0
aCA9IGNvbGxhcHNpYmxlUnVuLmxvZ2ljYWxXaWR0aCgpOwogICAgIGVsc2UgewotICAgICAgICBB
U1NFUlQodHJpbW1hYmxlUnVuLmhhc1RyYWlsaW5nTGV0dGVyU3BhY2luZygpKTsKLSAgICAgICAg
dHJpbW1hYmxlV2lkdGggPSB0cmltbWFibGVSdW4udHJhaWxpbmdMZXR0ZXJTcGFjaW5nKCk7Cisg
ICAgICAgIEFTU0VSVChjb2xsYXBzaWJsZVJ1bi5oYXNUcmFpbGluZ0xldHRlclNwYWNpbmcoKSk7
CisgICAgICAgIGNvbGxhcHNpYmxlV2lkdGggPSBjb2xsYXBzaWJsZVJ1bi50cmFpbGluZ0xldHRl
clNwYWNpbmcoKTsKICAgICB9Ci0gICAgbV93aWR0aCArPSB0cmltbWFibGVXaWR0aDsKLSAgICBt
X2xhc3RSdW5Jc0Z1bGx5VHJpbW1hYmxlID0gaXNGdWxseVRyaW1tYWJsZTsKKyAgICBtX3dpZHRo
ICs9IGNvbGxhcHNpYmxlV2lkdGg7CisgICAgbV9sYXN0UnVuSXNGdWxseUNvbGxhcHNpYmxlID0g
aXNGdWxseUNvbGxhcHNpYmxlOwogICAgIG1fZmlyc3RSdW5JbmRleCA9IG1fZmlyc3RSdW5JbmRl
eC52YWx1ZU9yKHJ1bkluZGV4KTsKIH0KIAotSW5saW5lTGF5b3V0VW5pdCBMaW5lQnVpbGRlcjo6
VHJpbW1hYmxlQ29udGVudDo6dHJpbSgpCitJbmxpbmVMYXlvdXRVbml0IExpbmVCdWlsZGVyOjpD
b2xsYXBzaWJsZUNvbnRlbnQ6OmNvbGxhcHNlKCkKIHsKICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7
CiAjaWZuZGVmIE5ERUJVRwogICAgIGF1dG8gaGFzU2Vlbk5vbldoaXRlc3BhY2VUZXh0Q29udGVu
dCA9IGZhbHNlOwogI2VuZGlmCi0gICAgLy8gQ29sbGFwc2UgdHJpbW1hYmxlIHRyYWlsaW5nIGNv
bnRlbnQgYW5kIG1vdmUgYWxsIHRoZSBvdGhlciB0cmFpbGluZyBydW5zLgorICAgIC8vIENvbGxh
cHNlIGNvbGxhcHNpYmxlIHRyYWlsaW5nIGNvbnRlbnQgYW5kIG1vdmUgYWxsIHRoZSBvdGhlciB0
cmFpbGluZyBydW5zLgogICAgIC8vIDxzcGFuPiA8L3NwYW4+PHNwYW4+PC9zcGFuPiAtPgogICAg
IC8vIFt3aGl0ZXNwYWNlXVtjb250YWluZXIgZW5kXVtjb250YWluZXIgc3RhcnRdW2NvbnRhaW5l
ciBlbmRdCi0gICAgLy8gVHJpbSB0aGUgd2hpdGVzcGFjZSBydW4gYW5kIG1vdmUgdGhlIHRyYWls
aW5nIGlubGluZSBjb250YWluZXIgcnVucyB0byB0aGUgbGVmdC4KLSAgICBJbmxpbmVMYXlvdXRV
bml0IGFjY3VtdWxhdGVkVHJpbW1lZFdpZHRoID0gMDsKKyAgICAvLyBDb2xsYXBzZSB0aGUgd2hp
dGVzcGFjZSBydW4gYW5kIG1vdmUgdGhlIHRyYWlsaW5nIGlubGluZSBjb250YWluZXIgcnVucyB0
byB0aGUgbGVmdC4KKyAgICBJbmxpbmVMYXlvdXRVbml0IGFjY3VtdWxhdGVkQ29sbGFwc2VkV2lk
dGggPSAwOwogICAgIGZvciAoYXV0byBpbmRleCA9ICptX2ZpcnN0UnVuSW5kZXg7IGluZGV4IDwg
bV9pbmxpbmVpdGVtUnVuTGlzdC5zaXplKCk7ICsraW5kZXgpIHsKICAgICAgICAgYXV0byYgcnVu
ID0gbV9pbmxpbmVpdGVtUnVuTGlzdFtpbmRleF07Ci0gICAgICAgIHJ1bi5tb3ZlSG9yaXpvbnRh
bGx5KC1hY2N1bXVsYXRlZFRyaW1tZWRXaWR0aCk7CisgICAgICAgIHJ1bi5tb3ZlSG9yaXpvbnRh
bGx5KC1hY2N1bXVsYXRlZENvbGxhcHNlZFdpZHRoKTsKICAgICAgICAgaWYgKCFydW4uaXNUZXh0
KCkpIHsKICAgICAgICAgICAgIEFTU0VSVChydW4uaXNDb250YWluZXJTdGFydCgpIHx8IHJ1bi5p
c0NvbnRhaW5lckVuZCgpIHx8IHJ1bi5pc0xpbmVCcmVhaygpKTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChydW4uaXNXaGl0ZXNwYWNlKCkpIHsKLSAgICAg
ICAgICAgIGFjY3VtdWxhdGVkVHJpbW1lZFdpZHRoICs9IHJ1bi5sb2dpY2FsV2lkdGgoKTsKKyAg
ICAgICAgICAgIGFjY3VtdWxhdGVkQ29sbGFwc2VkV2lkdGggKz0gcnVuLmxvZ2ljYWxXaWR0aCgp
OwogICAgICAgICAgICAgcnVuLnNldENvbGxhcHNlc1RvWmVyb0FkdmFuY2VXaWR0aCgpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKCFoYXNTZWVuTm9uV2hpdGVzcGFjZVRl
eHRDb250ZW50KTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICBoYXNTZWVuTm9uV2hpdGVz
cGFjZVRleHRDb250ZW50ID0gdHJ1ZTsKICNlbmRpZgotICAgICAgICAgICAgLy8gTXVzdCBiZSBh
IGxldHRlciBzcGFjaW5nIHRyaW0uCisgICAgICAgICAgICAvLyBNdXN0IGJlIGEgbGV0dGVyIHNw
YWNpbmcgY29sbGFwc2UuCiAgICAgICAgICAgICBBU1NFUlQocnVuLmhhc1RyYWlsaW5nTGV0dGVy
U3BhY2luZygpKTsKLSAgICAgICAgICAgIGFjY3VtdWxhdGVkVHJpbW1lZFdpZHRoICs9IHJ1bi50
cmFpbGluZ0xldHRlclNwYWNpbmcoKTsKKyAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29sbGFwc2Vk
V2lkdGggKz0gcnVuLnRyYWlsaW5nTGV0dGVyU3BhY2luZygpOwogICAgICAgICAgICAgcnVuLnJl
bW92ZVRyYWlsaW5nTGV0dGVyU3BhY2luZygpOwogICAgICAgICB9CiAgICAgfQotICAgIEFTU0VS
VChhY2N1bXVsYXRlZFRyaW1tZWRXaWR0aCA9PSB3aWR0aCgpKTsKKyAgICBBU1NFUlQoYWNjdW11
bGF0ZWRDb2xsYXBzZWRXaWR0aCA9PSB3aWR0aCgpKTsKICAgICByZXNldCgpOwotICAgIHJldHVy
biBhY2N1bXVsYXRlZFRyaW1tZWRXaWR0aDsKKyAgICByZXR1cm4gYWNjdW11bGF0ZWRDb2xsYXBz
ZWRXaWR0aDsKIH0KIAotSW5saW5lTGF5b3V0VW5pdCBMaW5lQnVpbGRlcjo6VHJpbW1hYmxlQ29u
dGVudDo6dHJpbVRyYWlsaW5nUnVuKCkKK0lubGluZUxheW91dFVuaXQgTGluZUJ1aWxkZXI6OkNv
bGxhcHNpYmxlQ29udGVudDo6Y29sbGFwc2VUcmFpbGluZ1J1bigpCiB7CiAgICAgQVNTRVJUKCFp
c0VtcHR5KCkpOwotICAgIC8vIEZpbmQgdGhlIGxhc3QgdHJpbW1hYmxlIHJ1biAoaXQgaXMgbm90
IG5lY2Vzc2FyaWx5IHRoZSBsYXN0IHJ1biBlLmcgW2NvbnRhaW5lciBzdGFydF1bd2hpdGVzcGFj
ZV1bY29udGFpbmVyIGVuZF0pCisgICAgLy8gRmluZCB0aGUgbGFzdCBjb2xsYXBzaWJsZSBydW4g
KGl0IGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgbGFzdCBydW4gZS5nIFtjb250YWluZXIgc3RhcnRd
W3doaXRlc3BhY2VdW2NvbnRhaW5lciBlbmRdKQogICAgIGZvciAoYXV0byBpbmRleCA9IG1faW5s
aW5laXRlbVJ1bkxpc3Quc2l6ZSgpOyBpbmRleC0tICYmICptX2ZpcnN0UnVuSW5kZXggPj0gaW5k
ZXg7KSB7CiAgICAgICAgIGF1dG8mIHJ1biA9IG1faW5saW5laXRlbVJ1bkxpc3RbaW5kZXhdOwog
ICAgICAgICBpZiAoIXJ1bi5pc1RleHQoKSkgewogICAgICAgICAgICAgQVNTRVJUKHJ1bi5pc0Nv
bnRhaW5lclN0YXJ0KCkgfHwgcnVuLmlzQ29udGFpbmVyRW5kKCkpOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCB0cmltbWVkV2lkdGgg
PSAwOworICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGNvbGxhcHNlZFdpZHRoID0gMDsKICAgICAg
ICAgaWYgKHJ1bi5pc1doaXRlc3BhY2UoKSkgewotICAgICAgICAgICAgdHJpbW1lZFdpZHRoID0g
cnVuLmxvZ2ljYWxXaWR0aCgpOworICAgICAgICAgICAgY29sbGFwc2VkV2lkdGggPSBydW4ubG9n
aWNhbFdpZHRoKCk7CiAgICAgICAgICAgICBydW4uc2V0Q29sbGFwc2VzVG9aZXJvQWR2YW5jZVdp
ZHRoKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQocnVuLmhhc1RyYWls
aW5nTGV0dGVyU3BhY2luZygpKTsKLSAgICAgICAgICAgIHRyaW1tZWRXaWR0aCA9IHJ1bi50cmFp
bGluZ0xldHRlclNwYWNpbmcoKTsKKyAgICAgICAgICAgIGNvbGxhcHNlZFdpZHRoID0gcnVuLnRy
YWlsaW5nTGV0dGVyU3BhY2luZygpOwogICAgICAgICAgICAgcnVuLnJlbW92ZVRyYWlsaW5nTGV0
dGVyU3BhY2luZygpOwogICAgICAgICB9Ci0gICAgICAgIG1fd2lkdGggLT0gdHJpbW1lZFdpZHRo
OwotICAgICAgICAvLyBXZSBtYW5hZ2VkIHRvIHRyaW0gdGhlIGxhc3QgdHJpbW1hYmxlIHJ1bi4K
KyAgICAgICAgbV93aWR0aCAtPSBjb2xsYXBzZWRXaWR0aDsKKyAgICAgICAgLy8gV2UgbWFuYWdl
ZCB0byByZW1vdmUgdGhlIGxhc3QgY29sbGFwc2libGUgcnVuLgogICAgICAgICBpZiAoaW5kZXgg
PT0gKm1fZmlyc3RSdW5JbmRleCkgewogICAgICAgICAgICAgQVNTRVJUKCFtX3dpZHRoKTsKICAg
ICAgICAgICAgIG1fZmlyc3RSdW5JbmRleCA9IHsgfTsKICAgICAgICAgfQotICAgICAgICByZXR1
cm4gdHJpbW1lZFdpZHRoOworICAgICAgICByZXR1cm4gY29sbGFwc2VkV2lkdGg7CiAgICAgfQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwX2x1OwpAQCAtODI4LDcgKzgy
OCw3IEBAIExpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUnVuOjpJbmxpbmVJdGVtUnVuKGNvbnN0IElu
bGluZUl0ZW0mIGlubGluZUl0ZW0sIElubGluZUxhCiB7CiB9CiAKLWJvb2wgTGluZUJ1aWxkZXI6
OklubGluZUl0ZW1SdW46OmlzVHJpbW1hYmxlV2hpdGVzcGFjZSgpIGNvbnN0Citib29sIExpbmVC
dWlsZGVyOjpJbmxpbmVJdGVtUnVuOjppc0NvbGxhcHNpYmxlV2hpdGVzcGFjZSgpIGNvbnN0CiB7
CiAgICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlICJlbmQtb2YtbGluZSBzcGFjZXMiIGNhbiBiZSBy
ZW1vdmVkLgogICAgIC8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXRleHQtMy8jd2hp
dGUtc3BhY2UtcHJvcGVydHkgbWF0cml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmgKaW5kZXggNGVkZmQ2
NWU1MzVhZGY2MzY4MTNiNjRlYjYwOGI2YjU3NGI4NmM4ZS4uMThmZjkxMGY2MDYxYmRlYzA0MmI2
ODU3NTRkMjFlNjdjZDBkNDEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oCkBAIC02NCw4ICs2NCw4
IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0ludHJ1c2l2ZUZsb2F0KCkgY29uc3QgeyByZXR1cm4g
bV9oYXNJbnRydXNpdmVGbG9hdDsgfQogICAgIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlV2lk
dGgoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsV2lkdGgoKSAtIGNvbnRlbnRMb2dpY2FsV2lkdGgo
KTsgfQogCi0gICAgSW5saW5lTGF5b3V0VW5pdCB0cmFpbGluZ1RyaW1tYWJsZVdpZHRoKCkgY29u
c3QgeyByZXR1cm4gbV90cmltbWFibGVDb250ZW50LndpZHRoKCk7IH0KLSAgICBib29sIGlzVHJh
aWxpbmdSdW5GdWxseVRyaW1tYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJpbW1hYmxlQ29udGVu
dC5pc1RyYWlsaW5nUnVuRnVsbHlUcmltbWFibGUoKTsgfQorICAgIElubGluZUxheW91dFVuaXQg
dHJhaWxpbmdDb2xsYXBzaWJsZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9jb2xsYXBzaWJsZUNv
bnRlbnQud2lkdGgoKTsgfQorICAgIGJvb2wgaXNUcmFpbGluZ1J1bkZ1bGx5Q29sbGFwc2libGUo
KSBjb25zdCB7IHJldHVybiBtX2NvbGxhcHNpYmxlQ29udGVudC5pc1RyYWlsaW5nUnVuRnVsbHlD
b2xsYXBzaWJsZSgpOyB9CiAKICAgICBjb25zdCBEaXNwbGF5OjpMaW5lQm94JiBsaW5lQm94KCkg
Y29uc3QgeyByZXR1cm4gbV9saW5lQm94OyB9CiAgICAgdm9pZCBtb3ZlTG9naWNhbExlZnQoSW5s
aW5lTGF5b3V0VW5pdCk7CkBAIC0xMzksNyArMTM5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFw
cGVuZElubGluZUNvbnRhaW5lckVuZChjb25zdCBJbmxpbmVJdGVtJiwgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsV2lkdGgpOwogICAgIHZvaWQgYXBwZW5kTGluZUJyZWFrKGNvbnN0IElubGluZUl0
ZW0mKTsKIAotICAgIHZvaWQgcmVtb3ZlVHJhaWxpbmdUcmltbWFibGVDb250ZW50KCk7CisgICAg
dm9pZCByZW1vdmVUcmFpbGluZ0NvbGxhcHNpYmxlQ29udGVudCgpOwogICAgIHZvaWQgY29sbGVj
dEhhbmdpbmdDb250ZW50KElzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCk7CiAgICAgdm9pZCBh
bGlnbkNvbnRlbnRIb3Jpem9udGFsbHkoUnVuTGlzdCYsIElzTGFzdExpbmVXaXRoSW5saW5lQ29u
dGVudCkgY29uc3Q7CiAgICAgdm9pZCBhbGlnbkNvbnRlbnRWZXJ0aWNhbGx5KFJ1bkxpc3QmKTsK
QEAgLTE3Nyw3ICsxNzcsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIHZvaWQgbW92ZUhvcml6b250
YWxseShJbmxpbmVMYXlvdXRVbml0IG9mZnNldCkgeyBtX2xvZ2ljYWxMZWZ0ICs9IG9mZnNldDsg
fQogCi0gICAgICAgIGJvb2wgaXNUcmltbWFibGVXaGl0ZXNwYWNlKCkgY29uc3Q7CisgICAgICAg
IGJvb2wgaXNDb2xsYXBzaWJsZVdoaXRlc3BhY2UoKSBjb25zdDsKICAgICAgICAgYm9vbCBoYXNU
cmFpbGluZ0xldHRlclNwYWNpbmcoKSBjb25zdDsKIAogICAgICAgICBJbmxpbmVMYXlvdXRVbml0
IHRyYWlsaW5nTGV0dGVyU3BhY2luZygpIGNvbnN0OwpAQCAtMjAyLDI1ICsyMDIsMjUgQEAgcHJp
dmF0ZToKIAogICAgIHVzaW5nIElubGluZUl0ZW1SdW5MaXN0ID0gVmVjdG9yPElubGluZUl0ZW1S
dW4sIDUwPjsKIAotICAgIHN0cnVjdCBUcmltbWFibGVDb250ZW50IHsKLSAgICAgICAgVHJpbW1h
YmxlQ29udGVudChJbmxpbmVJdGVtUnVuTGlzdCYpOworICAgIHN0cnVjdCBDb2xsYXBzaWJsZUNv
bnRlbnQgeworICAgICAgICBDb2xsYXBzaWJsZUNvbnRlbnQoSW5saW5lSXRlbVJ1bkxpc3QmKTsK
IAogICAgICAgICB2b2lkIGFwcGVuZChzaXplX3QgcnVuSW5kZXgpOwotICAgICAgICBJbmxpbmVM
YXlvdXRVbml0IHRyaW0oKTsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCB0cmltVHJhaWxpbmdS
dW4oKTsKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBjb2xsYXBzZSgpOworICAgICAgICBJbmxp
bmVMYXlvdXRVbml0IGNvbGxhcHNlVHJhaWxpbmdSdW4oKTsKICAgICAgICAgdm9pZCByZXNldCgp
OwogCiAgICAgICAgIElubGluZUxheW91dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dp
ZHRoOyB9CiAgICAgICAgIE9wdGlvbmFsPHNpemVfdD4gZmlyc3RSdW5JbmRleCgpIHsgcmV0dXJu
IG1fZmlyc3RSdW5JbmRleDsgfQogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biAhbV9maXJzdFJ1bkluZGV4Lmhhc1ZhbHVlKCk7IH0KLSAgICAgICAgYm9vbCBpc1RyYWlsaW5n
UnVuRnVsbHlUcmltbWFibGUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RSdW5Jc0Z1bGx5VHJpbW1h
YmxlOyB9Ci0gICAgICAgIGJvb2wgaXNUcmFpbGluZ1J1blBhcnRpYWxseVRyaW1tYWJsZSgpIGNv
bnN0IHsgcmV0dXJuICFpc0VtcHR5KCkgJiYgIWlzVHJhaWxpbmdSdW5GdWxseVRyaW1tYWJsZSgp
OyB9CisgICAgICAgIGJvb2wgaXNUcmFpbGluZ1J1bkZ1bGx5Q29sbGFwc2libGUoKSBjb25zdCB7
IHJldHVybiBtX2xhc3RSdW5Jc0Z1bGx5Q29sbGFwc2libGU7IH0KKyAgICAgICAgYm9vbCBpc1Ry
YWlsaW5nUnVuUGFydGlhbGx5Q29sbGFwc2libGUoKSBjb25zdCB7IHJldHVybiAhaXNFbXB0eSgp
ICYmICFpc1RyYWlsaW5nUnVuRnVsbHlDb2xsYXBzaWJsZSgpOyB9CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBJbmxpbmVJdGVtUnVuTGlzdCYgbV9pbmxpbmVpdGVtUnVuTGlzdDsKICAgICAgICAg
T3B0aW9uYWw8c2l6ZV90PiBtX2ZpcnN0UnVuSW5kZXg7CiAgICAgICAgIElubGluZUxheW91dFVu
aXQgbV93aWR0aCB7IDAgfTsKLSAgICAgICAgYm9vbCBtX2xhc3RSdW5Jc0Z1bGx5VHJpbW1hYmxl
IHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBtX2xhc3RSdW5Jc0Z1bGx5Q29sbGFwc2libGUgeyBm
YWxzZSB9OwogICAgIH07CiAKICAgICBzdHJ1Y3QgSGFuZ2luZ0NvbnRlbnQgewpAQCAtMjQwLDcg
KzI0MCw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYg
bV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsKICAgICBJbmxpbmVJdGVtUnVuTGlzdCBtX2lubGlu
ZUl0ZW1SdW5zOwotICAgIFRyaW1tYWJsZUNvbnRlbnQgbV90cmltbWFibGVDb250ZW50OworICAg
IENvbGxhcHNpYmxlQ29udGVudCBtX2NvbGxhcHNpYmxlQ29udGVudDsKICAgICBIYW5naW5nQ29u
dGVudCBtX2hhbmdpbmdDb250ZW50OwogICAgIE9wdGlvbmFsPERpc3BsYXk6OkxpbmVCb3g6OkJh
c2VsaW5lPiBtX2luaXRpYWxTdHJ1dDsKICAgICBJbmxpbmVMYXlvdXRVbml0IG1fbGluZUxvZ2lj
YWxXaWR0aCB7IDAgfTsKQEAgLTI0OCwxNCArMjQ4LDE0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X3NraXBBbGlnbm1lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNJbnRydXNpdmVGbG9hdCB7
IGZhbHNlIH07CiAgICAgRGlzcGxheTo6TGluZUJveCBtX2xpbmVCb3g7Ci0gICAgT3B0aW9uYWw8
Ym9vbD4gbV9saW5lSXNWaXN1YWxseUVtcHR5QmVmb3JlVHJpbW1hYmxlQ29udGVudDsKKyAgICBP
cHRpb25hbDxib29sPiBtX2xpbmVJc1Zpc3VhbGx5RW1wdHlCZWZvcmVDb2xsYXBzaWJsZUNvbnRl
bnQ7CiB9OwogCi1pbmxpbmUgdm9pZCBMaW5lQnVpbGRlcjo6VHJpbW1hYmxlQ29udGVudDo6cmVz
ZXQoKQoraW5saW5lIHZvaWQgTGluZUJ1aWxkZXI6OkNvbGxhcHNpYmxlQ29udGVudDo6cmVzZXQo
KQogewogICAgIG1fZmlyc3RSdW5JbmRleCA9IHsgfTsKICAgICBtX3dpZHRoID0gMF9sdTsKLSAg
ICBtX2xhc3RSdW5Jc0Z1bGx5VHJpbW1hYmxlID0gZmFsc2U7CisgICAgbV9sYXN0UnVuSXNGdWxs
eUNvbGxhcHNpYmxlID0gZmFsc2U7CiB9CiAKIGlubGluZSB2b2lkIExpbmVCdWlsZGVyOjpIYW5n
aW5nQ29udGVudDo6cmVzZXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuY3BwCmluZGV4IGEwNjY1YzI1
M2M2ZDliMDE5NThmNmU4ZGRiNzAxZjQ3OTg1MmE4ZDUuLmZiY2YxNWFhODliNGJjZWY0YWZmOGY5
MjIyZWJmOTY3YTk4OGQ4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5jcHAKQEAgLTE2MCw3ICsx
NjAsNyBAQCBMaW5lTGF5b3V0Q29udGV4dDo6SXNFbmRPZkxpbmUgTGluZUxheW91dENvbnRleHQ6
OnBsYWNlSW5saW5lSXRlbShMaW5lQnVpbGRlciYgbAogICAgICAgICAgICAgICAgIHJldHVybiBJ
c0VuZE9mTGluZTo6WWVzOwogICAgICAgICB9CiAgICAgICAgIGF1dG8gbGluZUlzQ29uc2lkZXJl
ZEVtcHR5ID0gbGluZS5pc1Zpc3VhbGx5RW1wdHkoKSAmJiAhbGluZS5oYXNJbnRydXNpdmVGbG9h
dCgpOwotICAgICAgICBpZiAoTGluZUJyZWFrZXIoKS5zaG91bGRXcmFwRmxvYXRCb3goaXRlbUxv
Z2ljYWxXaWR0aCwgbGluZS5hdmFpbGFibGVXaWR0aCgpICsgbGluZS50cmFpbGluZ1RyaW1tYWJs
ZVdpZHRoKCksIGxpbmVJc0NvbnNpZGVyZWRFbXB0eSkpCisgICAgICAgIGlmIChMaW5lQnJlYWtl
cigpLnNob3VsZFdyYXBGbG9hdEJveChpdGVtTG9naWNhbFdpZHRoLCBsaW5lLmF2YWlsYWJsZVdp
ZHRoKCkgKyBsaW5lLnRyYWlsaW5nQ29sbGFwc2libGVXaWR0aCgpLCBsaW5lSXNDb25zaWRlcmVk
RW1wdHkpKQogICAgICAgICAgICAgcmV0dXJuIElzRW5kT2ZMaW5lOjpZZXM7CiAKICAgICAgICAg
Ly8gVGhpcyBmbG9hdCBjYW4gc2l0IG9uIHRoZSBjdXJyZW50IGxpbmUuCkBAIC0yMDcsNyArMjA3
LDcgQEAgTGluZUxheW91dENvbnRleHQ6OklzRW5kT2ZMaW5lIExpbmVMYXlvdXRDb250ZXh0Ojpw
cm9jZXNzVW5jb21taXR0ZWRDb250ZW50KExpbmUKICAgICBhdXRvIGxpbmVCcmVha2VyID0gTGlu
ZUJyZWFrZXIgeyB9OwogICAgIGlmIChzaG91bGREaXNhYmxlSHlwaGVuYXRpb24oKSkKICAgICAg
ICAgbGluZUJyZWFrZXIuc2V0SHlwaGVuYXRpb25EaXNhYmxlZCgpOwotICAgIGF1dG8gbGluZVN0
YXR1cyA9IExpbmVCcmVha2VyOjpMaW5lU3RhdHVzIHsgbGluZS5hdmFpbGFibGVXaWR0aCgpLCBs
aW5lLnRyYWlsaW5nVHJpbW1hYmxlV2lkdGgoKSwgbGluZS5pc1RyYWlsaW5nUnVuRnVsbHlUcmlt
bWFibGUoKSwgbGluZUlzQ29uc2lkZXJlZEVtcHR5IH07CisgICAgYXV0byBsaW5lU3RhdHVzID0g
TGluZUJyZWFrZXI6OkxpbmVTdGF0dXMgeyBsaW5lLmF2YWlsYWJsZVdpZHRoKCksIGxpbmUudHJh
aWxpbmdDb2xsYXBzaWJsZVdpZHRoKCksIGxpbmUuaXNUcmFpbGluZ1J1bkZ1bGx5Q29sbGFwc2li
bGUoKSwgbGluZUlzQ29uc2lkZXJlZEVtcHR5IH07CiAgICAgYXV0byBicmVha2luZ0NvbnRleHQg
PSBsaW5lQnJlYWtlci5icmVha2luZ0NvbnRleHRGb3JJbmxpbmVDb250ZW50KG1fdW5jb21taXR0
ZWRDb250ZW50LCBsaW5lU3RhdHVzKTsKICAgICAvLyBUaGUgdW5jb21taXR0ZWQgY29udGVudCBj
YW4gZnVsbHksIHBhcnRpYWxseSBmaXQgdGhlIGN1cnJlbnQgbGluZSAoY29tbWl0L3BhcnRpYWwg
Y29tbWl0KSBvciBub3QgYXQgYWxsIChyZXNldCkuCiAgICAgaWYgKGJyZWFraW5nQ29udGV4dC5j
b250ZW50V3JhcHBpbmdSdWxlID09IExpbmVCcmVha2VyOjpCcmVha2luZ0NvbnRleHQ6OkNvbnRl
bnRXcmFwcGluZ1J1bGU6OktlZXApCkBAIC0yMjcsNyArMjI3LDcgQEAgTGluZUxheW91dENvbnRl
eHQ6OklzRW5kT2ZMaW5lIExpbmVMYXlvdXRDb250ZXh0Ojpwcm9jZXNzVW5jb21taXR0ZWRDb250
ZW50KExpbmUKICAgICAgICAgICAgIG1fcGFydGlhbFRyYWlsaW5nVGV4dEl0ZW0gPSB0cmFpbGlu
Z0lubGluZVRleHRJdGVtLmxlZnQocGFydGlhbFRyYWlsaW5nUnVuLT5sZW5ndGgpOwogICAgICAg
ICAgICAgbV9wYXJ0aWFsQ29udGVudCA9IExpbmVDb250ZW50OjpQYXJ0aWFsQ29udGVudCB7IHBh
cnRpYWxUcmFpbGluZ1J1bi0+bmVlZHNIeXBoZW4sIHRyYWlsaW5nSW5saW5lVGV4dEl0ZW0ubGVu
Z3RoKCkgLSBwYXJ0aWFsVHJhaWxpbmdSdW4tPmxlbmd0aCB9OwogICAgICAgICAgICAgLy8gS2Vl
cCB0aGUgbm9uLW92ZXJmbG93IHBhcnQgb2YgdGhlIHVuY29tbWl0dGVkIHJ1bnMgYW5kIGFkZCB0
aGUgdHJhaWxpbmcgcGFydGlhbCBjb250ZW50LgotICAgICAgICAgICAgbV91bmNvbW1pdHRlZENv
bnRlbnQudHJpbSh0cmFpbGluZ1J1bkluZGV4KTsKKyAgICAgICAgICAgIG1fdW5jb21taXR0ZWRD
b250ZW50LnNocmluayh0cmFpbGluZ1J1bkluZGV4KTsKICAgICAgICAgICAgIG1fdW5jb21taXR0
ZWRDb250ZW50LmFwcGVuZCgqbV9wYXJ0aWFsVHJhaWxpbmdUZXh0SXRlbSwgcGFydGlhbFRyYWls
aW5nUnVuLT5sb2dpY2FsV2lkdGgpOwogICAgICAgICAgICAgLy8gQWRqdXN0IGh5cGhlbmF0ZWQg
bGluZSBjb3VudC4KICAgICAgICAgICAgIGlmIChwYXJ0aWFsVHJhaWxpbmdSdW4tPm5lZWRzSHlw
aGVuKQpAQCAtMjM2LDcgKzIzNiw3IEBAIExpbmVMYXlvdXRDb250ZXh0OjpJc0VuZE9mTGluZSBM
aW5lTGF5b3V0Q29udGV4dDo6cHJvY2Vzc1VuY29tbWl0dGVkQ29udGVudChMaW5lCiAgICAgICAg
ICAgICAvLyBUcmltIHRoZSBvdmVyZmxvd24gcnVuIGFuZCBrZWVwIHRoZSB0cmFpbGluZyAobm9u
LXBhcnRpYWwpIHJ1biBpbiB0aGUgcXVldWUuCiAgICAgICAgICAgICBhdXRvIG92ZXJmbG93blJ1
bkluZGV4ID0gdHJhaWxpbmdSdW5JbmRleCArIDE7CiAgICAgICAgICAgICBBU1NFUlQob3ZlcmZs
b3duUnVuSW5kZXggPCBtX3VuY29tbWl0dGVkQ29udGVudC5zaXplKCkpOwotICAgICAgICAgICAg
bV91bmNvbW1pdHRlZENvbnRlbnQudHJpbShvdmVyZmxvd25SdW5JbmRleCk7CisgICAgICAgICAg
ICBtX3VuY29tbWl0dGVkQ29udGVudC5zaHJpbmsob3ZlcmZsb3duUnVuSW5kZXgpOwogICAgICAg
ICB9CiAgICAgICAgIGNvbW1pdFBlbmRpbmdDb250ZW50KGxpbmUpOwogICAgIH0gZWxzZSBpZiAo
YnJlYWtpbmdDb250ZXh0LmNvbnRlbnRXcmFwcGluZ1J1bGUgPT0gTGluZUJyZWFrZXI6OkJyZWFr
aW5nQ29udGV4dDo6Q29udGVudFdyYXBwaW5nUnVsZTo6UHVzaCkgewo=
</data>
<flag name="review"
          id="401525"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>