<commit_before><%#
 Copyright 2017 <NAME> <<EMAIL>>
 Licensed to the public under the Apache License 2.0.
-%>

<% css = [[

	#chartjs-tooltip {
		opacity: 0;
		position: absolute;
		background: rgba(0, 0, 0, .7);
		color: white;
		padding: 3px;
		border-radius: 3px;
		-webkit-transition: all .1s ease;
		transition: all .1s ease;
		pointer-events: none;
		-webkit-transform: translate(-50%, 0);
		transform: translate(-50%, 0);
		z-index: 200;
	}

	#chartjs-tooltip.above {
		-webkit-transform: translate(-50%, -100%);
		transform: translate(-50%, -100%);
	}

	#chartjs-tooltip.above:before {
		border: solid;
		border-color: #111 transparent;
		border-color: rgba(0, 0, 0, .8) transparent;
		border-width: 8px 8px 0 8px;
		bottom: 1em;
		content: "";
		display: block;
		left: 50%;
		top: 100%;
		position: absolute;
		z-index: 99;
		-webkit-transform: translate(-50%, 0);
		transform: translate(-50%, 0);
	}

	table {
		border: 1px solid #999;
		border-collapse: collapse;
		margin: 0 0 2px !important;
	}

	th, td, table table td {
		border: 1px solid #999;
		text-align: right;
		padding: 1px 3px !important;
		white-space: nowrap;
	}

	tbody td {
		border-bottom-color: #ccc;
	}

	tbody td[rowspan] {
		border-bottom-color: #999;
	}

	tbody tr:last-child td {
		border-bottom-color: #999;
	}


	.pie {
		width: 200px;
		display: inline-block;
		margin: 20px;
	}

	.pie label {
		font-weight: bold;
		font-size: 14px;
		display: block;
		margin-bottom: 10px;
		text-align: center;
	}

	.kpi {
		display: inline-block;
		margin: 80px 20px 20px;
		vertical-align: top;
	}

	.kpi ul {
		list-style: none;
	}

	.kpi li {
		margin: 10px;
		display: none;
	}

	.kpi big {
		font-weight: bold;
	}

	#detail-bubble {
		position: absolute;
		opacity: 0;
		visibility: hidden;
	}

	#detail-bubble.in {
		opacity: 1;
		visibility: visible;
		transition: opacity 0.5s;
	}

	#detail-bubble > div {
		border: 1px solid #ccc;
		border-radius: 2px;
		padding: 5px;
		background: #fcfcfc;
	}

	#detail-bubble .head {
		text-align: center;
		white-space: nowrap;
		position: relative;
	}

	#detail-bubble .head .dismiss {
		top: 0;
		right: 0;
		width: 20px;
		line-height: 20px;
		text-align: center;
		text-decoration: none;
		font-weight: bold;
		color: #000;
		position: absolute;
		font-size: 20px;
	}

	#detail-bubble .pie {
		width: 100px;
		margin: 5px;
	}

	#detail-bubble .kpi {
		margin: 40px 5px 5px;
		font-size: smaller;
		text-align: left;
	}

	#detail-bubble .kpi ul {
		margin: 0;
	}

	#bubble-arrow {
		border: 1px solid #ccc;
		border-width: 1px 0 0 1px;
		background: #fcfcfc;
		width: 15px;
		height: 15px;
		position: absolute;
		left: 0;
		top: -8px;
		transform: rotate(45deg);
		margin: 0 0 0 -8px;
	}

	tr.active > td {
		border-bottom: 2px solid red;
	}

	tr.active > td.active {
		border: 2px solid red;
		border-bottom: none;
	}

	td.detail {
		border: 2px solid red;
		border-top: none;
		opacity: 0;
		transition: opacity 0.5s;
	}

	td.detail.in {
		opacity: 1;
	}

	th.hostname,
	td.hostname {
		text-align: left;
	}

]] -%>

<%+header%>

<script type="text/javascript" src="<%=resource%>/cbi.js?v=git-17.211.60529-fd6f892"></script>
<script type="text/javascript" src="<%=resource%>/nlbw.chart.min.js?v=git-17.211.60529-fd6f892"></script>
<script type="text/javascript">//<![CDATA[

var chartRegistry = {},
	trafficPeriods = [],
	trafficData = { columns: [], data: [] },
	hostNames = {},
	hostInfo = <%=luci.util.serialize_json(luci.sys.net.host_hints())%>,
	ouiData = [];


