    'MEAN_MOTION': 15.05604748,
      'ECCENTRICITY': 0.0000813,
      'INCLINATION': 52.999,
      'RA_OF_ASC_NODE': 237.1258,
      'ARG_OF_PERICENTER': 127.5625,
      'MEAN_ANOMALY': 272.7677,
      'EPHEMERIS_TYPE': 0,
      'CLASSIFICATION_TYPE': 'U',
      'NORAD_CAT_ID': 44769,
      'ELEMENT_SET_NO': 999,
      'REV_AT_EPOCH': 3376,
      'BSTAR': -0.00218,
      'MEAN_MOTION_DOT': -0.00031898,
      'MEAN_MOTION_DDOT': 0,
      'SEMIMAJOR_AXIS': 6927.786,
      'PERIOD': 95.642,
      'APOAPSIS': 550.215,
      'PERIAPSIS': 549.088,
      'OBJECT_TYPE': 'PAYLOAD',
      'RCS_SIZE': 'LARGE',
      'COUNTRY_CODE': 'US',
      'LAUNCH_DATE': '2019-11-11',
      'SITE': 'AFETR',
      'DECAY_DATE': null,
      'DECAYED': 0,
      'FILE': 2770045,
      'GP_ID': 156071133,
      'TLE_LINE0': '0 STARLINK-1064',
      'TLE_LINE1':
          '1 44769U 19074BJ  20173.33335648 -.00031898  00000-0 -21785-2 0  9995',
      'TLE_LINE2':
          '2 44769  52.9987 237.1258 0000813 127.5625 272.7677 15.05604748 33767'
    },
    'version': 'v1.0',
    'launch': '5eb87d39ffd86e000604b37d',
    'id': '5eed7714096e59000698567c'
  },
  {
    'spaceTrack': {
      'CCSDS_OMM_VERS': '2.0',
      'COMMENT': 'GENERATED VIA SPACE-TRACK.ORG API',
      'CREATION_DATE': '2020-06-21 10:06:09',
      'ORIGINATOR': '18 SPCS',
      'OBJECT_NAME': 'STARLINK-1065',
      'OBJECT_ID': '2019-074BK',
      'CENTER_NAME': 'EARTH',
      'REF_FRAME': 'TEME',
      'TIME_SYSTEM': 'UTC',
      'MEAN_ELEMENT_THEORY': 'SGP4',
      'EPOCH': '2020-06-21 04:02:48.879456',
      'MEAN_MOTION': 15.05992129,
      'ECCENTRICITY': 0.0001135,
      'INCLINATION': 53.004,
      'RA_OF_ASC_NODE': 237.6939,
      'ARG_OF_PERICENTER': 60.6481,
      'MEAN_ANOMALY': 299.4621,
      'EPHEMERIS_TYPE': 0,
      'CLASSIFICATION_TYPE': 'U',
      'NORAD_CAT_ID': 44770,
      'ELEMENT_SET_NO': 999,
      'REV_AT_EPOCH': 3374,
      'BSTAR': 0.00007,
      'MEAN_MOTION_DOT': 0.00000695,
      'MEAN_MOTION_DDOT': 0,
      'SEMIMAJOR_AXIS': 6926.598,
      'PERIOD': 95.618,
      'APOAPSIS': 549.25,
      'PERIAPSIS': 547.677,
      'OBJECT_TYPE': 'PAYLOAD',
      'RCS_SIZE': 'LARGE',
      'COUNTRY_CODE': 'US',
      'LAUNCH_DATE':


.control:before{top:50%;left:50%;height:16px;width:16px;margin-top:-10px;margin-left:-10px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#31b131}table.dataTable.dtr-column>tbody>tr.parent td.control:before,table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:'-';background-color:#d33333}table.dataTable>tbody>tr.child{padding:0.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent !important}table.dataTable>tbody>tr.child ul{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul li{border-bottom:1px solid #efefef;padding:0.5em 0}table.dataTable>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul li:last-child{border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:50%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:0.5em;box-shadow:0 12px 30px rgba(0,0,0,0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0,0,0,0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}

table.dt-rowReorder-float{position:absolute !important;opacity:0.8;table-layout:fixed;outline:2px solid #888;outline-offset:-2px;z-index:2001}tr.dt-rowReorder-moving{outline:2px solid #555;outline-offset:-2px}body.dt-rowReorder-noOverflow{overflow-x:hidden}table.dataTable td.reorder{text-align:center;cursor:move}

div.DTS{display:block !important}div.DTS tbody th,div.DTS tbody td{white-space:nowrap}div.DTS div.DTS_Loading{z-index:1}div.DTS div.dataTables_scrollBody{background:repeating-linear-gradient(45deg, #edeeff, #edeeff 10px, #fff 10px, #fff 20px)}div.DTS div.dataTables_scrollBody table{z-index:2}div.DTS div.dataTables_paginate,div.DTS div.dataTables_length{display:none}

table.dataTable tbody>tr.selected,table.dataTable tbody>tr>.selected{background-color:#B0BED9}table.dataTable.stripe tbody>tr.od


((item) => item as Map<String, dynamic>).toList();
      return await importAnalysesFromList(analyses);
    } catch (e) {
      AppLogger.e('从JSON恢复AI分析失败: $e', error: e, source: 'AIAnalysisDB');
      return 0;
    }
  }

  /// 将分析数据导出为JSON字符串
  Future<String> exportToJson() async {
    try {
      final analysesList = await exportAnalysesAsList();
      return json.encode(analysesList);
    } catch (e) {
      AppLogger.e('导出AI分析到JSON失败: $e', error: e, source: 'AIAnalysisDB');
      return '[]';
    }
  }

  /// 将所有AI分析导出为List<Map>
  Future<List<Map<String, dynamic>>> exportAnalysesAsList() async {
    try {
      final analyses = await getAllAnalyses();
      return analyses.map((analysis) => analysis.toJson()).toList();
    } catch (e) {
      AppLogger.e('导出AI分析为List失败: $e', error: e, source: 'AIAnalysisDB');
      return [];
    }
  }

  /// 从List<Map>导入AI分析数据
  Future<int> importAnalysesFromList(
    List<Map<String, dynamic>> analyses,
  ) async {
    try {
      int count = 0;
      for (var item in analyses) {
        final analysis = AIAnalysis.fromJson(item);
        await saveAnalysis(analysis);
        count++;
      }
      return count;
    } catch (e) {
      AppLogger.e('从List恢复AI分析失败: $e', error: e, source: 'AIAnalysisDB');
      return 0;
    }
  }

  @override
  void dispose() {
    // 关闭StreamController
    _analysesController.close();
    super.dispose();
  }
}
/// The protocol version.
///
/// Version table:
/// Protocols | App (Official implementation)
/// ----------|------------------------------
/// 1.0       | 1.0.0 - 1.8.0
/// 1.0, 2.0  | 1.9.0 - 1.14.0
/// 1.0, 2.1  | 1.15.0
const protocolVersion = '2.1';

/// Assumed protocol version of peers for first handshake.
/// Generally this should be slightly lower than the current protocol version.
const peerProtocolVersion = '1.0';

/// The protocol version when no version is specified.
/// Prior v2, the protocol version was not specified.
const fallbackProtocolVersion = '1.0';

/// The default http server port.
/// Using 53320 as the default port for ThoughtEcho sync
const defaultPort = 53320;

/// The default multicast discovery port.
/// Should be different from HTTP server port
const defaultMulticastPort = 53317;

/// The default discovery timeout in milliseconds.
/// This is the time the discovery server or UI waits for responses when actively
/// trying to discover nearby devices. Increased from 500ms to 30000ms (30s) to give
/// devices more time to respond on flaky or slow networks.
/// Keep this value conservative; callers may choose a different timeout.
const defaultDiscoveryTimeout = 30000;

/// The default multicast group should be 224.0.0.0/24
/// because on some Android devices this is the only IP range
/// that can receive UDP multicast messages.
/// Using 224.0.0.170 for ThoughtEcho multicast discovery
const defaultMulticastGroup = '224.0.0.170';
import 'dart:async';
import 'dart:io';
import '../device_identity_manager.dart';
import 'package:uuid/uuid.dart';

import 'constants.dart';
import 'models/file_dto.dart';
import 'models/info_register_dto.dart';
import 'models/prepare_upload_request_dto.dart';
import 'models/prepare_upload_response_dto.dart';
import 'model


 {
	case "debug":
		slogLevel = slog.LevelDebug
	case "info":
		slogLevel = slog.LevelInfo
	case "warn":
		slogLevel = slog.LevelWarn
	case "error":
		slogLevel = slog.LevelError
	default:
		slogLevel = slog.LevelInfo
	}

	opts := &slog.HandlerOptions{
		Level: slogLevel,
		AddSource: true,
		ReplaceAttr: func(groups []string, a slog.Attr) slog.Attr {
			// Remove the source file path for cleaner output
			if a.Key == slog.SourceKey {
				return slog.Attr{}
			}
			return a
		},
	}

	handler := slog.NewTextHandler(os.Stdout, opts)
	logger := slog.New(handler)

	return &Logger{Logger: logger}
}

// NewJSONLogger creates a new JSON-based logger
// Useful for production environments and log aggregation
func NewJSONLogger(level string) *Logger {
	var slogLevel slog.Level
	switch level {
	case "debug":
		slogLevel = slog.LevelDebug
	case "info":
		slogLevel = slog.LevelInfo
	case "warn":
		slogLevel = slog.LevelWarn
	case "error":
		slogLevel = slog.LevelError
	default:
		slogLevel = slog.LevelInfo
	}

	opts := &slog.HandlerOptions{
		Level: slogLevel,
		AddSource: true,
	}

	handler := slog.NewJSONHandler(os.Stdout, opts)
	logger := slog.New(handler)

	return &Logger{Logger: logger}
}

// Log is a compatibility method that mimics the go-kit/log interface
func (l *Logger) Log(keyvals ...interface{}) error {
	if len(keyvals)%2 != 0 {
		keyvals = append(keyvals, "MISSING")
	}

	args := make([]interface{}, 0, len(keyvals))
	for i := 0; i < len(keyvals); i += 2 {
		key, ok := keyvals[i].(string)
		if !ok {
			continue
		}
		args = append(args, key, keyvals[i+1])
	}

	l.Logger.Info("", args...)
	return nil
}

// With returns a new logger with the given key-value pairs added to the context
func (l *Logger) With(keyvals ...interface{}) *Logger {
	if len(keyvals)%2 != 0 {
		keyvals = append(keyvals, "MISSING")
	}

	args := make([]interface{}, 0, len(keyvals))
	for i := 0; i < len(keyvals); i += 2 {
		key, ok := keyvals[i].(string)
		if !ok {
			continue
		}
		args = append(args, key, keyvals[i+1])
	}

	return &Logger{Logger: l.Logger.With(args...)}
}

// Debug logs a debug message
func (l *Logger) Debug(msg string, args ...interface{}) {
	l.Logger.Debug(msg, args...)
}

// Info logs an info message
func (l *Logger) Info(msg string, args ...interface{}) {
	l.Logger.Info(msg, args...)
}

// Warn logs a warning message
func (l *Logger) Warn(msg string, args ...interface{}) {
	l.Logger.Warn(msg, args...)
}

// Error logs an error message
func (l *Logger) Error(msg string, args ...interface{}) {
	l.Logger.Error(msg, args...)
}

// WithContext returns a logger with the given context
// Note: slog doesn't have WithContext, so this is a no-op for compatibility
func (l *Logger) WithContext(ctx context.Context) *Logger {
	return l
}

// WithTimeout adds timeout information to the logger context
func (l


.0721433,  0.350611,  -1.4783819,  -0.08906906,  -1.0895579,  1.0381049,  0.1077994,  -1.7566748,  -0.05030918,  0.62810355,  0.7931759,  -1.2866797,  0.19792879,  0.23244458,  0.297485,  2.0677142,  -0.99194163,  -0.81927,  -0.9226715,  0.046431597,  1.8423642,  -1.5117811,  -0.6781051,  0.09596937,  -1.2589027,  -0.20956731,  -2.744627,  -0.7434918,  -0.5068502,  -0.022698253,  2.3743207,  -1.6791207,  0.14706598,  -0.9875603,  -0.22400683,  0.0075647216,  0.57457316,  0.071014926,  -0.9400791,  -0.5889725,  -0.112101026,  0.958852,  1.7328339,  -1.1059617,  1.2439439,  0.34783828,  -0.4566401,  0.57137775,  -0.9776066,  -0.5858644,  -1.0566177,  -1.6149611,  -3.7003937,  0.57290834,  0.2314799,  0.44634762,  3.119334,  -0.978958,  1.9999012,  -0.34890327,  -0.58224356,  0.88450205,  0.5908928,  1.3172889,  -1.4905789,  1.0721767,  1.6737071,  0.055676755,  1.476286,  0.06980328,  0.66801643,  1.4221766,  1.0125562,  0.5045391,  -0.11218981,  0.51680934,  -0.6487145,  0.27678648,  -0.42279822,  -0.2664451,  1.0343866,  0.11190749  };
static const float s_ref_out_VALID_4_kh_1_kw_3_stride_1[2184] = {  1.419928,  -0.29316494,  0.19481489,  0.505936,  -0.29404244,  0.19481489,  0.70346415,  -0.68280596,  -0.6456473,  0.70346415,  0.04917862,  -0.29950118,  0.70346415,  0.04917862,  -0.29950118,  0.481634,  0.08754057,  -0.29950118,  0.31458223,  0.08754057,  -0.613004,  0.31458223,  0.08754057,  0.38262275,  1.0879844,  -0.26983958,  0.38262275,  1.0879844,  0.6349011,  0.38262275,  1.0879844,  0.6349011,  -0.2626465,  2.3597858,  1.6415988,  0.26970646,  2.3597858,  1.6415988,  0.26970646,  2.3597858,  1.6415988,  0.26970646,  0.3656696,  1.0148877,  0.35674423,  0.3656696,


out variadic macro support.
** bugfix: setting (builtin) request headers {{{Upgrade}}}, {{{Depth}}}, {{{Destination}}}, {{{Overwrite}}}, and {{{Date}}} might not take effect in standard nginx modules like [[ngx_http_proxy|http://nginx.org/en/docs/http/ngx_http_proxy_module.html]] and [[ngx_http_dav|http://nginx.org/en/docs/http/ngx_http_dav_module.html]].
** bugfix: when the response header {{{Content-Type}}} contains parameters like "; charset=utf-8", the {{{-t MIME-List}}} options did not work as expected at all. thanks Joseph Bartels for the report.
** bugfix: clearing input headers {{{If-Unmodified-Since}}}, {{{If-Match}}}, and {{{If-None-Match}}} did not clear the builtin "shortcut" fields in {{{ngx_http_headers_in_t}}} which might confuse other nginx modules like {{{ngx_http_not_modified_filter_module}}}. The first header gets "shortcuts" fields since nginx 0.9.2 while the latter two since nginx 1.3.3.
* upgraded IconvNginxModule to 0.13.
** bugfix: HTTP 0.9 requests would turn {{{iconv_filter}}} into a bad unrecoverable state leading to "iconv body filter skiped" error upon every subsequent request. thanks numberlife for the report. also introduced some coding style fixes.
** bugfix: lowered the error log level for HTTP 0.9 requests from "error" to "warn" to prevent malicious clients from flooding the error logs.
* upgraded LuaRestyRedisLibrary to 0.21.
** bugfix: the "attempt to call local new_tab (a table value)" error might happen when LuaJIT 2.0 was used and a local Lua module named "table.new" was visible. thanks Michael Pirogov for the report.
** doc: fixed code examples to check redis pipelined requests' return values more strictly. some commands (like hkeys and smembers) may return empty tables, which may result in {{{nil res[1]}}} values. thanks Dejiang Zhu for the patch.
* upgraded LuaRestyCoreLibrary to 0.1.2.
** change: updated the implementation to reflect recent changes in shared dictionary zones of LuaNginxModule. now we require LuaNginxModule 0.9.17+.
* upgraded LuaCjsonLibrary to 2.1.0.3.
** feature: now we allow up to 16 decimal places in JSON number encoding via {{{cjson.encode_number_precision()}}}. thanks lordnynex for the patch.
** bugfix: fixed the warning "inline function ‘fpconv_init’ declared but never defined" from gcc.
** bugfix: Makefile: removed the slash ({{{/}}}) after {{{$(DESTDIR)}}} so as to support relative path values in make variable {{{LUA_LIB_DIR}}}.
* upgraded RestyCLI to 0.04.
** feature: now the {{{resty}}} command-line utility looks for an nginx under the directory of itself as well (for Win32 OpenResty).
** bugfix: worked around a bug regarding temp directory cleanup in msys perl 5.8.8 (and possibly other versions of msys perl as well).
** bugfix: ensure we append an appropriate executable file extension when testing the existence of executables on exotic systems like Win32.
* upgraded LuaRdsParserLibrary to 0.06.
** bugfix: fixed the {{{u_char}}} C data type for ~MinGW gcc which lacks it.
** bugfix: Makefile: added an explicit {{{.c -> .o}}} rule to help ~MinGW make.
** bugfix: Makefile: removed the slash ({{{/}}}) after {{{$(DESTDIR)}}} so as to support relative path values in make variable {{{LUA_LIB_DIR}}}.
* upgraded LuaRedisParserLibrary to 0.12


NoScale) {
	                var det = m[0] * m[3] - m[1] * m[2];
	                lineWidth *= sqrt(abs(det));
	            }
	            strokeEl.weight = lineWidth + 'px';
	        }

	        var path = this.path || (this.path = new PathProxy());
	        if (this.__dirtyPath) {
	            path.beginPath();
	            this.buildPath(path, this.shape);
	            path.toStatic();
	            this.__dirtyPath = false;
	        }

	        vmlEl.path = pathDataToString(path.data, this.transform);

	        vmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2);

	        // Append to root
	        append(vmlRoot, vmlEl);

	        // Text
	        if (style.text != null) {
	            this.drawRectText(vmlRoot, this.getBoundingRect());
	        }
	        else {
	            this.removeRectText(vmlRoot);
	        }
	    };

	    Path.prototype.onRemove = function (vmlRoot) {
	        remove(vmlRoot, this._vmlEl);
	        this.removeRectText(vmlRoot);
	    };

	    Path.prototype.onAdd = function (vmlRoot) {
	        append(vmlRoot, this._vmlEl);
	        this.appendRectText(vmlRoot);
	    };

	    /***************************************************
	     * IMAGE
	     **************************************************/
	    var isImage = function (img) {
	        // FIXME img instanceof Image 如果 img 是一个字符串的时候，IE8 下会报错
	        return (typeof img === 'object') && img.tagName && img.tagName.toUpperCase() === 'IMG';
	        // return img instanceof Image;
	    };

	    // Rewrite the original path method
	    ZImage.prototype.brushVML = function (vmlRoot) {
	        var style = this.style;
	        var image = style.image;

	        // Image original width, height
	        var ow;
	        var oh;

	        if (isImage(image)) {
	            var src = image.src;
	            if (src === this._imageSrc) {
	                ow = this._imageWidth;
	                oh = this._imageHeight;
	            }
	            else {
	                var imageRuntimeStyle = image.runtimeStyle;
	                var oldRuntimeWidth = imageRuntimeStyle.width;
	                var oldRuntimeHeight = imageRuntimeStyle.height;
	                imageRuntimeStyle.width = 'auto';
	                imageRuntimeStyle.height = 'auto';

	                // get the original size
	                ow = image.width;
	                oh = image.height;

	                // and remove overides
	                imageRuntimeStyle.width = oldRuntimeWidth;
	                imageRuntimeStyle.height = oldRuntimeHeight;

	                // Caching image original width, height and src
	                this._imageSrc = src;
	                this._imageWidth = ow;
	                this._imageHeight = oh;
	            }
	            image = src;
	        }
	        else {
	            if (image === this._imageSrc) {
	                ow = this._imageWidth;
	                oh = this._imageHeight;
	            }
	        }
	        if (!image) {
	            return;
	        }

	        var x = style.x || 0;
	        var y = style.y || 0;

	        var dw = style.width;
	        var dh = style.height;

	        var sw = style.sWidth;
	        var sh = style.sHeight;
	        var sx = style.sx || 0;
	        var sy = style.sy || 0;

	        var hasCrop = sw && sh;

	        var vmlEl = this._vmlEl;
	        if (!vmlEl) {
	            // FIXME 使用 group 在 left, top 都不是 0 的时候就无法显示了。
	            // vmlEl = vmlCore.createNode('group');
	            vmlEl = vmlCore.doc.createElement('div');
	            initRootElStyle(vmlEl);


gTilUtland.advarsel.nei.soker');
};

const annenForelderHarIkkeSvartNeiTilknytningTilUtland = (felt: IFelt): IFelt => {
    return felt.verdi !== TilknytningTilUtlandVerdier.nei
        ? ok(felt)
        : advarsel(felt, 'tilknytningTilUtland.advarsel.nei.annenForelder');
};

const harBekreftetOppsummering = (felt: IFelt): IFelt =>
    harSvartJa(felt, 'oppsummering.bekreftelse.feilmelding');

const harBekreftetVeiledning = (felt: IFelt): IFelt =>
    harSvartJa(felt, 'veiledningsside.bekreftelse.feilmelding');

const harSvartMedFeilmelding = (felt: IFelt): IFelt =>
    harSvart(felt, 'feilmelding.generell.feilmelding');

const harSvartJaMedFeilmelding = (felt: IFelt): IFelt =>
    harSvartJa(felt, 'feilmelding.generell.feilmeldingCheckbox');

const harSvartTekstMedFeilmelding = (felt: IFelt): IFelt =>
    harSvartTekst(felt, 'feilmelding.generell.feilmelding');

const harSvartMineBarnMedFeilmelding = (felt: IFelt): IFelt =>
    harSvartTekst(felt, 'barn.feilmelding');

const harSvartOppgiInfoMedFeilmelding = (felt: IFelt): IFelt =>
    harSvartTekst(felt, 'feilmelding.generell.oppgiInformasjon');

const harSvartTekstUnderAntallTegnMedFeilmelding = (felt: IFelt): IFelt =>
    harSvartTekstUnderAntallTegn(felt, 'feilmelding.generell.forMangeTegn');

const harLastetOppVedlegg = (felt: IVedleggFelt): IVedleggFelt => {
    return felt.verdi.length ? ok(felt) : feil(felt, 'feilmelding.generell.vedlegg.mangler');
};

const svarUtenValidering = (felt: IFelt): IFelt => ok(felt);

export {
    annenForelderHarIkkeSvartNeiTilknytningTilUtland,
    erGyldigDato,
    fødselsnummerPassererMod10ogMod11Sjekk,
    harBekreftetOppsummering,
    harBekreftetVeiledning,
    harFyltInnDato,
    harFyltInnFødselsnummer,
    harFyltInnGyldigAntallTimer,
    harFyltInnNavn,
    harFyltInnTall,
    harLastetOppVedlegg,
    harSvart,
    harSvartBarnehageplassVerdiMedFeilmelding,
    harSvartJa,
    harSvartJaMedFeilmelding,
    harSvartMedFeilmelding,
    harSvartMineBarnMedFeilmelding,
    harSvartOppgiInfoMedFeilmelding,
    harSvartTekstMedFeilmelding,
    harSvartTekstUnderAntallTegnMedFeilmelding,
    harSvartTilknytningTilUtlandVerdiMedFeilmelding,
    harSvartTomtFødselsnummer,
    sokerHarIkkeSvartNeiTilknytningTilUtland,
    svarUtenValidering,
};
// const config = require('../../src/config.json');
import fooodModel from '../models/food.model';

class FoodService {
    public food = fooodModel;

    public getAll = async


01] <CHARACTER TABULATION> (BA) ÷ [0.3]
× 0E01 × 0020 ÷ 0009 ÷	#  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
× 0E01 × 0308 × 0009 ÷	#  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
× 0E01 × 0308 × 0020 ÷ 0009 ÷	#  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
× 0E01 ÷ 00B4 ÷	#  × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
× 0E01 × 0020 ÷ 00B4 ÷	#  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
× 0E01 × 0308 ÷ 00B4 ÷	#  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
× 0E01 × 0308 × 0020 ÷ 00B4 ÷	#  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
× 0E01 × 000B ÷	#  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
× 0E01 × 0020 × 000B ÷	#  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
× 0E01 × 0308 × 000B ÷	#  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
× 0E01 × 0308 × 0020 × 000B ÷	#  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
× 0E01 ÷ FFFC ÷	#  × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
× 0E01 × 0020 ÷ FFFC ÷	#  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
× 0E01 × 0308 ÷ FFFC ÷	#  × [0.3] THAI CHARA


 class UiMonsterBookTest : KtxApplicationAdapter {
    private val uiViewport = uiViewport()
    private val batch by lazy { SpriteBatch() }
    private val stage by lazy { Stage(uiViewport, batch) }
    private val uiAtlas by lazy { TextureAtlas("ui/skin.atlas".toClasspathFile()) }
    private val skin by lazy { FreeTypeSkin("ui/skin.json".toClasspathFile(), uiAtlas) }
    private val eventService by lazy { EventService() }
    private val assetService by lazy { AssetService(ClasspathFileHandleResolver()) }
    private val tiledService by lazy { TiledService(assetService, eventService) }
    private val world = configureWorld {
        injectables {
            add(mockk<World>(relaxed = true))
        }
    }
    private val bundle by lazy { I18NBundle.createBundle("ui/messages".toClasspathFile(), Charsets.ISO_8859_1.name()) }
    private val audioService by lazy { AudioService(assetService) }

    override fun create() {
        Gdx.app.logLevel = Application.LOG_DEBUG

        assetService.load(AtlasAsset.CHARS_AND_PROPS)
        assetService.finishLoading()

        world.entity {
            it += Player()
            it += MonsterBook(knownTypes = mutableSetOf(
                TiledObjectType.BUTTERFLY,
//                TiledObjectType.LARVA,
//                TiledObjectType.MUSHROOM,
//                TiledObjectType.CYCLOPS,
//                TiledObjectType.SLIME,
//                TiledObjectType.AXOLOT,
//                TiledObjectType.SPIDER,
            ))
        }
        val tiledMap = tiledService.loadMap(TiledMapAsset.VILLAGE)
        tiledService.setMap(tiledMap, world, false)

        stage.actors {
            monsterBookView(
                MonsterBookViewModel(
                    bundle,
                    audioService,
                    world,
                    assetService[AtlasAsset.CHARS_AND_PROPS],
                    eventService,
                    tiledService
                ), skin
            )
        }
        eventService += stage
        eventService += audioService
        Gdx.input.inputProcessor = KeyboardController(eventService, ControllerStateUI::class).also {
            eventService += it
        }

        eventService.fire(MenuBeginEvent(MenuType.MONSTER_BOOK))
    }

    override fun resize(width: Int, height: Int) {
        stage.viewport.update(width, height, true)
    }

    override fun render() {
        clearScreen(0f, 0f, 0f, 1f)
        uiViewport.apply()
        stage.act(Gdx.graphics.deltaTime)
        stage.draw()
    }

    override fun dispose() {
        stage.dispose()
        batch.dispose()
        skin.dispose()
        world.dispose()
        assetService.dispose()
    }
}
package io.github.masamune.audio

import com.badlogic.gdx.Application
import com.badlogic.gdx.Gdx
import com.badlogic.gdx.Input
import com.badlogic.gdx.assets.loaders.resolvers.ClasspathFileHandleResolver
import io.github.masamune.asset.AssetService
import io.github.masamune.asset.MusicAsset
import io.github.masamune.asset.SoundAsset
import io.github.masamune.gdxTest
import ktx.app.KtxApplicationAdapter

/**
 * Test for [AudioService].
 * Press '1' and '2' to play different music.
 * Press '3', '4' and '5' to play the same sound effect with different pitch.
 * Press '6' to pause any audio.
 * Press '7' to resume any audio.
 */

fun main() = gdxTest("Audio Test, 1-7 to play/stop music/sound", AudioTest())

private class AudioTest : KtxApplicationAdapt


WORKS_BAD_STATE);
}

#if 0 // TODO-NNRT : Enable if we support OEM OP.
TEST_F(ValidationTestModel, AddOEMOperand) {
    ANeuralNetworksOperandType OEMScalarType{
                .type = ANEURALNETWORKS_OEM_SCALAR, .dimensionCount = 0, .dimensions = nullptr};
    EXPECT_EQ(ANeuralNetworksModel_addOperand(mModel, &OEMScalarType), ANEURALNETWORKS_NO_ERROR);
    char buffer[20];
    EXPECT_EQ(ANeuralNetworksModel_setOperandValue(mModel, 0, buffer, sizeof(buffer)),
              ANEURALNETWORKS_NO_ERROR);

    const size_t kByteSizeOfOEMTensor = 4;
    uint32_t dimensions[]{kByteSizeOfOEMTensor};
    ANeuralNetworksOperandType OEMTensorType{
                .type = ANEURALNETWORKS_TENSOR_OEM_BYTE,
                .dimensionCount = 1,
                .dimensions = dimensions};
    EXPECT_EQ(ANeuralNetworksModel_addOperand(mModel, &OEMTensorType), ANEURALNETWORKS_NO_ERROR);
    EXPECT_EQ(ANeuralNetworksModel_setOperandValue(mModel, 1, buffer, kByteSizeOfOEMTensor),
              ANEURALNETWORKS_NO_ERROR);

    ANeuralNetworksModel_finish(mModel);
    // This should fail, as the model is already finished.
    EXPECT_EQ(ANeuralNetworksModel_addOperand(mModel, &OEMTensorType), ANEURALNETWORKS_BAD_STATE);
}
#endif // TODO-NNRT

TEST_F(ValidationTestModel, AddOperation) {
    uint32_t input = 0;
    uint32_t output = 0;
    EXPECT_EQ(ANeuralNetworksModel_addOperation(nullptr, ANEURALNETWORKS_AVERAGE_POOL_2D, 1, &input,
                                                1, &output),
              ANEURALNETWORKS_UNEXPECTED_NULL);
    EXPECT_EQ(ANeuralNetworksModel_addOperation(mModel, ANEURALNETWORKS_AVERAGE_POOL_2D, 0, nullptr,
                                                1, &output),
              ANEURALNETWORKS_UNEXPECTED_NULL);
    EXPECT_EQ(ANeuralNetworksModel_addOperation(mModel, ANEURALNETWORKS_AVERAGE_POOL_2D, 1, &input,
                                                0, nullptr),
              ANEURALNETWORKS_UNEXPECTED_NULL);

    ANeuralNetworksOperationType invalidOp = -1;
    EXPECT_EQ(ANeuralNetworksModel_addOperation(mModel, invalidOp, 1, &input,
                                                1, &output),
              ANEURALNETWORKS_BAD_DATA);

    ANeuralNetworksModel_finish(mModel);
    // This should fail, as the model is already finished.
    EXPECT_EQ(ANeuralNetworksModel_addOperation(mModel, ANEURALNETWORKS_AVERAGE_POOL_2D, 1, &input,
                                                1, &output),
              ANEURALNETWORKS_BAD_STATE);
}

TEST_F(ValidationTestModel, IdentifyInputsAndOutputs) {
    uint32_t input = 0;
    uint32_t output = 0;
    EXPECT_EQ(ANeuralNetworksModel_identifyInputsAndOutputs(nullptr, 1, &input, 1, &output),
              ANEURALNETWORKS_UNEXPECTED_NULL);
    EXPECT_EQ(ANeuralNetworksModel_identifyInputsAndOutputs(mModel, 0, nullptr, 1, &output),
              ANEURALNETWORKS_UNEXPECTED_NULL);
    EXPECT_EQ(ANeuralNetworksModel_identifyInputsAndOutputs(mModel, 1, &input, 0, nullptr),
              ANEURALNETWORKS_UNEXPECTED_NULL);

    ANeuralNetworksModel_finish(mModel);
    // This should fail, as the model is already finished.
    EXPECT_EQ(ANeuralNetworksModel_identifyInputsAndOutputs(mModel, 1, &input, 1, &output),
              ANEURALNETWORKS_BAD_STATE);
}

TEST_F(ValidationTestModel, RelaxComputationFloat32toFloat16) {
    EXPECT_EQ(ANeuralNetworksModel_relaxComputationFloat32toFloat16(nullptr, true),


/*
** FamiTracker - NES/Famicom sound tracker
** Copyright (C) 2005-2014  Jonathan Liss
**
** 0CC-FamiTracker is (C) 2014-2018 HertzDevil
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
** Library General Public License for more details.  To obtain a
** copy of the GNU Library General Public License, write to the Free
** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**
** Any permitted reproduction of these routines, in whole or in part,
** must bear this legend.
*/

#pragma once

#include "stdafx.h"
#include "../resource.h"
#include "APU/Types_fwd.h"

// CGotoDlg dialog

class CGotoDlg : public CDialog
{
	DECLARE_DYNAMIC(CGotoDlg)

public:
	CGotoDlg(CWnd* pParent = NULL);   // standard constructor
	virtual ~CGotoDlg();

// Dialog Data
	enum { IDD = IDD_GOTO };

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

	void CheckDestination() const;
	int GetFinalChannel() const;

	unsigned int m_iDestFrame;
	unsigned int m_iDestRow;
	sound_chip_t m_iDestChip;
	unsigned int m_iDestSubIndex;

	CComboBox m_cChipEdit;

	DECLARE_MESSAGE_MAP()
public:
	virtual BOOL OnInitDialog();
	afx_msg void OnEnChangeEditGotoFrame();
	afx_msg void OnEnChangeEditGotoRow();
	afx_msg void OnEnChangeEditGotoChannel();
	afx_msg void OnCbnSelchangeComboGotoChip();
	afx_msg void OnBnClickedOk();
};


)
							doc.getById( 'exec-bold' ).hide();
						if ( !ed.getCommand( 'link' ) )
							doc.getById( 'exec-link' ).hide();
					}
				}
			});
		</script>

			<input id="exec-bold" onclick="ExecuteCommand('bold');" type="button" value="Execute "bold" Command">
			<input id="exec-link" onclick="ExecuteCommand('link');" type="button" value="Execute "link" Command">
			<input onclick="Focus();" type="button" value="Focus">

			<input onclick="InsertHTML();" type="button" value="Insert HTML">
			<input onclick="SetContents();" type="button" value="Set Editor Contents">
			<input onclick="GetContents();" type="button" value="Get Editor Contents (HTML)">

			<textarea cols="100" id="htmlArea" rows="3"><h2>Test</h2><p>This is some <a href="/Test1.html">sample</a> HTML code.</p></textarea>

			<input onclick="InsertText();" type="button" value="Insert Text">

			<textarea cols="100" id="txtArea" rows="3">   First line with some leading whitespaces.

