leaflet-providers.js
function (attr) {
				if (attr.indexOf('{attribution.') === -1) {
					return attr;
				}
				return attr.replace(/\{attribution.(\w*)\}/,
					function (match, attributionName) {
						return attributionReplacer(providers[attributionName].options.attribution);
					}
				);
			}
function (attr) {
				if (attr.indexOf('{attribution.') === -1) {
					return attr;
				}
				return attr.replace(/\{attribution.(\w*)\}/,
					function (match, attributionName) {
						return attributionReplacer(providers[attributionName].options.attribution);
					}
				);
			}
function ( attr ) { if ( attr . indexOf ( '{attribution.' ) === - 1 ) { return attr ; } return attr . replace ( / \{attribution.(\w*)\} / , function ( match , attributionName ) { return attributionReplacer ( providers [ attributionName ] . options . attribution ) ; } ) ; }
replace attribution placeholders with their values from toplevel provider attribution, recursively
replace attribution placeholders with their values from toplevel provider attribution recursively