if (typeof _RCF_CONFIG == 'undefined') _RCF_CONFIG={}; if (typeof _RCF_CONFIG.triggerQueue == 'undefined') _RCF_CONFIG.visualsQueue=[]; if (!_RCF_CONFIG.initializedFor){ _RCF_CONFIG.initializedFor='15422'; _RCF_CONFIG.visualization={}; _RCF_CONFIG.widgets={}; _RCF_CONFIG.initMods={}; _RCF_CONFIG.id='15422'; _RCF_CONFIG.deepJS=true; _RCF_CONFIG.deepNet=true; _RCF_CONFIG.fourOfour='404 Not Found'; _RCF_CONFIG.DNT=1; _RCF_CONFIG.url=window.location.href; _RCF_CONFIG.is_link_internal = new RegExp("^https?:\/\/(.*)" + location.host.replace(/^www\./i, ""), "i"); _RCF_CONFIG.ref = ''; _RCF_CONFIG.autoP = 100; _RCF_CONFIG.lookback = 90; _RCF_CONFIG.unmask = 1; function rcf_whitelist_all(){try{ document.body.classList=document.body.classList+' rcf-whitelist';}catch (e){ setTimeout('rcf_whitelist_all()',25); }};rcf_whitelist_all();if (!_RCF_CONFIG.env) _RCF_CONFIG.env=''; _RCF_ERRS={}; if (!_RCF_CONFIG.consoleTypes){ _RCF_ERRS.consoleTypes=["error"]; }else{ _RCF_ERRS.consoleTypes=_RCF_CONFIG.consoleTypes; }if (document.URL=='about:srcdoc'&&parent.document && parent.document.URL!='about:srcdoc') { (function(){ var hstc=document.createElement('script'); hstc.src='https://cdnflow.co/js/'+_RCF_CONFIG.id+'.js'; hstc.async=true; var htssc = parent.document.getElementsByTagName('script')[0];htssc.parentNode.insertBefore(hstc, htssc);})(); }else{ _RCF_ERRS.errorTimer={}; _RCF_ERRS.queue=[]; _RCF_CONFIG.trigger = function(triggerID){ if (typeof _HS_RCF!=='undefined' && typeof _HS_RCF.trigger === 'function'){ _HS_RCF.trigger(triggerID); }else{ _RCF_CONFIG.triggerQueue.push(triggerID); } }; _RCF_CONFIG.checkChance = function(val){ try { var x= _RCF_CONFIG.getVal("_RCF_eligible"); if (x !== null) { return x==1?true:false; } else { if (val>=Math.floor(Math.random() * 101)) { _RCF_CONFIG.setVal("_RCF_eligible", 1, false, true); return true; } else { _RCF_CONFIG.setVal("_RCF_eligible", 0, false, true); return false; } } }catch(e){ return false; } };_RCF_CONFIG.getLocation = function(href) { if (href) { try { var l = document.createElement("a"); l.href = href; return l; } catch (e) { var dummy = {}; dummy.pathname = ""; dummy.hostname = ""; return dummy; } } var dummy = {}; dummy.pathname = ""; dummy.hostname = ""; return dummy; }; _RCF_CONFIG.validURL = function(str) { try{ var testURL=new URL("http://example.com/"); try { new URL(str); return true; } catch (e) { return false; } }catch(e){ var pattern = new RegExp('^(https?:\\/\\/)?'+'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|'+ '((\\d{1,3}\\.){3}\\d{1,3}))'+'(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+ '(\\?[;&a-z\\d%_.~+=-]*)?'+'(\\#[-a-z\\d_]*)?$','i');return pattern.test(str); } }; _RCF_CONFIG.domReady= function (fn) {if (document.attachEvent ? document.readyState === "interactive" : document.readyState !== "loading") fn(); else document.addEventListener('DOMContentLoaded', fn); };try { if (typeof (top.document) == "object") _RCF_CONFIG.ref = top.document; else _RCF_CONFIG.ref = document; } catch (e) { _RCF_CONFIG.ref = document; } if (document.referrer.indexOf(_RCF_CONFIG.ref.location.hostname) == -1) _RCF_CONFIG.ref = document;try { _RCF_CONFIG.ref = _RCF_CONFIG.ref.referrer; } catch (e) { _RCF_CONFIG.ref = ''; } try { Wix.getSiteInfo(function (site) { _RCF_CONFIG.url = site.url; _RCF_CONFIG.ref = site.referrer; }); } catch (e) {} if (_RCF_CONFIG.is_link_internal.test(_RCF_CONFIG.ref)){ _RCF_CONFIG.ref=''; } try{ _RCF_CONFIG.url=encodeURIComponent(_RCF_CONFIG.url); _RCF_CONFIG.ref=encodeURIComponent(_RCF_CONFIG.ref); } catch (e){} _RCF_CONFIG.returns=0;_RCF_CONFIG.giveMeRandom = function () { return Math.random().toString(36).substr(2,11); };_RCF_CONFIG.readCookie = function (name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') c = c.substring(1, c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); } return null; };_RCF_CONFIG.writeCookie = function (name, value, days) { var expires; if (days) { var date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); expires = "; expires=" + date.toGMTString(); } else { expires = ""; } document.cookie = name + "=" + value + expires + "; path=/"; };_RCF_CONFIG.setVal = function (key, value, keep, tabPersistance) { if (keep===undefined){keep=true;} var method = sessionStorage; if (keep == true) { method = localStorage; } if (tabPersistance){ method = false; } if (!method) { if (keep) { keep = 360; } else { keep = false; } _RCF_CONFIG.writeCookie(key, value, keep); } else { method.setItem(key, value); } };_RCF_CONFIG.getVal = function (key) { var val = null; try { val = sessionStorage.getItem(key); } catch (e) { } if (!val) { try { val = localStorage.getItem(key); } catch (e) { } } if (!val) { try { val = _RCF_CONFIG.readCookie(key); } catch (e) { } } return val; }; try{ if (_RCF_CONFIG.getVal("_RCF_returns")){ _RCF_CONFIG.returns=_RCF_CONFIG.getVal("_RCF_returns"); if (_RCF_CONFIG.getVal("_RCF_lastSession")&&_RCF_CONFIG.getVal("_RCF_lastSession")< (Math.round((new Date()).getTime() / 1000))-(60*30) ) { _RCF_CONFIG.returns++; } if (!_RCF_CONFIG.getVal("_RCF_lastSession") && _RCF_CONFIG.returns>0) { _RCF_CONFIG.returns++; } } _RCF_CONFIG.setVal("_RCF_returns",_RCF_CONFIG.returns,true); }catch(e){}_RCF_CONFIG.lastVisit=0; try{ if (_RCF_CONFIG.getVal("_RCF_lastSession")){ _RCF_CONFIG.lastVisit=_RCF_CONFIG.getVal("_RCF_lastSession"); } _RCF_CONFIG.setVal("_RCF_lastSession",Math.round((new Date()).getTime() / 1000),false,true); }catch(e){} _RCF_CONFIG.pageviews=0; try{ if (_RCF_CONFIG.getVal("_RCF_pageviews")){ _RCF_CONFIG.pageviews=_RCF_CONFIG.getVal("_RCF_pageviews"); _RCF_CONFIG.pageviews++; } _RCF_CONFIG.setVal("_RCF_pageviews",_RCF_CONFIG.pageviews,true); }catch(e){}if (_RCF_CONFIG.getVal("_RCF_temp_id") !== null) { _RCF_CONFIG.uid = _RCF_CONFIG.getVal("_RCF_temp_id"); } else { _RCF_CONFIG.uid = _RCF_CONFIG.giveMeRandom(); _RCF_CONFIG.setVal("_RCF_temp_id",_RCF_CONFIG.uid,false,true); }_RCF_CONFIG.pageToken = _RCF_CONFIG.giveMeRandom();(function (root, factory) { 'use strict';if (typeof define === 'function' && define.amd) { define('stackframe', [], factory); } else if (typeof exports === 'object') { module.exports = factory(); } else { root.StackFrame = factory(); } }(_RCF_ERRS, function () { 'use strict';function _isNumber(n) { return !isNaN(parseFloat(n)) && isFinite(n); }function _capitalize(str) { return str.charAt(0).toUpperCase() + str.substring(1); }function _getter(p) { return function () { return this[p]; }; }var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel']; var numericProps = ['columnNumber', 'lineNumber']; var stringProps = ['fileName', 'functionName', 'source']; var arrayProps = ['args'];var props = booleanProps.concat(numericProps, stringProps, arrayProps);function StackFrame(obj) { if (obj instanceof Object) { for (var i = 0; i < props.length; i++) { if (obj.hasOwnProperty(props[i]) && obj[props[i]] !== undefined) { this['set' + _capitalize(props[i])](obj[props[i]]); } } } }StackFrame.prototype = { getArgs: function () { return this.args; }, setArgs: function (v) { if (Object.prototype.toString.call(v) !== '[object Array]') { throw new TypeError('Args must be an Array'); } this.args = v; },getEvalOrigin: function () { return this.evalOrigin; }, setEvalOrigin: function (v) { if (v instanceof StackFrame) { this.evalOrigin = v; } else if (v instanceof Object) { this.evalOrigin = new StackFrame(v); } else { throw new TypeError('Eval Origin must be an Object or StackFrame'); } },toString: function () { var functionName = this.getFunctionName() || '{anonymous}'; var args = '(' + (this.getArgs() || []).join(',') + ')'; var fileName = this.getFileName() ? ('@' + this.getFileName()) : ''; var lineNumber = _isNumber(this.getLineNumber()) ? (':' + this.getLineNumber()) : ''; var columnNumber = _isNumber(this.getColumnNumber()) ? (':' + this.getColumnNumber()) : ''; return functionName + args + fileName + lineNumber + columnNumber; } };StackFrame.fromString = function StackFrame$$fromString(str) { var argsStartIndex = str.indexOf('('); var argsEndIndex = str.lastIndexOf(')');var functionName = str.substring(0, argsStartIndex); var args = str.substring(argsStartIndex + 1, argsEndIndex).split(','); var locationString = str.substring(argsEndIndex + 1);if (locationString.indexOf('@') === 0) { var parts = /@(.+?)(?::(\d+))?(?::(\d+))?$/.exec(locationString, ''); var fileName = parts[1]; var lineNumber = parts[2]; var columnNumber = parts[3]; }return new StackFrame({ functionName: functionName, args: args || undefined, fileName: fileName, lineNumber: lineNumber || undefined, columnNumber: columnNumber || undefined }); };for (var i = 0; i < booleanProps.length; i++) { StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]); StackFrame.prototype['set' + _capitalize(booleanProps[i])] = (function (p) { return function (v) { this[p] = Boolean(v); }; })(booleanProps[i]); }for (var j = 0; j < numericProps.length; j++) { StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]); StackFrame.prototype['set' + _capitalize(numericProps[j])] = (function (p) { return function (v) { if (!_isNumber(v)) { throw new TypeError(p + ' must be a Number'); } this[p] = Number(v); }; })(numericProps[j]); }for (var k = 0; k < stringProps.length; k++) { StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]); StackFrame.prototype['set' + _capitalize(stringProps[k])] = (function (p) { return function (v) { this[p] = String(v); }; })(stringProps[k]); }return StackFrame; }));(function (root, factory) { 'use strict'; if (typeof define === 'function' && define.amd) { define('error-stack-parser', ['stackframe'], factory); } else if (typeof exports === 'object') { module.exports = factory(require('stackframe')); } else { root.ErrorStackParser = factory(root.StackFrame); } }(_RCF_ERRS, function ErrorStackParser(StackFrame) { 'use strict';var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\S+\:\d+/; var CHROME_IE_STACK_REGEXP = /^\s*at .*(\S+\:\d+|\(native\))/m; var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\[native code\])?$/;return {parse: function ErrorStackParser$$parse(error) { if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') { return this.parseOpera(error); } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) { return this.parseV8OrIE(error); } else if (error.stack) { return this.parseFFOrSafari(error); } else { throw new Error('Cannot parse given Error object'); } },extractLocation: function ErrorStackParser$$extractLocation(urlLike) { if (urlLike.indexOf(':') === -1) { return [urlLike]; }var regExp = /(.+?)(?:\:(\d+))?(?:\:(\d+))?$/; var parts = regExp.exec(urlLike.replace(/[\(\)]/g, '')); return [parts[1], parts[2] || undefined, parts[3] || undefined]; },parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) { var filtered = error.stack.split('\n').filter(function (line) { return !!line.match(CHROME_IE_STACK_REGEXP); }, this);return filtered.map(function (line) { if (line.indexOf('(eval ') > -1) { line = line.replace(/eval code/g, 'eval').replace(/(\(eval at [^\()]*)|(\)\,.*$)/g, ''); } var tokens = line.replace(/^\s+/, '').replace(/\(eval code/g, '(').split(/\s+/).slice(1); var locationParts = this.extractLocation(tokens.pop()); var functionName = tokens.join(' ') || undefined; var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];return new StackFrame({ functionName: functionName, fileName: fileName, lineNumber: locationParts[1], columnNumber: locationParts[2], source: line }); }, this); },parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) { var filtered = error.stack.split('\n').filter(function (line) { return !line.match(SAFARI_NATIVE_CODE_REGEXP); }, this);return filtered.map(function (line) { if (line.indexOf(' > eval') > -1) { line = line.replace(/ line (\d+)(?: > eval line \d+)* > eval\:\d+\:\d+/g, ':$1'); }if (line.indexOf('@') === -1 && line.indexOf(':') === -1) { return new StackFrame({ functionName: line }); } else { var functionNameRegex = /((.*".+"[^@]*)?[^@]*)(?:@)/; var matches = line.match(functionNameRegex); var functionName = matches && matches[1] ? matches[1] : undefined; var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));return new StackFrame({ functionName: functionName, fileName: locationParts[0], lineNumber: locationParts[1], columnNumber: locationParts[2], source: line }); } }, this); },parseOpera: function ErrorStackParser$$parseOpera(e) { if (!e.stacktrace || (e.message.indexOf('\n') > -1 && e.message.split('\n').length > e.stacktrace.split('\n').length)) { return this.parseOpera9(e); } else if (!e.stack) { return this.parseOpera10(e); } else { return this.parseOpera11(e); } },parseOpera9: function ErrorStackParser$$parseOpera9(e) { var lineRE = /Line (\d+).*script (?:in )?(\S+)/i; var lines = e.message.split('\n'); var result = [];for (var i = 2, len = lines.length; i < len; i += 2) { var match = lineRE.exec(lines[i]); if (match) { result.push(new StackFrame({ fileName: match[2], lineNumber: match[1], source: lines[i] })); } }return result; },parseOpera10: function ErrorStackParser$$parseOpera10(e) { var lineRE = /Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i; var lines = e.stacktrace.split('\n'); var result = [];for (var i = 0, len = lines.length; i < len; i += 2) { var match = lineRE.exec(lines[i]); if (match) { result.push( new StackFrame({ functionName: match[3] || undefined, fileName: match[2], lineNumber: match[1], source: lines[i] }) ); } }return result; },parseOpera11: function ErrorStackParser$$parseOpera11(error) { var filtered = error.stack.split('\n').filter(function (line) { return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/); }, this);return filtered.map(function (line) { var tokens = line.split('@'); var locationParts = this.extractLocation(tokens.pop()); var functionCall = (tokens.shift() || ''); var functionName = functionCall .replace(//, '$2') .replace(/\([^\)]*\)/g, '') || undefined; var argsRaw; if (functionCall.match(/\(([^\)]*)\)/)) { argsRaw = functionCall.replace(/^[^\(]+\(([^\)]*)\)$/, '$1'); } var args = (argsRaw === undefined || argsRaw === '[arguments not available]') ? undefined : argsRaw.split(',');return new StackFrame({ functionName: functionName, args: args, fileName: locationParts[0], lineNumber: locationParts[1], columnNumber: locationParts[2], source: line }); }, this); } }; }));_RCF_ERRS.rec = function (err){ if (typeof _HS_RCF!=='undefined' && typeof _HS_RCF.rec === 'function'){ _HS_RCF.rec(err); }else{ _RCF_ERRS.queue.push(err); } };_RCF_ERRS.have = function (object, funcName) { try { if (object[funcName]) return true; } catch (e) { return false; } return false; };_RCF_ERRS.havePrototype = function (object, proto) { try { for (var protos = proto.split("."), objs = object, i = 0; i < protos.length; i++) if (objs[protos[i]]) { objs = objs[protos[i]]; } else { return false; } return true; } catch (e) { return false; } };_RCF_ERRS.detectObject = function (possibleObject) { return (possibleObject && typeof possibleObject === 'object') }; _RCF_ERRS.detectErrorObject = function (possibleErrorObject) { if (!_RCF_ERRS.detectObject(possibleErrorObject)) return false;var is_error = "[object Error]" === Object.prototype.toString.call(possibleErrorObject); var is_exception = "[object DOMException]" === Object.prototype.toString.call(possibleErrorObject); try { var string_check = "string" === typeof possibleErrorObject.name && "string" === typeof possibleErrorObject.message; } catch (e) { var string_check = false; } if (is_error || is_exception || string_check) { return true; } else { return false; } };_RCF_ERRS.translateError = function (err) { if (err === "") return 'Blank'; if (err === undefined) return 'undefined'; var data; try { data = JSON.stringify(err) } catch (e) { } return data; };_RCF_ERRS.catchError = function (func) { function deepErrorDetector() { try { return func.apply(this, arguments); } catch (e) { _RCF_ERRS.errorTracker('error', e); throw (e); } }try { if (typeof func !== "function" || Object.prototype.hasOwnProperty.call(func, "_rcf_errs_errs_")) return func; if (Object.prototype.hasOwnProperty.call(func, "_hs_current_stack_")) return func._hs_current_stack_; } catch (e) { return func; }for (var inherit in func) { if (Object.prototype.hasOwnProperty.call(func, inherit)) { deepErrorDetector[inherit] = func[inherit]; } } deepErrorDetector.prototype = func.prototype; deepErrorDetector._rcf_errs_errs_ = 1; return func._hs_current_stack_ = deepErrorDetector; };_RCF_ERRS.catchHelper = function (glob, prop, func) { glob[prop] = func(glob[prop] || function () { }); };_RCF_ERRS.observeTimer = function () {_RCF_ERRS.catchHelper(window, 'setTimeout', function (origFunc) { return function (parm1, parm2) {var all_parms = Array.prototype.slice.call(arguments); if (typeof all_parms[0] == 'function') all_parms[0] = _RCF_ERRS.catchError(all_parms[0]); if (_RCF_ERRS.have(origFunc, "apply")) { return origFunc.apply(this, all_parms); } else { origFunc(all_parms[0], all_parms[1]); } } }); _RCF_ERRS.catchHelper(window, 'setInterval', function (origFunc) { return function (parm1, parm2) {var all_parms = Array.prototype.slice.call(arguments); if (typeof all_parms[0] == 'function') all_parms[0] = _RCF_ERRS.catchError(all_parms[0]); if (_RCF_ERRS.have(origFunc, "apply")) { return origFunc.apply(this, all_parms); } else { origFunc(all_parms[0], all_parms[1]); } } }); }; _RCF_ERRS.observeEventListeners = function () { ["Node", "EventTarget", "XMLHttpRequest"].forEach(function (eventType) { if (_RCF_ERRS.havePrototype(window, eventType + ".prototype.addEventListener")) if (Object.prototype.hasOwnProperty.call(window[eventType].prototype, "addEventListener")) _RCF_ERRS.observeEventTarget(window[eventType].prototype); }); };_RCF_ERRS.observeEventTarget = function (eventType) {if (_RCF_ERRS.havePrototype(eventType, "addEventListener.call") && _RCF_ERRS.havePrototype(eventType, "removeEventListener.call")) { _RCF_ERRS.catchHelper(eventType, "addEventListener", function (funcCallee) { return function (parm1, parm2, parm3, parm4) { try { _RCF_ERRS.havePrototype(parm2, "handleEvent") && (parm2.handleEvent = _RCF_ERRS.catchError(parm2.handleEvent)) } catch (e) { } return funcCallee.call(this, parm1, _RCF_ERRS.catchError(parm2), parm3, parm4); } });_RCF_ERRS.catchHelper(eventType, "removeEventListener", function (funcCallee) { return function (parm1, parm2, parm3, parm4) { try { parm2 = parm2 && (parm2._hs_current_stack_ || parm2) } catch (e) { } return funcCallee.call(this, parm1, parm2, parm3, parm4) } }); } }; _RCF_CONFIG.getParmFromHash = function (parm) { prm = location.hash.match(new RegExp(parm + '=([^&]*)')); if (prm) return location.hash.match(new RegExp(parm + '=([^&]*)'))[1]; return ''; };_RCF_CONFIG.debug = false; if (_RCF_CONFIG.getParmFromHash("rcf_debug") != '') { _RCF_CONFIG.debug = true; }if (_RCF_CONFIG.debug) _RCF_ERRS.consoleTypes = ['warn', 'error']; _RCF_ERRS.observeConsoleErrors = function (consoleObj) { var consoleTypes = _RCF_ERRS.consoleTypes; consoleObj = consoleObj || {}; var logger = consoleObj.log || function () { };for (consoleType = 0; consoleType < consoleTypes.length; consoleType++)(function (consoleType) { var current_logger = consoleObj[consoleType] || logger; consoleObj[consoleType] = function () { try { var virtualError = Array.prototype.slice.call(arguments); var errorForReport = virtualError; if (virtualError.length === 1) errorForReport = virtualError[0]; _RCF_ERRS.errorTracker(consoleType, _RCF_ERRS.translateError(errorForReport)); if (_RCF_ERRS.have(current_logger, "apply")) { current_logger.apply(this, virtualError); } else { current_logger(virtualError[0]); } } catch (e) { } } })(consoleTypes[consoleType]); return consoleObj; };_RCF_ERRS.errorTracker = function (errorType, errorLog) { if (errorType != 'error' && errorType != 'warn' && errorType != 'info' && errorType != 'debug' && errorType != 'log') { errorType = 'error'; } if (!errorLog) { return; }var stack = ''; var selfStack=false; var msg = ''; if (_RCF_ERRS.detectErrorObject(errorLog)) { msg = errorLog && errorLog.message; stack = errorLog && errorLog.stack && errorLog.stack.substring(0, 1600); } else { if (typeof errorLog == 'string') { msg = errorLog; } } if (errorLog.name) msg=errorLog.name+": " + msg; if (stack == '' || stack == undefined) { try { throw Error(); } catch (e) { stack = e && e.stack && e.stack.substring(0, 1600); } selfStack=true; } var fileName = ''; var lineNumber = ''; var column = ''; try { var stackTrace = _RCF_ERRS.ErrorStackParser.parse(errorLog); if (stackTrace[0] && stackTrace[0].fileName && stackTrace[0].fileName.indexOf("/js/"+_RCF_CONFIG.id+".js")===-1) { fileName = stackTrace[0].fileName || document.URL; lineNumber = stackTrace[0].lineNumber || 0; column = stackTrace[0].columnNumber || 0; }else if (stackTrace[1] && stackTrace[1].fileName&& stackTrace[1].fileName.indexOf("/js/"+_RCF_CONFIG.id+".js")===-1) { fileName = stackTrace[1].fileName || document.URL; lineNumber = stackTrace[1].lineNumber || 0; column = stackTrace[1].columnNumber || 0; }else if (stackTrace[2] && stackTrace[2].fileName&& stackTrace[2].fileName.indexOf("/js/"+_RCF_CONFIG.id+".js")===-1) { fileName = stackTrace[2].fileName || document.URL; lineNumber = stackTrace[2].lineNumber || 0; column = stackTrace[2].columnNumber || 0; }else if (stackTrace[3] && stackTrace[3].fileName ) { fileName = stackTrace[3].fileName || document.URL; lineNumber = stackTrace[3].lineNumber || 0; column = stackTrace[3].columnNumber || 0; } } catch (e) { if (typeof errorLog=='string' && stack && typeof stack == 'string' && stack!=''){ var newError={}; newError.stack=stack; newError.message=errorLog; try{ var stackTrace = _RCF_ERRS.ErrorStackParser.parse(newError); if (stackTrace[0] && stackTrace[0].fileName && stackTrace[0].fileName.indexOf("/js/"+_RCF_CONFIG.id+".js")===-1) { fileName = stackTrace[0].fileName || document.URL; lineNumber = stackTrace[0].lineNumber || 0; column = stackTrace[0].columnNumber || 0; }else if (stackTrace[1] && stackTrace[1].fileName&& stackTrace[1].fileName.indexOf("/js/"+_RCF_CONFIG.id+".js")===-1) { fileName = stackTrace[1].fileName || document.URL; lineNumber = stackTrace[1].lineNumber || 0; column = stackTrace[1].columnNumber || 0; }else if (stackTrace[2] && stackTrace[2].fileName&& stackTrace[2].fileName.indexOf("/js/"+_RCF_CONFIG.id+".js")===-1) { fileName = stackTrace[2].fileName || document.URL; lineNumber = stackTrace[2].lineNumber || 0; column = stackTrace[2].columnNumber || 0; }else if (stackTrace[3] && stackTrace[3].fileName ) { fileName = stackTrace[3].fileName || document.URL; lineNumber = stackTrace[3].lineNumber || 0; column = stackTrace[3].columnNumber || 0; } } catch(e) {} }} if (errorType!='error'){ try{ var msgArray=JSON.parse(msg); if (msgArray && typeof msgArray!='string' && typeof msgArray!='number'){ if (typeof msgArray.push == 'function' && typeof msgArray.forEach == 'function' && msgArray.length && msgArray.length>0){ if (msgArray && msgArray.length>=2 && typeof msgArray[0] == 'string'&& msgArray[0].indexOf('%c')!==-1){ if (msgArray.length==2){ msg=msgArray[0].replace('%c',''); }else{ msg=msgArray[0].replace('%c',''); var c=0; msgArray.forEach(function(msg2){ c++; if (c>2){ if (typeof msg2=='string'||typeof msg2=='number'){ msg+=' '+msg2; }else{ msg+=' '+JSON.stringify(msg2); } } }); }}else{ msg=''; msgArray.forEach(function(val){if (typeof val == 'string'){ msg=msg+val+' '; }else{ msg=msg+JSON.stringify(val)+' '; }}); } } }else{ if (msgArray && (typeof msgArray=='string'||typeof msgArray=='number')){ msg=msgArray; } } }catch(e){ }} var error = { event: errorType, msg: msg, file: fileName, line: lineNumber, column: column, stack: stack, selfStack: selfStack, env: _RCF_CONFIG.env?_RCF_CONFIG.env:'' };if (_RCF_ERRS.errorTimer[msg] && (!fileName)){ }else{ clearTimeout(_RCF_ERRS.errorTimer[msg]); _RCF_ERRS.errorTimer[msg]=null; _RCF_ERRS.rec(error); } };_RCF_ERRS.observePromisesRejections = function () {if (window.addEventListener) { window.addEventListener("unhandledrejection", function (error) { error = error || {};if (error.detail) { try { error = error.detail["reason"]; } catch (e) { } } else { try { error = error['reason']; } catch (e) {try{ error=error.name } catch (e){} } }if (error) { if (!_RCF_ERRS.detectErrorObject(error)) try { throw Error(error); } catch (e) { error = e; } _RCF_ERRS.errorTracker("error", error); } }); } else { window.onunhandledrejection = function (error) { _RCF_ERRS.errorTracker("error", error); } } };_RCF_ERRS.observeFetch= function () { var a = this.log; _RCF_ERRS.catchHelper(window, "fetch", function (e) { return function (address, pars) { var newfetch = address instanceof Request ? address : new Request(address, pars) , fetchapply = e.apply(window, arguments); fetchapply.__RCF_ERRS_fetchstate__ ={ type: "fetch",method: newfetch.method,url: newfetch.url }; return fetchapply.then(function (e) { var data = fetchapply.__RCF_ERRS_fetchstate__; if (data){ if ( e.status >=400){_RCF_ERRS.rec({ event: 'ajax', msg: e.status + " " + e.statusText + ": " + data.method + " " + data.url, file: '', line: 0, column: 0, env: _RCF_CONFIG.env?_RCF_CONFIG.env:'' });} } return e })["catch"](function (e) { e = e || {}; var data = fetchapply.__RCF_ERRS_fetchstate__; if (data){ _RCF_ERRS.rec({ event: 'ajax', msg: e.message + ": " + data.method + " " + data.url, file: '', line: 0, column: 0, env: _RCF_CONFIG.env?_RCF_CONFIG.env:'' }); } throw e; }) } }) };_RCF_ERRS.observeNetwork = function (netobj) { var thisnet = this;var netopen = netobj.prototype.open;var netsend = netobj.prototype.send;netobj.prototype.open = function (varmethod, address) {var url = (address || "").toString(); if (url.indexOf("localhost:0") < 0){ this._RCF_ERRS = { method: varmethod , url: url }; } return netopen.apply(this, arguments); };netobj.prototype.send = function () { try { if (!this._RCF_ERRS) return e.apply(this, arguments); thisnet.observeNetLoad(this); } catch (err) { thisnet.onFault(err); } return netsend.apply(this, arguments) }; return netobj; }; _RCF_ERRS.netCheck= function (net) { if (400 <= net.status &&net.status != 1223) { var log = net._RCF_ERRS || {}; if (!net._hs_rcf_404) _RCF_ERRS.rec({ event: 'ajax', msg: net.status + " " + net.statusText + ": " + log.method + " " + log.url, file: '', line: 0, column: 0, env: _RCF_CONFIG.env?_RCF_CONFIG.env:'' }); } }; _RCF_ERRS.observeNetLoad= function (net) { var thisobj = this;net.addEventListener ? net.addEventListener("load", function () { thisobj.netCheck(net) }, 1) : setTimeout(function () { try { var netonload = net.onload; net.onload = function () { thisobj.netCheck(net); typeof netonload === "function" && _RCF_ERRS.have(netonload, "apply") && netonload.apply(net, arguments) }; var netonerror = net.onerror; net.onerror = function () { thisobj.netCheck(net); typeof netonerror ==="function"&& _RCF_ERRS.have(netonerror, "apply") && netonerror.apply(net, arguments) } } catch (err) { thisobj.onFault(err) } }, 0) }; if (_RCF_ERRS.consoleTypes.indexOf('error')!=-1) { if (_RCF_CONFIG.deepJS) { _RCF_ERRS.observePromisesRejections(); _RCF_ERRS.observeConsoleErrors(console);_RCF_ERRS.observeEventListeners();_RCF_ERRS.observeTimer(); } if (_RCF_ERRS.deepNet) { _RCF_ERRS.observeFetch(); window.XMLHttpRequest && _RCF_ERRS.have(window.XMLHttpRequest.prototype.open, "apply") && _RCF_ERRS.observeNetwork(window.XMLHttpRequest);window.XDomainRequest && _RCF_ERRS.have(window.XDomainRequest.prototype.open, "apply") && _RCF_ERRS.observeNetwork(window.XDomainRequest);} } if (_RCF_ERRS.consoleTypes.indexOf('error')!=-1){ _RCF_ERRS.errorCallback = window.onerror; window.onerror = function (msg, url, lineNo, columnNo, error) { if ('Script error.'!=msg&&url && url.indexOf('/engine/recorder.js')===-1) { if (msg){ msg=msg.replace('Uncaught ',''); }_RCF_ERRS.errorTimer[msg] = setTimeout(function(){ _RCF_ERRS.rec({ event: 'error', msg: msg, file: url, line: lineNo, column: columnNo, error: error && error.stack && error.stack.substring(0, 1600), env: _RCF_CONFIG.env?_RCF_CONFIG.env:'' }); _RCF_ERRS.errorTimer[msg]=null; },100);} _RCF_ERRS.errorCallback && _RCF_ERRS.errorCallback.apply(this, arguments); }; }_RCF_CONFIG.ready=function(module){ _RCF_CONFIG.initMods[module]=true; if (_RCF_CONFIG.initMods['recorder']&&_RCF_CONFIG.initMods['gather']){ _HS_RCF.initRecording(); } };(function(){var hstc=document.createElement('script');hstc.async=true;hstc.src='https://js.reactflow.com/assets/engine/inspect.js?sid='+_RCF_CONFIG.id+'&url='+_RCF_CONFIG.url+'&ref='+_RCF_CONFIG.ref+'&lastses='+_RCF_CONFIG.lastVisit+'&pageviews='+_RCF_CONFIG.pageviews+'&returns='+_RCF_CONFIG.returns+'&uid='+_RCF_CONFIG.uid+'&token='+_RCF_CONFIG.pageToken+'&autop='+_RCF_CONFIG.checkChance(_RCF_CONFIG.autoP)+'&lookback='+_RCF_CONFIG.lookback;var htssc = document.getElementsByTagName('script')[0];htssc.parentNode.insertBefore(hstc, htssc);})();if (_RCF_CONFIG.getVal("_hs_rcf_alphabetWidth") === null) {(function(){var hstc=document.createElement('script');hstc.crossOrigin = 'anonymous';hstc.src='https://js.reactflow.com/assets/engine/gather.php?mode=alphabetGet&sid='+_RCF_CONFIG.id; var htssc = document.getElementsByTagName('script')[0];htssc.parentNode.insertBefore(hstc, htssc);})(); }else{(function(){var hstc=document.createElement('script');hstc.crossOrigin = 'anonymous';hstc.src='https://js.reactflow.com/assets/engine/recorder.js?37ae517057'; var htssc = document.getElementsByTagName('script')[0];htssc.parentNode.insertBefore(hstc, htssc);})(); }} }else{ if (_RCF_CONFIG.initializedFor!=15422){ console.warn("Reactflow is installed multiple times, We have ignored code for website #15422 and continuing with code for website #"+_RCF_CONFIG.initializedFor+" as it's code initialized first."); } }

Dalle malghe alle latterie Turnarie, il latteria di Campolessi

latteria a latte crudo di Campolessi, foto di Elena Maurutto latteria a latte crudo di Campolessi, foto di Elena Maurutto “Raccontate il vostro formaggio del cuore”, concorso per appassionati scrittori di cucina promosso dall’Ecomuseo delle Acque del Gemonese e dalla Condotta Slow Food "Gianni Cosetti "con la collaborazione di qbquantobasta rivista mensile di gusto e buongusto nell’euroregione in occasione della manifestazione “Gemona, Formaggio… e dintorni”.

Il racconto che vi proponiamo è a firma Elena Maurutto e si intitola: Dalle malghe alle Latterie Turnarie.
Il “Latteria di Campolessi”: un formaggio espressione della fusione tra la storia del Friuli rurale e la tradizione lattiero-casearia regionale.


Il Latteria è un formaggio semiduro a media maturazione che nasce a partire dalla stessa esperienza casearia dei formaggi prodotti nelle malghe ad alta quota delle zone dell'arco alpino, dove l'isolamento dei pastori e dei malgari richiedeva la trasformazione del latte in un prodotto che non dovesse essere consumato in tempi brevi. Similmente a quanto avviene per altri formaggi di montagna, il latteria è ottenuto proprio a partire da una cagliata sottoposta, dopo rottura, a un riscaldamento a bassa temperatura (45°C), con il quale si favorisce la separazione spontanea del siero dalla massa solida che si compatta, permettendo una sufficiente conservabilità del prodotto. Nelle regioni alpine e prealpine la malga è stata la prima sede di produzioni casearie che prevedevano il concorso di latte di vari allevatori, ma a partire dal XIX secolo, con l'istituzione delle latterie turnarie, si sviluppa anche nella pianura friulana un'attività casearia organizzata. L'identificazione di questo formaggio con il nome Latteria risale proprio al 1881, quando a Forni Avoltri, in Carnia, viene fondata la prima latteria sociale Turnaria.



Le latterie Turnarie sono state una delle prime forme di società cooperativistica, nella quale ogni socio si impegnava  a conferire il latte prodotto giornalmente, per poi trasformarlo in formaggio. Gli allevatori i quali conferivano il latte alla latteria sociale del paese presso la quale i prodotti venivano divisi tra i soci a turno: ecco il perché del nome turnaria.  Uno strumento efficace di difesa dell'economia rurale locale in quanto consentiva ai piccoli agricoltori di lavorare il latte entro le 24 ore dalla mungitura senza dover attendere giorni per riunire il latte munto in più giorni,  a discapito della qualità del prodotto finale.


Da questo momento il formaggio latteria comincia ad espandere la sua produzione dalle malghe alle vallate sottostanti, alle grandi valli, alle pianure e diventa così il simbolo della produzioni lattiero-casearie di tutto il Friuli.
Oggi la produzione di Latteria ha una grande diffusione sul mercato regionale grazie all'introduzione del trattamento termico del latte ed l'utilizzo di fermenti lattici selezionati, innovazioni che hanno permesso la produzione di latteria su larga scala. Rimangono però attive alcune latterie Turnarie che utilizzano ancora le caldaie in rame e che lavorano il latte crudo quotidianamente con la sola aggiunta di lattoinnesto naturale autoprodotto in latteria ogni due giorni a partire dalle migliori partite di latte conferite dai soci. Il formaggi latteria viene identificato indicando la zona o il paese in cui è collocato il caseificio produttore. Il Latteria di Campolessi, una frazione di Gemona del Friuli (UD), rimane uno degli ultimi esempi di produzione tradizionale a base di latte crudo, lavorato fresco ogni giorno, senza l'impiego di alcun tipo di additivo.  E' un Prodotto Agroalimentare Tradizionale (PAT)  del Friuli Venezia  Giulia  e Presidio  Slow Food in quanto considerato espressione del patrimonio culturale italiano e in quanto prodotto secondo tradizione a partire dal latte crudo, quindi più ricco di sostanze e soprattutto di principi attivi, aromi e sapori.

Perchè il latte crudo è stato abbandonato per  produrre il formaggio latteria?
L'impiego di latte crudo è stato nel tempo abbandonato perché sottopone il processo e il risultato finale a maggiori rischi di difetti di lavorazione. Per esempio le forme di formaggio a latte crudo sono maggiormente soggette a difetti legati alla fermentazione tardiva, problematica minimizzata dalla pastorizzazione del latte, il tutto a discapito però delle proprietà organolettiche e nutrizionali. Pastorizzare il latte significa omologare il prodotto finale minimizzando i difetti e gli scarti di produzione.
 La scelta dei soci della Latteria Turnaria di Campolessi è di rimanere fedeli al metodo produttivo tradizionale garantendo un'alta qualità del prodotto finale. Questo risultato è possibile grazie ai controlli su  tutta la filiera, a partire dall'alimentazione delle bovine. Queste sono per il 90% dei capi di Razza Pezzata Rossa alimentate secondo un disciplinare ai cui devono attenersi tutti i soci allevatori: è proibito somministrare agli animali insilati di mais ed è consentita esclusivamente un'alimentazione semplice a base di fieno, erba e cereali. Il latte prodotto dalle bovine alimentate in questo modo garantisce la massima espressione dell'aroma e del sapore nel formaggio, una elevata attitudine alla caseificazione e il rispetto di tutti i parametri igienico sanitari per la sicurezza alimentare.  Una vera filiera corta controllata dalla stalla alle nostre tavole.



Per il processo di caseificazione si utilizza il latte crudo proveniente da due munte. Il latte viene raccolto e portato alla caseificazione nell'arco di 12 ore dalla mungitura. Infatti il latte della sera viene conservato e refrigerato a 5°C, mentre il latte del mattino viene conferito in latteria ancora caldo e unito al latte della sera prima che viene però scremato e separato dalla panna di affioramento. Viene privato manualmente della crema con l’ausilio di una apposita spannarola. Il latte della mungitura del mattino viene invece posto direttamente ed ancora caldo nella caldaia in rame per essere miscelato con quello freddo e scremato della sera. La massa viene riscaldata a 32-36°C prima di aggiungere il lattoinnesto naturale preparato nella latteria stessa accantonando una quantità del migliore latte e trattandolo termicamente a 62-65°C per qualche secondo, per abbattere la microflora che potrebbe causare gonfiori precoci e portandolo poi a 41-43°C per favorire lo sviluppo della microflora lattica spontanea tipica della zona di produzione fino al raggiungimento di una acidità desiderata. Viene quindi aggiunto caglio di vitello e a questo punto avviene il processo di coagulazione e il latte viene lasciato riposare per 25-40 minuti.
Quando il coagulo ha acquistato sufficiente consistenza si procede alla rottura della cagliata sminuzzandola manualmente con la lira e successivamente meccanicamente, fino a quando i granelli caseari sono ridotti a piccole parti. Questa fase dura circa 8-15 minuti e dipende dalla maturazione dei latte.

Raggiunto grado di rottura desiderato dal casaro,  si mantiene la massa in movimento e non appena i granelli si presentano  spurgati si procede alla cottura fino al raggiungimento della temperatura di 45C° per 20 minuti circa: in questa fase avviene la moltiplicazione della microflora immessa col lattoinnesto e parte di quella naturale del latte, con un conseguente incremento dell'acidità del siero. Una volta pronta la cagliata viene estratta del siero con l’ausilio di una stecca metallica flessibile, alla quale viene assicurata una tela di lino.

Il latteria viene posto nelle fascere e pressato per 24 ore. Nella fascera viene inserita una matrice che premendo sulla crosta in formazione incide sullo scalzo la data di produzione, i dati anagrafici, il paese d’origine della forma stessa. La salatura avviene in salamoia e completata a secco sui banchi con 1-2 salature in altri 4-8 giorni. Segue la stagionatura dove la maturazione minima è di circa 30 giorni per il latteria fresco, 60 giorni per il latteria semi stagionato, 6 mesi per lo stagionato.

piatto realizzato dall'osteria Villafredda di Loneriacco piatto realizzato dall'osteria Villafredda di Loneriacco La ricetta: il piatto “Turnario”

Ingredienti per 4 persone:

•    500 g di formaggio Latteria stagionato 6 mesi;
•    200 g di formaggio Latteria stagionato 12 mesi;
•    200 g di formaggio latteria fresco 30 giorni;
•    300 g di “strisulis” di latteria (i ritagli di massa casearia che provengono dal procedimento di formatura e pressatura delle forme di formaggio);
•    500 g patate;
•    1 cubetto di lievito di birra fresco;
•    100 g di farina di frumento tipo 00;
•    500 g di farina di mais biologica;
•    2 cucchiai di salsa di pomodoro.


Il piatto “Turnario” è una composizioni di 4 diverse ricette a base di formaggio latteria di Campolessi: il frico, il frico croccante, i bocconcini caldi a base di strisulis, e la fonduta rosa a base di formaggio latteria 30 giorni e salsa di pomodoro.

Partiamo con il frico tradizionale. Si prendono una o più  patate sbucciate e grattugiate a julienne e 500 g di formaggio latteria 6 mesi sempre grattugiato a julienne.
Una volta scaldata la padella con un filo di olio extra vergine d'oliva, cuocete le patate, aggiungete il formaggio grattugiato e cominciate la cottura del frico mantenendo sempre mescolata la massa di patate e formaggio latteria fino a completa fusione del formaggio. Ora non resta rosolare il nostro frico, prima da un lato e poi dall'altro, fino a formare una bella crosticina rossa.

Il frico croccante si prepara partendo dal formaggio stagionato almeno 9 mesi, grattugiato  distribuito su un piatto di ceramica e sciolto in microonde. Una volta fatta questa operazione si attende qualche minuto che si raffreddi solidificandosi e fintanto che la sfoglia risulta ancora malleabile, diamogli una forma a barchetta.

La fonduta di formaggio latteria fresco 30 giorni si prepara sciogliendolo in un tegame e aggiungendo due cucchiai di salsa di pomodoro a creare una crema morbida di colore rosato.

L'ultima preparazione sono i bocconcini caldi ripieni di strisulis filanti. Si deve preparare una pastella a base di acqua, lievito di birra fresco e farina di frumento 00. Il procedimento è semplice: si prende una pentola dal diametro di 20 cm con pareti alte in modo da mettere olio di semi da portare a temperatura per la frittura. Bisogna tagliare a cubetti il formaggio fresco e una volta infilzati su stuzziccadenti lunghi (o forchettine di legno adatte all'uso) si comincia immergendo il cubetto nella pastella e subito nell'olio caldo. Bastano pochi istanti di cottura, la pastella si gonfia nascondendo al suo interno un cuore  formaggio filante.

  • Creato il .
  • Ultimo aggiornamento il .
Privacy Policy

Altre notizie

Baglio Oneto di Marsala In vacanza nei luoghi de I Leoni di Sicilia Un racconto che emoziona, e che narra, prendendo spunto da vicende personali e realmente accadute, la Storia della Sicilia e...

Vai all'articolo