Second line of text preceded by two line breaks.</textarea>

			<input onclick="CheckDirty();" type="button" value="checkDirty()">
			<input onclick="ResetDirty();" type="button" value="resetDirty()">

	</form>

			CKEditor - The text editor for the Internet - http://ckeditor.com

			Copyright © 2003-2014, CKSource - Frederico
			Knabben. All rights reserved.

<!DOCTYPE html>

	<meta charset="utf-8">
	<title>Output for Flash — CKEditor Sample</title>

	<link href="../../../samples/sample.css" rel="stylesheet">
	<meta name="ckeditor-sample-required-plugins" content="sourcearea">
	<meta name="ckeditor-sample-name" content="Output for Flash">
	<meta name="ckeditor-sample-group" content="Advanced Samples">
	<meta name="ckeditor-sample-description" content="Configuring CKEditor to produce HTML code that can be used with Adobe Flash.">

		CKEditor Samples » Producing Flash Compliant HTML Output

			This sample shows how to configure CKEditor to output
			HTML code that can be used with
			<a class="samples" href="http://www.adobe.com/livedocs/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?


",
[8254] = "Aro rojo imperial",
[8255] = "Faja de piel de serpiente",
[8256] = "Botas de piel de serpiente",
[8257] = "Brazales de piel de serpiente",
[8258] = "Armadura de piel de serpiente",
[8259] = "Capa de piel de serpiente",
[8260] = "Guantes de piel de serpiente",
[8261] = "Yelmo de piel de serpiente",
[8262] = "Leotardos de piel de serpiente",
[8263] = "Bufas de piel de serpiente",
[8264] = "Guardamuñecas Fuerte ébano",
[8265] = "Armadura Fuerte ébano",
[8266] = "Capa Fuerte ébano",
[8267] = "Guanteletes Fuerte ébano",
[8268] = "Faja Fuerte ébano",
[8269] = "Botas Fuerte ébano",
[8270] = "Casco Fuerte ébano",
[8271] = "Leotardos Fuerte ébano",
[8272] = "Hombreras Fuerte ébano",
[8273] = "Guardamuñecas valerosos",
[8274] = "Coselete valeroso",
[8275] = "Rodela Fuerte ébano",
[8276] = "Guanteletes valerosos",
[8277] = "Faja valerosa",
[8278] = "Grebas valerosas",
[8279] = "Yelmo valeroso",
[8280] = "Musleras valerosas",
[8281] = "Espaldares valerosos",
[8282] = "Escudo valeroso",
[8283] = "Armadura Arcana",
[8284] = "Botas Arcanas",
[8285] = "Braciles Arcanos",
[8286] = "Capa Arcana",
[8287] = "Guantes Arcanos",
[8288] = "Protectores Arcanos",
[8289] = "Leotardos Arcanos",
[8290] = "Toga Arcana",
[8291] = "Fajín Arcano",
[8292] = "Sombrero Arcano",
[8293] = "Cinturón de viajero",
[8294] = "Botas de viajero",
[8295] = "Brazales de viajero",
[8296] = "Chaleco de viajero",
[8297] = "Capa de viajero",
[8298] = "Guantes de viajero",
[8299] = "Yelmo de viajero",
[8300] = "Leotardos de viajero",
[8301] = "Bufas de viajero",
[8302] = "Brazales de héroe",
[8303] = "Coraza de héroe",
[8304] = "Manteo de héroe",
[8305] = "Guanteletes de héroe",
[8306] = "Cinturón de héroe",
[8307] = "Botas de héroe",
[8308] = "Banda de héroe",
[8309] = "Leotardos de héroe",
[8310] = "Espaldares de héroe",
[8311] = "Avambrazos de placas de alabastro",
[8312] = "Coraza de alabastro",
[8313] = "Rodela de héroe",
[8314] = "Guanteletes de placas de alabastro",
[8315] = "Faja de placas de alabastro",
[8316] = "Grebas de placas de alabastro",
[8317] = "Casco de placas de alabastro",
[8318] = "Leotardos de placas de alabastro",
[8319]