function off(elem)
{
	var val = [0, 0];
	do {
		if (!isNaN(elem.offsetLeft) && !isNaN(elem.offsetTop)) {
			val[0] += elem.offsetLeft;
			val[1] += elem.offsetTop;<commit_msg>luci-app-nlbwmon: remove version marker from javascripts<commit_after><%#
 Copyright 2017 <NAME> <<EMAIL>>
 Licensed to the public under the Apache License 2.0.
-%>

<% css = [[

	#chartjs-tooltip {
		opacity: 0;
		position: absolute;
		background: rgba(0, 0, 0, .7);
		color: white;
		padding: 3px;
		border-radius: 3px;
		-webkit-transition: all .1s ease;
		transition: all .1s ease;
		pointer-events: none;
		-webkit-transform: translate(-50%, 0);
		transform: translate(-50%, 0);
		z-index: 200;
	}

	#chartjs-tooltip.above {
		-webkit-transform: translate(-50%, -100%);
		transform: translate(-50%, -100%);
	}

	#chartjs-tooltip.above:before {
		border: solid;
		border-color: #111 transparent;
		border-color: rgba(0, 0, 0, .8) transparent;
		border-width: 8px 8px 0 8px;
		bottom: 1em;
		content: "";
		display: block;
		left: 50%;
		top: 100%;
		position: absolute;
		z-index: 99;
		-webkit-transform: translate(-50%, 0);
		transform: translate(-50%, 0);
	}

	table {
		border: 1px solid #999;
		border-collapse: collapse;
		margin: 0 0 2px !important;
	}

	th, td, table table td {
		border: 1px solid #999;
		text-align: right;
		padding: 1px 3px !important;
		white-space: nowrap;
	}

	tbody td {
		border-bottom-color: #ccc;
	}

	tbody td[rowspan] {
		border-bottom-color: #999;
	}

	tbody tr:last-child td {
		border-bottom-color: #999;
	}


	.pie {
		width: 200px;
		display: inline-block;
		margin: 20px;
	}

	.pie label {
		font-weight: bold;
		font-size: 14px;
		display: block;
		margin-bottom: 10px;
		text-align: center;
	}

	.kpi {
		display: inline-block;
		margin: 80px 20px 20px;
		vertical-align: top;
	}

	.kpi ul {
		list-style: none;
	}

	.kpi li {
		margin: 10px;
		display: none;
	}

	.kpi big {
		font-weight: bold;
	}

	#detail-bubble {
		position: absolute;
		opacity: 0;
		visibility: hidden;
	}

	#detail-bubble.in {
		opacity: 1;
		visibility: visible;
		transition: opacity 0.5s;
	}

	#detail-bubble > div {
		border: 1px solid #ccc;
		border-radius: 2px;
		padding: 5px;
		background: #fcfcfc;
	}

	#detail-bubble .head {
		text-align: center;
		white-space: nowrap;
		position: relative;
	}

	#detail-bubble .head .dismiss {
		top: 0;
		right: 0;
		width: 20px;
		line-height: 20px;
		text-align: center;
		text-decoration: none;
		font-weight: bold;
		color: #000;
		position: absolute;
		font-size: 20px;
	}

	#detail-bubble .pie {
		width: 100px;
		margin: 5px;
	}

	#detail-bubble .kpi {
		margin: 40px 5px 5px;
		font-size: smaller;
		text-align: left;
	}

	#detail-bubble .kpi ul {
		margin: 0;
	}

	#bubble-arrow {
		border: 1px solid #ccc;
		border-width: 1px 0 0 1px;
		background: #fcfcfc;
		width: 15px;
		height: 15px;
		position: absolute;
		left: 0;
		top: -8px;
		transform: rotate(45deg);
		margin: 0 0 0 -8px;
	}

	tr.active > td {
		border-bottom: 2px solid red;
	}

	tr.active > td.active {
		border: 2px solid red;
		border-bottom: none;
	}

	td.detail {
		border: 2px solid red;
		border-top: none;
		opacity: 0;
		transition: opacity 0.5s;
	}

	td.detail.in {
		opacity: 1;
	}

	th.hostname,
	td.hostname {
		text-align: left;
	}

]] -%>

<%+header%>

<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
<script type="text/javascript" src="<%=resource%>/nlbw.chart.min.js"></script>
<script type="text/javascript">//<![CDATA[

var chartRegistry = {},
	trafficPeriods = [],
	trafficData = { columns: [], data: [] },
	hostNames = {},
	hostInfo = <%=luci.util.serialize_json(luci.sys.net.host_hints())%>,
	ouiData = [];


function off(elem)
{
	var val = [0, 0];
	do {
		if (!isNaN(elem.offsetLeft) && !isNaN(elem.offsetTop)) {
			val[0] += elem.offsetLeft;
			val[1] += elem.offsetTop;
{'fraction_non_alphanumeric': 0.1641424478100696, 'fraction_numerical': 0.04475371810615364, 'mean_word_length': 3.164772727272727, 'pattern_counts': {'":': 0, '<': 33, '<?xml version=': 0, '>': 37, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3399506', 'n_tokens_mistral': 3503, 'n_tokens_neox': 2925, 'n_words': 704}