// Copyright 2020 Mathias Bynens. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
author: Mathias Bynens
esid: sec-names-and-keywords
description: |
  Test that Unicode v13.0.0 ID_Continue characters are accepted as
  identifier start characters in escaped form, i.e.
  - \uXXXX or \u{XXXX} for BMP symbols
  - \u{XXXXXX} for astral symbols
info: |
  Generated by https://github.com/mathiasbynens/caniunicode
---*/

var _\u0B55\u0D81\u1ABF\u1AC0\uA82C\u{10EAB}\u{10EAC}\u{111CE}\u{111CF}\u{11930}\u{11931}\u{11932}\u{11933}\u{11934}\u{11935}\u{11937}\u{11938}\u{1193B}\u{1193C}\u{1193D}\u{1193E}\u{11940}\u{11942}\u{11943}\u{11950}\u{11951}\u{11952}\u{11953}\u{11954}\u{11955}\u{11956}\u{11957}\u{11958}\u{11959}\u{16FE4}\u{16FF0}\u{16FF1}\u{1FBF0}\u{1FBF1}\u{1FBF2}\u{1FBF3}\u{1FBF4}\u{1FBF5}\u{1FBF6}\u{1FBF7}\u{1FBF8}\u{1FBF9};