-clip",syntax:"[ <geometry-box> | no-clip ]#",relevance:50,browsers:["E79","FF53","S4","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-clip"}],description:"The mask-clip CSS property determines the area, which is affected by a mask. The painted content of an element must be restricted to this area."},{name:"mask-composite",syntax:"<compositing-operator>#",relevance:50,browsers:["E18","FF53"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-composite"}],description:"The mask-composite CSS property represents a compositing operation used on the current mask layer with the mask layers below it."},{name:"masonry-auto-flow",status:"experimental",syntax:"[ pack | next ] || [ definite-first | ordered ]",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/masonry-auto-flow"}],description:"The masonry-auto-flow CSS property modifies how items are placed when using masonry in CSS Grid Layout."},{name:"math-style",syntax:"normal | compact",relevance:50,browsers:["FF83","S14.1","C83"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/math-style"}],description:"The math-style property indicates whether MathML equations should render with normal or compact height."},{name:"max-lines",status:"experimental",syntax:"none | <integer>",relevance:50,description:"The max-liens property forces a break after a set number of lines"},{name:"offset",syntax:"[ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]?",relevance:50,browsers:["E79","FF72","C55","O42"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/offset"}],description:"The offset CSS property is a shorthand property for animating an element along a defined path."},{name:"offset-anchor",syntax:"auto | <position>",relevance:50,browsers:["E79","FF72","C79"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/offset-anchor"}],description:"Defines an anchor point of the box positioned along the path. The anchor point specifies the point of the box which is to be considered as the point that is moved along the path."},{name:"offset-distance",syntax:"<length-percentage>",relevance:50,browsers:["E79","FF72","C55","O42"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/offset-distance"}],description:"The offset-distance CSS property specifies a position along an offset-path."},{name:"offset-path",syntax:"none | ray( [ <angle> && <size> && contain? ] ) | <path()> | <url> | [ <basic-shape> || <geometry-box> ]",relevance:50,browsers:["E79","FF72","C55","O45"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/offset-path"}],description:'The offset-path CSS property specifies the offset path where the element gets positioned. The exact element’s position on the offset path is determined by the offset-distance property. An offset path is either a specified path with one or multiple sub-paths or the geometry of a not-styled basic shape. Each shape or path must define an initial position for the computed value of "0" for offset-distance and an initial direction which specifies the rotation of the object to the initial position.\n\nIn this specification, a direction (or rotation) of 0 degrees is equivalent to the direction of the positive x-axis in the object’s local


.s64 + -1;
	// stwcx. r7,0,r30
	cr0.lt = 0;
	cr0.gt = 0;
	cr0.eq = __sync_bool_compare_and_swap(reinterpret_cast<uint32_t*>(base + r30.u32), reserved.s32, __builtin_bswap32(ctx.r7.s32));
	cr0.so = xer.so;
	// mtmsrd r6,1
	// bne 0x82a19cb0
	if (!cr0.eq) goto loc_82A19CB0;
	// stw r31,0(r24)
	PPC_STORE_U32(r24.u32 + 0, r31.u32);
	// addi r1,r1,160
	ctx.r1.s64 = ctx.r1.s64 + 160;
	// b 0x82ca2c28
	return;
}

PPC_WEAK_FUNC(sub_82A19B48) {
	__imp__sub_82A19B48(ctx, base);
}

PPC_FUNC_IMPL(__imp__sub_82A19CD8) {
	PPC_FUNC_PROLOGUE();
	PPCXERRegister xer{};
	PPCRegister reserved{};
	PPCCRRegister cr0{};
	PPCCRRegister cr6{};
	PPCRegister r11{};
	PPCRegister r26{};
	PPCRegister r27{};
	PPCRegister r28{};
	PPCRegister r29{};
	PPCRegister r30{};
	PPCRegister r31{};
	uint32_t ea{};
	// mflr r12
	// bl 0x82ca2be0
	// stwu r1,-160(r1)
	ea = -160 + ctx.r1.u32;
	PPC_STORE_U32(ea, ctx.r1.u32);
	ctx.r1.u32 = ea;
	// lis r11,-31927
	r11.s64 = -2092367872;
	// li r8,0
	ctx.r8.s64 = 0;
	// addi r27,r11,28344
	r27.s64 = r11.s64 + 28344;
	// mr r31,r3
	r31.u64 = ctx.r3.u64;
	// stw r8,96(r1)
	PPC_STORE_U32(ctx.r1.u32 + 96, ctx.r8.u32);
	// mr r7,r27
	ctx.r7.u64 = r27.u64;
loc_82A19CFC:
	// mfmsr r9
	// mtmsrd r13,1
	// lwarx r10,0,r7
	reserved.u32 = *(uint32_t*)(base + ctx.r7.u32);
	ctx.r10.u64 = __builtin_bswap32(reserved.u32);
	// addi r10,r10,1
	ctx.r10.s64 = ctx.r10.s64 + 1;
	// stwcx. r10,0,r7
	cr0.lt = 0;
	cr0.gt = 0;
	cr0.eq = __sync_bool_compare_and_swap(reinterpret_cast<uint32_t*>(base + ctx.r7.u32), reserved.s32, __builtin_bswap32(ctx.r10.s32));
	cr0.so = xer.so;
	// mtmsrd r9,1
	// bne 0x82a19cfc
	if (!cr0.eq) goto loc_82A19CFC;
	// lwz r5,8(r31)
	ctx.r5.u64 = PPC_LOAD_U32(r31.u32 + int32_t(8) );


Raw.offset
     */
    var offset: Long = 0

    /**
     * A 4-byte CRC (Cyclic Redundancy Check) calculated on the preceding bytes
     * in the chunk, including the chunk type code and chunk data fields, but
     * not including the length field.
     */
    var crcval = ByteArray(4)
    private var crcengine // lazily instantiated
            : Checksum? = null

    init {
        this.id = id
        idbytes = ChunkHelper.toBytesLatin1(id)
        for (i in 0..3) {
            if (idbytes[i] < 0x41 || idbytes[i] > 0x7a || idbytes[i] in 0x5b..0x60) throw PngjException(
                "Bad id chunk: must be ascii letters $id"
            )
        }
        if (alloc) allocData()
    }

    constructor(len: Int, idbytes: ByteArray, alloc: Boolean) : this(
        len,
        ChunkHelper.toStringLatin1(idbytes),
        alloc
    )

    fun allocData() { // TODO: not public
        if (data == null || data!!.size < len) data = ByteArray(len)
    }

    /**
     * this is called after setting data, before writing to os
     */
    private fun computeCrcForWriting() {
        crcengine = crc32()
        crcengine!!.update(idbytes, 0, 4)
        if (len > 0) crcengine!!.update(data!!, 0, len) //
        PngHelperInternal.writeInt4tobytes(crcengine!!.value.toInt(), crcval, 0)
    }

    /**
     * Computes the CRC and writes to the stream. If error, a
     * PngjOutputException is thrown
     *
     * Note that this is only used for non idat chunks
     */
    fun writeChunk(os: OutputPngStream) {
        writeChunkHeader(os)
        if (len > 0) {
            require(data != null) { "cannot write chunk, raw chunk data is null [$id]" }
            PngHelperInternal.writeBytes(os, data!!, 0, len)
        }
        computeCrcForWriting()
        writeChunkCrc(os)
    }

    private fun writeChunkHeader(os: OutputPngStream) {
        if (idbytes.size != 4) throw PngjOutputException("bad chunkid [$id]")
        PngHelperInternal.writeInt4(os, len)
        PngHelperInternal.writeBytes(os, idbytes)
    }

    private fun writeChunkCrc(os: OutputPngStream) {
        PngHelperInternal.writeBytes(os, crcval, 0, 4)
    }

    fun checkCrc(throwExcep: Boolean) {
        val crcComputed: Int = crcengine!!.value.toInt()
        val crcExpected: Int = PngHelperInternal.readInt4fromBytes(crcval, 0)
        if (crcComputed != crcExpected) {
            val msg =
                "Bad CRC in chunk: $id (offset:$offset). Expected:$crcExpected Got:$crcComputed"

            if (throwExcep) throw PngjBadCrcException(msg) else println(msg)
        }
    }

    fun updateCrc(buf: ByteArray, off: Int, len: Int) {
        if (crcengine == null) crcengine = crc32()
        crcengine!!.update(buf, off, len)
    }

    // only the data
    val asByteStream: InputPngStream
        get() =// only the data
            InputPngStream(data!!)

    override fun toString(): String {
        return "chunkid=" + ChunkHelper.toStringLatin1(idbytes) + " len=" + len
    }

    override fun hashCode(): Int {
        val prime = 31
        var result = 1
        result = prime * result + id.hashCode()
        result = prime * result + (offset xor (offset ushr 32)).toInt()
        return result
    }

    override fun eq


},{29.92,8.81},{17.43,18.71},{43.45,11.18},{38.81,28.47},{19.89,25.89},{22.14,15.62},{23.16,19.12},{22.07,16.02},{40.83,18.89},{17.55,16.9},{22.52,31.33},{31.72,27.26},{29.24,15.72},{22.14,19.6},{18.7,22.41}}},44},
[2056] = {"Campfire",nil,nil,{[40]={{27.67,59.86},{27.67,59.86}}},40},
[2057] = {"Campfire",nil,nil,{[40]={{38.84,69.68}}},40},
[2059] = {"A Dwarven Corpse",{26855},{419,26854},{[1]={{87.64,50.14}}},1},
[2062] = {"Campfire",nil,nil,{[44]={{30.06,45.21}}},44},
[2068] = {"Pupellyverbos Port",nil,nil,{[47]={{73.3,97.05},{75.7,64.33},{80.03,61.51},{76.05,77.47},{77.81,65.55},{78.11,80.83},{73.87,93.47},{74.94,88.42},{78.42,82.32},{73.25,95.47},{78.29,77.73},{79.09,78.86},{79.6,81.62},{75.08,86.09},{77.35,83.27},{73.57,89.27},{76.26,85.62},{75.94,83.28},{73.3,92.1},{81.91,52.85},{82.3,50.74},{81.45,57.23},{76.12,81.74},{73.94,91.25},{79.28,60.46},{81.36,50.5},{77.22,76.16},{78.7,70.64},{81.9,54.13},{79.96,57.3}}},47},
[2076] = {"Bubbling Cauldron",{26301,26302,26325,26330,26332},{584,585,586,26300,26301,26325,26330,26332},{[33]={{38.5,48.52}}},33},
[2083] = {"Bloodsail Correspondence",{26610},{595,26609},{[5287]={{41.26,61.17}}},5287},
[2084] = {"Musquash Root",nil,nil,{[11]={{64.78,75.32}}},11},
[2086] = {"Bloodsail Charts",nil,nil,{[5287]={{42,83.12}}},5287},
[2087] = {"Bloodsail Orders",nil,nil,{[5287]={{40.75,82.25}}},5287},
[2096] = {"Trade District",nil,nil,{[1519]={{53.46,79.1}}},1519},
[2098] = {"Cathedral Square",nil,nil,{[1519]={{61.75,38.3}}},1519},
[2099] = {"Cathedral Square",nil,nil,{[1519]={{60.79,67.63}}},1519},
[2100] = {"Old Town",nil,nil,{[1519]={{63.91,67.17}}},1519},
[2101] = {"Mage Quarter",nil,nil,{[1519]={{60.38,71.34}}},1519},
[2102] = {"Cathedral Square",nil,nil,{[1519]={{60.56,48.68}}},1519},
[2105] = {"Cathedral Square",nil,nil,{[1519]={{58.14,60.94}}},1519},
[2106] = {"Cathedral Square",nil,nil,{[1519]={{48.47,59


priteTiltTable:				; $120e		A lookup table to convert sprite tilt to offsets we can use in rendering
		.byte $FF,$03
		.byte $FF,$04
		.byte $FF,$05
		.byte $FF,$0A
		.byte $FF,$0D
		.byte $00,$00
		.byte $01,$0D
		.byte $01,$0A
		.byte $01,$05
		.byte $01,$04
		.byte $01,$03

; Takes a row of pixel data and uses it to blit an entire rectangle. The row of pixels
; given are replicated for each row. The pixel row comes from a standard sprite struct
; Preserves registers
blitRect:		; $1224
		sta     ZP_REGISTER_A		; Save registers
        stx     ZP_REGISTER_X
        sty     ZP_REGISTER_Y

        jsr     parseImageHeader	; Get image specs
        jsr     calcRowBitByte		; Figure out how wide the area is
        lda     ZP_SCREEN_Y
        sta     ZP_RENDER_CURR_Y
        clc
        lda     ZP_CURR_X_BYTE
        adc     ZP_IMAGE_W
        cmp     #$29
        bcc     blitRectLoop
        sec
        lda     #$28
        sbc     ZP_CURR_X_BYTE
        sta     ZP_IMAGE_W

blitRectLoop:  						; Blit the pixels
		ldx     ZP_RENDER_CURR_Y
        lda     hiResRowsLow,x
        sta     blitRectBlit+1	; Self-modifying code
        sta     blitRectBlit2+1

        lda     hiResRowsHigh,x
        eor     ZP_PAGEMASK
        sta     blitRectBlit+2	; Self-modifying code
        sta     blitRectBlit2+2
        lda     #$01
        and     ZP_RENDER_CURR_Y
        asl
        tay
        lda     (ZP_PARAM_PTR_L),y
        sta     blitRectLoad2+1
        iny
        lda     (ZP_PARAM_PTR_L),y
        sta     blitRectLoad+1	; Self-modifying code
        ldx     ZP_IMAGE_W
        ldy     ZP_CURR_X_BYTE
        tya
        and     #$01
        beq     blitRectLoad2

blitRectLoad:			; $1274
		lda		#$55		; Self-modification target
blitRectBlit:			; $1276
		sta		$2ad0,y		; Self-modification target

        iny
        dex
        beq     blitRectRowDone

blitRectLoad2:			; $127d
		lda		#$2a		; Self-modification target
blitRectBlit2:			; $127f
		sta		$2ad0,y		; Self-modification target

		iny
        dex
        bne     blitRectLoad

blitRectRowDone:
		dec     ZP_IMAGE_H
        beq     blitRectDone
        dec     ZP_RENDER_CURR_Y
        jmp     blitRectLoop

blitRectDone:
		lda     ZP_REGISTER_A		; Restore registers
        ldx     ZP_REGISTER_X
        ldy     ZP_REGISTER_Y
        rts

; Initializes a bunch of rendering state. Called from the loader
; Preserves registers
initRendering:		; $1296
		pha
        jsr     initSlideAnim
        lda     #$00
        sta     ZP_PAGEMASK
        sta     ZP_PALETTE
        sta     ZP_SPRITE_TILT_SIGN
        sta     ZP_SPRITE_TILT_OFFSET
        sta     ZP_UNUSEDB4
        sta     ZP_UNUSEDB5
        sta     ZP_SCREENBOTTOM			; Vertical scrolling no longer supported, so this is fixed at 0
        sta     ZP_LOCALSCROLL_L
        sta     ZP_LOCALSCROLL_H
        lda


is(ecx) ? eax : ecx;
  __ push(scratch1);
  __ push(save_reg);

  bool stash_exponent_copy = !input_reg.is(esp);
  __ mov(scratch1, mantissa_operand);
  if (CpuFeatures::IsSupported(SSE3)) {
    CpuFeatureScope scope(masm, SSE3);
    // Load x87 register with heap number.
    __ fld_d(mantissa_operand);
  }
  __ mov(ecx, exponent_operand);
  if (stash_exponent_copy) __ push(ecx);

  __ and_(ecx, HeapNumber::kExponentMask);
  __ shr(ecx, HeapNumber::kExponentShift);
  __ lea(result_reg, MemOperand(ecx, -HeapNumber::kExponentBias));
  __ cmp(result_reg, Immediate(HeapNumber::kMantissaBits));
  __ j(below, &process_64_bits);

  // Result is entirely in lower 32-bits of mantissa
  int delta = HeapNumber::kExponentBias + Double::kPhysicalSignificandSize;
  if (CpuFeatures::IsSupported(SSE3)) {
    __ fstp(0);
  }
  __ sub(ecx, Immediate(delta));
  __ xor_(result_reg, result_reg);
  __ cmp(ecx, Immediate(31));
  __ j(above, &done);
  __ shl_cl(scratch1);
  __ jmp(&check_negative);

  __ bind(&process_64_bits);
  if (CpuFeatures::IsSupported(SSE3)) {
    CpuFeatureScope scope(masm, SSE3);
    if (stash_exponent_copy) {
      // Already a copy of the exponent on the stack, overwrite it.
      STATIC_ASSERT(kDoubleSize == 2 * kPointerSize);
      __ sub(esp, Immediate(kDoubleSize / 2));
    } else {
      // Reserve space for 64 bit answer.
      __ sub(esp, Immediate(kDoubleSize));  // Nolint.
    }
    // Do conversion, which cannot fail because we checked the exponent.
    __ fisttp_d(Operand(esp, 0));
    __ mov(result_reg, Operand(esp, 0));  // Load low word of answer as result
    __ add(esp, Immediate(kDoubleSize));
    __ jmp(&done_no_stash);
  } else {
    // Result must be extracted from shifted 32-bit mantissa
    __ sub(ecx, Immediate(delta));
    __ neg(ecx);
    if (stash_exponent_copy) {
      __ mov(result_reg, MemOperand(esp, 0));
    } else {
      __ mov(result_reg, exponent_operand);
    }
    __ and_(result_reg,
            Immediate(static_cast<uint32_t>(Double::kSignificandMask >> 32)));
    __ add(result_reg,
           Immediate(static_cast<uint32_t>(Double::kHiddenBit >> 32)));
    __ shrd_cl(scratch1, result_reg);
    __ shr_cl(result_reg);
    __ test(ecx, Immediate(32));
    __ cmov(not_equal, scratch1, result_reg);
  }

  // If the double was negative, negate the integer result.
  __ bind(&check_negative);
  __ mov(result_reg, scratch1);
  __ neg(result_reg);
  if (stash_exponent_copy) {
    __ cmp(MemOperand(esp, 0), Immediate(0));
  } else {
    __ cmp(exponent_operand, Immediate(0));
  }
    __ cmov(greater, result_reg, scratch1);

  // Restore registers
  __ bind(&done);
  if (stash_exponent_copy) {
    __ add(esp, Immediate(kDoubleSize / 2));
  }
  __ bind(&done_no_stash);
  if (!


QUssQ0FBTSxRQUFRLE9BQU5BLEtBQUssSUFBTSxHQUFRLE9BQU5BLEtBQUs7SUFDbEcsTUFBTSxDQUFDRSxJQUFJLEdBQUdELEdBQUc7QUFDckIsQ0FBQyxDQUVvRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2dldC1hc3NldC1wYXRoLWZyb20tcm91dGUuanM/YTZmZiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGdldEFzc2V0UGF0aEZyb21Sb3V0ZTtcbmZ1bmN0aW9uIGdldEFzc2V0UGF0aEZyb21Sb3V0ZShyb3V0ZSwgZXh0ID0gJycpIHtcbiAgICBjb25zdCBwYXRoID0gcm91dGUgPT09ICcvJyA/ICcvaW5kZXgnIDogL15cXC9pbmRleChcXC98JCkvLnRlc3Qocm91dGUpID8gYC9pbmRleCR7cm91dGV9YCA6IGAke3JvdXRlfWA7XG4gICAgcmV0dXJuIHBhdGggKyBleHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldC1hc3NldC1wYXRoLWZyb20tcm91dGUuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZGVmYXVsdCIsImdldEFzc2V0UGF0aEZyb21Sb3V0ZSIsInJvdXRlIiwiZXh0IiwicGF0aCIsInRlc3QiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/shared/lib/router/utils/get-asset-path-from-route.js\n");

/***/ }),

/***/ "./node_modules/next/dist/shared/lib/router/utils/get-middleware-regex.js":
/*!********************************************************************************!*\
  !*** ./node_modules/next/dist/shared/lib/router/utils/get-middleware-regex.js ***!
  \********************************************************************************/
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("/* module decorator */ module = __webpack_require__.nmd(module);\n\nObject.defineProperty(exports, \"__esModule\", ({\n    value: true\n}));\nexports.getMiddlewareRegex = getMiddlewareRegex;\nvar _routeRegex = __webpack_require__(/*! ./route-regex */ \"./node_modules/next/dist/shared/lib/router/utils/route-regex.js\");\nfunction getMiddlewareRegex(normalizedRoute, param) {\n    var catchAll = param === void 0 ? true : param;\n    var result = (0, _routeRegex).getParametrizedRoute(normalizedRoute);\n    var catchAllRegex = catchAll ? '(?!_next).*' : '';\n    var catchAllGroupedRegex = catchAll ? '(?:(/.*)?)' : '';\n    if ('routeKeys' in result) {\n        if (result.parameterizedRoute === '/') {\n            return {\n                groups: {\n                },\n                namedRegex: \"^/\".concat(catchAllRegex, \"$\"),\n                re: new RegExp(\"^/\".concat(catchAllRegex, \"$\")),\n                routeKeys: {\n                }\n            };\n        }\n        return {\n            groups: result.groups,\n            namedRegex: \"^\".concat(result.namedParameterizedRoute).concat(catchAllGroupedRegex, \"$\"),\n            re: new RegExp(\"^\".concat(result.parameterizedRoute).concat(catchAllGroupedRegex, \"$\")),\n            routeKeys: result.routeKeys\n        };\n    }\n    if (result.parameterizedRoute === '/') {\n        return {\n            groups: {\n            },\n            re: new RegExp(\"^/\".concat(catchAllRegex, \"$\"))\n        };\n    }\n


   "lakkhañña"
  ],
  "lakkhaṇa": [
    "lakkhaṇa 1",
    "lakkhaṇa 2",
    "lakkhaṇa 3",
    "lakkhaṇa 4",
    "lakkhaṇa 6",
    "lakkhaṇa 7",
    "lakkhaṇa 8"
  ],
  "lakkhaṇaṃ": [
    "lakkhaṇa 1",
    "lakkhaṇa 2",
    "lakkhaṇa 3",
    "lakkhaṇa 4",
    "lakkhaṇa 6",
    "lakkhaṇa 7",
    "lakkhaṇa 8"
  ],
  "lakkhaṇā": [
    "lakkhaṇa 1",
    "lakkhaṇa 2",
    "lakkhaṇa 3",
    "lakkhaṇa 4",
    "lakkhaṇa 6",
    "lakkhaṇa 7",
    "lakkhaṇa 8"
  ],
  "lakkhaṇāni": [
    "lakkhaṇa 1",
    "lakkhaṇa 2",
    "lakkhaṇa 3",
    "lakkhaṇa 4",
    "lakkhaṇa 6",
    "lakkhaṇa 8"
  ],
  "lakkhaṇe": [
    "lakkhaṇa 1",
    "lakkhaṇa 2",
    "lakkhaṇa 3",
    "lakkhaṇa 4",
    "lakkhaṇa 6",
    "lakkhaṇa 7",
    "lakkhaṇa 8"
  ],
  "lakkhaṇena": [
    "lakkhaṇa 1",
    "lakkhaṇa 2",
    "lakkhaṇa 3",
    "lakkhaṇa 4",
    "lakkhaṇa 6",
    "lakkhaṇa 7",
    "lakkhaṇa 8"
  ],
  "lakkhaṇehi": [
    "lakkhaṇa 1",
    "lakkhaṇa 2",
    "lakkhaṇa 3",
    "lakkhaṇa 4",
    "lakkhaṇa 6",
    "lakkhaṇa 7",
    "lakkhaṇa 8"
  ],
  "lakkhaṇānaṃ": [
    "lakkhaṇa 1",
    "lakkhaṇa 2",
    "lakkhaṇa 3",
    "lakkhaṇa 4",
    "lakkhaṇa 6",
    "lakkhaṇa 7",
    "lakkhaṇa 8"
  ],
  "lakkhaṇo": [
    "lakkhaṇa 7",
    "lakkhaṇa 8"
  ],
  "lakkhaṇakusalo": [
    "lakkhaṇakusala 1",
    "lakkhaṇakusala 2"
  ],
  "lakkhaṇaññū": [
    "lakkhaṇaññū"
  ],
  "lakkhaṇamantapāragū": [
    "lakkhaṇamantapāragū"
  ],
  "lakkhaṇasampannaṃ": [
    "lakkhaṇasampanna"
  ],
  "lakkhaṇasaṃyuttaṃ": [
    "lakkhaṇasaṃyutta"
  ],
  "lakkhaṇasutta": [
    "lakkhaṇasutta 1",
    "lakkhaṇasutta 2"
  ],
  "lakkhaṇasuttaṃ": [
    "lakkhaṇasutta 1",
    "lakkhaṇasutta 2"
  ],
  "lakkhaṇūruyā": [
    "lakkhaṇūru"
  ],


     pointer that will hold the maximum number of resolutions for all the poc inside the tile.
 * @param   p_dx_min        pointer that will hold the minimum dx of all the components of all the resolutions for the tile.
 * @param   p_dy_min        pointer that will hold the minimum dy of all the components of all the resolutions for the tile.
 * @param   p_resolutions   pointer to an area corresponding to the one described above.
 */
unsafe extern "C" fn opj_get_all_encoding_parameters(
  mut p_image: *const opj_image_t,
  mut p_cp: *const opj_cp_t,
  mut tileno: OPJ_UINT32,
  mut p_tx0: *mut OPJ_UINT32,
  mut p_tx1: *mut OPJ_UINT32,
  mut p_ty0: *mut OPJ_UINT32,
  mut p_ty1: *mut OPJ_UINT32,
  mut p_dx_min: *mut OPJ_UINT32,
  mut p_dy_min: *mut OPJ_UINT32,
  mut p_max_prec: *mut OPJ_UINT32,
  mut p_max_res: *mut OPJ_UINT32,
  mut p_resolutions: *mut *mut OPJ_UINT32,
) {
  /* loop*/
  let mut compno: OPJ_UINT32 = 0;
  let mut resno: OPJ_UINT32 = 0;
  /* pointers*/
  let mut tcp = 0 as *const opj_tcp_t;
  let mut l_tccp = 0 as *const opj_tccp_t;
  let mut l_img_comp = 0 as *const opj_image_comp_t;
  /* to store l_dx, l_dy, w and h for each resolution and component.*/
  let mut lResolutionPtr = 0 as *mut OPJ_UINT32;
  /* position in x and y of tile*/
  let mut p: OPJ_UINT32 = 0;
  let mut q: OPJ_UINT32 = 0;
  /* non-corrected (in regard to image offset) tile offset */
  let mut l_tx0: OPJ_UINT32 = 0;
  let mut l_ty0: OPJ_UINT32 = 0;
  /* preconditions in debug*/

  assert!(!p_cp.is_null());
  assert!(!p_image.is_null());
  assert!(tileno < (*p_cp).tw.wrapping_mul((*p_cp).th));
  /* initializations*/
  tcp = &mut *(*p_cp).tcps.offset(tileno as isize) as *mut opj_tcp_t;
  l_tccp = (*tcp).tccps;
  l_img_comp = (*p_image).comps;
  /* position in x and y of tile*/
  p = tileno.wrapping_rem((*p_cp).tw);
  q = tileno.wrapping_div((*p_cp).tw);
  /* here calculation of tx0, tx1, ty0, ty1, maxprec, l_dx and l_dy */
  l_tx0 = (*p_cp).tx0.wrapping_add(p.wrapping_mul((*p_cp).tdx)); /* can't be greater than p_image->x1 so won't overflow */
  *p_tx0 = opj_uint_max(l_tx0, (*p_image).x0); /* can't be greater than p_image->y1 so won't overflow */
  *p_tx1 = opj_uint_min(opj_uint_adds(l_tx0, (*p_cp).tdx), (*p_image).x1);
  l_ty0 = (*p_cp).ty0.wrapping_add(q.wrapping_mul((*p_cp).tdy));
  *p_ty0 = opj_uint_max(l_ty0, (*p_image).y0);
  *p_ty1 = opj_uint_min(opj_uint_adds(l_ty0, (*p_cp).tdy), (*p_image).y1);
  /* max precision and resolution is 0 (can only grow)*/
  *p_max_prec = 0 as libc::c_


class Solution:
    def maximumDifference(self, nums: List[int]) -> int:
        maxi=-1
        for i in range(len(nums)):
            for j in range(i+1,len(nums)):
                if i<j and nums[i]<nums[j]:
                    maxi=max(maxi,nums[j]-nums[i])
        return maxi


;,  XMLATTRIBUTES('elapsed_time' AS "name"),  SUM_ELAPSED_TIME)),  DECODE(NVL(MAX_QUEUING_TIME,  0),  0,  NULL,  XMLELEMENT( "stat",  XMLATTRIBUTES('queuing_time' AS "name"),  MAX_QUEUING_TIME)),  DECODE(NVL(SUM_CPU_TIME,  0),  0,  NUL
L,  XMLELEMENT( "stat",  XMLATTRIBUTES('cpu_time' AS "name"),  SUM_CPU_TIME)),  DECODE(NVL(SUM_USER_IO_WAIT_TIME,  0),  0,  NULL,  XMLELEMENT( "stat",  XMLATTRIBUTES('user_io_wait_time' AS "name"),  SUM_USER_IO_WAIT_TIME)),  DECODE(NVL(SUM_APPLICATION_WAIT_TIME,  0),  0,  NULL,  XMLELEMENT( "stat",  XMLATTRIBUTES('application_wait_time' AS "name"),  SUM_APPLICATION_WAIT_TIME)),  DECODE(NVL(SUM_CONCURRENCY_WAIT_TIME,  0),  0,  NULL,  XMLELEMENT( "stat",  XMLATTRIBUTES('concurrency_wait_time' AS "name"),  SUM_CONCURRENCY_WAIT_TIME)),  DECODE(NVL(SUM_CLUSTER_WAIT_TIME,  0),  0,  NULL,  XMLELEMENT( "stat",  XMLATTRIBUTES('cluster_wait_time' AS "name"),  SUM_CLUSTER_WAIT_TIME)),  DECODE(NVL(SUM_PLSQL_EXEC_TIME,  0),  0,  NULL,  XMLELEMENT( "stat",  XMLATTRIBUTES('plsql_exec_time' AS "name"),  SUM_PLSQL_EXEC_TIME)),  DECODE(NVL(SUM_JAVA_EXEC_TIME,  0),  0,  NULL,  XMLELEMEN
T( "stat",  XMLATTRIBUTES('java_exec_time' AS "name"),  SUM_JAVA_EXEC_TIME)),  DECODE(NVL(SUM_OTHER_WAIT_TIME,  0),  0,  NULL,  XMLELEMENT( "stat",  XMLATTRIBUTES('other_wait_time' AS "name"),  SUM_OTHER_WAIT_TIME)),  DECODE(NVL(SUM_FETCHES,  0),  0,  NULL,  XMLELEMENT( "stat",  XMLATTRIBUTES('user_fetch_count' AS "name"),  SUM_FETCHES)),  DECODE(NVL(SUM_BUFFER_GETS,  0),  0,  NULL,  XMLELEMENT( "stat",  XMLATTRIBUTES('buffer_gets' AS "name"),  SUM_BUFFER_GETS)),  DECODE(NVL(SUM_READ_REQS,  0),  0,  NULL,  XMLELEMENT( "stat",  XMLATTRIBUTES('disk_reads' AS "name"),  SUM_READ_REQS)),  DECODE(NVL(SUM_WRITE_REQS,  0),  0,  NULL,  XMLELEMENT( "stat",  XMLATTRIBUTES('direct_writes' AS "name"),  SUM_WRITE_REQS)),  DECODE(NVL(SUM_READ_REQS,  0),  0,  NULL,  XMLELEMENT( "stat",  XMLATTRIBUTES('read_reqs' AS "name"),  SUM_READ_REQS)),  DECODE(NVL(SUM_READ_B
YTES,  0),  0,  NULL,  XMLELEMENT( "stat",  X


"""Support for deCONZ locks."""

from __future__ import annotations

from typing import Any

from pydeconz.models.event import EventType
from pydeconz.models.light.lock import Lock
from pydeconz.models.sensor.door_lock import DoorLock

from homeassistant.components.lock import DOMAIN as LOCK_DOMAIN, LockEntity
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback

from . import DeconzConfigEntry
from .entity import DeconzDevice

async def async_setup_entry(
    hass: HomeAssistant,
    config_entry: DeconzConfigEntry,
    async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
    """Set up locks for deCONZ component."""
    hub = config_entry.runtime_data
    hub.entities[LOCK_DOMAIN] = set()

    @callback
    def async_add_lock_from_light(_: EventType, lock_id: str) -> None:
        """Add lock from deCONZ."""
        lock = hub.api.lights.locks[lock_id]
        async_add_entities([DeconzLock(lock, hub)])

    hub.register_platform_add_device_callback(
        async_add_lock_from_light,
        hub.api.lights.locks,
    )

    @callback
    def async_add_lock_from_sensor(_: EventType, lock_id: str) -> None:
        """Add lock from deCONZ."""
        lock = hub.api.sensors.door_lock[lock_id]
        async_add_entities([DeconzLock(lock, hub)])

    hub.register_platform_add_device_callback(
        async_add_lock_from_sensor,
        hub.api.sensors.door_lock,
        always_ignore_clip_sensors=True,
    )

class DeconzLock(DeconzDevice[DoorLock | Lock], LockEntity):
    """Representation of a deCONZ lock."""

    TYPE = LOCK_DOMAIN

    @property
    def is_locked(self) -> bool:
        """Return true if lock is on."""
        return self._device.is_locked

    async def async_lock(self, **kwargs: Any) -> None:
        """Lock the lock."""
        if isinstance(self._device, DoorLock):
            await self.hub.api.sensors.door_lock.set_config(
                id=self._device.resource_id,
                lock=True,
            )
        else:
            await self.hub.api.lights.locks.set_state(
                id=self._device.resource_id,
                lock=True,
            )

    async def async_unlock(self, **kwargs: Any) -> None:
        """Unlock the lock."""
        if isinstance(self._device, DoorLock):
            await self.hub.api.sensors.door_lock.set_config(
                id=self._device.resource_id,
                lock=False,
            )
        else:
            await self.hub.api.lights.locks.set_state(
                id=self._device.resource_id,
                lock=False,
            )


1JFYO+J96yZGNIKW83zuGvQoihqJDLX0gpX48+SOOrxdzDJ+Zckj2/Uso/ovwV
4XC/V4xtJkijR65prITXLY0xzMfTCRyUqpGMZT+prlmqcYyX4BdQXceisfsMWNC1UDQajaaX0l9t
4BqNRtPr0QJco9FoeilagGs0Gk0vRQtwjUaj6aVoAa7RaDS9FC3ANRqNppeiBbhGo9H0UrQA12jS
RAgRNJK80ln3cSHEP/J9TJr+TX/MxNRoLAghXgRKZZyuS0Zt649RJUWHAwfS3O11mMqBCiHeBFZL
KVNVv9No0kYLcI1GFSF63uigsj1q2ZWoUgr/tbPDBHVINJqcok0oGg28hGqT9TXzTKO281cx2otF
m1CEEPOEEFuFEG1GVbsnTMu6TChCiMdRpYvnGvsICFNbL40mU7QA1/R7jNKfT6Ka+Zr5DKrZ9ePR
2wghPg/ciCozOgk4j9iytGG+C7xv7GcYqqxoqjrUGk1KtAlFo1HMR5VLPcNkLvk68B8pZXTDW1CV
8nYBrxkvgB3A8ng7llIeEkJ0AC1GwwWNJidoDVyjAaSUG1Hlfr8OXV3YzwIeS7DJX4BiVB/Kx4QQ
XzBqWGs0BUMLcI0mwnzgc0KIAShzyn4gbiiglHIHqkHuN4EG4P+AZUKI4sIcqkajBbhGY+avqKL8
l6Icmk8ma/MlpeyQUv5bSnkjcCxwBKohczw6UF1uNJqcoW3gGo2BlLJNCPFH4FZgAPCHROsKIS5H
/X4WA02oFnMdqLZm8dgKHGv0yGwC6qWUupuKJiu0Bq7RWHkMJbzfk1LKqGVmgXsQFSP+NrAauAC4
QEq5LcF+/w8l4NeiQhbH5PKgNf0T3VJNo9FoeilaA9doNJpeihbgGo1G00vRAlyj0Wh6KVqAazQa
TS9FC3CNRqPppWgBrtFoNL0ULcA1Go2ml6IFuEaj0fRS/h+3jMqLyafCIgAAAABJRU5ErkJggg==
"
>

[[0.9312692223325372, 0.8201921796082118, 0.7971480974663592], [0.1750865648952205, 0.11840023306916837, 0.24215989137836502]]

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXAAAAF2


header(data, headers, &mut vec, Context::default())?;
    let string = String::from_utf8(vec).unwrap();
    Ok(string)
}

pub fn table_describe<W: io::Write, T: Describe>(
    data: &[T],
    headers: &[String],
    writer: &mut W,
) -> io::Result<()> {
    Describer::describe_list_with_header(data, headers, writer, Context::default())
}

#[doc(hidden)]
macro_rules! describe_macro_to_string {
    (
        $t: ty
    ) => {
        impl Describe for $t {
            fn to_field(&self, _: &str) -> String {
                self.to_string()
            }
        }
    };
}

describe_macro_to_string!(String);
describe_macro_to_string!(i32);
describe_macro_to_string!(i64);
describe_macro_to_string!(u32);
describe_macro_to_string!(u64);
describe_macro_to_string!(u16);
describe_macro_to_string!(i16);
describe_macro_to_string!(usize);
describe_macro_to_string!(bool);
<gh_stars>1-10
use anyhow::Result;
use detour::static_detour;
use microtemplate::{render, Substitutions};
use once_cell::sync::Lazy;
use serde::Deserialize;
use std::collections::HashMap;
use std::error::Error;
use std::ffi::OsStr;
use std::fmt::Write;
use std::os::windows::process::CommandExt;
use std::path::{Path, PathBuf};
use std::process::Command;
use std::{ffi::CString, mem};
use widestring::{U16CStr, U16CString};
use winapi::shared::minwindef::{BOOL, DWORD, HINSTANCE, LPVOID, TRUE};
use winapi::um::libloaderapi::{GetModuleHandleW, GetProcAddress};
use winapi::um::winnt::{DLL_PROCESS_ATTACH, LPCWSTR};

#[derive(Substitutions, Clone)]
struct ConfigContext<'a> {
    game_dir: &'a str,
}

#[derive(Debug, Deserialize)]
pub struct ModConfig {
    args: HashMap<String, String>,
    tasks: Vec<Task>,
}

#[derive(Debug, Deserialize)]
#[serde(tag = "command")]
pub enum Task {
    InvokeScc { path: String, custom_bundle: String },
}

static CMD_STR: Lazy<U16CString> = Lazy::new(try_get_final_cmd);

static_detour! {
  static GetCommandLineW: unsafe extern "system" fn() -> LPCWSTR;
}

type FnGetCommandLineW = unsafe extern "system" fn() -> LPCWSTR;

unsafe fn main() -> Result<(), Box<dyn Error>> {
    let address = get_module_symbol_address("kernel32.dll", "GetCommandLineW")
        .expect("could not find 'GetCommandLineW' address");
    let target: FnGetCommandLineW = mem::transmute(address);

    GetCommandLineW
        .initialize(target, || {
            if std::env::current_exe()
                .as_deref()
                .ok()
                .and_then(|path| path.file_stem())
                == Some(OsStr::new("Cyberpunk2077"))
            {
                CMD_STR.as_ptr()
            } else {
                GetCommandLineW.call()
            }
        })?
        .enable()?;
    Ok(())
}

fn try_get_final_cmd() -> U16CString {
    let initial_cmd_ustr = unsafe { U16CStr::from_ptr_str(GetCommandLineW.call()) };
    match get_final_cmd(initial_cmd_ustr) {
        Ok(res) => res,
        Err(_) => initial_cmd_ustr.to_owned(),
    }
}

fn get_final_cmd(initial


/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or (at your option) the GNU General
** Public license version 3 or any later version approved by the KDE Free
** Qt Foundation. The licenses are as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
** https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef IOSAUDIOPLUGIN_H
#define IOSAUDIOPLUGIN_H

#include <QtMultimedia/qaudiosystemplugin.h>
#include <QtMultimedia/private/qaudiosystempluginext_p.h>

QT_BEGIN_NAMESPACE

class CoreAudioPlugin : public QAudioSystemPlugin, public QAudioSystemPluginExtension
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID "org.qt-project.qt.audiosystemfactory/5.0" FILE "coreaudio.json")
    Q_INTERFACES(QAudioSystemPluginExtension)

public:
    explicit CoreAudioPlugin(QObject *parent = 0);
    ~CoreAudioPlugin() {}

    QByteArray defaultDevice(QAudio::Mode mode) const override;
    QList<QByteArray> availableDevices(QAudio::Mode mode) const override;
    QAbstractAudioInput *createInput(const QByteArray &device) override;
    QAbstractAudioOutput *createOutput(const QByteArray &device) override;
    QAbstractAudioDeviceInfo *createDeviceInfo(const QByteArray &device, QAudio::Mode mode) override;
};

QT_END_NAMESPACE

#endif


		cospitch * cosroll,
			-sinpitch,
		},
		{
			cosyaw * sinpitch * sinroll - sinyaw * cosroll,
			cosyaw * sinpitch * cosroll + sinyaw * sinroll,
			cosyaw * cospitch,
		},
	}
	-- Compute matrix multiplication: `matrix` * `v`
	return vector.new(
		matrix[1][1] * v.x + matrix[1][2] * v.y + matrix[1][3] * v.z,
		matrix[2][1] * v.x + matrix[2][2] * v.y + matrix[2][3] * v.z,
		matrix[3][1] * v.x + matrix[3][2] * v.y + matrix[3][3] * v.z
	)
end

function vector.dir_to_rotation(forward, up)
	forward = vector.normalize(forward)
	local rot = vector.new(math.asin(forward.y), -math.atan2(forward.x, forward.z), 0)
	if not up then
		return rot
	end
	assert(vector.dot(forward, up) < 0.000001,
			"Invalid vectors passed to vector.dir_to_rotation().")
	up = vector.normalize(up)
	-- Calculate vector pointing up with roll = 0, just based on forward vector.
	local forwup = vector.rotate(vector.new(0, 1, 0), rot)
	-- 'forwup' and 'up' are now in a plane with 'forward' as normal.
	-- The angle between them is the absolute of the roll value we're looking for.
	rot.z = vector.angle(forwup, up)

	-- Since vector.angle never returns a negative value or a value greater
	-- than math.pi, rot.z has to be inverted sometimes.
	-- To determine wether this is the case, we rotate the up vector back around
	-- the forward vector and check if it worked out.
	local back = vector.rotate_around_axis(up, forward, -rot.z)

	-- We don't use vector.equals for this because of floating point imprecision.
	if (back.x - forwup.x) * (back.x - forwup.x) +
			(back.y - forwup.y) * (back.y - forwup.y) +
			(back.z - forwup.z) * (back.z - forwup.z) > 0.0000001 then
		rot.z = -rot.z
	end
	return rot
end


.mozilla.javascript.BaseFunction
import org.mozilla.javascript.Context
import org.mozilla.javascript.Function
import org.mozilla.javascript.NativeObject
import org.mozilla.javascript.Scriptable
import org.mozilla.javascript.ScriptableObject
import org.mozilla.javascript.Undefined

@Suppress("unused", "UNUSED_PARAMETER")
object UIWidget : FlexibleArray() {

    @JvmStatic
    @RhinoStandardFunctionInterface
    fun renderInternal(cx: Context, thisObj: Scriptable, args: Array<Any?>, funObj: Function): Any = ensureArgumentsIsEmpty(args) {
        when (val renderFunc = thisObj.prop("render")) {
            is BaseFunction -> renderFunc.call(cx, thisObj.parentScope ?: thisObj, thisObj, arrayOf(*args))
                ?: throw WrappedIllegalArgumentException("Function render must return a non-null value")
            else -> "< />"
        }
    }

    @JvmStatic
    @RhinoStandardFunctionInterface
    fun defineAttr(cx: Context, thisObj: Scriptable, args: Array<Any?>, funObj: Function): Undefined = ensureArgumentsLengthInRange(args, 1..3) { argList ->
        val (arg0, arg1, arg2) = argList
        require(!arg0.isJsNullish()) {
            str(R.string.error_argument_name_for_class_name_and_member_func_name_cannot_be_nullish, "attrName", UIWidget::class.java.simpleName, ::defineAttr.name)
        }
        val attrName = Context.toString(arg0)
        var attrAlias = attrName
        var applier: Any? = null
        if (arg1 is String) {
            attrAlias = arg1
            if (argList.size >= 3) {
                applier = arg2
            }
        } else if (arg1 is BaseFunction && arg2 !is BaseFunction) {
            applier = arg1
        }
        val (getter, setter) = when {
            arg1 is BaseFunction && arg2 is BaseFunction -> arg1 to arg2
            else -> newBaseFunction(
                "getter", {
                    thisObj.prop(attrAlias)
                }, NOT_CONSTRUCTABLE,
            ) to newBaseFunction(
                "setter", { setterArgList ->
                    val (_, _, value, _) = setterArgList
                    thisObj.defineProp(attrAlias, value)
                    if (applier is BaseFunction) applier.call(cx, thisObj, thisObj, setterArgList)
                }, NOT_CONSTRUCTABLE,
            )
        }
        val attrsObj = thisObj.prop("__attrs__") as NativeObject
        val attrValue = newNativeObject().also {
            it.defineProp("getter", getter)
            it.defineProp("setter", setter)
        }
        attrsObj.defineProp(attrName, attrValue)
    }

    @JvmStatic
    @RhinoStandardFunctionInterface
    fun hasAttr(cx: Context, thisObj: Scriptable, args: Array<Any?>, funObj: Function): Boolean = ensureArgumentsAtMost(args, 1) { argList ->
        val (attrName) = argList
        getAttrsObject(thisObj).hasProp(coerceString(attrName))
    }

    @JvmStatic
    @RhinoStandardFunctionInterface
    fun setAttr(cx: Context, thisObj: Scriptable, args: Array<Any?>, funObj: Function): Undefined = unwrapArguments(args) {
        var (view, attrName, value, setter) = args
        attrName = coerceString(attrName)
        val attrsObject = getAttrsObject(thisObj)
        val attrValue = attrsObject[attrName]
        require(attrValue is ScriptableObject) {
            "Property ui.Widget#__attrs__[\"${attrName}\"] must be a ScriptableObject instead of ${attrValue.jsBrief()}"
        }
        val setterFunc = attrValue.prop("setter")
        require(setterFunc is BaseFunction) {
            "Property ui


riString("/${TEST_BUCKET_NAME}/sc/key.txt")
      .queryParam("uploads", "")
      .build()
      .toString()

    mockMvc.perform(
      post(uri)
        .accept(MediaType.APPLICATION_XML)
        .headers(headers)
    )
      .andExpect(status().isOk)
      .andExpect(content().string(MAPPER.writeValueAsString(result)))
  }

  @Test
  fun testCreateMultipartUpload_NoContentType_PassesNull() {
    val bucketMeta = bucketMetadata()
    whenever(bucketService.verifyBucketExists(TEST_BUCKET_NAME)).thenReturn(bucketMeta)

    val result = InitiateMultipartUploadResult(TEST_BUCKET_NAME, "noct/key.txt", "u-noct-1")
    whenever(
      multipartService.createMultipartUpload(
        eq(TEST_BUCKET_NAME),
        eq("noct/key.txt"),
        eq(null),
        anyOrNull(),
        eq(Owner.DEFAULT_OWNER),
        eq(Owner.DEFAULT_OWNER),
        anyOrNull<Map<String, String>>(),
        anyOrNull<Map<String, String>>(),
        anyOrNull<List<Tag>>(),
        eq(StorageClass.STANDARD),
        anyOrNull(),
        anyOrNull()
      )
    ).thenReturn(result)

    val headers = HttpHeaders() // no Content-Type header

    val uri = UriComponentsBuilder
      .fromUriString("/${TEST_BUCKET_NAME}/noct/key.txt")
      .queryParam("uploads", "")
      .build()
      .toString()

    mockMvc.perform(
      post(uri)
        .accept(MediaType.APPLICATION_XML)
        .headers(headers)
    )
      .andExpect(status().isOk)
      .andExpect(content().string(MAPPER.writeValueAsString(result)))
  }

  private fun givenBucket() {
    whenever(bucketService.getBucket(TEST_BUCKET_NAME)).thenReturn(TEST_BUCKET)
    whenever(bucketService.doesBucketExist(TEST_BUCKET_NAME)).thenReturn(true)
  }

  companion object {
    private fun createPart(partNumber: Int, size: Long): Part {
      return Part(partNumber, "someEtag$partNumber", Date(), size)
    }
  }
}
/*
 *  Copyright 2017-2025 Adobe.
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *          http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package com.adobe.testing.s3mock.testcontainers

import org.apache.commons.io.FileUtils
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.BeforeEach
import org.testcontainers.containers.output.Slf4jLogConsumer
import java.io.File
import java.io.IOException
import java.lang.String
import java.nio.file.Files
import kotlin.RuntimeException

internal class S3MockContainerRestartOnRootfolderTest : S3MockContainerTestBase() {
  private var s3Mock: S3MockContainer? = null

  @BeforeEach
  fun setUp() {
    s3Mock = S3MockContainer(S3MOCK_VERSION)
      .withValidKmsKeys(TEST_ENC_KEYREF)
      .withRetainFilesOnExit(true)
      .withEnv("debug", "true")
      .withInitialBuck


= UpdateFileProperty;
            AddFile(file);

            string destinationPathName = null;
            if (PathNameForDownloadedFile != null)
            {
                destinationPathName = PathNameForDownloadedFile(file);
            }

            //Do not await here otherwise it will never return
            file.StartDownloadAsync(destinationPathName, mobileNetworkAllowed);
        }

        public void Abort(IDownloadFile i)
        {
            var file = (DownloadFileImplementation)i;

            file.PropertyChanged -= UpdateFileProperty;
            file.Cancel();

            RemoveFile(file);
        }

        public void AbortAll()
        {
            foreach (var file in Queue)
            {
                Abort(file);
            }
        }

        protected internal void AddFile(IDownloadFile file)
        {
            lock (_queue)
            {
                _queue.Add(file);
            }

            CollectionChanged?.Invoke(Queue, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, file));
        }

        protected internal void RemoveFile(IDownloadFile file)
        {
            lock (_queue)
            {
                _queue.Remove(file);
            }

            CollectionChanged?.Invoke(Queue, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, file));
        }

        private void UpdateFileProperty(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            if (e.PropertyName == nameof(IDownloadFile.Status))
            {
                var downloadFile = (IDownloadFile)sender;

                if (downloadFile.Status == DownloadFileStatus.COMPLETED ||
                    downloadFile.Status == DownloadFileStatus.FAILED ||
                    downloadFile.Status == DownloadFileStatus.CANCELED)
                {
                    RemoveFile(downloadFile);
                }
            }
        }
    }
}


;
IkReal x14615=((1.0)*gconst17);
CheckValue<IkReal> x14616 = IKatan2WithCheck(IkReal((r22*sj0)),IkReal((((gconst16*r21*sj0))+(((-1.0)*r20*sj0*x14615)))),IKFAST_ATAN2_MAGTHRESH);
if(!x14616.valid){
continue;
}
CheckValue<IkReal> x14617=IKPowWithIntegerCheck(IKsign(((((-1.0)*gconst16*r10))+(((-1.0)*r11*x14615)))),-1);
if(!x14617.valid){
continue;
}
j4array[0]=((-1.5707963267949)+(x14616.value)+(((1.5707963267949)*(x14617.value))));
sj4array[0]=IKsin(j4array[0]);
cj4array[0]=IKcos(j4array[0]);
if( j4array[0] > IKPI )
{
    j4array[0]-=IK2PI;
}
else if( j4array[0] < -IKPI )
{    j4array[0]+=IK2PI;
}
j4valid[0] = true;
for(int ij4 = 0; ij4 < 1; ++ij4)
{
if( !j4valid[ij4] )
{
    continue;
}
_ij4[0] = ij4; _ij4[1] = -1;
for(int iij4 = ij4+1; iij4 < 1; ++iij4)
{
if( j4valid[iij4] && IKabs(cj4array[ij4]-cj4array[iij4]) < IKFAST_SOLUTION_THRESH && IKabs(sj4array[ij4]-sj4array[iij4]) < IKFAST_SOLUTION_THRESH )
{
    j4valid[iij4]=false; _ij4[1] = iij4; break;
}
}
j4 = j4array[ij4]; cj4 = cj4array[ij4]; sj4 = sj4array[ij4];
{
IkReal evalcond[9];
IkReal x14618=IKsin(j4);
IkReal x14619=IKcos(j4);
IkReal x14620=(cj3*gconst17);
IkReal x14621=(gconst16*r21);
IkReal x14622=(gconst17*sj3);
IkReal x14623=(gconst16*r20);
IkReal x14624=(sj1*sj2);
IkReal x14625=(gconst16*r10);
IkReal x14626=(cj2*sj1);
IkReal x14627=(gconst16*sj3);
IkReal x14628=((1.0)*cj0);
IkReal x14629=((1.0)*sj0);
IkReal x14630=(cj1*sj2);
IkReal x14631=((1.0)*x14619);
IkReal x14632=(gconst16*x14618);
IkReal x14633=(cj3*x14619);
IkReal x14634=(cj3*x14618);
IkReal x14635=((1.0)*cj1*cj2);
IkReal x14636=((1.0)*gconst17*x14618);
IkReal x14637=((1.0)*sj3*x14618);
evalcond[0]=((((-1.0)*r22*x14631))+(((-1.0)*r20*x14636))+((x14618*x14621)));
evalcond[1]=(cj0+((r11*x14632))+(((-1.0)*r10*x14636))+(((-1.0)*r12*x14631)));
evalcond[2]=((((-1.0)*x14629))+(((-1.0)*r00*x14636))+


Test geometry samples (GeoJSON -> WKB)', () {
      for (final sample in geoJsonGeometries) {
        // filter out samples with bbox as WKB does not support
        if (!sample.contains('bbox')) {
          //print(sample);
          _testDecodeGeometryAndEncodeToWKB(
            GeoJSON.geometry,
            WKB.geometry,
            sample,
          );
        }
      }
    });

    test('Test feature samples (GeoJSON)', () {
      for (final sample in geoJsonFeatures) {
        //print(sample);
        _testDecodeFeatureObjectAndEncodeToGeoJSON(GeoJSON.feature, sample);
      }
    });

    test('Test feature collection samples (GeoJSON)', () {
      for (final sample in geoJsonFeatureCollections) {
        //print(sample);
        _testDecodeFeatureObjectAndEncodeToGeoJSON(GeoJSON.feature, sample);
      }
    });
  });

  group('Test WKT decoding to model objects and back to WKT', () {
    test('Test geometry samples (WKT', () {
      for (final sample in wktGeometries) {
        //print(sample);
        _testDecodeGeometryAndEncodeToText(WKT.geometry, sample);
      }
    });

    test('Test geometry samples (WKT -> WKB)', () {
      for (final sample in wktGeometries) {
        // filter out samples with bbox as WKB does not support
        if (!sample.contains('bbox')) {
          //print(sample);
          _testDecodeGeometryAndEncodeToWKB(
            WKT.geometry,
            WKB.geometry,
            sample,
          );
        }
      }
    });

    test('WKT multipoint special cases', () {
      const mp1 = 'MULTIPOINT(10.1 10.1,20.2 20.2,30.3 30.3)';
      const mp2 = 'MULTIPOINT((10.1 10.1),(20.2 20.2),(30.3 30.3))';

      expect(
        MultiPoint.parse(mp1, format: WKT.geometry)
            .toText(format: WKT.geometry),
        mp1,
      );
      expect(
        MultiPoint.parse(mp2, format: WKT.geometry)
            .toText(format: WKT.geometry),
        mp1,
      );
    });

    test('WKT example use cases', () {
      expect(
        Point.parse(
          'POINT ZM(10.123 20.25 -30.95 -1.999)',
          format: WKT.geometry,
        ).toText(format: WKT.geometry),
        'POINT ZM(10.123 20.25 -30.95 -1.999)',
      );
    });
  });

  group('Empty geometries', () {
    test('WKT empty geometry special cases', () {
      const wkt = WKT.geometry;
      const def = DefaultFormat.geometry;

      final emptyPoint = Point.parse('POINT EMPTY', format: wkt);
      expect(emptyPoint.isEmptyByGeometry, true);
      expect(emptyPoint.toText(format: wkt), 'POINT EMPTY');
      expect(emptyPoint.toText(), '{"type":"Point","coordinates":[]}');
      expect(
        Point.parseCoords('').toText(format: def),
        emptyPoint.toText(format: def),
      );
      expect(
        Point.parse('{"type":"Point","coordinates":[]}').toText(format: wkt),
        emptyPoint.toText(format: wkt),
      );
      expect(Point.decode(emptyPoint.toBytes()).toText(), emptyPoint.toText());

      final emptyLineString = LineString.parse('LINESTRING EMPTY', format: wkt);
      expect(emptyLineString.isEmptyByGeometry, true);
      expect(emptyLineString.toText(format: wkt), 'LINESTRING EMPTY');
      expect(
        LineString.parseCoords('').toText(format: def),
        emptyLineString.toText(format: def),
      );
      expect(
        emptyLineS


bj();
}

const char* spatial_relations_s::max_num_cfgured_spatial_relations_opts::to_string() const
{
  static const char* options[] = {"n4", "n8", "n16", "n32", "n64", "n96"};
  return convert_enum_idx(options, 6, value, "spatial_relations_s::max_num_cfgured_spatial_relations_e_");
}
uint8_t spatial_relations_s::max_num_cfgured_spatial_relations_opts::to_number() const
{
  static const uint8_t options[] = {4, 8, 16, 32, 64, 96};
  return map_enum_number(options, 6, value, "spatial_relations_s::max_num_cfgured_spatial_relations_e_");
}

const char* spatial_relations_s::max_num_active_spatial_relations_opts::to_string() const
{
  static const char* options[] = {"n1", "n2", "n4", "n8", "n14"};
  return convert_enum_idx(options, 5, value, "spatial_relations_s::max_num_active_spatial_relations_e_");
}
uint8_t spatial_relations_s::max_num_active_spatial_relations_opts::to_number() const
{
  static const uint8_t options[] = {1, 2, 4, 8, 14};
  return map_enum_number(options, 5, value, "spatial_relations_s::max_num_active_spatial_relations_e_");
}

const char* spatial_relations_s::max_num_dl_rs_qcl_type_d_opts::to_string() const
{
  static const char* options[] = {"n1", "n2", "n4", "n8", "n14"};
  return convert_enum_idx(options, 5, value, "spatial_relations_s::max_num_dl_rs_qcl_type_d_e_");
}
uint8_t spatial_relations_s::max_num_dl_rs_qcl_type_d_opts::to_number() const
{
  static const uint8_t options[] = {1, 2, 4, 8, 14};
  return map_enum_number(options, 5, value, "spatial_relations_s::max_num_dl_rs_qcl_type_d_e_");
}

// MIMO-ParametersPerBand ::= SEQUENCE
SRSASN_CODE mimo_params_per_band_s::pack(bit_ref& bref) const
{
  bref.pack(ext, 1);
  HANDLE_CODE(bref.pack(tci_state_pdsch_present, 1));
  HANDLE_CODE(bref.pack(add_active_tci_state_pdcch_present, 1));
  HANDLE_CODE(bref.pack(pusch_trans_coherence_present, 1));
  HANDLE_CODE(bref.pack(beam_correspondence_without_ul_beam_sweeping_present, 1));
  HANDLE_CODE(bref.pack(periodic_beam_report_present, 1));
  HANDLE_CODE(bref.pack(aperiodic_beam_report_present, 1));
  HANDLE_CODE(bref.pack(sp_beam_report_pucch_present, 1));
  HANDLE_CODE(bref.pack(sp_beam_report_pusch_present, 1));
  HANDLE_CODE(bref.pack(dummy1_present, 1));
  HANDLE_CODE(bref.pack(max_num_rx_beam_present, 1));
  HANDLE_CODE(bref.pack(max_num_rx_tx_beam_switch_dl_present, 1));
  HANDLE_CODE(bref.pack(max_num_non_group_beam_report_present, 1));
  HANDLE_CODE(bref.pack(group_beam_report_present, 1));
  HANDLE_CODE(bref.pack(ul_beam


0].emergency).toBe(false);
    expect(spot3[2].emergency).toBe(true);
  });

  it('should throw on invalid format', () => {
    expect(() => parse('random')).toThrowError('Invalid SPOT json - feed: random');
  });

  it('should throw on invalid feed error', () => {
    const error = `{
        "response":{
          "errors":{
              "error":{
                "code":"E-0160",
                "text":"Feed Not Found",
                "description":"Feed with Id: invalid_feed_id not found."
              }
          }
        }
    }`;

    expect(() => parse(error)).toThrowError(/Feed with Id: invalid_feed_id not found/);
  });

  it('should return an empty list of points when the feed is empty', () => {
    const empty = `{
        "response":{
          "errors":{
              "error":{
                "code":"E-0195",
                "text":"No Messages to display",
                "description":"No displayable messages found found for feed: 07GDWvsMqGG0QTFaYIVLnsS2yA3J9d6n7"
              }
          }
        }
    }`;

    expect(parse(empty)).toEqual([]);
  });
});
import { TextChannel } from "discord.js";
import Main from "../Main";
import { Reaction } from "../types";

export const getReactions = async (
  channelId: string,
  messageId: string,
  include: string[]
): Promise<Reaction[]> => {
  const message = await (
    (await Main.Client.channels.fetch(channelId)) as TextChannel
  ).messages.fetch(messageId);
  return (await Promise.all(
    message.reactions.cache
      .filter((reaction) =>
        include.includes(
          /^[a-zA-Z]+$/.test(reaction.emoji.name)
            ? `<:${reaction.emoji.name}:${reaction.emoji.id}>`
            : reaction.emoji.name
        )
      )
      .map(async (reaction) => ({
        name: reaction.emoji.name,
        users: (await reaction.users.fetch())
          .map((user) => user.id)
          .filter((id) => id !== Main.Client.user.id)
      }))
  )) as Reaction[];
};
import { ApplicationInsights } from "@microsoft/applicationinsights-web";

class Insights {
    private readonly KEY_COOKIES_ACCEPTED: string = "cookies_accepted";

    private appInsights: ApplicationInsights;

    get cookiesAccepted(): boolean {
        const parsedValue = Number.parseInt(window.localStorage.getItem(this.KEY_COOKIES_ACCEPTED))
        if(!Number.isNaN(parsedValue) && parsedValue === 1) {
            return true;
        }
        else {
            return false;
        }
    }

    private set cookiesAccepted(val: boolean) {
        const storageValue = (val) ? 1 : 0;
        window.localStorage.setItem(this.KEY_COOKIES_ACCEPTED, storageValue.toString());
    }

    constructor() {
        this.appInsights = new ApplicationInsights({ config: {
          connectionString: process.env.AI_CONNECTION_STRING,
          enableCorsCorrelation: true,
          enableRequestHeaderTracking: true,
          enableResponseHeaderTracking: true,
          enableUnhandledPromiseRejectionTracking: true,
          disableCookiesUsage: !this.cookiesAccepted
        }});

        this.showCookieAcceptanceDialogue();
        this.appInsights.loadAppInsights();
        this.appInsights.trackPageView(); // Manually call trackPageView to establish the current user/session/pageview
    }

    showCookieAcceptanceDialogue() {
        // if user has no setting regarding cookies
        if(window.localStorage.getItem(this.KEY_COOKIES_ACCEPTED) === null) {
            // get dialogue elements
            const cookieDial


irtualThumbStick_Right.Is<VirtualThumbStick>())
            throw new ArgumentException("Invalid VirtualThumbStick_Right");
    }

    /// <inheritdoc />
    public override void OnUpdate()
    {
        var movement = Float2.Zero;
        var rotation = Float2.Zero;

        if (VirtualThumbStick_Left != null)
        {
            movement = VirtualThumbStick_Left.Get<VirtualThumbStick>().Input * Strength_Left;
        }

        if (VirtualThumbStick_Right != null)
        {
            rotation = VirtualThumbStick_Right.Get<VirtualThumbStick>().Input * Strength_Right;
        }

        if (!InvertLookUp)
            rotation.Y *= -1;
        Camera?.AddMovementRotation(movement.X, movement.Y, rotation.Y, rotation.X);
    }
}


| \
                                               ((SOURCE) == FDCAN_TT_STOP_WATCH_CYCLE_TIME ) || \
                                               ((SOURCE) == FDCAN_TT_STOP_WATCH_LOCAL_TIME ) || \
                                               ((SOURCE) == FDCAN_TT_STOP_WATCH_GLOBAL_TIME))
#define IS_FDCAN_TT_STOP_WATCH_POLARITY(POLARITY) (((POLARITY) == FDCAN_TT_STOP_WATCH_RISING ) || \
                                                   ((POLARITY) == FDCAN_TT_STOP_WATCH_FALLING))
#define IS_FDCAN_TT_REGISTER_TIME_MARK_SOURCE(SOURCE) (((SOURCE) == FDCAN_TT_REG_TIMEMARK_DIABLED ) || \
                                                       ((SOURCE) == FDCAN_TT_REG_TIMEMARK_CYC_TIME) || \
                                                       ((SOURCE) == FDCAN_TT_REG_TIMEMARK_LOC_TIME) || \
                                                       ((SOURCE) == FDCAN_TT_REG_TIMEMARK_GLO_TIME))

#define FDCAN_CHECK_IT_SOURCE(__IE__, __IT__)  ((((__IE__) & (__IT__)) == (__IT__)) ? SET : RESET)

#define FDCAN_CHECK_FLAG(__IR__, __FLAG__) ((((__IR__) & (__FLAG__)) == (__FLAG__)) ? SET : RESET)
/**
  * @}
  */

/* Private functions prototypes ----------------------------------------------*/
/** @defgroup FDCAN_Private_Functions_Prototypes FDCAN Private Functions Prototypes
  * @{
  */

/**
  * @}
  */

/* Private functions ---------------------------------------------------------*/
/** @defgroup FDCAN_Private_Functions FDCAN Private Functions
  * @{
  */

/**
  * @}
  */
/**
  * @}
  */

/**
  * @}
  */
#endif /* FDCAN1 */

#ifdef __cplusplus
}
#endif

#endif /* STM32N6xx_HAL_FDCAN_H */


thanks @Andro https://stackoverflow.com/a/11498125
        val breakingChars = "‐–〜゠= \t\r\n"  // all the chars that we'll break a line at
        // Log.d(LOG_NAME, "Find word break index; available width: $availableWidthInChars chars.  Lengths: ${line1.length}/${line2.length}")
        // Log.d(LOG_NAME, "line1: $line1")
        // Log.d(LOG_NAME, "line2: $line2")

        // track fallback line break locations outside of chords (any character but a chord is included)
        var fallbackLineBreak = Pair(0,0)
        var currentlyInChordLine1 = false
        var currentlyInChordLine2 = false

        // start from the start of the line and find each shared word break until the line's too long
        var sharedWordBreakLocation = Pair(0,0)  // track shared location separately to include ignored characters up to breakpoint but not past shared breakpoint
        var line1IgnoredCharacters = 0  // tags (e.g. [ch][/ch]) will be ignored in character counts since they'll be removed in processing.
        var line2IgnoredCharacters = 0
        for (i in 1 ..< availableWidthInChars.toInt()) {
            // loop through each character and note shared word break locations

            // ignore any [ch] or [/ch] tags
            if (line1.length > i+line1IgnoredCharacters) {
                if (line1[(i+line1IgnoredCharacters)] == '[') {
                    if (line1.length >= (i+line1IgnoredCharacters+4) && line1.subSequence((i+line1IgnoredCharacters), (i+line1IgnoredCharacters+4)) == "[ch]") {
                        // Log.d(LOG_NAME, "1: ignoring 4 starting at position $i + $line1IgnoredCharacters")
                        line1IgnoredCharacters += 4
                        currentlyInChordLine1 = true
                    }
                    if (line1.length >= (i+line1IgnoredCharacters+5) && line1.subSequence((i+line1IgnoredCharacters), (i+line1IgnoredCharacters+5)) == "[/ch]") {
                        // Log.d(LOG_NAME, "1: ignoring 5 starting at position $i + $line1IgnoredCharacters")
                        line1IgnoredCharacters += 5
                        currentlyInChordLine1 = false
                    }
                }
            }

            if (line2.length > (i+line2IgnoredCharacters)) {
                if (line2[(i+line2IgnoredCharacters)] == '[') {
                    if (line2.length >= (i+line2IgnoredCharacters+4) && line2.subSequence((i+line2IgnoredCharacters), (i+line2IgnoredCharacters+4)) == "[ch]") {
                        // Log.d(LOG_NAME, "2: ignoring 4 starting at position $i + $line2IgnoredCharacters")
                        line2IgnoredCharacters += 4
                        currentlyInChordLine2 = true
                    }
                    if (line2.length >= (i+line2IgnoredCharacters+5) && line2.subSequence((i+line2IgnoredCharacters), (i+line2IgnoredCharacters+5)) == "[/ch]") {
                        // Log.d(LOG_NAME, "2: ignoring 5 starting at position $i + $line2IgnoredCharacters")
                        line2IgnoredCharacters += 5
                        currentlyInChordLine2 = false
                    }
                }
            }
            if (!currentlyInChordLine1 && !currentlyInChordLine2)
                fallbackLineBreak = Pair(i+line1IgnoredCharacters, i+line2IgnoredCharacters)  // any character outside of a chord is a fallback linebreak location

            if ((line1.length <= i+line1IgnoredCharacters || breakingChars.contains(line1[i+line1IgnoredCharacters]))
                && (line2.length <= i+line2IgnoredCharacters || breakingChars.contains(line2[(i+line2IgnoredCharacters)]))) {
                sharedWordBreakLocation = Pair(i + line1IgnoredCharacters, i + line2IgnoredCharacters)
                // Log.d(LOG_NAME, "break at $i